文章目录
1 概述
具有强大自动表征能力的深度学习的出现使得学者不必再使用各种人工特征方法来解决问题,只需要将工作重心放在数据预处理、网络结构的搭建、调参以及优化策略上,深度学习社区里有人形象幽默地称深度学习工程师为“调参工程师(炼丹师)”,由此可见搭网络、调参、优化需要相当的耐心和时间。大量实验表明,模型良好的特征提取能力以及优秀的性能离不开网络结构的设计,但是网络结构的设计很大程度上依赖于学者的知识经验,这就使得初学者难以根据自己的实际需求对网络进行合理的修改,并且由于思维定势的影响,人们往往很难跳出原来自己的一套“体系方案”,这在某种程度上限制了新的优秀神经网络的出现。为此,出现了这种idea:尽可能减少人工干预,通过某种算法来自动设计网络结构,从而获得最佳模型。
神经架构搜索(Neural Architecture Search,NAS)便是优化算法和机器学习的结合,旨在自动地寻找最优的网络结构和参数,这既能减少人力耗费,又能获得理想的模型,两全其美,已经成为自动机器学习(AutoML,Automated Machine Learning)领域备受关注的方法。NAS近年相当火热,在arXiv上,仅仅是2020年1月到现在(11月),就有500多篇NAS相关的文章,而行人重识别和多目标跟踪方向的文章大约只有200多篇,无独有偶,AutoML上也列出了相当多的NAS新文章。
原来的几篇综述主要根据NAS的基本组成部分来对相关工作分类:包括搜索空间、搜索策略和评估策略,这样分类虽然直观但是对入门者不友好,基于此,本文以新的视角阐述NAS:首先介绍最早的NAS算法的特征,接着总结这些早期算法的问题,然后提供解决方案以进行后续相关工作的研究。此外,作者对一些方法进行了详细全面的研究、分析与对比,并给出了未来可能的研究方向。
NAS-RL1和MetaQNN2两种该方法是NAS的先驱,它们通过强化学习(RL)的方式实现NAS,这说明网络结构自动设计是可行的,后来有学者使用进化算法也达到了类似的效果。但是它们耗费了数百个GPU days,显然它们对普通研究人员不友好,于是就出现了很多关于如何减少计算量、加快网络架构搜索的方法。随着NAS搜索效率提高,它迅速应用在各个领域:object detection,semantic segmentation,adversarial learning等。虽然NAS的研究很丰富,但仍然很难进行对比和复现。
随着研究深入和快速发展,很多传统NAS方法已经被证明存在缺陷,如早期的NAS在搜索网络结构时从头训练每个候选网络,这导致计算量激增。ENAS3使用参数共享策略来计算结构搜索,该策略不再让每个子网从头训练,而是强制他们共享权值,从而缩短了从大量候选网络中获得最佳网络的时间,随后权值共享策略收到了认可,但是新的研究发现权值共享可能导致最后的候选网络排序不准确(未必能选择到最佳结构)。不久之后,DNA4方法将large搜索空间模块化成blocks,使得候选网络结构得以充分训练,减少了权重损失共享的移位问题(shift problem)。GDAS-NSAS5方法提出了Novelty Search based Architecture Selection (NSAS)损失函数,来解决训练一个新网络时由于权值共享导致的多模型遗忘问题(当权值共享用于顺序训练新网络时,先前那个网络性能降低)。
NAS的总体框架如下图:定义搜索空间(一组可供搜索的神经网络架构,也即决定着NAS可以搜索到哪些网络),根据搜索策略得到大量候选网络,然后对其训练和排序(通过val_acc或其他metric),作为反馈信息调整搜索策略,之后进一步得到新的候选网络,当满足终止条件时,选出最优网络结构,在测试集上进行评估。搜索空间,搜索策略,性能评估策略是NAS算法的核心要素,通俗地说:搜索空间决定着机器能够搜索到什么结构的网络;搜索策略即告诉机器怎样去搜索;性能评估策略则是教机器判断搜索到的网络的好坏。

