打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
AutoML是如何打败AI工程师的?

Google前段时间发布了名为Cloud AutoML的人工智能(Artificial Intelligence / AI)云服务,在业内引起了轰动。网上出现了各种各样的说法,比如“AI可以自我创造了”,“不懂机器学习也能开发AI”,“不用写代码也能训练AI”,“AI工程师要失业了”等等,所以小明决定写一篇文章来介绍一下AutoML是什么。

由于还在Alpha测试版的阶段,目前Cloud AutoML服务仅支持计算机视觉模型,让我们先通过官方网站的介绍来了解一下Cloud AutoML Vision这项服务的基本功能和使用方法,总结起来就3步,(1)上传标记数据;(2)点击“训练”,并查看评估结果;(3)通过API来对新样本进行预测。

Cloud AutoML: https://cloud.google.com/automl/

Cloud AutoML服务背后的技术是自动机器学习(AutoML),其核心思想是通过Learning to Learn的方式进行神经架构搜索,并利用迁移学习(Transfer Learning)将得到的神经网络迁移到其它类似任务上去。

从一开始提出AutoML技术到最后发布Cloud AutoML服务,Google一直不断地在对AutoML的算法原理和工程实现进行迭代更新。后面的章节,首先会介绍AutoML的基本工作机制和工程优化方法;紧接着以循环神经网络(Recurrent Neural Networks / RNN)和卷积神经网络(Convolutional Neural Networks / CNN)为例,对AutoML的一些设计细节、演化过程和其中的迁移学习进行进一步介绍;最后会对AutoML的实验结果进行简单分析。

1. AutoML的基本工作机制

为了实现AutoML,Google Brain团队提出了神经架构搜索(Neural Architecture Search / NAS)技术。简单来说,就是用一个循环神经网络作为控制器(Controller),在预先限定好的搜索范围内采样输出多个子网络(Child Network)的结构和超参(Hyperparameter),子网络将被用来完成最终任务(计算机视觉,自然语言理解等),系统会对这些子网络进行训练,并得到它们在验证集上的准确度,最后系统会利用子网络的准确度作为奖励(Reward),并通过强化学习(Reinforcement Learning)的方法来更新控制器的参数

注:论文中的神经架构搜索(Neural Architecture Search / NAS)流程图

神经网络的架构通常可以用可变长的字符串来表述,而循环神经网络则非常适合用来生成这样的字符串,这也是为什么选择循环神经网络作为控制器的原因。为了尽可能地生成较优的神经架构,控制器需要最大化预期奖励,但因为奖励信号是不可微分的,所以需要通过Policy Gradient的方法来对控制器的参数进行迭代更新,比如REINFORCE rule和Proximal Policy Optimization(PPO)都可以用来对控制器进行训练。

训练一个子网络通常需要花费数小时的时间,为了提高效率,Google Brain团队先后提出了两种工程优化设计来进行分布式训练。一种是参数服务器(Parameter Server)模式,系统创建S个参数服务器来存储控制器参数,并创建K个控制器副本,这些副本共享同一套参数,每个控制器副本会并行采样m个子网络并进行训练,当训练轮数超过某个预设值时训练停止,子网络准确度会被发送给控制器,控制器获得这一批子网络的准确度后会利用REINFORCE rule对参数更新;另外一种是工作队列(Workqueue)模式,系统创建一个全局的工作队列,控制器采样子网络并将其加入工作队列,机器池中闲置的机器会从工作队列中获取任务,并对相应的子网络进行训练直至收敛,然后将子网络准确度发送给控制器,控制器收到足够量的准确度后会利用PPO对参数进行更新,这个过程会持续进行直至训练的子网络数达到某个预设值。

注:论文中的参数服务器(Parameter Server)模式分布式训练示意图

2. 用AutoML来设计RNN

AutoML通过一个控制器来生成子网络,其关键点在于设计一个合理的架构搜索空间,然后让控制器在执行每一步时,采样输出不同类型的结构和超参,并循环进行直至达到结束条件。通过设计不同的搜索空间,AutoML可以生成不同类型的神经网络(包括循环神经网络和卷积神经网络)。

注:左图是“2基变换树”的树结构和节点索引;中图是控制器采样输出神经网络的样例;右图是对应的计算图

