Neural Architecture Search: A Survey翻译

摘要

在过去的几年中,深度学习已在各种任务(例如图像识别,语音识别和机器翻译)上取得了显着进步。这一进展的一个关键方面是新的神经网络结构。当前采用的网络结构大部分是由人类专家设计的,这是一个耗时且容易出错的过程。 因此,这导致对自动神经结构搜索方法的兴趣日益浓厚。我们概述了该研究领域中的现有工作,并根据三个维度对它们进行了分类:搜索空间,搜索策略和性能评估策略

1.介绍

在这里插入图片描述
  深度学习在感知任务中的成功很大程度上归功于其对特征工程流程的自动化:层次化特征提取器是从数据中以端对端的方式学习的,而不是人工设计的。然而,伴随着这种成功的同时,对结构工程的需求也不断增长,其中越来越复杂的神经结构都是手动设计的。因此,神经结构搜索(NAS)是使结构工程自动化的过程,这是使机器学习自动化的下一阶段。到目前为止,在某些任务上,例如图像分类,目标检测或语义分割,NAS方法已经优于手动设计的网络结构。NAS可以看作是AutoML的子领域,并且与超参数优化和元学习有很大的重叠。我们根据以下三个维度对NAS的方法进行分类:搜索空间,搜索策略和性能评估策略:

  • 搜索空间。搜索空间定义了原则上可以表示的所有可能网络结构。结合适用于某个具体任务的网络结构典型属性的先验知识可以减少搜索空间的大小并简化搜索。但是,这也会引入人为偏见,这可能会阻止找到超出当前人类知识范围之外的新颖结构组件。
  • 搜索策略。搜索策略详细说明了如何探索搜索空间(搜索空间通常成倍增长,甚至是无限的)。它包含了经典的exploration-exploitation trade-off,因为,一方面,希望快速找到性能良好的架构,另一方面,应避免过早收敛到次优结构的区域。
  • 性能评估策略。NAS的目标通常是寻找可以在未知数据上实现高预测性能的网络结构。性能评估是指评估此性能的过程:最简单的选择是对数据执行网络结构的标准训练和验证,但是不幸的是,这在计算上非常昂贵,并且限制了可以探索的体系结构的数量。因此,许多最新研究集中在开发减少这些性能评估成本的方法。

我们参考图1进行说明。本文还根据以下三个方面进行了结构安排:我们在第2节中讨论搜索空间,在第3节中介绍搜索策略,在第4节中概述性能评估方法。在第5节中展望未来方向。

2.搜索空间

搜索空间定义了NAS方法原则上可能发现的神经结构。现在,我们讨论最近工作中的常见搜索空间。
在这里插入图片描述
  相对简单的搜索空间是链式结构神经网络的空间,如图2(左)所示。链式神经网络结构 A A A可以写为 n n n层的序列,其中第 i i i L i L_i Li接收来自 i − 1 i-1 i1层的输入,其输出用作 i + 1 i+1 i+1层的输入,即 A = L n ◦ . . . L 1 ◦ L 0 A=L_n◦...L_1◦L_0 A=Ln...L1L0然后通过以下方式对搜索空间进行参数化
  (i)层数 n n n的(最大)数目(可能是无界的);
  (ii)每层执行的操作类型,例如池化,卷积或更高级的操作,例如深度可分离卷积或空洞卷积;
  (iii)与操作相关的超参数,例如滤波器的数量,内核大小和卷积层的步长,或简单地为全连接网络的单元数量。
  请注意,来自(iii)的参数以(ii)为条件,因此搜索空间的参数化不是固定长度的,而是条件空间。
  NAS的最近工作结合了现代人工设计结构中已知的元素(例如残差连接),可以构建复杂的多分支网络,如图2(右)所示。在这种情况下,层 i i i的输入可以被正式描述为结合先前层输出的函数 g i ( L i − 1 o u t , . . . , L 0 o u t ) g_i(L^{out}_{i-1},...,L^{out}_0) gi(Li1out,...,L0out)。 使用这种功能可显着提高自由度。这些多分支结构的具体例子是
  (i)链状结构的网络,通过设置 g i ( L i − 1 o u t , . . . , L 0 o u t ) = L i − 1 o u t g_i(L^{out}_{i-1},...,L^{out}_0)=L^{out}_{i-1} gi(Li1out,...,L0out)=Li1out
  (ii)残差网络,先前层输出的相加,即 g i ( L i − 1 o u t , . . . , L 0 o u t ) = L i − 1 o u t + L j o u t , j < i − 1 g_i(L^{out}_{i-1},...,L^{out}_0)=L^{out}_{i-1}+L^{out}_j,j<i-1 gi(Li1out,...,L0out)=Li1out+Ljout,j<i1
  (iii)DenseNets,先前层输出的串联,即 g i ( L i − 1 o u t , . . . , L 0 o u t ) = c o n c a t ( L i − 1 o u t , . . . , L 0 o u t ) g_i(L^{out}_{i-1},...,L^{out}_0)=concat(L^{out}_{i-1},...,L^{out}_0) gi(Li1out,...,L0out)concat(Li1out,...,L0out)
