(JMLR-2019)NAS综述鼻祖-神经架构搜索:一项调查

神经架构搜索:一项调查

paper题目:Neural Architecture Search: A Survey

paper是博世人工智能中心发表在JMLR 2019的工作

paper链接:地址

Abstract

过去几年,深度学习在图像识别、语音识别和机器翻译等各种任务上取得了显着进步。这一进展的一个关键方面是新颖的神经架构。目前使用的架构大多是由人类专家手动开发的,这是一个耗时且容易出错的过程。正因为如此,人们对自动化神经架构搜索方法越来越感兴趣。我们概述了该研究领域的现有工作,并根据三个维度对其进行了分类:搜索空间搜索策略性能评估策略

关键词:神经架构搜索、AutoML、AutoDL、搜索空间设计、搜索策略、性能估计策略

1. Introduction

深度学习在感知任务中的成功很大程度上归功于其特征工程过程的自动化:分层特征提取器是从数据中以端到端的方式学习的,而不是手动设计的。然而,伴随这种成功而来的是对架构工程的需求不断增长,其中越来越复杂的神经架构是手动设计的。神经架构搜索 (NAS) 是自动化架构工程的过程,因此是自动化机器学习的合乎逻辑的下一步。到目前为止,NAS 方法在图像分类(Zoph 等人,2018 年;Real 等人,2019 年)、目标检测(Zoph 等人,2018 年)或语义分割(Chen 等人,2018 年)等某些任务上已经优于手动设计的架构). NAS 可以看作是 AutoML(Hutter 等人,2019 年)的子领域,并且与超参数优化(Feurer 和 Hutter,2019 年)和元学习(Vanschoren,2019 年)有很大的重叠。我们根据三个维度对 NAS 的方法进行分类:搜索空间、搜索策略和性能评估策略:

  • 搜索空间。搜索空间定义了原则上可以表示哪些架构。结合有关非常适合任务的体系结构典型属性的先验知识可以减少搜索空间的大小并简化搜索。然而,这也引入了人为偏见,这可能会阻止找到超出当前人类知识范围的新颖架构构建块。

  • 搜索策略。搜索策略详细说明了如何探索搜索空间(通常呈指数级增长,甚至是无限大)。它包含经典的探索-利用权衡,因为一方面,希望快速找到性能良好的架构,而另一方面,应避免过早收敛到次优架构区域。

  • 性能评估策略。 NAS 的目标通常是找到能够对不可见数据实现高预测性能的架构。性能评估是指评估这种性能的过程:最简单的选择是对数据进行架构的标准训练和验证,但不幸的是,这在计算上非常昂贵,并且限制了可以探索的架构数量。因此,最近的许多研究都集中在开发降低这些性能估计成本的方法上。

我们参考图 1 进行说明。本文也根据这三个维度进行结构化:我们从第 2 节讨论搜索空间,第 3 节介绍搜索策略,第 4 节概述性能估计方法。我们在第 5 节总结未来方向。

(JMLR-2019)NAS综述鼻祖-神经架构搜索:一项调查_第1张图片

图 1:神经架构搜索方法的抽象说明。搜索策略从预定义的搜索空间 A \mathcal{A} A中选择架构 A \text{A} A。该架构被传递给性能估计策略,该策略将 A \text{A} A的估计性能返回给搜索策略。

2. Search Space

搜索空间定义了 NAS 方法原则上可能发现的神经架构。我们现在讨论最近工作中的常见搜索空间。