2 早期的NAS
观察发现,神经网络的体系结构可以描述为可变长度的字符串,于是自然而然能够想到利用RNN作为控制器生成这样的字符串,然后通过强化学习(RL)来优化控制器,最终取得满意的效果,这就是NAS-RL1的基本思路。而MetaQNN则将网络结构的选择过程视为马尔科夫(Markov)决策过程,并利用Q-Learning来记录reward,从而得到最优结构(马尔科夫决策、Q-Learning都是RL相关的)。大规模进化(Large-scale Evolution)6通过使用进化算法(evolutionary algorithms,EA)来学习最优网络结构,尽可能减少人工干预,它使用一些基本的网络结构来初始化一个庞大的种群,并通过复制(reproduce,或称繁殖)、变异(mutating)和选择(selecting)来获得最佳网络结构。GeNet7也使用了EA,将神经网络编码为等长的二进制字符串,随机初始化一组个体,利用定义好的遗传操作来修改二进制串生成新的个体,最后“适者生存”,选出最具竞争力的网络结构。这些早期NAS算法存在以下共同特征,这些共同特征也是自动生成网络结构面临的共同挑战:
- 全局搜索策略:搜索网络结构的所有部分,在巨大的搜索空间中找到最优,无异于大海捞针;
- 离散的搜索空间:通过离散地修改来改变网络结构,这意味着不能使用梯度策略来调整网络结构;
- 从头搜索:从零构建模型,显然,这种方法不能很好地利用原来已经设计好的优秀网络结构,而且浪费时间;
- 完全训练:将每个候选网络从头训练直到收敛,众所周知,后续的网络和先前的网络在结构上存在相似之处,从头训练不能充分利用这种关系。因为只需要获得候选网络的相对排名,所以是否要完全训练每个候选网络(亦或是权值共享)还值得商榷。
如下图,以大规模进化方法为例,从最简单的网络结构开始,逐步生成复杂的网络结构,C、BN和R分别代表卷积层,批归一化和ReLU。

3 优化策略
针对早期NAS的特点以及存在的问题,本部分将从模块化搜索策略、连续搜索空间、网络架构回收和不完全训练四个方面总结现有的NAS工作。
3.1 Modular Search Strategy
为了提升搜索效率,有时候会对搜索空间进行简化,比如把网络切分成基本的单元(cell/block)。与传统的全局搜索相比,基于cell/block的模块化搜索策略有效地减少了搜索空间,但不是说基于cell的搜索能够满足所有任务的需求,有时全局搜索反而更加灵活。
下图展示了早期NAS工作中两个常见的链式结构搜索空间,其实就对应了现在我们所认知的深层神经网络,图中左部分是“直筒式”(会有梯度弥散问题),右部分是加了跳跃连接(或密集连接)的链式结构(类似ResNet、DenseNet)。

不少神经网络虽然很深,但由若干个cells或者blocks堆叠组成(如ResNet中的Block),这种网络结构不仅性能优越,还易于在不同任务之间迁移。NASNet8最早探索了这种基于cell搜索的idea,提出搜索两种类型的单元:normal cell和reduction cell,normal cell重复n次之后连接到reduction cell,两种cell堆叠获得最终网络,如下图。normal cell:卷积stride为1,提取高级特征,同时保持feature map尺寸不变;reduction cell:卷积stride为2,feature map size减为原来的一半。大名鼎鼎的ENAS3也证明了搜索cell结构的有效性,随后,搜索cell得到了不少研究者的赏识。

3.2 Continuous Search Space
NAS的出现是革命性的,但一些主流搜索方法如:基于RL、进化算法、贝叶斯优化等效率很低,因为它们的搜索空间是离散的,它们将NAS视为离散搜索空间中的黑箱优化问题。基于此动机,DAS9将离散的网络结构空间转化为连续可微的形式,然后使用梯度优化(gradient optimization)技术搜索网络结构。著名的DARTS10使用了Softmax将原来离散的搜索空间连续化,在保证搜索到的网络性能的同时,大大降低了计算开销。如下图,DARTS也是基于cell的搜索方法,1)它将cell当作一个有向无环图(DAG),结点表示feature map,结点与结点之间的边代表可能的操作(卷积、池化等,在CNN的DARTS中,可选的操作集合为:3×3深度可分离卷积,5×5深度可分离卷积,3×3空洞深度可分离卷积,5×5空洞深度可分离卷积,3×3极大值池化,3×3均值池化,恒等,0操作即两个结点无连接),初始状态为unknown;2)将搜索空间连续松弛化,即每个边看成所有子操作的混合,通过softmax为不同的操作赋予权重,如权重为0,则认为不需要该操作;3)双重优化(bilevel optimization):优化网络结构和超参数,优化目标是验证集上的损失;4)取出每条边上权值最大的 n n n个操作,组成最后的网络结构。

