2020-04-30 23:30:04

导读:下一代人工智能计算模型,主要是使用一些自动化技术帮助我们设计更好的深度学习网络结构,并在任务中提升性能。在深度学习如火如荼的当下,如何设计高效的神经网络架构,是研究者面临的重大挑战。本文将从网络架构搜索——这一当下火热的话题切入,探讨其中一类利用权重共享加速搜索的方法,并且分析这类方法存在的问题,给出自己的解决方案。

本次分享的具体内容有:

从AI的三大挑战,引出自动化机器学习和网络架构搜索的重要性

网络架构搜索的通用框架

权重共享的网络架构搜索算法以及面临的挑战

我们在网络架构搜索方面的工作

总结和未来展望

01

从 AI 的三大挑战,引出自动化机器学习和网络架构搜索的重要性

1. AI 领域未来面临的挑战

AI 领域未来面临的挑战,有3件事是确定的:数据 ( data ),模型 ( model ),知识 ( knowledge )。

① 数据

Data-efficiency:如何利用有限或多模态数据训练模型?

在如今的数据爆炸时代,会产生海量的数据,其中只有很少的数据有数据标注,大量的数据没有数据标注,且数据很"脏"。于是引出了第一个问题:如何从海量数据中,真正学习到自己想要的东西。

AI 未来的发展方向是从全监督发展成自监督和无监督的方向。

② 模型

Auto-learning:如何为人工智能应用设计强大高效的模型?

这一代的计算模型主要是基于深度学习的,尤其是卷积神经网络。深度学习在图像识别领域的应用,使得原先的模型从手工识别特征发展到自动学习特征。

基于这种发展的趋势,我们将模型继续推进一步,使得深度学习的网络设计也从手动转为自动。这是模型部分所面临的挑战。

③ 知识

Knowledge-aware:如何定义和存储知识,使训练后的模型安全可靠?

现有模型的算法,大部分都是拟合和训练数据,并不能保证拟合得到的结果具备分析常识的能力,即"不能真正地学习知识"。由于计算机缺乏常识,对知识的学习,可能会成为 AI 未来5年的研究方向。

2. AutoML

本文的重点是模型部分,主要分析手动和自动两种思路的区别。

2017年自动化网格搜索架构被提出后,"手动更好"还是"自动更好"这类争论不断。在争论的过程中逐渐催生出了一个新的方向,称为自动化机器学习 ( AutoML )。这一方向在工业界得到了更多的关注度。

工业界的关注度超过学术结,主要有两个原因:

① 工业界的算力更强。

AutoML 算法对计算资源的消耗非常大。例如,Google 发表的 NAS 方面的论文,每天需要上万个 GPU 才能完成计算。

② 工业界有很强的需求。

AutoML 可以帮工业界节省很多的开发成本。以华为为例,华为有各种各样不同的手机产品,从旗舰机到低端的手机,芯片的计算能力会差很多。用户会需要在不同的手机中完成相似的功能 ( 如拍视频 ),因此针对不同的芯片需要设计不同的网络架构以满足用户的需求;另一方面,用户的需求 ( 如清晰度的要求 ) 是实时变化的,如果使用人工机器学习算法,会带来巨大的人力投入。基于此,工业界存在自动化算法的需求。

3. NAS

① 简介

NAS,是 AutoML 的一个子课题,核心是:使用自动设计的网络架构,来替代手工设计的网络架构,使用自动算法探索 ( unexplored architectures )。

在2015年前,所有的神经网络架构几乎都是手工设计的。如下图,是一个典型的神经网络架构——ResNet

② NAS 对业界的影响

对于 ImageNet 这类标准的视觉任务,从2018年开始,最佳的算法属于 NAS 这类自动搜索出来的网络架构。2018年-2019年,最佳算法是 Google 开发出来的;2020年,华为在 Google 的 EfficientNet 的基础上增加了一些自研算法,其准确率超过了 Google 自有的性能。