一个相对简单的搜索空间是链式结构神经网络的空间,如图 2(左)所示。链式结构的神经网络架构 A \text{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 \mathrm{A}=L_n \circ \ldots L_1 \circ L_0 A=LnL1L0。搜索空间然后通过以下参数进行参数化:(i)(最大)层数 n n n(可能无界); (ii) 每层执行的操作类型,例如池化、卷积或更高级的操作,如深度可分离卷积 (Chollet, 2016) 或空洞卷积 (Yu 和 Koltun, 2016); (iii) 与操作相关的超参数,例如卷积层的滤波器数量、内核大小和步幅(Baker 等人,2017a;Suganuma 等人,2017;Cai 等人,2018a),或简单的单元数全连接网络 (Mendoza et al, 2016)。请注意,(iii) 中的参数以 (ii) 为条件,因此搜索空间的参数化不是固定长度的,而是条件空间。
(JMLR-2019)NAS综述鼻祖-神经架构搜索:一项调查_第2张图片

不同架构空间的例证。图中的每个节点对应于神经网络中的一个层,例如卷积层或池化层。不同的层类型用不同的颜色显示。从 L i L_{i} Li层到 L j L_{j} Lj层的边表示 L j L_{j} Lj接收 L i L_{i} Li的输出作为输入。左:链式结构空间的一个元素。右图:更复杂的搜索空间的一个元素,具有额外的层类型和多个分支跳连。

最近关于 NAS 的工作(Brock 等人,2017 年;Elsken 等人,2017 年;Zoph 等人,2018 年;Elsken 等人,2019 年;Real 等人,2019 年;Cai 等人,2018b)融合了手工制作的现代设计元素架构,例如跳连,它允许构建复杂的多分支网络,如图 2(右)所示。在这种情况下,第 i i i层的输入可以形式化地描述为函数 g i ( L i − 1 out  , … , L 0 out  ) g_i\left(L_{i-1}^{\text {out }}, \ldots, L_0^{\text {out }}\right) gi(Li1out ,,L0out )结合了前一层的输出。使用这样的函数会导致更大的自由度。这些多分支架构的特例是 (i) 链式结构网络(通过设置 g i ( L i − 1 out  , … , L 0 out  ) = L i − 1 out  ) \left.g_i\left(L_{i-1}^{\text {out }}, \ldots, L_0^{\text {out }}\right)=L_{i-1}^{\text {out }}\right) gi(Li1out ,,L0out )=Li1out )),(ii) 残差网络 (He et al, 2016),其中前一层输出相加 ( g i ( L i − 1 out  , … , L 0 out  ) = L i − 1 out  + L j out  , j < i − 1 ) \left(g_i\left(L_{i-1}^{\text {out }}, \ldots, L_0^{\text {out }}\right)=L_{i-1}^{\text {out }}+L_j^{\text {out }}, j< i-1\right) (gi(Li1out ,,L0out )=Li1out +Ljout ,j<i1)和 (iii) DenseNets (Huang et al, 2017),其中前一层输出被连接起来 ( g i ( L i − 1 out  , … , L 0 out  ) = \left(g_i\left(L_{i-1}^{\text {out }}, \ldots, L_0^{\text {out }}\right)=\right. (gi(Li1out ,,L0out )= concat ⁡ ( L i − 1 out  , … , L 0 out  ) ) \left.\operatorname{concat}\left(L_{i-1}^{\text {out }}, \ldots, L_0^{\text {out }}\right)\right) concat(Li1out ,,L0out ))

受由重复堆叠组成的手工制作架构的启发(Szegedy 等人,2016 年;He 等人,2016 年;Huang 等人,2017 年),Zoph 等人 (2018) 和 Zhong 等人 (2018a) 建议寻找此类结构,分别称为单元或块,而不是整个体系结构。 Zoph 等人 (2018) 优化了两种不同类型的细胞:保留输入维度的普通细胞和减少空间维度的缩减细胞。然后通过以预定义方式堆叠这些单元来构建最终架构,如图 3 所示。与上面讨论的搜索空间相比,该搜索空间具有三个主要优势:

  • 搜索空间的大小大大减少,因为单元格通常由比整个架构少得多的层组成。例如,Zoph 等人 (2018) 估计与他们之前的工作(Zoph 和 Le,2017)相比速度提高了 7 倍,同时实现了更好的性能。

  • 通过简单地改变模型中使用的单元和过滤器的数量,从单元构建的架构可以更容易地转移或适应其他数据集。事实上,Zoph 等人 (2018) 将在 CIFAR-10 上优化的细胞转移到 ImageNet 并实现了最先进的性能。

  • 通过重复构建块创建架构已被证明是一种有用的设计原则,例如在 RNN 中重复 LSTM 块或堆叠残差块。

(JMLR-2019)NAS综述鼻祖-神经架构搜索:一项调查_第3张图片