由于DARTS的简洁性与优雅性,与DARTS相关的研究工作十分丰富,不过DARTS中还有一些细节值得推敲。总的来说,在连续搜索空间中使用梯度优化方法寻找合适的网络结构是一个重要趋势。
3.3 Network Architecture Recycle
早期的NAS和当时的大多数工作都是从头搜索网络结构,某种程度上,虽然这样做增加了网络结构设计的自由度(可能搜索到人类未知的高性能网络),但是计算开销也相当大,况且从头训练网络没有充分用到人类已经设计好的一些优秀网络结构。基于该动机,一种新的idea是:以现有的人工设计的优秀网络结构为出发点,利用NAS方法对它们修改、演化,从而得到新的具有潜力的高性能模型,通常将这个过程称作网络迁移,这种方法使得NAS大量使用前人设计好的高性能网络成为可能,代表工作有Net2Net11、Efficient Architecture Search (EAS)12、Path-level EAS13、NASH-Net14以及Fast Neural Network Adaptation (FNA)15。
以Net2Net为例,该方法提出了功能保留转换(function-preserving transformations),实现了对模型参数的重复利用,从而可以有效加速训练新的大网络的训练,主要包括Net2WiderNet和Net2DeeperNet,分别用于拓宽网络和加深网络。如下图为Net2WiderNet的示意, h [ 3 ] h[3] h[3]结点为 h [ 2 ] h[2] h[2]的copy,输入权重直接复制,输出权重除以2,就完成了全连接层的恒等替换。

同样地,Net2DeepNet如下图,直接添加一个与先前FC层的具有相同权重和结构的FC层,达到加深网络的效果。

3.4 Incomplete Training
NAS的关键是使用搜索策略,通过比较大量候选网络的性能来找到最佳的网络结构,因此,候选网络的排名对NAS的搜索结果来说至关重要,早期的NAS方法往往会完全训练候选网络结构,这相当耗时。不过它们还是使用了某些方法来尽可能加速候选网络排序,尽管加速十分有限,仍需要强大的算力——1)NAS-RL使用并行和异步更新来加速排序;2)MetaQNN在第一个训练epoch结束后就通过预测器来决定是否要降低学习率继续训练;3)Large-scale Evolution则让突变的子网络架构尽可能继承父网络架构的权重,从而减少重新训练候选网络架构的负担,但是仍然有一些子网络突变后不能继承父网络参数,被迫重新训练。
3.4.1 训练不必从头——权值共享

