让算法解放算法工程师----NAS综述
本文发表于公众号“AI科技评论”,原创文章,转载请注明出处,谢谢。
1、NAS综述
AutoML(automated machine learning)是模型选择、特征抽取和超参数调优的等一系列自动化方法,可以实现自动训练有价值的模型。AutoML适用于许多类型的算法,例如随机森林,gradient boosting machines,神经网络等。 机器学习最耗费人力的是数据清洗和模型调参,而一般在模型设计时超参数的取值无规律可言,而将这部分过程的自动化可以使机器学习变得更加容易。即使是对经验丰富的机器学习从业者而言,这一自动化过程也可以加快的速度。
Deep learning实现端到端的的特征提取,相对于手工提取特征是一个巨大的进步,同时人工设计的神经网络架构提高了神经网络的复杂度。
随着技术的发展,Neural Architecture Search (NAS) 实现神经网络可以设计神经网络,代表机器学习的未来方向。NAS是AutoML的子领域,在超参数优化和元学习等领域高度重叠。NAS根据维度可分为三类:搜索空间、搜索策略和性能评估策略。(本文仅总结NAS在computer vision应用,NLP的应用另写文综述)。
- 搜索空间
搜索空间原则上定义了网络架构。对于一个任务,结合相关属性的先验知识可以缩小搜索空间的大小并简化搜索。但是同时也引入了人类偏见、这可能妨碍发现超越当前人类知识的新颖架构模块。
- 搜索策略
搜索策略定义了使用怎样的算法可以快速、准确找到最优的网络结构参数配置。
- 性能评估策略
因为深度学习模型的效果非常依赖于训练数据的规模,通常意义上的训练集、测试集和验证集规模实现验证模型的性能会非常耗时,所以需要一些策略去做近似的评估。
图 1 网络架构搜索方法
1.1搜索空间
搜索空间,顾名思义,代表一组可供搜索的神经网络架构。
搜索空间根据网络类型可以划分为链式架构空间、多分支架构空间、cell/block构建的搜索空间。根据搜索空间覆盖范围可分为 macro(整个网络架构进行搜索)和 micro(仅搜索cell,根据cell扩展搜索空间)。
1、第一种搜索空间是链式架构空间(图 1左图所示)。链式架构空间的每一层输出都是下一层的输入。搜索空间包括以下参数:
(1)网络最大层数n。(2)每一层的运算类型:池化、连接、卷积(depthwise separable convolutions,dilated convolutions、deconvolution)等类型。(3)运算相关的超参数:滤波器的大小、个数、 strides等。(4)激活函数: tanh,relu,identity,sigmoid等。
图 2链式架构空间(左图)与多分支架构空间(有图)
2、VGG19等模型已经证明直筒的链式结构容易造成梯度弥散,卷积网络无法使层数更深。ResNet和DenseNet等引入的跳跃连接和密集连接,使得更深的网络成为可能。目前很多论文的实验数据也证实多分支架构空间可以实现更高精度(代价是搜索空间呈指数级别增加)。如图 2右图所示多分支架构空间的连接示意图。
3、基于基本的cell/block构建的搜索空间。
很多的神经网络结构虽然很深,但会有基本的 cell/block,将 cell/ block 通过改变堆叠结构,一方面可以减少优化变量数目,另一方面相同的 cell/ block 在不同任务之间进行迁移。BlockQNN[2]结合Inception blocks和residue blocks,设计block模块,通过堆叠block设计搜索空间。 Zoph et al[3]设计两类 cells:normal cell 和reduction cell (normal cell不改变输入feature map的大小的卷积, 而reduction cell将输入feature map的长宽各减少为原来的一半的卷积,是通过增加stride的大小来降低size),通过构建重复模块(cells)的深度堆叠结构。这个堆叠结构是固定的,但其中各个模块的结构可以改变。
图 3基于cell/block构建的搜索空间
Cell作为基本单元,也可以固定不变。PNAS[9]学习的是单一一种cell类型,而没有区分 Normal cell和 Reduction cell.
1.2搜索策略
搜索算法通常是一个迭代过程,定义了使用怎样的算法可以快速、准确找到最优的网络结构参数配置。常见的搜索方法包括:随机搜索、贝叶斯优化、进化算法、强化学习、基于梯度的算法。其中强化学习和进化学习是主流算法,也是本章节重点介绍对象。
在搜索过程的每个步骤或迭代中,从搜索空间产生“样本”形成一个神经网络,称为“子网络”。所有子网络都在训练数据集上进行训练,然后将它们在验证数据集上的准确性视为目标(或作为强化学习中的奖励) 进行优化。搜索算法的目标是找到优化目标的最佳子网络,例如最小化验证损失或最大化奖励。
1.2.1基于强化学习的搜索方法
基于强化学习(reinforcement learning ,RL)的方法已经成为NAS的主流方法[4]。RL有四个基元:agent, action,environment和reward. 强化学习是通过奖励或惩罚(reward)来学习怎样选择能产生最大积累奖励的行动(action)的算法。
NAS的核心思想是通过一个controller RNN在搜索空间(search space)中得到一个子网络结构(child network),然后用这个子网络结构在数据集上训练,在验证集上测试得到准确率,再将这个准确率回传给controller,controller继续优化得到另一个网络结构,如此反复进行直到得到最佳的结果,整个过程称为Neural Architecture Search。
基于NAS的RL算法主要区别在于(a)如何定义行动空间(在新的空间选择配置还是在修订已经存在的网络) (b)如何更新行动策略。Zoph et al首先使用梯度策略更新策略[4],并在其后的工作中使用proximal policy optimization。 Baker et al.使用Q-learning更新行动策略。
在探索高维搜索空间时,基于RL的搜索成本非常高。NAS[4]在使用800块 GPU情况下耗时28天。其后续工作[3]使用450块GPU耗时4天生成简单的搜索空间。
1.2.2基于进化学习的搜索方法
进化学习(Evolutionary algorithms ,EA)为了达到自动寻找高性能的神经网络结构,需要进化一个模型簇(population)。每一个模型,也就是个体(individual),都是一个训练过的结构。模型在单个校验数据集(validation dataset)上的准确度就是度量个体质量或适应性的指标。
在一个进化过程中[7],工作者(worker)随机从模型簇中选出两个个体模型;根据优胜劣汰对模型进行识别,不合适的模型会立刻从模型簇中被剔除,即代表该模型在此次进化中的消亡;而更优的模型则成为母体(parent model),进行繁殖;通过这一过程,工作者实际上是创造了一个母体的副本,并让该副本随机发生变异。研究人员把这一修改过的副本称为子代(child);子代创造出来后,经过训练并在校验集上对它进行评估之后,把子代放回到模型簇中。此时,该子代则成为母体继续进行上述几个步骤的进化。
简言之,该进化算法就是在随机选出的个体中择其优,因此该方法也属于联赛选择算法(tournament selection)的一种。
另外,如无其他说明,模型簇一般能容纳1000个个体,工作者的数量一般是个体数量的1/4,而消亡个体的目录会被删除,以保证整个算法能长时间在有限空间中运行。
进化学习的一个缺点是进化过程通常不稳定,最终的模型簇质量取决于随机变异。Chen et al[8]提出通过RL 控制器确定变异替代随机变异,稳定搜索过程。
Chenxi Liu et al.[9] 使用了基于序列模型的优化(SMBO)策略,按复杂度逐渐增大顺序搜索架构,同时学习一个用于引导该搜索的代理函数(surrogate function),类似于 A* 搜索。
1.3性能评估策略
性能评估策略是实现搜索加速的过程。基于强化学习、进化学习等搜索策略,为了引导搜索空间,每个子网络都需要训练和评估。但是训练每个子网络需要巨大的资源消耗(比如NAS[4]需要2000GPU*天)。NAS通常加速方法是经过训练后在查找近似度量方式(例如减少训练epochs,简化评估数据集[3][4]、使用低分辨率图像、每一卷积层使用更少的滤波器)。本章节介绍更两种更优类型: (a) 代理度量improved proxy (b) 权值共享weight-sharing。
1、使用代理度量时,子网络之间的相对排名需要保持与最终模型准确率相关。Zhong et al.[10]提出FLOPS、子模型的model size与最终模型准确率负相关,介绍一种应用于奖励计算的修正函数,子网络的准确性可以通过提前训练停止获得,弥合代理度量和真实准确率的差距。有些算法提出通过预测神经网络模型的准确率、学习曲线、验证曲线等来改进代理度量的方法,预测准确率低/学习曲线差的子网络暂停训练或直接放弃。
2、权值共享。
子网络直接继承已经训练好的模型权重参数,可以显著降低模型的运算量[7]。One-Shot架构搜索[11]将所有架构视作一个 one-shot 模型(超图)的子图,子图之间通过超图的边来共享权重。一些论文直接在模型基础上添加卷积层或插入跳跃连接,参数权重可以直接复用,减少模型的运算量。
2、Multi-Objective NAS
以google的NAS为基础,很多模型专注于优化模型的准确率而忽视底层硬件和设备,例如工作站,嵌入式设备和移动终端具有不同的计算资源和环境。仅考虑准确率高的模型难以在移动终端部署。
图 4基于单目标VS多目标神经网络架构搜索算法对比
MONAS/ MnasNet/DPP-Net[12][13][14]等模型提出基于移动端的多目标神经网络搜索算法,评价指标从准确率扩展到功耗、推断延时、计算强度、内存占用、FLOPs等指标。如图 4所示单目标和多目标神经网络架构搜索算法对比。
多目标神经网络架构搜索采用帕雷托最优寻找最佳解决方案。帕雷托最优最长来源于经济学的概念,指资源分配的一种理想状态。延伸到工程,解决方案在不降低其他目标的前提下,任何目标都能不能得到改善,则认为是帕雷托最优的。
多目标NAS可以分为两类:基于RL和基于EA的算法。MnasNet/ MONAS是基于RL的多目标算法。本人在知乎写过一篇叫基于MnasNet的阅读笔记,详情可参阅:https://zhuanlan.zhihu.com/p/42474017。
NAS局限性:
NAS的搜索空间有很大的局限性,目前NAS算法仍然使用手工设计的结构和blocks,NAS仅仅是将这些blocks堆叠。NAS还不能自行设计网络架构。NAS的一个发展方式是更广泛的搜索空间,寻找真正有效率的架构,当然对搜索策略和性能评估策略提出更高的要求。
3、AutoML概述
构建一个典型的机器学习项目,一般分成以下步骤:收集原始数据(标注数据)、清洗数据、特征工程、模型构建、超参数调优、模型验证和模型部署。整个过程中,模型构建最能体现创造力,而最耗时的,要数特征工程和超参数调优。
图 5 AutoML开源框架全景图
AutoML框架能帮助算法工程师减轻负担,降低特征工程和超参数调优的工作量,NAS可以完成模型的构建。基于AutoML的一揽子解决方案(如图 5包含AutoML开源框架)。
AutoML抽象所有deep learning的复杂过程,所需要的仅仅是数据。目前互联网巨头已经在很多行业提供AutoML服务,微软的CustomVision.AI,谷歌Cloud AutoML、中科院的BDA系统,阿里PAI等。这些平台仅仅需要上传数据,AutoML实现深度学习的训练、调优、云服务等,如图 6所示(当然现在还是半自动化的人工参与状态,全自动化的AutoML是未来发展方向)。
图 6 AutoML工作流程图
阿里的PAI Studio 汇集了阿里集团大量优质分布式算法,包括数据处理、特征工程、机器学习算法、文本算法等,可高效的完成海量、亿级维度数据的复杂计算,给集团业务带来更为精准的洞察力。
AutoML Vision 是 Cloud AutoML 这个大项目推出的第一项服务,提供自定义图像识别系统自动开发服务。根据谷歌介绍,即使是没有机器学习专业知识的的小白,只需了解模型基本概念,就能借这项服务轻松搭建定制化的图像识别模型。 只需在系统中上传自己的标签数据,就能得到一个训练好的机器学习模型。整个过程,从导入数据到标记到模型训练,都可以通过拖放式界面完成。除了图像识别,谷歌未来还计划将 AutoML 服务拓展到翻译、视频和自然语言处理等领域。目前Cloud AutoML的费用是20美金/小时,相当于国内算法工程师的时薪。
机器学习的平台化降低AI产品的使用陈本,最终降低的机器学习的准入门槛,但提高了个人的职业门槛。随着谷歌亚马逊微软BAT等大厂在AI的持续投入,调参效果和业务范围会越来越广。笔者所在的项目组经过6个月努力发版上线一个应用,降低60%的人力成本,自动化效率提高到80%。工业时间业务不止模型调参那么简单,需要结合很多图像数据的先验知识,随着NAS的发展,也许不能取代100%的人力成本,但是项目团队解放50%以上的算法工程师还是可行的。
以上仅为个人阅读论文后的理解、总结和思考。观点难免偏差,望读者以怀疑批判态度阅读,欢迎交流指正。
参考文献
- Thomas. Elsken,Jan Hendrik.Metzen: Neural Architecture Search: A Survey .arXiv preprint arXiv: 1808.05377 (2018)
- Zhao Zhong, Zichen Yang, Boyang Deng:BlockQNN: Efficient Block-wise Neural Network Architecture Generation .arXiv preprint arXiv: 1808.05584 (2018)
- Zoph B, Vasudevan V, Shlens J, Le QV .Learning Transferable Architectures for Scalable Image Recognition.arXiv preprint arXiv: 1707.07012 (2017)
- Barret Zoph and Quoc V Le. Neural architecture search with reinforcement learning. ICLR’17,2016.
- Han Cai, Tianyao Chen, Weinan Zhang, Yong Yu, and Jun Wang. Efficient architecture search by network transformation. AAAI’18, 2017.
- Chenxi Liu, Barret Zoph, Jonathon Shlens, Wei Hua, Li-Jia Li, Li Fei-Fei, Alan Yuille, Jonathan Huang, and Kevin Murphy. Progressive neural architecture search. arXiv preprint arXiv:1712.00559, 2017.
- Esteban Real ,Sherry Moore,Andrew Selle , Saurabh Saxena .Large-Scale Evolution of Image Classifiers .arXiv preprint arXiv:1703.01041
- Yukang Chen, Qian Zhang, Chang Huang, Lisen Mu, Gaofeng Meng, and Xinggang Wang. Reinforced evolutionary neural architecture search. arXiv preprint arXiv:1808.00193, 2018.
- Chenxi Liu, Barret Zoph, Jonathon Shlens, Wei Hua, Li-Jia Li, Li Fei-Fei, Alan Yuille, Jonathan Huang, and Kevin Murphy. Progressive neural architecture search. arXiv preprint arXiv:1712.00559, 2017.
- Zhao Zhong, Junjie Yan, and Cheng-Lin Liu. Practical network blocks design with q-learning. AAAI’18, 2017.
- Andrew Brock, Theodore Lim, James M Ritchie, and Nick Weston. Smash: one-shot model architecture search through hypernetworks. ICLR’18, 2017.
- Chi-Hung Hsu, Shu-Huan Chang, Da-Cheng Juan, Jia-Yu Pan, Yu-Ting Chen, Wei Wei, and Shih-Chieh Chang. Monas: Multi-objective neural architecture search using reinforcement learning. arXiv preprint arXiv:1806.10332,2018.
- Jin-Dong Dong, An-Chieh Cheng, Da-Cheng Juan, Wei Wei, and Min Sun. Dpp-net: Device-aware progressive search for pareto-optimal neural architectures. arXiv preprint arXiv:1806.08198, 2018.
- Mingxing Tan, Bo Chen, Ruoming Pang, Vijay Vasudevan, and Quoc V Le. Mnasnet: Platform-aware neural architecture search for mobile. arXiv preprint arXiv:1807.11626, 2018.