另一方面,在 Mobile setting 方面 ( 即 FLOPs 不超过 600M ) 的图像分类任务中,NAS 比人工设计方法具有更好的表现。因为"资源受限",就更需要精细化设计,这是人工所不擅长的。在这一赛道上,华为自研算法在表现上已经超过了 Google。目前这项研究还在进行中。

这类 NAS 的方法带动了业界很多任务领域发生了变化,除了分类任务外,检测、分割、底层视觉等任务的实现方法都产生了很大的变革。下一部分会简要介绍业界 NAS 框架的通用 pipeline。

02

网络架构搜索的通用框架

1. 通用 Pipeline

业界和 NAS 相关的文献已有超过200篇,但这些文献的思路都大同小异,都是基于 "trialand update" 的思路开展的工作。所谓 "trialand update",就是在超大的搜索空间中,按照一定的规则启发式地寻找最优的网络架构。

常使用以下步骤:

2. NAS 三要素

NAS 的三要素是:搜索空间,搜索策略,评估方法。

搜索空间:哪种结构可以被找到?

搜索策略:如何从较大空间中进行结构采样?

评估方法:如何评估采样结构?

① 搜索空间

定义搜索空间的过程中,会遇到很多选项:

选项一:定义一个开放空间还是封闭空间?

目前大部分的搜索空间都是封闭空间,即:

搜索空间是预先定义好的

能搜索到哪些网格架构是预先清楚了解的

未来的发展方向可能会是开放性的搜索空间。

选项二:是否预先定义单元格 cell?是基于 cell 的搜索还是对网格架构做整体搜索?

推测未来的发展方向是整体搜索,但如今算法发展程度有限,主要还是基于 cell 的搜索。

选项三:操作集的规模要多大?

这个需要根据具体场景定义;通常使用下图中操作集的子集。

② 搜索策略

目前常见的搜索策略包括两类:独立的搜索策略和权值共享的搜索策略。我们的工作,主要偏向于后者。

权值共享的含义是:

在训练的较大网络中,包含很多小的网络;

在评估小网络的时候,可以利用以前计算的结果。

③ 评估方法

评估方法与搜索策略"强绑定"。独立的搜索策略,每个网络搜索出来后,需要独立地从头到尾训练一遍;而权重共享的搜索策略,会有对应的更加高效的方法进行评估。

03

权重共享的网络架构搜索算法以及面临的挑战

1. 搜索效率是关键

前期 Google 采用独立的搜索策略,将采样的每个网络结构从头到尾都训练一遍,搜索过程耗时长,搜索效率极低 ( 每个搜索耗用上千个 GPU 天 )。

针对这一问题,采用的解决办法是:复用前面训练好的结果。这样逐渐就形成了"权重共享"这样的方式。

解决方法:采样结构间共享计算

好处:将单个搜索的成本降低到少于一个 GPU 天

带来了新的问题:权重共享机制引入了误差

2. NAS 的两大主流方向

① 独立 NAS 方法:独立搜索与评价

优点:

搜索 pipeline 相对灵活

更容易执行多目标优化

搜索和评估分离,因此更稳定

缺点:

搜索过程耗时

② 权重共享 NAS 方法:联合搜索和评估

优点:

搜索过程计算效率高

缺点:

大量权重共享,会给搜索带来不稳定性

因此,如何处理这种不稳定性,也是本文后面分析的主要内容。

3. 可微 NAS

如今业界常用的方法是 DARTS 法 ( 可微分网络架构搜索方式 ),将网络架构构建成 cell-based 的方法,每个阶段都是一个单元,每个单元内都会有很复杂的结构;而单元结构的数量,可以在训练过程中做调整。

① 基于单元的搜索空间

可重复单元,单元数量可调。

② 在每个 Normal Cell 中,搭建有向无环图 ( DAG )

所有运算符都可以出现在每个边上,并带有加权和

将架构搜索变成一个持续优化的问题

将架构剪枝,保留主导算子,最终确定架构

这样处理,只需要超网络的一次训练,就可以得到这样的网络架构。

4. DARTS 的本质和弊端

通过测试发现,DARTS 结构非常不稳定。