将每个候选网络从头训练至收敛,然后根据性能排序,这样导致每个训练完全的模型参数都被丢弃,为此,参数共享的NAS方法应运而生。在迁移学习或多任务学习中,通过训练某一为特定任务设计的特定模型而得到的参数,是可以用于其他任务/其他模型的,ENAS是第一个提出参数共享的NAS工作,ENAS指出候选网络架构可以看作一个超网络结构中sampled的有向无环子图,如上图,绿色部分为超网络结构,是一个有向无环图,红色部分是它的两个子图,强制子网络之间共享参数,这样子网络就不必从头训练,在此基础上,ENAS使用LSTM作为控制器,在一个大的图上搜索最优子图来得到最终网络结果。
类似的方法还有CAS16、AutoGAN(首次将GAN和NAS结合)17、OFA18,以及基于one-shot方法的如SMASH19提出训练一个辅助的HyperNet,并使用HyperNet为其他候选网络生成权值;Graph HyperNetwork(GHN)20推荐使用计算图来表示网络结构,并使用图神经网络(Graph neural networks)执行架构搜索;典型的one-shot NAS需要通过参数共享从超网络中抽取大量候选架构,并对其评估择优,SETN21指出,从这些候选网络中找到最佳架构相当困难,为此,SETN使用均匀的随机训练策略来平等的对待每一个候选网络,这样它们可以被充分训练以得到更准确的验证集表现,SETN还使用了评价器来学习候选网络具有较低验证损失的概率,这样极大地提升了候选网络的优秀率;也有算法指出,ENAS中的权值共享策略可能会导致候选网络排序不准确,从而搜索不到最佳网络架构,同样地,FairNAS22的研究也表明,基于参数共享的候选网络架构往往得不到充分训练,从而导致候选网络排序不准确;DNA4提出将神经网络结构划分为互不影响的blocks,利用蒸馏的思想,引入教师模型来引导网络搜索(将NAS分块搜索,前一个block的输出逐层作为下一个block的教师,蒸馏学习),通过分块的权重共享训练,减少了权重共享造成的移位问题;GDAS-NSAS5则解决了多模型遗忘问题;可微分的NAS其实也使用了类似权重共享的策略,比如前面提到的DARTS,也是从一个超网络选择子网络。
3.4.2 不必训练至收敛
在NAS中,不必将每个候选网络架构训练至收敛,模型训练过程中,我们往往可以根据学习曲线来判断学习情况,在NAS中,对于有潜力的候选网络架构,可以进一步进行充分训练,对于没有潜力的网络架构,可以提早停止。不少类方法的重心都是提前停止训练来获得候选网络的相对排名,如:23中使用概率方法模拟神经网络的学习曲线以提前终止训练不理想的模型,但是准确模拟和预测学习曲线又需要一番功夫。PNAS24为了避免训练和验证所有的子网络,提出了一个可学习的预测函数,基于前期子网络的性能表现进行学习,然后来评估所有的候选cells,选出其中的top-k个cells,重复此过程直到获得足够数量的cells。MdeNAS25提出了性能排序假说:前期表现好的模型在后期完全收敛时表现也会好,并通过大量实验验证了这个假说,这样通过候选网络结构的早期表现就可以得到候选网络架构的相对排序,从而加速了搜索。
4 性能对比
NAS是一项很有前景价值的任务,下图为NAS方法在CIFAR-10和ImageNet数据集上的性能表现,根据主流搜索方法对结果分类比较,这些搜索方法包括:
- 强化学习(Reinforcement learning,RL)
- 进化算法(Evolutionary algorithm,EA)
- 梯度优化方法(Gradient optimization,GO)
- 随机搜索(Random search,RS)
- SMBO模型(Sequential model-based optimization,SMBO,贝叶斯优化的最简形式)
4.1 CIFAR-10上性能对比
如下图所示,传统的RL方法对计算力的要求很高,NAS-RL使用了22400个GPU days(实际是通过800个GPU并行计算),而进化算法普遍要比RL快,但还是需要相当大的算力,普通实验室仍然望尘莫及,使用梯度优化算法在连续可微的搜索空间上寻找最优网络架构是革命性的进步,这些方法消耗的GPU days是多数小微实验室能够承受得起的,不过最终寻找到的网络架构未必是最优的,有时候效果可能不如EA算法或传统RL方法,虽然EA算法相对较慢,但其往往能够找到最优结果,而使用梯度优化算法就未必了。不过值得一提的是,在ImageNet上,GO算法的表现效果要比EA算法更好,这进一步说明了搜索连续的空间是绝对可行的,对于大多数普通NAS研究者来说,GO算法仍然是值得研究的,因为其搜索更快。实际上,NAS方法之间的性能对比不是一件易事,因为该方向缺少baseline,且实验的各种设置(预处理、超参、tricks)也不尽相同。


4.2 ImageNet上性能对比

