DARTS:可微架构搜索
论文链接:https://arxiv.org/abs/1806.09055
项目链接:https://github.com/quark0/darts
ABSTRACT
本文通过以可微分的方式表述任务,解决了架构搜索的可扩展性挑战。与在离散和不可微搜索空间上应用进化或强化学习的传统方法不同,我们的方法基于架构表示的连续松弛,允许使用梯度下降对架构进行有效搜索。在CIFAR-10、ImageNet、Penn Treebank和WikiText-2上进行的大量实验表明,我们的算法在发现用于图像分类的高性能卷积架构和用于语言建模的循环架构方面表现出色,同时比最先进的不可微技术快几个数量级。我们的实现已经公开,以促进对高效架构搜索算法的进一步研究。
1 INTRODUCTION
发现最先进的神经网络架构需要人类专家付出大量的努力。最近,人们对开发算法解决方案来自动化构建设计的手动过程越来越感兴趣。自动搜索架构在图像分类 et al.任务中取得了极具竞争力的性能(Zoph & Le, 2017;Zoph et al.,2018;Liu et al.,2018b;a;Real et al.,2018)和目标检测(Zoph et al.,2018)。
现有最好的体系结构搜索算法尽管性能优异,但计算量要求很高。例如,为CIFAR-10和ImageNet获得最先进的架构需要2000个GPU天的强化学习(RL) (Zoph et al.,2018)或3150个GPU天的进化(Real et al.,2018)。已经提出了几种加速方法,例如强加特定的搜索空间结构(Liu et al, 2018b;a),每个单独架构的权重或性能预测(Brock et al, 2018;Baker et al.,2018)和跨多个架构的权重共享/继承(Elsken et al.,2017;Pham et al.,2018b;Cai et al, 2018;Bender et al.,2018),但可扩展性的基本挑战仍然存在。主流方法效率低下的内在原因,例如基于RL,进化,MCTS (Negrinho和Gordon, 2017), SMBO (Liu et al.,2018a)或贝叶斯优化(Kandasamy et al.,2018),是架构搜索被视为离散域上的黑盒优化问题,这导致需要大量的架构评估。
在这项工作中,我们从不同的角度来解决这个问题,并提出了一种高效的架构搜索方法,称为DARTS(可微分架构搜索)。我们不再搜索一组离散的候选体系结构,而是将搜索空间放宽为连续的,这样体系结构就可以通过梯度下降来优化其验证集的性能。与低效的黑盒搜索相反,基于梯度的优化的数据效率使DARTS能够使用数量级更少的计算资源实现具有竞争力的性能。它也优于另一种最近有效的架构搜索方法ENAS (Pham et al.,2018b)。值得注意的是,DARTS比许多现有的方法更简单,因为它不涉及控制器(Zoph & Le, 2017;Baker et al.,2017;Zoph et al.,2018;Pham et al.,2018b;Zhong et al.,2018),超网络(Brock et al.,2018)或性能预测器(Liu et al.,2018a),但它足够通用,可以处理卷积和循环架构。
在连续域中搜索架构的想法并不新鲜(Saxena和Verbeek,2016;Ahmed和Torresani,2017;Veniat和Denoyer,2017;Shin et al.人,2018),但有几个主要区别。虽然之前的工作试图微调架构的特定方面,例如卷积网络中的滤波器形状或分支模式,但DARTS能够在丰富的搜索空间中学习具有复杂图拓扑的高性能架构构建块。此外,DARTS不局限于任何特定的体系结构家族,适用于卷积和循环网络。
在我们的实验(第3节)中,我们证明了DARTS能够设计一个卷积单元,使用3.3M参数在CIFAR-10上实现2.76±0.09%的图像分类测试误差,这与使用三个数量级以上的计算资源获得的正则化进化(Real et al, 2018)的最新结果相竞争。同样的卷积单元在转移到ImageNet(移动设置)时也达到了26.7%的top-1误差,这与最好的RL方法相当(Zoph et al, 2018)。在语言建模任务上,DARTS有效地发现了一个在Penn Treebank (PTB)上达到55.7测试perplexity的循环单元,优于广泛调优的LSTM (Melis et al.人,2018)和所有现有的基于NAS (Zoph & Le, 2017)和ENAS (Pham et al.人,2018b)的自动搜索单元。
我们的贡献可以总结如下:
- 我们引入了一种基于双层优化的可微网络架构搜索的新算法,该算法适用于卷积和循环架构。
- 通过对图像分类和语言建模任务的广泛实验,我们表明基于梯度的架构搜索在CIFAR-10上取得了极具竞争力的结果,并且在PTB上优于目前的技术水平。这是一个非常有趣的结果,因为到目前为止,最好的架构搜索方法使用的是不可微搜索技术,例如基于RL (Zoph et al.,2018)或进化(Real et al.,2018;Liu et al.,2018b)。
- 我们实现了显著的效率提升(将架构发现的成本降低到几个GPU天),我们将其归因于使用基于梯度的优化,而不是不可微搜索技术。
- 我们证明了dart在CIFAR-10和PTB上学习的架构可以分别转移到ImageNet和WikiText-2上。
2 DIFFERENTIABLE ARCHITECTURE SEARCH
我们在2.1节中以一般形式描述了我们的搜索空间,其中一个体系结构(或其中的一个单元)的计算过程被表示为一个有向无环图。然后,我们为我们的搜索空间引入了一个简单的连续松弛方案,这导致了一个可微分的学习目标,用于结构及其权重的联合优化(第2.2节)。最后,我们提出了一种近似技术,使算法在计算上可行且高效(第2.3节)。
2.1 搜索空间
继Zoph et al.(2018);Real et al.(2018);Liu et al.(2018a;b),我们寻找一个计算单元作为最终架构的构建块。学习单元可以堆叠形成卷积网络,也可以递归连接形成循环网络。
单元是由N个节点的有序序列组成的有向无环图。每个节点 x ( i ) x ^{(i)} x(i)是一个潜在表示(例如卷积网络中的特征映射),每个有向边(i;J)与某个变换 x ( i ) x ^{(i)} x(i)的操作 o ( i , j ) o^{(i,j)} o(i,j)有关。我们假设单元有两个输入节点和一个输出节点。对于卷积单元,输入节点被定义为前两层的单元输出(Zoph et al, 2018)。对于循环单元,它们被定义为当前步骤的输入和从前一步携带的状态。单元格的输出是通过对所有中间节点应用约简操作(例如串联)获得的。
每个中间节点都是在其所有前节点的基础上计算的:
x ( j ) = ∑ i < j o ( i , j ) ( x ( i ) ) (1) x^{(j)}=\sum_{i<j}o^{(i,j)}(x^{(i)}) \tag{1} x(j)=i<j∑o(i,j)(x(i))(1)
还包括一个特殊的零操作来表示两个节点之间缺乏连接。因此,学习单元格的任务简化为学习其边缘上的操作。
2.2 持续松弛和优化
设 O \mathcal{O} O是一组候选操作(例如,卷积,最大池化,zero),其中每个操作表示将应用于 x ( i ) x^{(i)} x(i)的某个函数 o ( ⋅ ) o(·) o(⋅)。为了使搜索空间连续,我们将特定操作的分类选择放宽为所有可能操作的软最大值:
o ˉ ( i , j ) ( x ) = ∑ o ∈ O exp ( α o ( i , j ) ) ∑ o ′ ∈ O exp ( α o ′ ( i , j ) ) o ( x ) (2) \bar{o}^{(i,j)}(x)=\sum_{o\in\mathcal{O}}\frac{\exp(\alpha_o^{(i,j)})}{\sum_{o^{\prime}\in\mathcal{O}}\exp(\alpha_{o^{\prime}}^{(i,j)})}o(x) \tag{2} oˉ(i,j)(x)=o∈O∑∑o′∈Oexp(αo′(i,j))exp(αo(i,j))o(x)(2)
其中,一对节点 ( i , j ) (i,j) (i,j)被一个维度为 ∣ O ∣ |O| ∣O∣的向量 α ( i , j ) α^{ (i,j)} α(i,j)参数化。然后,架构搜索的任务简化为学习一组连续变量 α = { α ( i , j ) } \alpha=\begin{Bmatrix}\alpha^{(i,j)}\end{Bmatrix} α={α(i,j)},如图1所示。在搜索结束时,通过将每个混合操作 o ˉ ( i , j ) {\bar{o}}^{(i,j)} oˉ(i,j)替换为最可能的操作,即 o ( i , j ) = a r g m a x o ∈ O α o ( i , j ) o^{(i,j)}=\mathrm{argmax}_{o\in\mathcal{O}}\alpha_{o}^{(i,j)} o(i,j)=argmaxo∈Oαo(i,j),可以得到离散的体系结构。在下文中,我们将 α α α称为体系结构的编码。
松弛之后,我们的目标是共同学习所有混合操作中的结构 α α α和权重 w w w(例如卷积滤波器的权重)。类似于使用RL的架构搜索(Zoph & Le, 2017;Zoph et al.,2018;Pham et al ., 2018b)或进化(Liu et al ., 2018b;Real et al.,2018),其中验证集性能被视为奖励或适应度,DARTS旨在优化验证损失,但使用梯度下降。
分别用 L t r a i n \mathcal{L}_{train} Ltrain和 L v a l \mathcal{L}_{val} Lval表示训练损失和验证损失。这两种损失不仅取决于结构 α α α,还取决于网络中的权值 w w w。架构搜索的目标是找到使验证损失 L v a l ( w ∗ , α ∗ ) \mathcal{L}_{val}(w^∗,α^∗) Lval(w∗,α∗),其中与体系结构相关的权值 w ∗ w^∗ w∗通过最小化训练损失 w ∗ = a r g m i n w L t r a i n ( w , α ∗ ) w^{*}=\mathrm{argmin}_{w}\mathcal{L}_{train}(w,\alpha^{*}) w∗=argminwLtrain(w,α∗)来获得。
这意味着一个双层优化问题(Anandalingam & Friesz, 1992;Colson et al, 2007), α α α为上一级变量, w w w为下一级变量:
min α L v a l ( w ∗ ( α ) , α ) s . t . w ∗ ( α ) = argmin w L t r a i n ( w , α ) (3,4) \begin{array}{rl}\min_{\alpha}&\mathcal{L}_{val}(w^*(\alpha),\alpha)\\\mathrm{s.t.}&w^*(\alpha)=\operatorname{argmin}_{w}\mathcal{L}_{train}(w,\alpha)\end{array} \tag{3,4} minαs.t.Lval(w∗(α),α)w∗(α)=argminwLtrain(w,α)(3,4)
嵌套公式也出现在基于梯度的超参数优化中(Maclaurin et al, 2015;Pedregosa, 2016;Franceschi et al.,2018),这在某种意义上是相关的,架构 α α α可以被视为一种特殊类型的超参数,尽管它的维度比标量值超参数(如学习率)高得多,并且更难优化。
2.3 近似架构梯度
由于昂贵的内部优化,准确地评估体系结构梯度可能是令人望而却步的。因此,我们提出一个简单的近似方案如下:
∇ α L v a l ( w ∗ ( α ) , α ) ≈ ∇ α L v a l ( w − ξ ∇ w L t r a i n ( w , α ) , α ) (5,6) \begin{matrix}\nabla_{\alpha}\mathcal{L}_{val}(w^*(\alpha),\alpha)\\\approx\nabla_{\alpha}\mathcal{L}_{val}(w-\xi\nabla_{w}\mathcal{L}_{train}(w,\alpha),\alpha)\end{matrix} \tag{5,6} ∇αLval(w∗(α),α)≈∇αLval(w−ξ∇wLtrain(w,α),α)(5,6)
式中, w w w表示算法维持的当前权值, ξ ξ ξ表示内优化某一步的学习率。这个想法是通过只使用一个训练步骤来调整 w w w来近似 w ∗ ( α ) w ^* (α) w∗(α),而不通过训练完全解决内部优化(公式4)直到收敛。相关技术已用于模型转移的元学习(Finn et al.,2017)、基于梯度的超参数调优(Luketina et al.,2016)和展开生成对抗网络(Metz et al.,2017)。注:公式6可简化为 ∇ α L v a l ( w , α ) \nabla_{\alpha}\mathcal{L}_{val}(w,\alpha) ∇αLval(w,α),如果w已经是内部优化的局部最优,则 ∇ w L t r a i n ( w , α ) = 0 \nabla_{w}\mathcal{L}_{train}(w,\alpha)=0 ∇wLtrain(w,α)=0。
迭代过程如算法1所示。虽然我们目前还不知道我们的优化算法的收敛性保证,但在实践中,它能够达到一个不动点,并选择合适的 ξ ξ ξ。我们还注意到,当动量被用于权重优化时,公式6中的一步展开学习目标被相应地修改,我们所有的分析仍然适用。
将链式法则应用于近似的架构梯度(公式6)得到:
∇ α L v a l ( w ′ , α ) − ξ ∇ α , w 2 L t r a i n ( w , α ) ∇ w ′ L v a l ( w ′ , α ) (7) \nabla_{\alpha}\mathcal{L}_{val}(w',\alpha)-\xi\nabla_{\alpha,w}^{2}\mathcal{L}_{train}(w,\alpha)\nabla_{w'}\mathcal{L}_{val}(w',\alpha) \tag{7} ∇αLval(w′,α)−ξ∇α,w2Ltrain(w,α)∇w′Lval(w′,α)(7)
其中 w ′ = w − ξ ∇ w L t r a i n ( w , α ) w^{\prime}=w-\xi\nabla_{w}\mathcal{L}_{train}(w,\alpha) w′=w−ξ∇wLtrain(w,α)表示一步正向模型的权重。上面的表达式在第二项中包含一个昂贵的矩阵向量积。幸运的是,使用有限差分近似可以大大降低复杂性。设为一个小标量, w ± = w ± ϵ ∇ w ′ L v a l ( w ′ , α ) w^{\pm}=w\pm\epsilon\nabla_{w^{\prime}}\mathcal{L}_{val}(w^{\prime},\alpha) w±=w±ϵ∇w′Lval(w′,α)。然后:
∇ α , w 2 L t r a i n ( w , α ) ∇ w ′ L v a l ( w ′ , α ) ≈ ∇ α L t r a i n ( w + , α ) − ∇ α L t r a i n ( w − , α ) 2 ϵ (8) \nabla_{\alpha,w}^2\mathcal{L}_{train}(w,\alpha)\nabla_{w'}\mathcal{L}_{val}(w',\alpha)\approx\frac{\nabla_{\alpha}\mathcal{L}_{train}(w^+,\alpha)-\nabla_{\alpha}\mathcal{L}_{train}(w^-,\alpha)}{2\epsilon} \tag{8} ∇α,w2Ltrain(w,α)∇w′Lval(w′,α)≈2ϵ∇αLtrain(w+,α)−∇αLtrain(w−,α)(8)
求有限差分只需要对权值进行两次正向传递,对 α α α只需要两次反向传递,复杂度从 O ( ∣ α ∣ ∣ w ∣ ) O (|α||w|) O(∣α∣∣w∣)降低到 O ( ∣ α ∣ + ∣ w ∣ ) O(|α| + |w|) O(∣α∣+∣w∣)。
当ξ = 0时,公式7的二阶导数消失。在这种情况下,结构梯度由 ∇ α L v a l ( w , α ) \nabla_{\alpha}\mathcal{L}_{val}(w,\alpha) ∇αLval(w,α),对应于通过假设当前 w w w与 w ∗ ( α ) w^ * (α) w∗(α)相同来优化验证损失的简单启发式。根据我们在表1和表2中的实验结果,这导致了一些加速,但经验上更差的性能。下面,我们将ξ = 0的情况作为一阶近似,将ξ > 0的梯度公式作为二阶近似。
2.4 推导离散体系结构
为了形成离散架构中的每个节点,我们保留了从所有先前节点收集的所有非零候选操作中的top-k最强操作(来自不同节点)。操作的强度定义为: exp ( α o ( i , j ) ) ∑ o ′ ∈ O exp ( α o ′ ( i , j ) ) \frac{\exp(\alpha_o^{(i,j)})}{\sum_{o^{\prime}\in\mathcal{O}}\exp(\alpha_{o^{\prime}}^{(i,j)})} ∑o′∈Oexp(αo′(i,j))exp(αo(i,j))。为了使我们的衍生架构与现有工作中的架构具有可比性,我们对卷积单元使用k=2(Zoph et al.,2018;Liu et al.,2018a;Real et al.,2018),对约简单元使用k=1(Pham et al.,2018b)。
由于两个原因,零操作在上面被排除在外。首先,为了与现有模型进行公平的比较,我们需要每个节点恰好有k条非零的传入边。其次,零操作的强度是不确定的,因为增加零操作的对数只会影响结果节点表示的规模,而不会影响最终的分类结果,因为存在批归一化(Ioffe & Szegedy, 2015)。
3 EXPERIMENTS AND RESULTS
我们在CIFAR-10和PTB上的实验包括两个阶段,架构搜索(章节3.1)和架构评估(章节3.2)。在第一阶段,我们使用DARTS搜索单元架构,并根据其验证性能确定最佳单元。在第二阶段,我们使用这些单元来构建更大的体系结构,我们从头开始训练并报告它们在测试集中的性能。我们还通过在ImageNet和WikiText-2 (WT2)上分别评估在CIFAR-10和PTB上学习到的最佳单元的可移植性来研究它们的可移植性。
3.1 架构搜索
3.1.1 在CIFAR-10上搜索卷积单元
我们在 O \mathcal{O} O中包括以下操作:3 × 3和5 × 5可分离卷积,3 × 3和5 × 5扩展可分离卷积,3 × 3最大池化,3 × 3平均池化,恒 et al.和零。所有操作都是步幅一(如果适用),并且卷积特征映射被填充以保持其空间分辨率。我们使用relu - conv - bn顺序进行卷积操作,并且每个可分离卷积总是应用两次(Zoph et al.,2018;Real et al.,2018;刘 et al.,2018a)。
我们的卷积单元由N = 7个节点组成,其中输出节点定义为所有中间节点(不包括输入节点)的深度连接。其余设置遵循Zoph et al.(2018);Liu et al . (2018a);Real et al.(2018),其中通过将多个单元堆叠在一起形成网络。单元格k的第一个和第二个节点被设置为分别等于单元 k−2和k−1的输出,并且根据需要插入1×1卷积。位于网络总深度的1=3和2=3处的单元为约简单元,其中与输入节点相邻的所有操作均为步长2。因此,结构编码是 ( α n o r m a l , α r e d u c e ) (\alpha_{normal},\alpha_{reduce}) (αnormal,αreduce),其中 α n o r m a l α_{normal} αnormal由所有正常单元共享, α r e d u c e α_{reduce} αreduce由所有约简单元共享。
本节的详细实验设置可以在A.1.1节中找到。
3.1.2 在Penn treebank上寻找约简单元
我们的可用操作集包括线性变换,然后是tanh, relu, sigmoid激活中的一个,以及单位映射和零操作。这些候选操作的选择遵循Zoph和Le (2017);Pham et al.(2018b)。
我们的循环单元由N=12个节点组成。第一个中间节点是通过线性变换两个输入节点,将结果相加,然后通过tanh激活函数获得的,如在ENAS 单元中所做的(Pham et al.,2018b)。单元的其余部分是习得的。其他设置类似于ENAS,其中每个操作都通过highway bypass增强(Zilly et al.,2016),并且单元输出被定义为所有中间节点的平均值。在ENAS中,我们在每个节点中启用批归一化,以防止在架构搜索期间梯度爆炸,并在架构评估期间禁用它。我们的循环网络仅由单个单元组成,即我们在循环架构中不假设任何重复模式。
本节的详细实验设置可以在A.1.2节中找到。
3.2 架构评估
为了确定最终评估的架构,我们使用不同的随机种子运行DARTS四次,并根据通过短时间从头开始训练获得的验证性能(CIFAR-10上的100个时期和PTB上的300个时期)来选择最佳单元。这对于约简单元尤其重要,因为优化结果可能对初始化敏感(图3)。
为了评估所选择的体系结构,我们随机初始化它的权重(在搜索过程中学习的权重被丢弃),从头开始训练它,并在测试集中报告它的性能。我们注意到测试集从未用于体系结构搜索或体系结构选择。
CIFAR-10和PTB架构评估的详细实验设置分别见A.2.1节和A.2.2节。除了CIFAR-10和PTB,我们进一步研究了我们的最佳卷积单元(在CIFAR-10上搜索)和循环单元(在PTB上搜索)的可转移性,分别在ImageNet(移动设置)和WikiText-2上进行评估。迁移学习实验的更多细节可以在A.2.3节和A.2.4节中找到。
3.3 结果分析
卷积架构的CIFAR-10结果如表1所示。值得注意的是,DARTS取得了与最先进技术相当的结果(Zoph et al.,2018;Real et al.,2018),同时使用三个数量级的计算资源(即1.5或4 GPU天,而NASNet为2000 GPU天,AmoebaNet为3150 GPU天)。此外,在稍长的搜索时间下,通过发现错误率相当但参数较少的单元,DARTS优于ENAS (Pham et al.,2018b)。较长的搜索时间是由于我们为单元格选择重复了四次搜索过程。然而,这种做法对于卷积单元不太重要,因为所发现的架构的性能并不强烈依赖于初始化(图3)。
为了更好地理解双层优化的必要性,我们研究了一种简单的搜索策略,其中 α α α和 w w w在训练集和验证集的联合上使用坐标下降进行联合优化。得到的最佳卷积单元(4次运行)使用3.1M个参数的测试误差为4.16±0.16%,比随机搜索差。在第二个实验中,我们使用SGD在所有可用数据(训练+验证)上同时优化 α α α和 w w w(没有改变)。在3.0M参数下,最佳单元 yielded的测试误差为3.56±0.10%。我们假设这些启发式方法会导致 α α α(类似于超参数)过拟合训练数据,导致较差的泛化。注意,在DARTS中, α α α不是直接在训练集上优化的。
表2给出了PTB复发性架构的结果,其中由dart发现的单元达到了55.7的测试困惑度。这与通过混合softmax增强的最先进的模型相当(Yang et al.,2018),并且优于手动或自动发现的所有其他架构。请注意,我们的自动搜索单元优于广泛调优的LSTM (Melis et al.,2018),这表明除了超参数搜索之外,架构搜索也很重要。在效率方面,总体成本(总共运行4次)在1个GPU天内,与ENAS相当,明显快于NAS (Zoph & Le, 2017)。
同样有趣的是,随机搜索对于卷积模型和循环模型都是竞争的,这反映了搜索空间设计的重要性。尽管如此,在同 et al.或更低的搜索成本下,在这两种情况下,DARTS都能够显著改善随机搜索(CIFAR-10上为2.76±0.09 vs 3.29±0.15;55.7 vs . PTB 59.4)。
表3中的结果表明,在CIFAR-10上学习的单元确实可以转移到ImageNet上。值得注意的是,DARTS使用最先进的RL方法(Zoph et al.,2018)实现了具有竞争力的性能,同时使用了三个数量级的计算资源。
表4显示,尽管PTB的总体结果不如表2所示的结果强,但DARTS识别的单元转移到WT2的效果优于ENAS。PTB和WT2之间的可移植性较弱(与CIFAR-10和ImageNet之间的可移植性相比),这可以解释为用于架构搜索的源数据集(PTB)相对较小。通过直接优化感兴趣的任务的体系结构,可以潜在地规避可转移性的问题。
4 CONCLUSION
我们提出了一种简单而有效的结构搜索算法,适用于卷积和循环网络。通过在连续空间中搜索,在图像分类和语言建模任务上,DARTS能够匹配或优于目前最先进的不可微架构搜索方法,并且效率显著提高了几个数量级。
有许多有趣的方向可以进一步改进DARTS。例如,当前的方法可能受到连续体系结构编码和派生的离散体系结构之间的差异的影响。这可以得到缓解,例如,通过softmax温度淬火(temperature annealing)(与一个合适的时间表),以强制one-hot的选择。研究基于在搜索过程中学习到的共享参数的性能感知架构派生方案也会很有趣。
A EXPERIMENTAL DETAILS
A.1 架构搜索
A.1.1 CIFAR-10
由于架构在整个搜索过程中会发生变化,因此我们总是使用特定于批的统计数据进行批规范化,而不是使用全局移动平均值。在搜索过程中,所有批次规范化中的可学习仿射参数被禁用,以避免重新缩放候选操作的输出。
为了进行架构搜索,我们拿出一半的CIFAR-10训练数据作为验证集。一个由8个单元组成的小网络使用DARTS进行50次epoch的训练,批大小为64(对于训练集和验证集),初始通道数为16。选择这些数字是为了确保网络可以容纳在单个GPU中。我们使用动量SGD来优化权重w,初始学习率 η w = 0.025 η_w = 0.025 ηw=0.025(在没有重启的余弦计划下退火到零(Loshchilov & Hutter, 2016)),动量0.9,权重衰减3 × 10−4。我们对架构变量(正常和约简单元格中的α)使用零初始化,这意味着在所有可能的操作上(在取softmax之后)需要同 et al.的关注。在早期阶段,这确保了每个候选操作中的权重都能接收到足够的学习信号(更多的探索)。我们使用Adam (Kingma & Ba, 2014)作为α的优化器,初始学习率 η α η_α ηα = 3 × 10−4,动量β = (0.5,0.99),重量衰减10−3。单个gpu需要一天的搜索时间。
A.1.2 PTB
对于架构搜索,嵌入和隐藏的大小都设置为300。连接到同一节点的所有传入操作之间的线性转换参数是共享的(它们的形状都是300 × 300),因为算法总是可以选择关注其中一个前代操作并掩盖其他操作。绑定权重可以节省内存和加快计算速度,允许我们使用单个GPU训练连续架构。批归一化中可学习的仿射参数被禁用,正如我们对卷积单元所做的那样。然后使用无动量的SGD训练网络50个epoch,学习率 η w η_w ηw = 20,批大小256,BPTT长度35,权重衰减5 × 10−7。我们对词嵌入应用0.2的变分dropout (Gal & Ghahramani, 2016),对单元输入应用0.75,对所有隐藏节点应用0.25。0.75的落差也应用到输出层。其他训练设置与Merity et al.(2018)的相同;Yang et al(2018)。与卷积结构类似,我们使用Adam对 α α α(初始化为0)进行优化,初始学习率 η α η_α ηα = 3 × 10−3,动量β = (0.9,0.99),重量衰减10−3。在单个GPU上搜索需要6个小时。
A.2 架构评估
A.2.1 CIFAR-10
一个包含20个单元的大型网络进行600次epoch的训练,batch size为96。通道的初始数量从16个增加到36个,以确保我们的模型大小与文献中的其他基线(大约3M)相当。其他超参数与用于架构搜索的超参数保持相同。以下现有工作(Pham et al.,2018b;Zoph et al.,2018;刘 et al.,2018a;Real et al.,2018),其他增强功能包括切出(DeVries & Taylor, 2017),概率为0.2的路径dropout 和权重为0.4的auxiliary towers。我们在PyTorch中实现的单个GPU上的训练需要1.5天(Paszke et al, 2017)。由于CIFAR结果即使在完全相同的设置下也会受到高方差的影响(Liu et al ., 2018b),因此我们报告了完整模型的10个独立运行的平均值和标准差。
为了避免不同实现或训练设置(例如批大小)之间的任何差异,我们将NASNet-A单元(Zoph et al.,2018)和AmoebaNet-A单元(Real et al.,2018)纳入我们的训练框架,并在与我们的单元相同的设置下报告它们的结果。
A.2.2 PTB
使用平均SGD (Polyak & Juditsky, 1992) (ASGD)训练具有发现单元的单层循环网络,直到收敛到批大小为64,学习率 η w η_w ηw = 20,权重衰减8 × 10−7。为了加速,我们从SGD开始,并使用与Yang et al.(2018)相同的协议触发ASGD;Merity et al(2018)。嵌入和隐藏的大小都设置为850,以确保我们的模型大小与其他基线相当。嵌入层上的令牌退出设置为0.1。其他超参数与架构搜索的超参数完全相同。
为了公平比较,我们没有在优化结束时调整我们的模型,也没有使用任何额外的增强功能,例如动态评估(Krause et al.,2017)或连续缓存(Grave et al.,2016)。使用我们的PyTorch实现,在单个1080Ti GPU上进行培训需要3天。为了解释实现差异,我们还将ENAS单元(Pham et al.,2018b)纳入我们的代码库,并在与我们发现的单元相同的设置下训练它们的网络。
A.2.3 IMAGENET
我们考虑移动端设置,输入图像大小为224×224,模型中的乘加操作次数限制在600M以内。
一个由14个单元组成的网络被训练了250个epoch, batch size为128,权重衰减3×10−5,初始SGD学习率为0.1(每个epoch后衰减0.97倍)。其他超参数遵循Zoph et al.(2018);Real et al.(2018);3 .Liu et al.(2018a)。在单个GPU上进行训练需要12天。
A.2.4 WIKITEXT-2
我们使用嵌入和隐藏尺寸大小700,权重衰减5×10−7,隐藏节点变分dropout 0.15。其他超参数与我们的PTB实验保持相同。
B SEARCH WITH INCREASED DEPTH
为了更好地理解深度对架构搜索的影响,我们通过将堆栈中的单元数从8个增加到20个来对CIFAR-10进行架构搜索。由于单个GPU的内存预算,通道的初始数量从16个减少到6个。所有其他超参数保持不变。搜索成本翻倍,得到的单元测试误差为2.88±0.09%,略低于使用较浅网络获得的2.76±0.09%。这种特殊的设置可能会受到架构搜索和最终评估之间的通道数量差异扩大的影响。此外,使用更深的模型进行搜索可能需要不同的超参数,因为需要反向支持的层数增加了。
C COMPLEXITY ANALYSIS
在本节中,我们分析卷积单元的搜索空间的复杂性。
我们的每个离散单元允许 ∏ k = 1 4 ( k + 1 ) k 2 × ( 7 2 ) ≈ 1 0 9 \prod_{k=1}^{4}\frac{(k+1)k}{2}\times(7^{2})\approx10^{9} ∏k=142(k+1)k×(72)≈109个可能的dag,而不考虑图同构(回想一下,我们有7个非零操作,2个输入节点,4个中间节点,每个中间节点有2个前节点)。由于我们同时学习正常单元和约简单元,因此体系结构的总数约为(109)2 = 1018。这比PNAS的5.6 × 1014要大(Liu et al ., 2018a),后者只学习一种类型的单元。
还要注意,我们只在最后保留每个节点的前2个前节点,并且在最后离散化步骤之前的连续搜索空间甚至更大。具体来说,每个松弛单元(一个完全连通图)包含2 + 3 + 4 + 5 = 14条可学习边,允许(7 +1)14≈4 × 1012种可能的配置(+1包含表示缺乏连接的零op)。同样,由于我们正在学习正常单元和约简单元,因此离散化前连续空间覆盖的体系结构总数为(4 × 1012) 2≈1025。