在这里插入图片描述
  受人工构建的由重复单元组成的网络结构的启发,提出了搜索这样的重复单元或块,而不是整个结构。Zoph et al. (2018)优化了两种不同类型的单元:保留输入维度的普通单元和减少空间维度的归约单元。然后通过以预定义的方式堆叠这些单元来构建最终的体系结构,如图3所示。与上述讨论的空间相比,该搜索空间具有三大优势

  1. 由于重复单元通常由比整个体系结构少得多的层组成,因此大大减少了搜索空间的大小。例如,Zoph et al. (2018)估计与之前的工作相比提速了7倍,同时实现了更好的性能。
  2. 通过简单地更改模型中使用的单元和滤波器的数量,可以更轻松地将基于单元构建的结构转移或适配到其他数据集。实际上,Zoph et al. (2018)将在CIFAR-10上进行了优化的单元转移到ImageNet,并实现了最新的性能。
  3. 通常,通过重复构建模块来创建网络结构已证明是有用的设计原则,例如在RNN中重复LSTM模块或堆叠残差模块。

因此,许多最近的工作也成功地采用了这种基于单元的搜索空间。但是,当使用基于单元的搜索空间时,出现了一种新的设计选择,即如何选择宏观结构:应使用多少个单元,以及如何连接它们以构建实际模型?例如,Zoph et al. (2018)根据单元建立了一个序列模型,其中每个单元接收前两个单元的输出作为输入,而Cai et al. (2018b)采用采用了众所周知的人工设计架构的高层结构,例如DenseNet,并在这些模型中使用了它们的单元。原则上,通过简单地用单元替换层,可以在例如上述多分支空间内任意地组合单元。理想情况下,宏观结构和微观结构(即单元的结构)都应该联合优化,而不是单独优化微观结构;否则,在找到性能良好的单元后,很容易最终不得不进行手动宏观结构构建。对宏观结构优化的第一步是Liu et al. (2018b)介绍的分层搜索空间,其中包含多个层级的单元。第一级包括一组原始操作,第二级通过有向无环图连接原始操作的不同单元,第三级编码如何连接第二级单元,等等。基于单元的搜索空间可以看作是这种层次搜索空间的一种特殊情况,其中级别数为3,第二级对应于单元,第三级为硬编码宏观结构
  搜索空间的选择在很大程度上决定了优化问题的难度:即使对于基于具有固定宏观结构的单个单元的搜索空间,优化问题仍然是(i)非连续的和(ii)相对高维的(因为更复杂的模型往往会表现得更好,从而导致更多的设计选择)。
  我们注意到,许多搜索空间中的结构都可以写为固定长度的向量。例如Zoph et al. (2018) 针对两个单元中每个单元的搜索空间可以写成一个具有分类维度的40维搜索空间,每个搜索空间都可以在少量不同的构建块和输入之间进行选择。可以将无边界搜索空间限制为具有(可能非常大,但有限的)固定层数的空间,这又会导致具有(可能很多)条件维度的固定大小的搜索空间。
  在下一部分中,我们将讨论非常适合此类搜索空间的搜索策略。

3.搜索策略