5 未来方向
早期的NAS更符合人类对自动设计网络架构的期望,比如大规模进化6算法,一旦网络进化开始,就不再需要人工干预,但是进化过程消耗了大量的计算资源,因此后来的NAS讨论了如何保证网络性能的同时减小搜索空间,模块化的搜索策略大大加快了网络架构搜索,但是这也限制了网络设计的自由度,网络架构的自由度和搜索代价是相斥的,未来可能会出现一些工作来平衡二者以取得理想的结果。类似ENAS这种权值共享方法虽然效率出奇的高,但越来越多的研究表明权值共享会导致候选网络架构排序不准确,从而导致最优的网络结构不能被搜索到。
NAS的出现振奋人心,它的出现有望结束手工设计神经网络或者调参的复杂过程,人们希望NAS能设计出超出目前人类认知的新的优秀网络(虽然目前的NAS搜索到的网络都没有超出人类原有认知,毕竟搜索空间摆在那),虽然近期NAS相关的研究非常非常多,但人工设计的神经网络已经在各个领域(语义分割、目标检测、图像识别等)取得了引以为傲的成果,与它相比,只能说NAS还处在初级阶段。目前的NAS工作主要研究如何进一步提高图像分类精度,压缩搜索时间,从而让NAS变得更加“平民化”,此外,目前NAS使用的搜索策略集中在GO上,也就是基于梯度的,所以这方面的研究对NAS会有很大的帮助。总的来说,NAS从现在到成熟到落地到真正取代人工设计的神经网络还需要大量的理论和实验支持,前路漫漫!
6 参考文献
- Zoph B, Le Q V. Neural architecture search with reinforcement learning[J]. arXiv preprint arXiv:1611.01578, 2016.
- Baker B, Gupta O, Naik N, et al. Designing neural network architectures using reinforcement learning[J]. arXiv preprint arXiv:1611.02167, 2016.
- Pham H, Guan M Y, Zoph B, et al. Efficient neural architecture search via parameter sharing[J]. arXiv preprint arXiv:1802.03268, 2018.
- Li C, Peng J, Yuan L, et al. Block-wisely Supervised Neural Architecture Search with Knowledge Distillation[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 1989-1998.
- Zhang M, Li H, Pan S, et al. Overcoming Multi-Model Forgetting in One-Shot NAS with Diversity Maximization[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 7809-7818.
- Real E, Moore S, Selle A, et al. Large-scale evolution of image classifiers[J]. arXiv preprint arXiv:1703.01041, 2017.
- Xie L, Yuille A. Genetic cnn[C]//Proceedings of the IEEE international conference on computer vision. 2017: 1379-1388.
- Zoph B, Vasudevan V, Shlens J, et al. Learning transferable architectures for scalable image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 8697-8710.
- Shin R, Packer C, Song D. Differentiable neural network architecture search[J]. 2018.
- Liu H, Simonyan K, Yang Y. Darts: Differentiable architecture search[J]. arXiv preprint arXiv:1806.09055, 2018.
- Chen T, Goodfellow I, Shlens J. Net2net: Accelerating learning via knowledge transfer[J]. arXiv preprint arXiv:1511.05641, 2015.
- Cai H, Chen T, Zhang W, et al. Efficient Architecture Search by Network Transformation[C]//AAAI. 2018.
- Cai H, Yang J, Zhang W, et al. Path-Level Network Transformation for Efficient Architecture Search[C]//International Conference on Machine Learning. 2018: 678-687.
- Elsken T, Metzen J H, Hutter F. Simple and efficient architecture search for convolutional neural networks[J]. arXiv preprint arXiv:1711.04528, 2017.
- Fang J, Sun Y, Peng K, et al. Fast Neural Network Adaptation via Parameter Remapping and Architecture Search[C]//International Conference on Learning Representations. 2019.
- Pasunuru R, Bansal M. Continual and multi-task architecture search[J]. arXiv preprint arXiv:1906.05226, 2019.
- Gong X, Chang S, Jiang Y, et al. Autogan: Neural architecture search for generative adversarial networks[C]//Proceedings of the IEEE International Conference on Computer Vision. 2019: 3224-3234.
- Cai H, Gan C, Wang T, et al. Once-for-all: Train one network and specialize it for efficient deployment[J]. arXiv preprint arXiv:1908.09791, 2019.
- Brock A, Lim T, Ritchie J M, et al. Smash: one-shot model architecture search through hypernetworks[J]. arXiv preprint arXiv:1708.05344, 2017.
- Zhang C, Ren M, Urtasun R. Graph hypernetworks for neural architecture search[J]. arXiv preprint arXiv:1810.05749, 2018.
- Dong X, Yang Y. One-shot neural architecture search via self-evaluated template network[C]//Proceedings of the IEEE International Conference on Computer Vision. 2019: 3681-3690.
- Chu X, Zhang B, Xu R, et al. Fairnas: Rethinking evaluation fairness of weight sharing neural architecture search[J]. arXiv preprint arXiv:1907.01845, 2019.
- Domhan T, Springenberg J T, Hutter F. Speeding up automatic hyperparameter optimization of deep neural networks by extrapolation of learning curves[C]//Twenty-Fourth International Joint Conference on Artificial Intelligence. 2015.
- Liu C, Zoph B, Neumann M, et al. Progressive neural architecture search[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 19-34.
- Zheng X, Ji R, Tang L, et al. Multinomial distribution learning for effective neural architecture search[C]//Proceedings of the IEEE International Conference on Computer Vision. 2019: 1304-1313.