图 3:细胞搜索空间的图示。左:两个不同的细胞,例如,一个正常细胞(顶部)和一个缩减细胞(底部)(Zoph 等人,2018 年)。右图:通过按顺序堆叠单元构建的架构。请注意,单元格也可以以更复杂的方式组合,例如在多分支空间中,只需用细胞替换层即可。

因此,这种基于细胞的搜索空间也被许多近期工作成功采用(Real 等人,2019 年;Liu 等人,2018a;Pham 等人,2018 年;Elsken 等人,2019 年;Cai 等人,2018b;Liu 等人, 2019b; Zhong 等人, 2018b).然而,在使用基于细胞的搜索空间时,一个新的设计选择出现了,即如何选择宏架构:应该使用多少个细胞以及它们应该如何连接以构建实际模型?例如,Zoph 等人 (2018) 从细胞构建一个顺序模型,其中每个细胞接收前两个细胞的输出作为输入,而 Cai 等人 (2018b) 采用众所周知的手动设计的高级结构体系结构,例如 DenseNet(Huang 等人,2017),并在这些模型中使用它们的单元格。原则上,单元可以任意组合,例如,在上述多分支空间中,通过简单地用单元替换层。理想情况下,宏架构和微架构(即单元的结构)应该共同优化,而不是单独优化微架构;否则,在找到性能良好的单元后,很容易最终不得不进行手动宏架构工程。优化宏观架构方向的一个步骤是 Liu 等人 (2018b) 引入的分层搜索空间,它由多个层次的 motif 组成。第一层由一组原始操作组成,第二层包含通过有向无环图连接原始操作的不同模体,第三层模体编码如何连接第二层模体,依此类推。基于单元的搜索空间可以看作是这种分层搜索空间的特例,其中层数为三,第二层主题对应于单元,第三层是硬编码的宏架构。

搜索空间的选择在很大程度上决定了优化问题的难度:即使对于基于具有固定宏架构的单个单元格的搜索空间的情况,优化问题仍然是 (i) 不连续的和 (ii) 相对高维的(因为更复杂的模型往往性能更好,从而导致更多的设计选择)。

我们注意到许多搜索空间中的架构可以写成固定长度的向量;例如,Zoph 等人 (2018) 的两个细胞中的每一个的搜索空间都可以写成具有分类维度的 40 维搜索空间,每个搜索空间都在少量不同的构建块和输入之间进行选择。无界搜索空间可以被限制为具有(可能非常大但有限)的层数,这再次产生具有(可能很多)条件维度的固定大小的搜索空间。

在下一节中,我们将讨论非常适合这些类型搜索空间的搜索策略。

3. Search Strategy

许多不同的搜索策略可用于探索神经架构的空间,包括随机搜索、贝叶斯优化、进化方法、强化学习 (RL) 和基于梯度的方法。从历史上看,几十年前,许多研究人员已经使用进化算法来进化神经结构(通常还有它们的权重)(参见,例如,Angeline 等人,1994 年;Stanley 和 Miikkulainen,2002 年;Floreano 等人,2008 年;Stanley 等人, 2009 年;Jozefowicz 等人,2015 年)。 Yao (1999) 对 2000 年以前的工作进行了文献回顾。

自 2013 年以来,贝叶斯优化在 NAS 中取得了多项早期成功,产生了了最先进的视觉架构(Bergstra 等人,2013 年),没有数据增强的 CIFAR-10 的最先进性能(Domhan 等人, 2015),以及第一个在与人类专家的竞争数据集上获胜的自动调整神经网络 (Mendoza et al, 2016)。在 Zoph 和 Le(2017 年)使用基于强化学习的搜索策略在 CIFAR-10 和 Penn Treebank 基准测试中获得竞争性表现后,NAS 成为机器学习社区的主流研究课题。虽然 Zoph 和 Le (2017) 使用了大量的计算资源来实现这一结果(800 个 GPU,三到四个星期),但在他们的工作之后,已经快速连续发布了各种各样的方法来降低计算成本并进一步改进表现。