可以使用许多不同的搜索策略来探索神经网络结构的空间,包括随机搜索,贝叶斯优化,进化算法,强化学习(RL)和基于梯度的方法。历史上,许多研究人员在十几年前已经使用了进化算法来进化神经结构(通常还包括它们的权重)。Yao (1999)对2000年之前的工作进行了文献综述。
  自2013年以来,贝叶斯优化在NAS领域取得了数项成功,这产生了效果非常好的视觉架构,无需数据增强即可达到CIFAR-10的最新性能,还产生了第一个自动调整的神经网络且获得与人类专家相当的效果。在Zoph and Le (2017)通过基于强化学习的搜索策略在CIFAR-10和Penn Treebank基准测试中获得较好成绩之后,NAS成为机器学习领域的主流研究课题。尽管Zoph and Le (2017)使用了大量的计算资源来实现此结果(800个GPU进行了三到四个星期),但是在他们的工作之后,已经陆续发布了各种各样的方法来减少计算成本并实现进一步的性能改进。
  (1)强化学习方法
  为了将NAS构造为强化学习(RL)问题,可以将神经结构的生成视为是agent的动作,其动作空间与搜索空间相同。agent的奖赏基于对受过训练的模型结构的性能的估计(请参阅第4节)。不同的RL方法在表示agent策略和优化策略的方面有所不同:Zoph and Le (2017)使用循环神经网络(RNN)策略对字符串进行顺序采样,进而对神经结构进行编码。他们最初使用REINFORCE策略梯度算法训练了该网络,但在后续工作中(Zoph et al., 2018)使用了近端策略优化。Baker et al. (2017a)使用Q-learning来训练一个策略,该策略依次选择层的类型和相应的超参数。
  这些方法的另一种观点是作为顺序决策过程,在该过程中,策略对动作进行采样以按顺序生成网络结构,环境的“状态”包含到目前为止已采样的动作,并且只有在最终动作完成后才能获得(未衰减的)奖赏。 但是,由于在此顺序过程中没有与环境发生交互(没有观察到外部状态,也没有中间奖赏),因此我们发现将结构采样过程解释为单个动作的顺序生成更为直观。这将RL问题简化为stateless multi-armed bandit问题。
  Cai et al. (2018a)提出了一种相关方法,他将NAS构造为一个顺序决策过程:在他们的方法中,状态是当前(经过训练的)模型结构,奖赏是对该结构性能的估计,而动作对应于保留功能转换的应用, 称为网络形态学,另请参见第4节,随后是网络的训练阶段。为了处理可变长度的网络体系结构,他们使用双向LSTM将模型结构编码为固定长度的表示形式。基于此编码表示,actor网络决定采样的动作。这两个组件的组合构成了策略,并使用REINFORCE策略梯度算法进行了端到端的训练。我们注意到,这种方法不会两次访问相同的状态(即模型结构)。
  (2)进化搜索方法
  使用RL的替代方法是使用进化算法优化神经网络结构的神经进化方法。我们知道的第一个如此设计神经网络的方法可以追溯到近三十年:Miller et al. (1989)使用遗传算法来提出模型结构,并使用反向传播来优化其权重。此后,许多神经进化方法使用遗传算法来优化神经结构及其权重。然而,当采用具有数百万权重的神经网络结构进行有监督的学习任务扩展时,基于SGD的权重优化方法目前优于进化方法。最近的神经进化方法因此再次使用基于梯度的方法来优化权重,而仅使用进化算法优化神经模型结构本身
  演化算法演化出大量模型,即一组(可能训练好的)网络;在每个进化步骤中,至少要采样种群中的一个模型,并作为父代通过对其应用突变来生成后代。在NAS的情况中,变异是局部操作,例如添加或删除层,更改层的超参数,添加残差连接以及更改训练超参数。在训练完后代之后,评估它们的适应度(例如,在验证集中的表现)并将其添加到种群中。
  神经进化方法在采样父代,更新种群和产生后代的方式上有所不同。例如,Real et al. (2017),Real et al. (2019)和Liu et al. (2018b)使用竞争选择来抽样父代,而Elsken et al. (2019)使用反密度从多目标Pareto前沿对父代进行采样。Real et al. (2017) 从种群中去除了最差的个体,但他发现去除最老的个体是有益的(这降低了贪婪),Liu et al. (2018b)不再删除个体。为了产生后代,大多数方法都是随机初始化子网络,而Elsken et al. (2019)则使用Lamarckian遗传,即知识(以学习权重的形式)通过从父网络传递给子网络。Real et al. (2017)还让后代继承了不受其突变影响的父代所有参数;尽管这种继承并不是严格地保留功能,但与随机初始化相比,它也可以加快学习速度。此外,它们还允许改变学习速率,这可以看作是优化NAS期间学习速率计划的一种方式。我们引用的是 Stanley et al. (2019)对神经进化方法的最新深入综述。
  Real et al. (2019) 对强化学(RL),进化搜索和随机搜索(RS)进行了案例研究,得出结论说RL和进化搜索在最终测试准确性方面表现均相当好,进化搜索随时随地都有更好的性能,并且找到更小的模型。两种方法在实验中的性能始终优于RS,但幅度很小:RS在CIFAR-10上实现了约4%的测试误差,而RL和演化达到了约3.5%(“模型扩充”后,滤波器的深度和数量有所增加;实际用于搜索的非扩充空间的差异约为2%)。Liu et al. (2018b)的差异甚至更小,他们报告了基于RS的CIFAR-10的测试误差为3.9%,ImageNet的top-1验证误差为21.0%,而基于进化的方法分别为3.75%和20.3%。
  (3)贝叶斯优化方法
  贝叶斯优化(BO,参见Shahriari et al., 2016)是最流行的超参数优化方法之一,但由于典型的BO工具箱基于高斯过程和专注于低维连续优化问题。Swersky et al. (2013)和Kandasamy et al. (2018) 派生了用于结构搜索空间的核函数,以便使用基于GP的经典BO方法。相比之下,一些工作使用基于树的模型(特别是树Parzen估计量或随机森林)来有效地搜索高维条件空间并实现最优的性能,这种方法共同优化神经结构及其超参数。尽管缺乏全面的比较,但初步证据表明这些方法也可以胜过进化算法。
  Negrinho,Gordon (2017)和Wistuba (2017)利用其搜索空间的树结构,实现蒙特卡洛树搜索。Elsken et al. (2017)提出了一种简单但性能良好的爬山算法,该算法通过贪婪地朝性能更好的结构的方向移动而发现高质量的结构,而无需更复杂的探索机制。
  (4)基于梯度方法
  虽然上述方法采用离散搜索空间,但Liu et al. (2019b)提出了一种连续松弛方法,以实现基于梯度的直接优化:不是固定要在指定层上执行的单个操作 o i o_i oi(例如,卷积或池化),而是一组操作 { o 1 , . . . , o m } \{o_1,...,o_m\} {o1,...,om}。更具体地,给定某层的输入 x x x,该层输出 y y y计算为 y = ∑ i = 1 m α i o i ( x ) , α i ≥ 0 ∑ i = 1 m α i = 1 y=\sum^m_{i=1}α_io_i(x),α_i≥0\sum^m_{i=1}α_i=1 y=i=1mαioi(x),αi0i=1mαi=1,其中系数 α i α_i αi有效地参数化了网络结构。Liu et al. (2019b) 然后通过在权重的训练数据和结构参数(例如 α α α)的验证数据上交替进行梯度下降步骤来优化网络权重和网络结构。最终,通过为每一层选择 i ∗ = a r g m a x i   α i i^*=argmax_i~α_i i=argmaxi αi的运算 i ∗ i^∗ i来获得离散体系结构。没有优化可能操作的权重 α α α, Xie et al. (2019); Cai et al. (2019) 提出在可能的操作上优化参数化分布。Shin et al. (2018),Ahmed和Torresani(2018)还采用了基于梯度的神经结构优化,但是分别专注于优化层超参数或连接模式。

