DARTS: DIFFERENTIABLE ARCHITECTURE SEARCH

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<jo(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)=oOoOexp(α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)=argmaxoOα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,α)wLval(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±ϵwLval(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,α)wLval(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)})} oOexp(α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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/274937.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VR文化旅游虚拟现实介绍|虚拟现实元宇宙|VR设备购买

虚拟现实&#xff08;VR&#xff09;技术正在改变我们对文化旅游的认知和体验。通过VR技术&#xff0c;人们可以身临其境地探索世界各地的文化遗产和旅游景点&#xff0c;无需亲临现场也能感受到逼真的体验。以下是VR文化旅游虚拟现实的介绍&#xff1a; 身临其境的体验&#x…

web项目抢购模块测试

web项目抢购模块测试 抢购模块(先测后台,再测前台)流程抢购用例编写测试点--后台抢购用例编写测试点--前台用例设计 面试题1: 当你发现研发实现的结果与需求不一致时怎么办? 需求评审的时候:需要确认所有输入类型的校验是针对单独的输入框做的还是在最终提交时校验 抢购模块 需…

springboot266基于Web的农产品直卖平台的设计与实现

农产品直卖平台的设计与实现 摘 要 计算机网络发展到现在已经好几十年了&#xff0c;在理论上面已经有了很丰富的基础&#xff0c;并且在现实生活中也到处都在使用&#xff0c;可以说&#xff0c;经过几十年的发展&#xff0c;互联网技术已经把地域信息的隔阂给消除了&#x…

保研复习数据结构记(4)--树(二叉树、线索树、哈夫曼树,并查集)

一.树的基本术语 1.树 什么是空树&#xff1f;结点数为0的树非空树的特性&#xff1f;有且仅有一个根结点&#xff0c;没有后继的结点称为“叶子结点”&#xff0c;有后继的结点称为“分支结点”&#xff0c;除了根结点外任何一个结点都有且仅有一个前驱&#xff0c;每个结点…

Linux 基本命令

文章目录 1.echo2.cd3.find4.mkdir5.cp6.rm7.wc8.tar9.tail10.vim11.grep12.sed13 touch14 ls15 快捷键16 ln17 mv18 useradd19 usermod20 su 每天一个Linux命令 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 1.echo 中文 (Chinese): “回声” 或 “输…

(开源项目)OpenHarmony、社区共建Sample合入要求

1.新增Sample功能不能重复于当前已有Sample的功能&#xff1b; 2.新增Sample的工程推荐使用ArkTS语言编写&#xff1b; 3.新增Sample的工程推荐使用Stage模型编写&#xff1b; 4.新增Sample的工程中需要包含UI自动化用例&#xff08;ohosTest工程模块&#xff09;&#xff0…

使用腾讯云快速搭建WordPress网站流程详解

专栏系列文章&#xff1a; WordPress建站主题美化系列教程https://blog.csdn.net/seeker1994/category_12184577.html 一文搞懂WordPress是什么&#xff1f;为什么用它建站&#xff1f;怎么安装与部署&#xff1f; 初次安装WordPress后如何进行网站设置&#xff08;主题安装、…

String 底层是如何实现的?

1、典型回答 String 底层是基于数组实现的&#xff0c;并且数组使用了 final 修饰&#xff0c;不同版本中的数组类型也是不同的&#xff1a; JDK9 之前&#xff08;不含JDK9&#xff09; String 类是使用 char[ ]&#xff08;字符数组&#xff09;实现的但 JDK9 之后&#xf…

浅淡 C++ 与 C++ 入门

我们知道&#xff0c;C语言是结构化和模块化的语言&#xff0c;适用于较小规模的程序。而当解决复杂问题&#xff0c;需要高度抽象和建模时&#xff0c;C语言则不合适&#xff0c;而C正是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库…

铠侠SSD新型接口EDSFFE3 CM7 CD8P系列NVMe2.0 PCIe5.0

固态硬盘几个大厂&#xff0c;如果英特尔、铠侠、三星&#xff0c;陆续推出E3系列SSD&#xff0c;今天就我个人对E3系列的了解&#xff0c;做一个简单介绍。如有不妥&#xff0c;请多多交流 什么是E3&#xff1f; 简单理解就是一种新型的SSD外形尺寸。 E3 系列外形尺寸包含四种…

【教程】APP加固的那些小事

摘要 APP加固是保护APP代码逻辑的重要手段&#xff0c;通过隐藏、混淆、加密等操作提高软件的逆向成本&#xff0c;降低被破解的几率&#xff0c;保障开发者和用户利益。本文将介绍APP加固常见失败原因及解决方法&#xff0c;以及处理安装出现问题的情况和资源文件加固策略选择…

RabbitMQ发布确认高级版

1.前言 在生产环境中由于一些不明原因&#xff0c;导致 RabbitMQ 重启&#xff0c;在 RabbitMQ 重启期间生产者消息投递失败&#xff0c; 导致消息丢失&#xff0c;需要手动处理和恢复。于是&#xff0c;我们开始思考&#xff0c;如何才能进行 RabbitMQ 的消息可靠投递呢&…

Eohours防作弊算工时打卡HR管控系统(中英文版)

适用工程类算工时的企业&#xff0c;目前全世界拥有外劳的建筑企业更适合&#xff0c;他们有很多外国劳工&#xff0c;适合算工时。让工人得到一个公平&#xff0c;透明的工时数据&#xff0c;知道自己这个月能拿多少薪水。企业也能很好控制管理层和工人之间的协作&#xff0c;…

Spring之注入模型

前言 之前我写过一篇关于BeanDefinition的文章,讲述了各个属性的作用,其中有一个属性我没有提到,因为这个属性比较重要,所以这里单独开一篇文章来说明 上一篇博文链接Spring之BeanDefinitionhttps://blog.csdn.net/qq_38257958/article/details/134823169?spm1001.2014.3001…

【论文阅读】

4. Analysis of Large-Scale Multi-Tenant GPU Clusters for DNN Training Workloads 出处&#xff1a;2019 USENIX-TAC 大规模多租户GPU集群对DNN训练工作负载的分析 主要工作&#xff1a;描述了Microsoft中一个多租户GPU集群两个月的工作负载特征&#xff0c;研究影响多租户…

iPhone, Android 手机是如何收到推送通知的?

本文转自 公众号 ByteByteGo&#xff0c;如有侵权&#xff0c;请联系&#xff0c;立即删除 iPhone, Android 手机是如何收到推送通知的&#xff1f; 我们的手机或电脑是如何收到推送通知的&#xff1f; 通常我们可以使用消息解决方案 Firebase 来支持通知推送。下图显示了 Fi…

Unity URP 如何写基础的曲面细分着色器

左边是默认Cube在网格模式下经过曲面细分的结果&#xff0c;右边是原状态。 曲面细分着色器在顶点着色器、几何着色器之后&#xff0c;像素着色器之前。 它的作用时根据配置信息生成额外的顶点以切割原本的面片。 关于这部分有一个详细的英文教程&#xff0c;感兴趣可以看一…

HCIP —— BGP 的社团属性

目录 BGP 的社团属性 1.0X00000000 --- internet 2.0XFFFFFF02 --- no - advertise 3.0XFFFFFF01 --- no - export 4.0XFFFFFF03 --- no-export-subconfed 配置&#xff1a; 第一步&#xff1a;使用路由策略执行对流量打上社团属性 第二步&#xff1a;在对等体通告路由之…

【目标检测经典算法】R-CNN、Fast R-CNN和Faster R-CNN详解系列二:Fast R-CNN图文详解

RCNN算法详解&#xff1a;【目标检测经典算法】R-CNN、Fast R-CNN和Faster R-CNN详解系列一&#xff1a;R-CNN图文详解 学习视频&#xff1a;Faster RCNN理论合集 Fast RCNN 概念辨析 1. RoI 在Fast R-CNN中&#xff0c;RoI&#xff08;Region of Interest&#xff0c;感兴…

【数据可视化】动手用matplotlib绘制关联规则网络图

下载文中数据、代码、绘图结果 文章目录 关于数据绘图函数完整可运行的代码运行结果 关于数据 如果想知道本文的关联规则数据是怎么来的&#xff0c;请阅读这篇文章 绘图函数 Python中似乎没有很方便的绘制网络图的函数。 下面是本人自行实现的绘图函数&#xff0c;如果想…