将 NAS 定义为强化学习 (RL) 问题(Baker 等人,2017a;Zoph 和 Le,2017;Zhong 等人,2018a;Zoph 等人,2018),神经架构的生成可以被认为是代理的动作,动作空间与搜索空间相同。代理的奖励基于对训练架构在未见数据上的性能的估计(参见第 4 节)。不同的 RL 方法在表示代理策略的方式和优化策略方面有所不同:Zoph 和 Le (2017) 使用循环神经网络 (RNN) 策略对字符串进行顺序采样,然后对神经架构进行编码。他们最初使用 REINFORCE 策略梯度算法(Williams,1992)训练该网络,但在他们的后续工作(Zoph 等人,2018)中使用近端策略优化(Schulman 等人,2017)。 Baker 等人 (2017a) 使用 Q-learning 来训练一个策略,该策略依次选择层的类型和相应的超参数。

这些方法的另一种观点是顺序决策过程,其中策略对动作进行采样以按顺序生成架构,环境的“状态”包含到目前为止采样的动作的摘要,并且(未打折的)奖励仅在最终行动。然而,由于在这个顺序过程中没有与环境发生交互(没有观察到外部状态,也没有中间奖励),我们发现将架构采样过程解释为单个动作的顺序生成更直观;这将 RL 问题简化为无状态的多臂强盗问题。

Cai 等人 (2018a) 提出了一种相关方法,他们将 NAS 定义为一个顺序决策过程:在他们的方法中,状态是当前(部分训练的)架构,奖励是架构性能的估计,动作对应到功能保留突变的应用,称为网络态射(Chen 等人,2016 年;Wei 等人,2017 年),另请参见第 4 节,然后是网络的训练阶段。为了处理可变长度的网络架构,他们使用双向 LSTM 将架构编码为固定长度的表示。基于这种编码表示,动作网络决定采样动作。这两个组件的组合构成了策略,该策略使用 REINFORCE 策略梯度算法进行端到端训练。我们注意到这种方法不会访问同一个状态(架构)两次。

使用 RL 的替代方法是使用进化算法优化神经结构的神经进化方法。我们所知道的第一种用于设计神经网络的方法可以追溯到将近三十年前:Miller 等人 (1989) 使用遗传算法来提出架构并使用反向传播来优化它们的权重。此后的许多神经进化方法(Angeline 等人,1994 年;Stanley 和 Miikkulainen,2002 年;Stanley 等人,2009 年)使用遗传算法来优化神经结构及其权重;然而,当针对监督学习任务扩展到具有数百万权重的当代神经架构时,基于 SGD 的权重优化方法目前优于进化方法。最近的神经进化方法(Real 等人,2017 年;Suganuma 等人,2017 年;Liu 等人, 2018b;Real 等人,2019 年;Miikkulainen 等人,2017 年;Xie 和 Yuille,2017 年;Elsken 等人,2019 年)因此再次使用基于梯度的方法来优化权重,并仅使用进化算法来优化神经架构本身。进化算法进化了一组模型,即一组(可能经过训练的)网络;在每个进化步骤中,至少从种群中抽取一个模型作为父代,通过对其应用突变来生成后代。在 NAS 的上下文中,突变是局部操作,例如添加或删除层、更改层的超参数、添加跳连以及更改训练超参数。训练后代后,评估它们的适应性(例如,在验证集上的表现)并将它们添加到种群中。

神经进化方法的不同之处在于它们对父母进行采样、更新种群和产生后代的方式。例如,Real 等人 (2017)、Real 等人 (2019) 和 Liu 等人(2018b) 使用锦标赛选择(Goldberg 和 Deb,1991)对父母进行抽样,而 Elsken 等人(2019)使用逆密度从多目标帕累托前沿对父母进行抽样。 Real 等人 (2017) 从种群中移除最差的个体,而 Real 等人(2019) 发现移除最老的个体是有益的(这会降低贪婪度),而 Liu 等人 (2018b) 根本不会移除个体。为了生成后代,大多数方法随机初始化子网络,而 Elsken 等人 (2019) 采用拉马克继承,即知识(以学习权重的形式)通过使用网络态射从父网络传递给子网络。 Real et al (2017) 还让后代继承其父代的所有参数,这些参数不受应用突变的影响;虽然这种继承并非严格保持功能,但与随机初始化相比,它也可能加快学习速度。此外,它们还允许改变学习率,这可以看作是在 NAS 期间优化学习率计划的一种方式。我们参考了 Stanley 等人 (2019) 最近对神经进化方法的深入回顾。