4.性能评估策略

在这里插入图片描述
  第3节中讨论的搜索策略旨在找到一种神经结构 A \pmb A AAA,该结构可以最大化某些性能指标,例如对未知数据的准确性。为了指导他们的搜索过程,这些策略需要估计他们考虑的给定结构 A \pmb A AAA的性能。最简单的方法是在训练数据上训练 A \pmb A AAA并在验证数据上评估其性能。但是,从头开始训练 A \pmb A AAA并评估每种结构经常会为NAS带来数千GPU/天的计算需求。这自然会导致用于加速性能评估方法的提出,我们将在下面进行讨论。对于现有方法的概述,请参见表1。
  (1)Lower fidelities estimates
  可以基于充分训练后实际性能的低保真度(也称为代理指标)来估算性能。低保真度包括较短的训练时间,对数据子集的训练,较低分辨率的图像,或者每层更少滤波器,更少隐藏单元。尽管这些低保真度近似值降低了计算成本,但由于性能通常会被低估,因此它们还会在估计中引入偏差。只要搜索策略仅依赖于对不同体系结构进行排名并且相对排名保持稳定,这可能就不会出现问题。但是,最近的结果表明,当廉价近似值与“全面”评估之间的差异太大时,这种相对排名可能会发生巨大变化,这表明保真度会逐渐提高。
  (2)Learning Curve Extrapolation
  估计结构性能的另一种可能方法是基于学习曲线外推法。Domhan et al. (2015)提出外推初始学习曲线,并终止那些预期表现不佳的学习曲线,以加快结构搜索过程。Swersky et al. (2014), Klein et al. (2017a), Baker et al. (2017b),以及Rawal和Miikkulainen(2018)也考虑了结构超参数,以预测哪些局部学习曲线最有希望。Liu et al. (2018a)也提出了训练替代模型来预测新型结构的性能,他们不采用学习曲线外推法,而是支持根据结构/单元特性预测性能并外推到比训练期间更大的架构/单元。预测神经体系结构性能的主要挑战在于,为了加快搜索过程,需要基于相对较少的评估来在相对较大的搜索空间中进行良好的预测
  (3)Weight Inheritance/Network Morphisms
  加快性能估计的另一种方法是基于之前已训练的其他结构的权重来初始化新结构的权重。实现这一目标的一种方法称为网络形态学,它允许在修改结构的同时保持网络所代表的功能不变,从而导致方法仅需要几天的GPU时间。这允许连续增加网络的容量并保持高性能,而无需从头进行训练。继续训练几个epoch可以使由网络形态学引入的额外容量变得可用。这些方法的优势在于,它们允许搜索空间没有架构大小的固有上限;另一方面,严格的网络形态学只会使体系结构更大,从而可能导致过于复杂的体系结构。这可以通过采用可减少体系结构的近似网络形态学来减弱。
  (4)One-Shot Models/Weight Sharing