当网络训练参数设定在50轮的时候,得到的网络架构还比较"正常";但是当训练迭代设定在100轮时,会得到很"奇怪"的网络架构:所有节点间都是"跳连" ( skip_connect ) 运算,这样就失去了网络的意义。

DARTS 的本质是训练超级网络,再通过剪枝处理形成子网络。但是这里有个前提假设:优化良好的超级网络可以产生良好的子网络。

但是,上述假设并不一定成立:超级网络和子网络之间可能存在很大的"优化差距"。

一个极端的例子:搜索崩溃,超级网络中的所有边缘都被一个弱的 skip_connect 算子控制,但是超级网络的验证精度仍然很高

当前解决方案:提前终止,这使得搜索结果相当不确定

由此可以看到,即使超网络训练得再好,也不一定能够得到一个有效的子网络。因此,我们后面的工作主要集中在缩小优化误差。

04

我们在神经结构搜索方面的代表性工作

1. P-DARTS ( Progressive-DARTS ):缩小搜索和评估之间的差距

① 概览

我们着眼点:"优化误差"的一个特例——深度误差

观察:搜索过程在浅层架构上执行,但评估过程在深层架构上执行

深度误差:浅层架构中的最佳配置不一定适用于深层架构

我们的解决方案:逐步增加搜索深度

两种有用的技术:搜索空间近似和搜索空间正则化

在标准图像分类基准上取得了不错的结果:

在 CIFAR10/CIFAR100 和 ImageNet 上,大大改进了 DART 以外的功能

搜索成本低至 0.3 GPU 天 ( 单 GPU 7小时 )

② 缩小深度差距

上图中,在 DARTS 搜索阶段,堆叠了8个单元;网络应用阶段,堆叠了超过20个单元。这样会带来"深度误差"。即使忽略"深度误差",训练过程中得到的网络也是8层结构上的最优网络,不是20层结构上的最优网络。而如果直接搜索深层架构 ( 20个单元 ),计算效率又非常低下且不稳定。

基于此,我们的解决方案是:在搜索过程中逐步增加网络深度。

③ 整个流程

使用搜索空间近似法可降低搜索成本:每次增加超级网络深度时,我们都会修剪一部分弱边。

④ 优化技巧

在深层网络上,由于跳连操作对网络的稳定性有较大的影响,因此尽可能保留同样数量的跳连操作。这样的操作,给网络架构带来一个非常强的"先验",增强网络的稳定性。因此,对搜索空间的选择是非常重要的。

结果 ( 选取 CIFAR10 作为测试集 ):

⑤ 在经典数据集上的表现

相比于 DARTS 方法,NAS 具备更优的性能和更快的搜索效率。

在 CIFAR10 数据集:

错误率:P-DARTS 2.55% vs DARTS 2.94%

单次搜索资源消耗:NAS 0.3 GPU 天 vs DARTS 4 GPU 天

在 ImageNet 数据集:

错误率:NAS 24.4% vs DARTS 26.7%

单次搜索资源消耗:P-DARTS 0.3 GPU 天 vs DARTS 4 GPU 天

⑥ 在单元中的搜索架构

与 DARTS 相比,更深入的架构,进而验证了深度差异的存在。

2. PC-DARTS ( Partial Channel ):NAS 正则化与规范化

① 概览

我们关注"优化差距"的另一个方面——过拟合

观察:超级网络可以很容易地拟合训练数据;但是经过修剪,子网不能继承超级网的能力

"过度拟合问题":最好的超级网络不一定产生修剪后的最佳子网

我们的解决方案是随机抽取部分超级网络频道,这样处理的一个附带好处可以加快搜索过程。我们在标准图像分类基准上取得了不错的结果:

在 CIFAR10 和 ImageNet 上,在 DARTS 基础上产生了很大的改进

搜索成本低至0.06 GPU 天 ( 单个 GPU 1.5小时 )

② 总体流程

PC-DARTS 包括两个重要步骤:PC ( PartialConnection ) 和EN ( Edge Normalization,边正则化 )