Real等人(2019)进行了一项案例研究,比较了RL、进化和随机搜索(RS),得出结论:RL和进化在最终测试精度方面表现相当好,进化的随时性能更好,找到的模型更小。这两种方法在实验中的表现始终比RS好,但幅度相当小。RS在CIFAR-10上实现了大约4%的测试误差,而RL和进化达到了大约3.5%(在 "模型增强 "之后,滤波器的深度和数量增加;在实际用于搜索的非增强空间上的差异大约是2%)。Liu等人(2018b)的差异更小,他们报告了RS在CIF AR-10上的测试误差为3.9%,在ImageNet上的top-1验证误差为21.0%,而他们基于进化的方法则分别为3.75%和20.3%。

贝叶斯优化(BO,参见,例如,(Shahriari 等人,2016))是最流行的超参数优化方法之一,但由于典型的 BO 工具箱基于高斯过程和焦点,它尚未被许多团队应用于 NAS关于低维连续优化问题。 Swersky 等人 (2013) 和 Kandasamy 等人(2018) 推导架构搜索空间的核函数,以使用经典的基于 GP 的 BO 方法。相比之下,一些工作使用基于树的模型(特别是树 Parzen 估计器(Bergstra 等人,2011 年)或随机森林(Hutter 等人,2011 年))来有效地搜索高维条件空间并实现状态在广泛的问题上表现最先进,联合优化神经架构及其超参数(Bergstra 等人,2013 年;Domhan 等人,2015 年;Mendoza 等人,2016 年;Zela 等人,2018 年)。虽然缺乏全面比较,但有初步证据表明这些方法也可以胜过进化算法(Klein 等人,2018 年)。

Negrinho 和 Gordon (2017) 以及 Wistuba (2017) 利用其搜索空间的树结构并使用蒙特卡洛树搜索。 Elsken 等人 (2017) 提出了一种简单但性能良好的爬山算法,该算法通过贪婪地向性能更好的架构方向移动来发现高质量的架构,而不需要更复杂的探索机制。