在这里插入图片描述
  One-Shot结构搜索(参见图4)将所有结构视为一个supergraph中的不同subgraphs(one-shot模型),并在具有该supergraph的共同结构之间共享权重。仅需要训练一个one-shot模型的权重(以多种方式之一),然后可以通过继承来自one-shot模型的训练后的权重来评估结构(只是该one-shot模型的子图)而无需任何单独的训练。由于不需要进行额外的训练(仅评估验证数据的性能),因此极大地加快了结构的性能评估,这又导致方法仅需要几天的GPU。one-shot模型通常会产生很大的偏差,因为它严重低估了最佳结构的实际性能。但是,它允许对结构进行排名,因此如果估算的性能与实际性能有很强的关联,将不会有任何问题。但是,目前尚不清楚是否确实如此。
  不同的one-shot NAS方法在训练one-shot模型的方式上有所不同:ENAS学习一种RNN控制器,该控制器从搜索空间对体系结构进行采样,并根据通过REINFORCE获得的近似梯度训练one-shot模型。DARTS通过将候选操作的混合放置在one-shot模型的每个边上来获得优化的one-shot模型权重,同时连续缩小搜索空间。SNAS并没有像DARTS中那样优化操作的实际价值权重,而是优化了候选操作的分布。作者采用具体分布和重新参数化(Kingma and Welling,2014)来放松离散分布并使之可微,从而可以通过梯度下降进行优化。为了克服将整个one-shot模型保留在GPU内存中的必要性,ProxylessNAS将结构构权重“二值化”,每次操作都mask了除一条边以外的所有边。然后,通过采样一些二进制化的体系结构并使用BinaryConnect来更新相应的概率,从而了解边缘是否被掩盖的概率。Bender et al. (2018)仅训练了one-shot模型,并证明了在使用路径dropout进行训练的过程中随机停用该模型的部分时这已足够。
  虽然前面提到的方法在训练过程中优化了整个结构的分布,但Bender et al. (2018)的方法可以看作是使用固定分布。后者实现的高性能表明,权重共享和固定分布的结合可能(也许令人惊讶)是one-shot NAS所需的唯一要素。与这些方法相关的是hypernetworks的元学习,可为新的结构生成权重,因此仅需训练hypernetworks即可,而无需结构本身进行 训练。这里的主要区别是权重不是严格共享的,而是由共享的hypernetworks生成的(取决于所采样的体系结构)。
  one-shot NAS的一般限制是,先验定义的supergraph将搜索空间限制为其子图。此外,在结构搜索期间要求整个supergraph驻留在GPU内存中,这将相应地局限于相对较小的supergraphs和搜索空间,因此通常与基于单元的搜索空间结合使用。虽然基于权重共享的方法已大大减少了NAS所需的计算资源(从数千到几个GPU/天),但如果对结构的采样分布进行了优化,则目前尚不清楚它们会在搜索中引入哪些偏差。例如,在探索搜索空间某些部分时比其他地方更多的初始偏差可能会导致one-shot模型的权重更好地适合于这些体系结构,从而反过来会增强对搜索空间这一部分的搜索偏差。这可能会导致NAS的过早收敛,或者结构的one-shot性能与真实性能之间的相关性很小。总的来说,对由不同性能评估器引入的偏差进行更系统的分析将是未来工作的理想方向。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值