使用 PC 的方式,训练速度会变慢,但是稳定性会变强;

使用 EN 的方式,用额外的参数进行"选边",这样会提高"剪枝"操作的稳定性。

③ 在经典数据集上的表现

相比于 DARTS 方法,PC-DARTS 具备更优的性能和更快的搜索效率

在 CIFAR10 数据集:

错误率:PC-DARTS 2.57% vs DARTS 2.76%

非常快的搜索速度,单次搜索资源消耗:0.06 GPU 天

在 ImageNet 数据集:

单次搜索资源消耗:3.8 GPU 天;错误率降至24.2%,比 P-DARTS 错误率更低。

④ 网络消融研究

边缘规范化提高了搜索稳定性:

PC-DARTS 的 EN 部分不仅适用于此方法,也适用于其他基于 channnel 的方法

搜索效率和准确性之间存在权衡:

大多数情况下,大型数据集需要采集更丰富的信息

⑤ 单元搜索结构

从 CIFAR10 和 ImageNet 中搜索不同的单元格;在 CIFAR10 上的搜索任务,基本上都是并联卷积,很少有串联部分,也获得了很好的性能;而在 ImageNet 搜索任务中,建立的单元格更深。

3. Stabilized-DARTS:缩小稳定优化误差

我们处理数学中的“优化误差”:

一个重要的关键在于梯度计算的近似误差。原始的 DARTS 方法,可能会导致梯度方向的错误。

为了缩小优化误差,我们对梯度进行了更好的估计,确保每次优化的梯度方向和真实的梯度方向夹角小于90度,缓解了 DARTS 的不稳定特性。

我们的方法在一个非常大的搜索空间中工作,实现了搜索性能的稳定:

4. LA-DARTS:在可区分的 NAS 中引入延迟

我们允许基于 DARTS 的方法进行延迟预测,在保证精度的前提下,PC 端 DARTS 的延迟减少了20%。

5. Scalable-DARTS:扩大因子分解的搜索空间

我们通过分解扩大 channel 的搜索空间:

将一个大的算子集分解成几个小的集合

搜索空间中的运算符数量增加,但额外成本很少,不稳定风险可控

在 CIFAR10 和 ImageNet 的准确性都得到了一致的提高

05

总结和未来展望

1. 总结

① AutoML 是一个新兴的话题,也是人工智能未来的一部分,NAS 是 AutoML 的一个分支,是深度学习的前沿方法。

② NAS 的两个主要选择:离散优化与权重共享优化

启发式搜索是保守的,适用于小空间,并且行为稳定

可微搜索很有前途,但仍有许多严重问题需要解决

③ 朝向稳定可微搜索:缩小优化差距

P-DARTS,PC-DARTS,Stabilized DARTS:侧重于搜索策略

Scalable-DARTS:侧重于扩大搜索空间

LA-DARTS:侧重于硬件友好性

2. 未来趋势

问题1:哪种搜索策略更好,是离散搜索还是权重共享搜索?

离散:大多数用户似乎负担不起计算开销

权重分享:稳定性低于满意度,但已取得进展

问题2:基本搜索单元应该是什么,是层还是基本运算符?

较小的基本单位意味着较大的搜索空间,这需要搜索稳定性

较小的基本单元可能给硬件设计带来挑战

问题3:如何将搜索到的架构应用到现实场景中?

硬件:可区分的搜索方法还不适合,比如延迟问题。

个人愿景任务:是否共享同一主干?