虽然上述方法采用离散搜索空间,但 Liu 等人 (2019b) 提出了连续松弛以实现直接基于梯度的优化:而不是固定在特定层执行单个操作 o i o_i oi(例如,卷积或池化),作者从一组操作 { o 1 , … , o m } \left\{o_1, \ldots, o_m\right\} {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_{i=1}^m \alpha_i o_i(x), \alpha_i \geq 0, \sum_{i=1}^m \alpha_i=1 y=i=1mαioi(x),αi0,i=1mαi=1,其中凸系数 α i \alpha_i αi有效地参数化了网络架构。Liu等(2019b) 然后通过在权重训练数据和架构参数(如 α \alpha α)的验证数据上交替梯度下降步骤来优化网络权重和网络架构。最终,通过为每一层选择 i ∗ = arg ⁡ max ⁡ i α i i^*=\arg \max _i \alpha_i i=argmaxiαi的操作 i ∗ i^* i来获得离散架构。 Xie 等人 (2019) 没有优化可能操作的权重 α \alpha α; Cai 等人 (2019) 提出优化可能操作的参数化分布。 Shin 等人 (2018) 以及 Ahmed 和 Torresani (2018) 也采用了基于梯度的神经架构优化,但分别侧重于优化层超参数或连接模式。

Performance Estimation Strategy

第 3 节中讨论的搜索策略旨在找到一种神经架构 A \text{A} A,它可以最大化某些性能指标,例如对未见数据的准确性。为了指导他们的搜索过程,这些策略需要估计他们考虑的给定架构 A \text{A} A的性能。最简单的方法是在训练数据上训练 A \text{A} A并评估其在验证数据上的表现。然而,训练每个架构以从头开始评估通常会产生 NAS 数千 GPU 天的计算需求(Zoph 和 Le,2017 年;Real 等人,2017 年;Zoph 等人,2018 年;Real 等人,2019 年)。这自然会导致开发加速性能估计的方法,我们现在将讨论这些方法。我们参考表 1 以了解现有方法的概述。

(JMLR-2019)NAS综述鼻祖-神经架构搜索:一项调查_第4张图片

表 1:加速 NAS 性能评估的不同方法概述。

可以根据完整训练后实际性能的较低保真度(也表示为代理指标)来估计性能。这种较低的保真度包括较短的训练时间(Zoph 等人,2018 年;Zela 等人,2018 年)、对数据子集的训练(Klein 等人,2017b)、较低分辨率图像的训练(Chrabaszcz 等人,2017 年),或每层滤波器和细胞更少(Zoph 等人,2018 年;Real 等人,2019 年)。虽然这些低保真度近似值降低了计算成本,但它们也会在估计中引入偏差,因为性能通常会被低估。只要搜索策略仅依赖于对不同架构进行排名并且相对排名保持稳定,这可能不会有问题。然而,最近的结果表明,当廉价近似值和“完整”评估之间的差异太大时,这种相对排名可能会发生巨大变化(Zela 等人,2018 年),并主张逐步提高保真度(Li 等人,2017 年; Falkner 等人,2018 年)。

估计架构性能的另一种可能方法建立在学习曲线外推的基础上(Swersky 等人,2014 年;Domhan 等人,2015 年;Klein 等人,2017a;Baker 等人,2017b;Rawal 和 Miikkulainen,2018)。 Domhan 等人 (2015) 建议推断初始学习曲线并终止那些预测表现不佳的曲线以加速架构搜索过程。 Swersky 等人 (2014)、Klein 等人 (2017a)、Baker 等人(2017b),以及 Rawal 和 Miikkulainen (2018) 也考虑了用于预测哪些部分学习曲线最有希望的架构超参数。 Liu 等人 (2018a) 也提出了训练替代模型来预测新架构的性能,他们不使用学习曲线外推,但支持基于架构/细胞属性预测性能,并外推到比看到的尺寸更大的架构/单元在训练中。预测神经架构性能的主要挑战是,为了加快搜索过程,需要基于相对较少的评估在相对较大的搜索空间中做出良好的预测。

另一种加速性能估计的方法是根据之前训练过的其他架构的权重来初始化新架构的权重。实现这一目标的一种方法,称为网络态射(Wei 等人,2016 年),允许修改架构,同时保持网络表示的功能不变,从而产生只需要几个 GPU 天的方法(Elsken 等人,2017 年;Cai 等人等人,2018a,b;Jin 等人,2018 年)。这允许连续增加网络容量并保持高性能,而无需从头开始训练。持续训练几个时期也可以利用网络态射引入的额外容量。这些方法的一个优点是它们允许搜索空间没有架构大小的固有上限(Elsken 等人,2017);另一方面,严格的网络态射只能使架构变得更大,从而可能导致过于复杂的架构。这可以通过使用允许缩小架构的近似网络态射来减弱(Elsken 等人,2019)。

一次性架构搜索(见图 4)将所有架构视为超图(一次性模型)的不同子图,并在具有该超图共同边的架构之间共享权重(Saxena 和 Verbeek,2016 年;Brock 等人, 2017 年;Pham 等人,2018 年;Liu 等人,2019b;Bender 等人,2018 年;Cai 等人,2019 年;Xie 等人,2019 年)。只需要训练单个一次性模型的权重(以各种方式之一),然后可以通过从一次性模型。这极大地加快了架构的性能估计,因为不需要训练(仅评估验证数据的性能),再次导致方法只需要几个 GPU 天。一次性模型通常会产生很大的偏差,因为它严重低估了最佳架构的实际性能;然而,它允许对架构进行排名,如果估计的性能与实际性能密切相关,这就足够了。然而,目前尚不清楚情况是否确实如此(Bender 等人,2018 年;Sciuto 等人,2019 年)。

(JMLR-2019)NAS综述鼻祖-神经架构搜索:一项调查_第5张图片

图 4:一次性架构搜索的图示。具有一个输入节点(表示为 0)、三个隐藏节点(表示为 1、2、3)和一个输出节点(表示为 4)的简单网络。一次性模型(左)不是对节点应用单个操作(例如 3x3 卷积),而是包含每个节点的多个候选操作,即 3x3 卷积(红色边缘)、5x5 卷积(蓝色边缘)和 MaxPooling(上图中的绿色边缘)。一旦训练了一次性模型,它的权重就会在不同的架构之间共享,这些架构只是一次性模型的子图(右)。图的灵感来自 Liu 等人 (2019b)。

不同的 one-shot NAS 方法在 one-shot 模型的训练方式上有所不同:ENAS (Pham et al, 2018) 学习了一个 RNN 控制器,该控制器从搜索空间中对架构进行采样,并根据通过 REINFORCE 获得的近似梯度来训练 one-shot 模型. DARTS (Liu et al, 2019b) 结合搜索空间的连续松弛来优化单次模型的所有权重,搜索空间是通过在单次模型的每个边上放置候选操作的混合而获得的。 SNAS(Xie 等人,2019)不是像 DARTS 那样优化操作的实值权重,而是优化候选操作的分布。作者使用具体分布(Maddison 等人,2017 年;Jang 等人,2017 年)和重新参数化(Kingma 和 Welling,2014 年)来放松离散分布并使其可微分,从而通过梯度下降实现优化。为了克服将整个一次性模型保留在 GPU 内存中的必要性,ProxylessNAS(Cai 等人,2019 年)将架构权重“二值化”,在每次操作中屏蔽掉除一条边以外的所有边。然后通过对一些二值化架构进行采样并使用 BinaryConnect(Courbariaux 等人,2015 年)更新相应的概率来了解边缘被屏蔽或不被屏蔽的概率。 Bender et al (2018) 只训练一次模型,并表明在使用路径丢失的训练过程中随机停用该模型的部分时,这就足够了。

虽然前面提到的方法在训练期间优化了架构的分布,但 Bender 等人 (2018) 的方法可以看作是使用固定分布。后者可获得的高性能表明权重共享和固定(精心选择)分布的组合可能(可能令人惊讶)是一次性 NAS 的唯一必需成分。与这些方法相关的是超网络元学习,它为新架构生成权重,因此只需要训练超网络而不是架构本身(Brock 等人,2017 年;Zhang 等人,2019 年)。这里的主要区别是权重不是严格共享的,而是由共享的超网络生成的(以采样架构为条件)。

一次性 NAS 的一般限制是先验定义的超图将搜索空间限制在其子图中。此外,在架构搜索期间要求整个超图驻留在 GPU 内存中的方法将相应地限制在相对较小的超图和搜索空间中,因此通常与基于单元的搜索空间结合使用。虽然基于权重共享的方法大大减少了 NAS 所需的计算资源(从数千天减少到几个 GPU 天),但目前还没有很好地理解,如果架构的采样分布与一次性模型一起优化,而不是固定它,它们会在搜索中引入哪些偏差(Bender等人,2018)。例如,在探索搜索空间的某些部分比其他部分更多的初始偏见可能会导致一次性模型的权重更好地适应这些架构,这反过来会加强搜索对搜索空间的这些部分的偏见。这可能会导致NAS的过早收敛,或者在一个架构的one-shot和真正的性能之间几乎没有关联(Sciuto等人,2019)。总的来说,更系统地分析不同性能估计器引入的偏差将是未来工作的一个理想方向。

5. Future Directions

在本节中,我们将讨论 NAS 研究的几个当前和未来方向。大多数现有工作都集中在用于图像分类的 NAS 上。一方面,这提供了一个具有挑战性的基准,因为大量手动工程一直致力于寻找在该领域表现良好且不易被 NAS 超越的架构。另一方面,通过利用手工工程中的知识来定义一个合适的搜索空间相对容易。这反过来又使得 NAS 不太可能找到性能显着优于现有架构的架构,因为找到的架构不会有根本差异。因此,我们认为通过将 NAS 应用于较少探索的领域来超越图像分类问题很重要。在图像恢复(Suganuma 等人,2018 年)、语义分割(Chen 等人,2018 年;Nekrasov 等人,2018 年;Liu 等人,2019a)、迁移学习(Wong 等人,2018 年)方面,已经朝着这个方向迈出了显着的第一步)、机器翻译(So 等人,2019 年)、强化学习(Runge 等人,2019 年)3,以及优化递归神经网络(Greff 等人,2015 年;Jozefowicz 等人,2015 年;Zoph 和 Le,2017 年;Rawal和 Miikkulainen,2018 年),例如,用于语言或音乐建模。 NAS 进一步有前途的应用领域是生成对抗网络或传感器融合。

