1.NAS综述
AutoML(automatedmachinelearning)是模型选择、特征抽取和超参数调优的一系列自动化方法,可以实现自动训练有价值的模型。AutoML适用于许多类型的算法,例如随机森林,gradientboostingmachines,神经网络等。机器学习最耗费人力的是数据清洗和模型调参,而一般在模型设计时超参数的取值无规律可言,而将这部分过程自动化可以使机器学习变得更加容易。即使是对经验丰富的机器学习从业者而言,这一自动化过程也可以加快速度。
Deeplearning实现端到端的的特征提取,相对于手工提取特征是一个巨大的进步,同时人工设计的神经网络架构提高了神经网络的复杂度。
随着技术的发展,NeuralArchitectureSearch(NAS)实现神经网络可以设计神经网络,代表机器学习的未来方向。NAS是AutoML的子领域,在超参数优化和元学习等领域高度重叠。NAS根据维度可分为三类:搜索空间、搜索策略和性能评估策略。(本文仅总结NAS在CV领域的应用,NLP的应用将另写综述)。
搜索空间
搜索空间原则上定义了网络架构。对于一个任务,结合相关属性的先验知识可以缩小搜索空间的大小并简化搜索。但是同时也引入了人类偏见,这可能妨碍发现超越当前人类知识的新颖架构模块。
搜索策略
搜索策略定义了使用怎样的算法可以快速、准确找到最优的网络结构参数配置。
性能评估策略
因为深度学习模型的效果非常依赖于训练数据的规模,通常意义上的训练集、测试集和验证集规模实现验证模型的性能会非常耗时,所以需要一些策略去做近似的评估。
图1网络架构搜索方法
1.1搜索空间
搜索空间,顾名思义,代表一组可供搜索的神经网络架构。
搜索空间根据网络类型可以划分为链式架构空间、多分支架构空间、cell/block构建的搜索空间。根据搜索空间覆盖范围可分为macro(对整个网络架构进行搜索)和micro(仅搜索cell,根据cell扩展搜索空间)。
1.第一种搜索空间是链式架构空间(图2左图所示)。链式架构空间的每一层输出都是下一层的输入。搜索空间包括以下参数:
(1)网络最大层数n。(2)每一层的运算类型:池化、连接、卷积(depthwiseseparableconvolutions,dilatedconvolutions、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]结合Inceptionblocks和residueblocks,设计block模块,通过堆叠block设计搜索空间。Zophetal[3]设计两类cells:normalcell和reductioncell(normalcell不改变输入featuremap的大小的卷积,而reductioncell将输入featuremap的长宽各减少为原来的一半的卷积,通过增加stride的大小来降低size),通过构建重复模块(cells)的深度堆叠结构。这个堆叠结构是固定的,但其中各个模块的结构可以改变。
图3基于cell/block构建的搜索空间
Cell作为基本单元,也可以固定不变。PNAS[9]学习的是单一一种cell类型,而没有区分Normalcell和Reductioncell.
1.2搜索策略
搜索算法通常是一个迭代过程,定义了使用怎样的算法可以快速、准确找到最优的网络结构参数配置。常见的搜索方法包括:随机搜索、贝叶斯优化、进化算法、强化学习、基于梯度的算法。其中强化学习和进化学习是主流算法,也是本章节重点介绍对象。
在搜索过程的每个步骤或迭代中,从搜索空间产生“样本”形成一个神经网络,称为“子网络”。所有子网络都在训练数据集上进行训练,然后将它们在验证数据集上的准确性视为目标(或作为强化学习中的奖励)进行优化。搜索算法的目标是找到优化目标的最佳子网络,例如最小化验证损失或最大化奖励。
基于强化学习的搜索方法
基于强化学习(reinforcementlearning,RL)的方法已经成为NAS的主流方法[4]。RL有四个基元:agent,action,environment和reward.强化学习是通过奖励或惩罚(reward)来学习怎样选择能产生最大积累奖励的行动(action)的算法。
NAS的核心思想是通过一个controllerRNN在搜索空间(searchspace)中得到一个子网络结构(childnetwork),然后用这个子网络结构在数据集上训练,在验证集上测试得到准确率,再将这个准确率回传给controller,controller继续优化得到另一个网络结构,如此反复进行直到得到最佳结果,整个过程称为NeuralArchitectureSearch。
基于NAS的RL算法主要区别在于:
(a)如何定义行动空间(在新的空间选择配置还是在修订已经存在的网络)
(b)如何更新行动策略。Zophetal首先使用梯度策略更新策略[4],并在其后的工作中使用proximalpolicyoptimization。Bakeretal.使用Q-learning更新行动策略。
在探索高维搜索空间时,基于RL的搜索成本非常高。NAS[4]在使用块GPU情况下耗时28天。其后续工作[3]使用块GPU耗时4天生成简单的搜索空间。
基于进化学习的搜索方法
进化学习(Evolutionaryalgorithms,EA)为了达到自动寻找高性能的神经网络结构,需要进化一个模型簇(population)。每一个模型,也就是个体(individual),都是一个训练过的结构。模型在单个校验数据集(validationdataset)上的准确度就是度量个体质量或适应性的指标。
在一个进化过程中[7],工作者(worker)随机从模型簇中选出两个个体模型;根据优胜劣汰对模型进行识别,不合适的模型会立刻从模型簇中被剔除,即代表该模型在此次进化中的消亡;而更优的模型则成为母体(parentmodel),进行繁殖;通过这一过程,工作者实际上是创造了一个母体的副本,并让该副本随机发生变异。研究人员把这一修改过的副本称为子代(child);子代创造出来后,经过训练并在校验集上对它进行评估之后,把子代放回到模型簇中。此时,该子代则成为母体继续进行上述几个步骤的进化。
简言之,该进化算法就是在随机选出的个体中择其优,因此该方法也属于联赛选择算法(tournamentselection)的一种。
另外,如无其他说明,模型簇一般能容纳个个体,工作者的数量一般是个体数量的1/4,而消亡个体的目录会被删除,以保证整个算法能长时间在有限空间中运行。
进化学习的一个缺点是进化过程通常不稳定,最终的模型簇质量取决于随机变异。Chenetal[8]提出通过RL控制器确定变异替代随机变异,稳定搜索过程。
ChenxiLiuetal.[9]使用了基于序列模型的优化(SMBO)策略,按复杂度逐渐增大顺序搜索架构,同时学习一个用于引导该搜索的代理函数(surrogatefunction),类似于A*搜索。
1.3性能评估策略
性能评估策略是实现搜索加速的过程。基于强化学习、进化学习等搜索策略,为了引导搜索空间,每个子网络都需要训练和评估。但是训练每个子网络需要巨大的资源消耗(比如NAS[4]需要GPU*天)。通常加速NAS的方法是通过训练后再查找近似度量的方式(例如减少训练epochs,简化评估数据集[3][4]、使用低分辨率图像、每一卷积层使用更少的滤波器)。本章节介绍两种更优的类型:(a)代理度量improvedproxy;(b)权值共享weight-sharing。
1.使用代理度量时,子网络之间的相对排名需要保持与最终模型准确率相关。Zhongetal.[10]提出FLOPS、子模型的modelsize与最终模型准确率负相关,介绍一种应用于奖励计算的修正函数,子网络的准确性可以通过提前训练停止获得,弥合代理度量和真实准确率的差距。有些算法提出通过预测神经网络模型的准确率、学习曲线、验证曲线等来改进代理度量,预测准确率低/学习曲线差的子网络暂停训练或直接放弃。
2.权值共享。
子网络直接继承已经训练好的模型权重参数,可以显著降低模型的运算量[7]。One-Shot架构搜索[11]将所有架构视作一个one-shot模型(超图)的子图,子图之间通过超图的边来共享权重。一些论文直接在模型基础上添加卷积层或插入跳跃连接,参数权重可以直接复用,减少模型的运算量。
1.4Multi-ObjectiveNAS
以Google的NAS为基础,很多模型专注于优化模型的准确率而忽视底层硬件和设备,例如工作站,嵌入式设备和移动终端具有不同的计算资源和环境,仅考虑准确率高的模型难以在移动终端部署。
图4基于单目标VS多目标神经网络架构搜索算法对比
MONAS/MnasNet/DPP-Net[12][13][14]等模型提出基于移动端的多目标神经网络搜索算法,评价指标从准确率扩展到功耗、推断延时、计算强度、内存占用、FLOPs等指标。如图4所示单目标和多目标神经网络架构搜索算法对比。
多目标神经网络架构搜索采用帕雷托最优寻找最佳解决方案。帕雷托最优来源于经济学的概念,指资源分配的一种理想状态。延伸到工程,解决方案在不降低其他目标的前提下,任何目标都能不能得到改善,则认为是帕雷托最优的。
多目标NAS可以分为两类:基于RL和基于EA的算法。MnasNet/MONAS是基于RL的多目标算法。本人在知乎写过一篇叫基于MnasNet的阅读笔记,详情可参阅:
转载请注明:http://www.0431gb208.com/sjszlfa/5351.html