华为高级研究员谢凌曦:下一代人工智能计算模型探索相关推荐

  1. 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅

    摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...

  2. 华为天才少年谢凌曦:关于视觉识别领域发展的个人观点!

    Datawhale干货 作者:谢凌曦,清华大学 来源丨https://zhuanlan.zhihu.com/p/558646681 编辑丨极市平台 极市导读 计算机视觉识别领域的发展如何?华为天才少年 ...

  3. 华为天才少年谢凌曦:关于视觉识别领域发展的个人观点

    作者 | 谢凌曦  编辑 | 汽车人 原文链接:https://zhuanlan.zhihu.com/p/558646681 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷 ...

  4. 年薪百万的华为「天才少年」:谢凌曦分享「进阶」之路,选题最重要!

    ‍ ‍转载自:新智元 ‍ 华为「天才少年」一直备受外界关注. 近日,毕业于清华大学的「天才少年」谢凌曦便分享了自己的「修炼」之路. 游戏中与AI结缘 4月24日,谢凌曦在「华为云·先锋少年论坛」上向大 ...

  5. 智源AI日报(2022-08-30): 华为谢凌曦:关于视觉识别领域发展的个人观点

    [智源AI日报]每天速读5分钟,AI要事不错过!欢迎点击这里,关注并订阅智源AI日报. 观点 | 华为谢凌曦:关于视觉识别领域发展的个人观点 看点:从计算机视觉和自然语言处理(人工智能中两个最受关注的 ...

  6. 【华为Atlas人工智能计算平台概述】

    文章目录 AI芯片分类 AI芯片的现状 昇腾芯片硬件架构 昇腾处理器逻辑架构 昇腾AI计算引擎---达芬奇架构 达芬奇架构(AI Core)- 计算单元 达芬奇架构(AI Core)- 存储系统 昇腾 ...

  7. 华为人工智能计算机平台,华为Atlas人工智能计算平台正式上市

    原标题:华为Atlas人工智能计算平台正式上市 2019年4月17日,华为宣布Atlas人工智能计算平台系列产品正式上市,开启了Atlas商用新篇章. 华为智能计算Atlas新品开售 Atlas人工智 ...

  8. 华为Atlas人工智能计算平台概述

    人工智能的四大要素:数据.算力.算法.场景 AI芯片:也被称为AI加速器,即专门用于处理人工智能应用中的大量计算任务的功能模块. AI芯片分类 从技术架构来看,大致分为四个类型:CPU.GPU.ASI ...

  9. 微软发布 Azure 物联网安全中心;阿里巴巴在美申请专利,以实现跨区块链统一管理;Google利用足球训练下一代人工智能……...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...

最新文章

  1. 9.切换 iframe
  2. mysql中备份和导出的区别_mysql的备份和导出
  3. OneVPL与FFmpeg/GStreamer硬件编解码器
  4. 啊哈C语言,c语言编程入门书籍及PPT(PDF版)下载网址
  5. java 用户线程如何修改界面内容_java 加入一个线程、创建有响应的用户界面 。 示例代码...
  6. 一道关于String的易错习题
  7. weblogic对JSP预编译、weblogic读取JSP编译后的class文件、ant中weblogic.jspc预编译JSP
  8. xilinx sdk串口打印helloworld如何打开SDK terminal查看
  9. Python 地图篇 - 使用pyecharts绘制世界地图、中国地图、省级地图、市级地图实例详解
  10. Springboot整合阿里云短信SDK发送短信验证码笔记
  11. 硬件升级win8.1重新安装系统
  12. 74LS系列芯片简记——10-19
  13. STM32F4之SDIO接口
  14. java bmp透明底色_C++ 设置透明背景图片
  15. iap如何初始化_STM32F4-IAP学习笔记(一)
  16. websocket 实现长连接原理
  17. ArcGIS学习教程(一)
  18. 一个简单的2048小游戏
  19. 别把激励员工变成收买员工
  20. 【学渣无能狂怒】今天也是为了学习落泪的一天--每天一遍Java再见

热门文章

  1. RuntimeWarning: invalid value encountered in true_divide
  2. 使用docker部署mysql 并持久化到宿主机本地
  3. TensorFlow里,shape=(?, 120)里的问号是怎么回事呢
  4. getDay()显示的是本周的第几天
  5. 告别2010-正则表达式
  6. java 中如何正确的停止线程
  7. 开启报名丨图神经网络前沿学术研讨会
  8. 掌握这 7 个编程设计原则,想做菜鸟都难
  9. 图像均值迁移模糊:pyrMeanShiftFiltering()
  10. O-GAN:简单修改,让GAN的判别器变成一个编码器!