深度学习新王者:AutoML

TowardDataScienc 最近发布文章 《Everything you need to know about AutoML and Neural Architecture Search 》,将 AutoML 和神经架构搜索(NAS),定义为深度学习领域的新一代王者。

神经架构搜索(NAS)

在开发神经网络的过程中,架构工程事关重大,架构先天不足,再怎么训练也难以得到优秀的结果。当然,提到架构,很多人会想到迁移学习:譬如:把 ImageNet 上训练的 ResNet 拿来,换个数据集再训练,并根据训练结果更新权重,便完成了。这种方法的确也可行,但是要想得到最好的效果,还是根据实际情况设计自己的网络架构比较靠谱。设计神经网络架构,能称得上机器学习过程中门槛最高的一项任务了。想要设计出好架构,需要专业的知识技能,还要大量试错。

NAS 就为了搞定这个费时费力的任务而生。这种算法的目标,就是搜索出最好的神经网络架构。它的工作流程,通常从定义一组神经网络可能会用到的『建筑模块』开始。比如说 Google Brain 那篇 NasNet 论文,就为图像识别网络总结了这些常用模块:其中包含了多种卷积和池化模块 ——

NASNet blocks for image recognition network

NAS 算法用一个循环神经网络(RNN)作为控制器,从这些模块中挑选,然后将它们放在一起,来创造出某种端到端的架构。这个架构,通常会呈现出和 ResNetDenseNet 等最前沿网络架构一样的风格,但是内部模块的组合和配置有所区别。一个架构的好坏,往往就取决于选择的模块和在它们之间构建的连接。接下来,就要训练这个新网络,让它收敛,得到在留出验证集上的准确率。这个准确率随后会用来通过策略梯度更新控制器,让控制器生成架构的水平越来越高。这个过程很直观了。简单来说,很有小朋友搭积木的风范:让一个算法挑出一些积木,然后把它们组装在一起,做成一个神经网络。训练、测试,根据这个结果来调整选积木(模块)的标准和组装的方式。NAS 就是要用它来构建和当前最先进的架构风格非常类似的网络,这些模块也都是当前研究中常用的。

NAS 算法的主要工作,就是给这些模块换个连接方式。

下面,就是它发现的 ImageNet 最佳神经网络架构:

Best discovered blocks and structure for the ImageNet network on the right below

但是,用 450 个 GPU 来训练,找到一个优秀的架构也需要训练 3 到 4 天,这种方法还是门槛太高、效率太低。于是,2017 年开始,Google 先后提出了渐进式神经架构搜索(PNAS)与高效神经架构搜索(ENAS)。试图通过改进模型训练方式来提高效率,并降低训练成本,使单个 1080 Ti GPU 也能达到不错的模型搜索效率。

深度学习新方法 AutoML

很多人将 AutoML 称为深度学习的新方式,认为它改变了整个系统。有了 AutoML,我们就不再需要设计复杂的深度学习网络,只需运行一个预先设置好的 NAS 算法。最近,Google 提供的 Cloud AutoML 将这种理念发挥到了极致。只要你上传自己的数据,Google 的 NAS 算法就会为你找到一个架构,用起来又快又简单。AutoML 的理念就是把深度学习里那些复杂的部分都拿出去,你只需要提供数据,随后就让 AutoML 在神经网络设计上尽情发挥吧。这样,深度学习就变得像插件一样方便,只要有数据,就能自动创建出由复杂神经网络驱动的决策功能。

How AutoML works

不过,AutoML 价格也并不算亲民,每小时收费 20 美元。此外,一旦你开始训练,则无法导出模型,并且得用谷歌提供的 API 在云上运行你的网络,这些限制看起来都不是很方便,另外,这里有一份 Google AutoML 的快速入门指导。

ENAS 算法模型

总的来说,若你想使用 AutoML,现在已经有很多不同的选择,这完全取决于你是否会使用你想要的算法,以及你对这件事的预算如何。过去几年,在深度学习工作的自动化上,整个领域都在大步向前,让深度学习更贴近大众、更易用。以下是几款同样采用 ENAS 算法模型实现自动神经网络架构搜索的项目,面向 KerasTensorFlowPytorch 深度学习框架 ——

GitHub地址