另一个有前途的方向是为多任务问题(Liang 等人,2018 年;Meyerson 和 Miikkulainen,2018 年)和多目标问题(Elsken 等人,2019 年;Dong 等人,2018 年;Zhou 等人, 2018 年),其中资源效率的衡量标准与对未见数据的预测性能一起用作目标。我们强调多目标 NAS 与网络压缩密切相关(Han 等人,2016 年;Cheng 等人,2018 年):两者都旨在寻找性能良好但高效的架构。因此,一些压缩方法也可以看作是 NAS 方法 (Han et al, 2015; Liu et al, 2017; Gordon et al, 2018; Liu et al, 2019c; Cao et al, 2019),反之亦然 (Saxena and Verbeek , 2016; Liu et al, 2019b; Xie et al, 2019).

同样,扩展 RL/bandit 方法(例如第 3 节中讨论的方法)以学习以编码任务属性/资源需求的状态为条件的策略(即将设置转换为上下文 bandit)会很有趣。 Ramachandran 和 Le (2018) 遵循类似的方向,扩展了 one-shot NAS 以根据任务或动态实例生成不同的架构。此外,应用 NAS 来搜索对对抗性示例更稳健的架构(Cubuk 等人,2017 年)是最近一个有趣的方向。

与此相关的是定义更通用和更灵活的搜索空间的研究。例如,虽然基于单元格的搜索空间在不同的图像分类任务之间提供了高可迁移性,但它主要基于人类在图像分类方面的经验,并且不容易推广到硬编码层次结构(重复相同的单元格多个)的其他领域链状结构中的时间)不适用(例如,语义分割或对象检测)。允许表示和识别更一般的层次结构的搜索空间将因此使 NAS 更广泛地适用,参见 Liu et al (2018b, 2019a) 在这个方向上的第一个工作。此外,公共搜索空间也基于预定义的构建块,例如不同类型的卷积和池化,但不允许在此级别上识别新的构建块;超出此限制可能会大大增加 NAS 的功能。