以一个“2基变换树”为例,变换树包含两个叶子节点和一个中间节点,叶子节点的索引标识分别记为0和1, 中间节点的索引标识记为2。控制器的执行步骤可以被划分成5组,分别对应节点0、节点1、节点2的合并变换,元状态插入操作的合并变换和元状态的操作节点索引。前面4组,每组包含两个步骤,分别对应组合变换和激活变换;最后1组中的两个步骤,分别对应元状态的输出节点索引和元状态插入操作的组合节点索引。

注:论文中AutoML设计的最优循环元架构样例

Google Brain团队首先在Penn Treebank语言模型数据集上进行循环元架构搜索,然后将得到的最优循环元应用到Penn Treebank字符级语言模型任务上,紧接着将最优循环元和GNMT框架结合来完成WMT14 English-German翻译任务。最优循环元在这3个任务都取得了很好的效果,这说明了最优循环元具有很好的可迁移性,后面的章节会通过实验结果分析来进一步说明循环元的可迁移性。

3. 用AutoML来设计CNN

接着我们再看看如何用AutoML来生成卷积神经网络,一开始Google Brain团队尝试了一种非常大胆的方法,目标是直接通过控制器生成完整的卷积神经网络,这和循环神经网络生成中,先设计循环元再搭建循环神经网络的方式很不一样。这种卷积神经网络生成方法非常简单,控制器在执行每一步时,通过一个Softmax分类器采样输出当前层某一类型超参,该层所有超参生成完毕之后继续进行下一层的超参生成,这个过程会不停重复直到层数达到某个预设值。最基本的超参类型有,过滤器(Filter)的高度和宽度,高度和宽度方向上的步长(Stride)和过滤器的数量,如果想入加入池化(Pooling),正态化(Normalization)相关的超参以及学习率(Learning Rate)等优化相关的超参也很方便。

注:论文中基本的卷积神经网络生成控制器

注:论文中支持短路连接的卷积神经网络生成控制器

一切都看似很美好,除了一个问题那就是控制器的整个训练过程需要消耗大量的计算资源,如果想让实际应用变为可能,就需要在一个规模较小的任务上进行搜索,再尝试着将得到的神经网络迁移到其它任务上去。但上面介绍的方法所生成的卷积神经网络有个特点,层与层之间的结构和超参可能很不一样,很难找到像循环神经网络生成中的循环元这样的最小可重复单元,这使得在小规模任务上得到的循环神经网络很难迁移到其它任务上去。为了解决这个问题,Google Brain团队做了进一步尝试,为卷积神经网络设计了类似于循环元这样的最小可重复单元,这大大提高了卷积神经网络的可迁移性。

在新的卷积神经网络生成方法中,卷积神经网络的主体结构是预先设定的,由重复的卷积元(Convolutional Cell)按一定的规律组成,这些卷积元有着一样的架构,但参数权重是独立的。方法中有两种不同类型的卷积元,一种叫Normal Cell,用来保证输入/输出大小一致;另外一种叫Reduction Cell,用来将输出高度宽度缩小为输入的1/2,将这两种卷积元配合着使用,可以让卷积神经网络很方便地适配不同大小的图像输入,大大提高卷积神经网络的可扩展性。

注:左图是在CIFAR10任务中用到网络主体结构;右图是在ImageNet任务中用到的网络主体结构

注:左图是控制器执行一组采样的示意图;右图是根据一组采样结果构成的计算图样例

第3,4步中的运算操作集包含如下操作,

  • 恒等(Identity)

  • 1x7接7x1卷积,1x3接3x1卷积

  • 3x3扩张卷积(Dilated Convolution)

  • 3x3平均池化(Average Pooling)

  • 3x3最大池化(Max Pooling),5x5最大池化,7x7最大池化

  • 1x1卷积,3x3卷积

  • 3x3深度可分离卷积(Depth-Separable Convolution),5x5深度可分离卷积,7x7深度可分离卷积

第5步中的合并操作集包含两种操作,一种是元素加法(Element Addition),另外一种是深度拼接。每一轮的最终输出都有可能被选为之后轮次的输入,最后会讲所有未被选作输入的隐藏态进行深度拼接,然后作为卷积元的最终输出。

注:论文中AutoML设计的最优循环元架构样例(NASNet-A)

Google Brain团队首先在CIFAR-10图像分类数据集上进行卷积元架构搜索,然后再将找到的最优卷积元架构直接应用到ImageNet任务上,紧接着再将在ImageNet任务上得到的图像特征和Faster-RCNN框架结合来完成COCO物体识别任务。最优卷积元在这3个任务上都取得了很好的效果,这说明了最优卷积元具有很好的可迁移性,后面的章节会通过实验结果分析来进一步说明卷积元的可迁移性。

4. AutoML设计的神经网络效果如何

AutoML在Penn Treebank语言模型任务上搜索得到最优循环元,用该循环元搭建的循环神经网络取得了比之前最好模型更优的结果,而且运算速度更快。

注:在Penn Treebank语言模型任务上的单模型Perplexity

尽管最优循环元是在词级语言模型任务上搜索得到的,将其应用到Penn Treebank字符级语言模型任务上,同样取得了比之前最好模型更优的结果。

注:在Penn Treebank字符级语言模型任务上的Perplexity

AutoML在CIFAR-10图像分类任务上搜索得到最优卷积元(NASNet),用该卷积元搭建的卷积神经网络在CIFAR-10图像分类任务上取得了比之前最好模型更优的结果。

注:在CIFAR-10图像分类任务上的错误率及对应的参数数量

将NASNet架构直接应用到ImageNet图像分类任务上,同样得到了非常好的结果。

注:在ImageNet图像分类任务上的Top1,Top5准确度以对应的参数数量,乘法累加操作数

通过配合使用Normal Cell和Reduction Cell,可以很容易地搭建计算成本不同的卷积神经网络。在计算资源受限的情况下,用NASNet搭建的卷积神经网络能够取得比人工设计网络更优的结果。

注:计算资源受限的情况下,在ImageNet图像分类任务上准确度以对应的参数数量,乘法累加操作数

注:不同模型在ImageNet图像分类任务上的表现,红色代表NASNet,黑色代表人工设计网络请点击

对于COCO物体识别任务,将在ImageNet任务上得到的图像特征和Faster-RCNN框架结合,取得了比之前人工设计网络更优的结果。

注:在COCO物体识别任务上的mAP指标

AutoML之所以能“打败AI工程师”,主要应该归功于其搜索空间的设计,循环元和卷积元的提出,使得神经网络架构的搜索更可行,同时搜索得到的架构也更加具有可迁移性。如果说深度学习(Deep Learning)让AI工程师从特征设计(Feature Design)转向架构设计(Architecture Design),那么随着AutoML技术的不断发展,AI工程师很可能需要从架构设计向搜索空间设计(Search Space Design)再次转型。小明相信未来AI技术的趋势一定会朝着普及化、民主化的方向发展,大家能很方便地应用AI技术,但与此同时AI研发的门槛会越来越高,需要对AI技术原理有更深的理解才能更好地进行AI技术科研创新。至于“AI工程师会不会被AI淘汰”这个问题,大家可以通过留言或者投票的方式表达自己的观点。但无论如何,AI工程师如果想不被AI淘汰,唯有不断地自我进化才是正道。当然也可以考虑者去搞AI+区块链,比如用AI去炒比特币。

Reference

  • Zoph, Barret and Le, Quoc V. Neural architecture search with reinforcement learning. In ICLR, 2017

  • Zoph, Barret, Vasudevan, Vijay, Shlens, Jonathon, and Le, Quoc V. Learning transferable architectures for scalable image recognition. In CVPR, 2017.

  • Using Machine Learning to Explore Neural Network Architecture

    (https://research.googleblog.com/2017/05/using-machine-learning-to-explore.html)

  • AutoML for large scale image classification and object detection

    (https://research.googleblog.com/2017/11/automl-for-large-scale-image.html)

  • Cloud AutoML: Making AI accessible to every business

    (https://www.blog.google/topics/google-cloud/cloud-automl-making-ai-accessible-every-business/)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
AutoML将深度学习最难一环自动化,AGI技术基础已开始铺设
李飞飞发布的谷歌AutoML真的能让AI民主化么?
详解谷歌AutoML算法——神经网络是如何「自我升级」的?
谷歌重磅:不用写代码也能建模调参,Cloud AutoML要实现全民玩AI
关于AutoML和神经结构搜索,你需要知道这些
深度|谷歌Cloud AutoML将堵死一票创业公司的活路?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服