由于架构性能的测量取决于架构本身以外的许多因素,因此比较 NAS 的不同方法甚至已发布结果的可重复性都变得复杂。虽然大多数作者报告了 CIF AR-10 数据集的结果,但实验通常在搜索空间、计算预算、数据扩充、训练程序、正则化和其他因素方面有所不同。例如,对于 CIFAR-10,当使用余弦退火学习率计划(Loshchilov 和 Hutter,2017)、通过 CutOut(Devries 和 Taylor,2017)、MixUp(Zhang 等人,2017)或通过因素的组合(Cubuk 等人,2018 年),以及通过 Shake-Shake 正则化(Gastaldi,2017 年)或 ScheduledDropPath(Zoph 等人,2018 年)进行的正则化。因此可以想象,与 NAS 发现的更好的架构相比,这些成分的改进对报告的性能数字有更大的影响。因此,我们认为通用基准的定义对于公平比较不同的 NAS 方法至关重要。朝这个方向迈出的第一步是 Ying 等人 (2019) 提出的基准,其中考虑了由大约 423,000 个独特的卷积架构组成的搜索空间。这个空间的每个元素都经过多次预训练和评估,从而产生一个数据集,其中包含训练、验证和测试的准确性,以及针对多次运行的不同训练预算的训练时间和模型大小。因此,通过简单地查询预先计算的数据集,可以将不同的搜索策略与该基准上的低计算资源进行比较。在之前的一项较小的研究中,Klein 等人 (2018) 预先评估了神经架构和超参数的联合空间。评估 NAS 方法不是孤立的,而是作为完整开源 AutoML 系统的一部分也会很有趣,其中还有超参数(Mendoza 等人,2016 年;Real 等人,2017 年;Zela 等人,2018 年)和数据扩充pipeline (Cubuk et al, 2018) 与 NAS 一起进行了优化。

虽然 NAS 取得了令人印象深刻的性能,但到目前为止,它对特定架构为何运行良好以及在独立运行中派生的架构有多相似几乎没有提供任何见解。确定常见的主题,理解为什么这些主题对高性能很重要,并调查这些主题是否可以概括不同的问题是可取的。

你可能感兴趣的:(神经架构搜索,人工智能,深度学习,架构搜索)