(ICLR-2019)DARTS:可微分架构搜索

news2024/11/15 19:23:33

DARTS:可微分架构搜索

paper题目:DARTS: DIFFERENTIABLE ARCHITECTURE SEARCH

paper是CMU发表在ICLR 2019的工作

paper链接:地址

ABSTRACT

本文通过以可微分的方式制定任务来解决架构搜索的可扩展性挑战。与传统的在离散的、不可微分的搜索空间上应用进化或强化学习的方法不同,我们的方法是基于架构表示的连续松弛,允许使用梯度下降法有效搜索架构。在CIFAR-10、ImageNet、Penn Treebank和WikiText-2上的大量实验表明,我们的算法在发现用于图像分类的高性能卷积架构和用于语言建模的循环架构方面表现出色,同时比最先进的不可微分技术快了几个数量级。我们的实现已公开,以促进对高效架构搜索算法的进一步研究。

1 INTRODUCTION

发现最先进的神经网络架构需要人类专家的大量努力。最近,人们对开发算法解决方案以实现架构设计的人工过程自动化的兴趣越来越大。自动搜索架构在图像分类 (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等人,2018)或3150个GPU天的进化(Real等人,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等人,2018a)或贝叶斯优化(Kandasamy等人,2018)的效率低下的一个内在原因是,架构搜索被视为离散领域的黑箱优化问题,这导致需要进行大量的架构评估。

在这项工作中,我们从不同的角度处理问题,并提出了一种称为 DARTS(可微架构搜索)的高效架构搜索方法。我们不是在一组离散的候选架构上搜索,而是将搜索空间放宽为连续的,这样就可以通过梯度下降优化架构的验证集性能。基于梯度的优化的数据效率,与低效的黑盒搜索相反,允许 DARTS 使用更少数量级的计算资源实现与最先进技术竞争的性能。它还胜过另一种最近的高效架构搜索方法 ENAS(Pham 等人,2018b)。值得注意的是,DARTS 比许多现有方法更简单,因为它不涉及控制器(Zoph & Le,2017 年;Baker 等人,2017 年;Zoph 等人,2018 年;Pham 等人,2018b;Zhong 等人,2018 年)、超网络(Brock et al, 2018)或性能预测器(Liu et al, 2018a),但它足够通用,可以处理卷积和循环架构。

在连续域内搜索架构的想法并不新鲜(Saxena & V erbeek,2016 年;Ahmed & Torresani,2017 年;Veniat & Denoyer,2017 年;Shin 等人,2018 年),但有几个主要区别。虽然之前的工作试图微调架构的特定方面,例如卷积网络中的过滤器形状或分支模式,但 DARTS 能够在丰富的搜索空间中学习具有复杂图形拓扑的高性能架构构建块。此外,DARTS 不限于任何特定的体系结构系列,并且适用于卷积网络和循环网络。

在我们的实验(第 3 节)中,我们展示了 DARTS 能够设计一个卷积单元,在 CIFAR-10 上使用 3.3M 参数实现 2.76 ± 0.09% 的测试误差,这与现有技术相比具有竞争力通过正则化进化 (Real et al, 2018) 获得的最先进结果使用了三个数量级的计算资源。同样的卷积单元在转移到 ImageNet(移动设置)时也达到了 26.7% 的 top-1 错误,这与最好的 RL 方法相当(Zoph 等人,2018 年)。在语言建模任务中,DARTS 有效地发现了一个循环单元,该单元在 Penn Treebank (PTB) 上实现了 55.7 的测试困惑度,优于广泛调整的 LSTM(Melis 等人,2018 年)和所有现有的基于 NAS 的自动搜索单元(Zoph & Le , 2017) 和 ENAS (Pham 等人, 2018b)。

我们的贡献可以总结如下:

• 我们介绍了一种基于双层优化的可微分网络架构搜索新算法,该算法适用于卷积和循环架构。

• 通过对图像分类和语言建模任务的大量实验,我们表明基于梯度的架构搜索在 CIFAR-10 上取得了极具竞争力的结果,并且在 PTB 上优于现有技术。这是一个非常有趣的结果,考虑到迄今为止最好的架构搜索方法使用不可微分的搜索技术,例如基于 RL(Zoph 等人,2018 年)或进化(Real 等人,2018 年;Liu 等人,2018b)。

• 我们实现了显著的效率提升(将架构发现的成本降低到几个 GPU 天),我们将其归因于使用基于梯度的优化而不是不可微分的搜索技术。

• 我们表明,DARTS 在 CIFAR-10 和 PTB 上学习的架构可分别转移到 ImageNet 和 WikiText-2。

DARTS的实施情况在https://github.com/quark0/darts。

2 DIFFERENTIABLE ARCHITECTURE SEARCH

我们在第2.1节中描述了我们的搜索空间的一般形式,其中一个架构(或其中的一个单元)的计算过程被表示为一个有向无环图。然后,我们为我们的搜索空间引入了一个简单的连续松弛方案,这导致了架构及其权重的联合优化的可微分学习目标(第2.2节)。最后,我们提出了一种近似技术,使算法在计算上可行且高效(第2.3节)。

2.1 SEARCH SPACE


继 Zoph 等人 (2018) Real 等人 (2018); Liu 等人 (2018a;b)之后;我们寻找一个计算单元作为最终架构的构建块。学习到的单元可以堆叠形成卷积网络,也可以递归连接形成循环网络。

单元是由 N N N个节点的有序序列组成的有向无环图。每个节点 x ( i ) x^{(i)} x(i)都是潜在表示(例如卷积网络中的特征图),每个有向边 ( i , j ) (i, j) (i,j)都与一些变换 x ( i ) x^{(i)} x(i)的操作 o ( i , j ) o^{(i, j)} o(i,j)相关联。我们假设单元有两个输入节点和一个输出节点。对于卷积单元,输入节点定义为前两层中的单元输出(Zoph 等人,2018)。对于循环单元,这些被定义为当前步骤的输入和上一步的状态。单元的输出是通过对所有中间节点应用缩减操作(例如串联)获得的。

每个中间节点都是根据其所有前任节点计算的:
x ( j ) = ∑ i < j o ( i , j ) ( x ( i ) ) ( 1 ) x^{(j)}=\sum_{i< j} o^{(i, j)}\left(x^{(i)}\right)(1) x(j)=i<jo(i,j)(x(i))(1)
还包括一个特殊的零操作以指示两个节点之间缺少连接。因此,学习单元的任务减少到学习其边缘的操作。

2.2 CONTINUOUS RELAXATION AND OPTIMIZATION


O \mathcal{O} O为一组候选操作(例如,卷积、最大池化、零),其中每个操作表示要应用于 x ( i ) ) x^{(i))} x(i))的某个函数 o ( ⋅ ) o(\cdot) o()。为了使搜索空间连续,我们将特定操作的分类选择放宽到所有可能操作的softmax:
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 \left(\alpha_o^{(i, j)}\right)}{\sum_{o^{\prime} \in \mathcal{O}} \exp \left(\alpha_{o^{\prime}}^{(i, j)}\right)} o(x)(2) oˉ(i,j)(x)=oOoOexp(αo(i,j))exp(αo(i,j))o(x)(2)
其中一对节点 ( i , j ) (i, j) (i,j)的操作混合权重由维度为 ∣ O ∣ |\mathcal{O}| O的向量 α ( i , j ) \alpha^{(i, j)} α(i,j)参数化。架构搜索的任务减少到学习一组连续变量 α = { α ( i , j ) } \alpha=\left\{\alpha^{(i, j)}\right\} α={α(i,j)},如图 1 所示。在搜索结束时,可以通过替换每个混合操作获得离散架构 o ˉ ( i , j ) \bar{o}^{(i, j)} oˉ(i,j)具有最可能的操作,即 o ( i , j ) = argmax ⁡ o ∈ O α o ( i , j ) o^{(i, j)}=\operatorname{argmax}_{o \in \mathcal{O}} \alpha_o^{(i, j)} o(i,j)=argmaxoOαo(i,j)。在下文中,我们将 α \alpha α称为架构(的编码)。

图1

图 1:DARTS 概述:(a) 边上的操作最初是未知的。 (b) 通过在每条边上放置候选操作的混合来连续松弛搜索空间。 © 通过求解双层优化问题联合优化混合概率和网络权重。 (d) 从学习到的混合概率中归纳最终架构。

放松后,我们的目标是在所有混合操作(例如卷积滤波器的权重)中共同学习架构 α \alpha α和权重 w w w。类似于使用 RL(Zoph & Le,2017;Zoph 等人,2018;Pham 等人,2018b)或进化(Liu 等人,2018b;Real 等人,2018)的架构搜索,其中验证集性能被视为奖励,DARTS旨在优化验证损失,但使用梯度下降。

L train  \mathcal{L}_{\text {train }} Ltrain  L val  \mathcal{L}_{\text {val }} Lval 分别表示训练和验证的损失。这两种损失不仅由架构 α \alpha α决定,而且还由网络中的权重 w w w决定。架构搜索的目标是找到使验证损失 L val  ( w ∗ , α ∗ ) \mathcal{L}_{\text {val }}\left(w^*, \alpha^*\right) Lval (w,α)最小化的 α ∗ \alpha^* α,其中与架构相关的权重 w ∗ w^* w是通过最小化训练损失 w ∗ = argmin ⁡ w L train  ( w , α ∗ ) w^*=\operatorname{argmin}_w \mathcal{L}_{\text {train }}\left(w, \alpha^*\right) w=argminwLtrain (w,α)获得的。

这意味着一个双层优化问题 (Anandalingam & Friesz, 1992; Colson et al, 2007),其中 α \alpha α作为上层变量, w w w作为下层变量:
min ⁡ α L val  ( w ∗ ( α ) , α ) ( 3 )  s.t.  w ∗ ( α ) = argmin ⁡ w L train  ( w , α ) ( 4 ) \begin{array}{cl} \min _\alpha & \mathcal{L}_{\text {val }}\left(w^*(\alpha), \alpha\right)(3) \\ \text { s.t. } & w^*(\alpha)=\operatorname{argmin}_w \mathcal{L}_{\text {train }}(w, \alpha)(4) \end{array} minα s.t. Lval (w(α),α)(3)w(α)=argminwLtrain (w,α)(4)
嵌套式表述也出现在基于梯度的超参数优化中(Maclaurin等,2015;Pedregosa,2016;Franceschi等,2018),这在某种意义上是相关的,架构α可以被看作是一种特殊类型的超参数,尽管其维度大大高于学习率等标量值的超参数,而且更难优化。

2.3 APPROXIMATE ARCHITECTURE GRADIENT


由于昂贵的内部优化,准确评估架构梯度可能会让人望而却步。因此,我们提出了一个简单的近似方案如下:
∇ α L val  ( w ∗ ( α ) , α ) ( 5 ) ≈ ∇ α L val  ( w − ξ ∇ w L train  ( w , α ) , α ) ( 6 ) \begin{aligned} & \nabla_\alpha \mathcal{L}_{\text {val }}\left(w^*(\alpha), \alpha\right)(5) \\ \approx & \nabla_\alpha \mathcal{L}_{\text {val }}\left(w-\xi \nabla_w \mathcal{L}_{\text {train }}(w, \alpha), \alpha\right)(6) \end{aligned} αLval (w(α),α)(5)αLval (wξwLtrain (w,α),α)(6)
其中 w w w表示算法维护的当前权重, ξ \xi ξ是内部优化步骤的学习率。这个想法是通过仅使用单个训练步骤来调整 w w w来近似 w ∗ ( α ) w^*(\alpha) w(α),而不是通过训练完全解决内部优化(等式 4)直到收敛。相关技术已用于模型迁移的元学习(Finn 等人,2017 年)、基于梯度的超参数调整(Luketina 等人,2016 年)和展开的生成对抗网络(Metz 等人,2017 年)。请注意,如果 w w w已经是内部优化的局部最优值且 ∇ w L train  ( w , α ) = 0 \nabla_w \mathcal{L}_{\text {train }}(w, \alpha)=0 wLtrain (w,α)=0,则等式 6 将简化为 ∇ α L val  ( w , α ) \nabla_\alpha \mathcal{L}_{\text {val }}(w, \alpha) αLval (w,α)

迭代过程在ALG. 1中概述了。尽管我们目前尚未意识到我们优化算法的收敛保证,但实际上,它能够达到具有合适选择的匹配点 ξ \xi ξ。我们还注意到,当为权重优化启用动量时,等式 6 中的一步展开学习目标会相应修改,我们的所有分析仍然适用。

将链式法则应用于近似架构梯度(等式 6)产生
∇ α L val  ( w ′ , α ) − ξ ∇ α , w 2 L train  ( w , α ) ∇ w ′ L val  ( w ′ , α ) ( 7 ) \nabla_\alpha \mathcal{L}_{\text {val }}\left(w^{\prime}, \alpha\right)-\xi \nabla_{\alpha, w}^2 \mathcal{L}_{\text {train }}(w, \alpha) \nabla_{w^{\prime}} \mathcal{L}_{\text {val }}\left(w^{\prime}, \alpha\right)(7) αLval (w,α)ξα,w2Ltrain (w,α)wLval (w,α)(7)
其中 w ′ = w − ξ ∇ w L train  ( w , α ) w^{\prime}=w-\xi \nabla_w \mathcal{L}_{\text {train }}(w, \alpha) w=wξwLtrain (w,α)表示一步前向模型的权重。上面的表达式在其第二项中包含一个昂贵的矩阵向量积。幸运的是,使用有限差分近似可以大大降低复杂性。让 ϵ \epsilon ϵ是一个小标量且 w ± = w ± ϵ ∇ w ′ L val  ( w ′ , α ) w^{\pm}=w \pm \epsilon \nabla_{w^{\prime}} \mathcal{L}_{\text {val }}\left(w^{\prime}, \alpha\right) w±=w±ϵwLval (w,α)。然后:
∇ α , w 2 L train  ( w , α ) ∇ w ′ L val  ( w ′ , α ) ≈ ∇ α L train  ( w + , α ) − ∇ α L train  ( w − , α ) 2 ϵ ( 8 ) \nabla_{\alpha, w}^2 \mathcal{L}_{\text {train }}(w, \alpha) \nabla_{w^{\prime}} \mathcal{L}_{\text {val }}\left(w^{\prime}, \alpha\right) \approx \frac{\nabla_\alpha \mathcal{L}_{\text {train }}\left(w^{+}, \alpha\right)-\nabla_\alpha \mathcal{L}_{\text {train }}\left(w^{-}, \alpha\right)}{2 \epsilon}(8) α,w2Ltrain (w,α)wLval (w,α)2ϵαLtrain (w+,α)αLtrain (w,α)(8)
计算有限差分只需要权重的两次前向传递和 α \alpha α的两次反向传递,复杂度从 O ( ∣ α ∣ ∣ w ∣ ) O(|\alpha||w|) O(αw)降低到 O ( ∣ α ∣ + ∣ w ∣ ) O(|\alpha|+|w|) O(α+w)

一阶近似 当 ξ = 0 \xi=0 ξ=0时,方程 7 中的二阶导数将消失。在这种情况下,架构梯度由 ∇ α L val  ( w , α ) \nabla_\alpha \mathcal{L}_{\text {val }}(w, \alpha) αLval (w,α)给出,对应于通过假设当前 w w w w ∗ ( α ) w^*(\alpha) w(α)相同来优化验证损失的简单启发式。根据我们在表 1 和表 2 中的实验结果,这会导致一些加速但在经验上更差的性能。在下文中,我们将 ξ = 0 \xi=0 ξ=0的情况称为一阶近似,并参考梯度公式其中 ξ > 0 \xi>0 ξ>0作为二阶近似。

2.4 DERIVING DISCRETE ARCHITECTURES


为了形成离散架构中的每个节点,我们保留了从所有先前节点收集的所有非零候选操作中的前 k k k个最强操作(来自不同节点)。操作的强度定义为 exp ⁡ ( α o ( i , j ) ) ∑ o ′ ∈ O exp ⁡ ( α o ′ ( i , j ) ) \frac{\exp \left(\alpha_o^{(i, j)}\right)}{\sum_{o^{\prime} \in \mathcal{O}} \exp \left(\alpha_{o^{\prime}}^{(i, j)}\right)} oOexp(αo(i,j))exp(αo(i,j))。为了使我们的衍生架构与现有工作中的架构相媲美,我们对卷积单元使用 k = 2 k=2 k=2(Zoph 等人,2018 年;Liu 等人,2018a;Real 等人,2018 年),对循环单元使用 k = 1 k=1 k=1(Pham 等人等人,2018b)。

由于两个原因,上述零操作被排除在外。首先,我们需要每个节点恰好有 k k k个非零传入边,以便与现有模型进行公平比较。其次,零操作的强度是不确定的,因为增加零操作的对数只会影响结果节点表示的规模,并且不会影响最终的分类结果,因为批归一化的存在 (Ioffe & Szegedy, 2015).

图2

图 2:当 L val  ( w , α ) = α w − 2 α + 1 \mathcal{L}_{\text {val }}(w, \alpha)=\alpha w-2 \alpha+1 Lval (w,α)=αw2α+1 L train  ( w , α ) = \mathcal{L}_{\text {train }}(w, \alpha)= Ltrain (w,α)= w 2 − 2 α w + α 2 w^2-2 \alpha w+\alpha^2 w22αw+α2,从 (α(0), w(0)) = (2, -2)。相应的二层优化问题的解析解是 ( α ( 0 ) , w ( 0 ) ) = ( 2 , − 2 ) \left(\alpha^{(0)}, w^{(0)}\right)=(2,-2) (α(0),w(0))=(2,2),用红色圆圈突出显示。红色虚线表示完全满足约束方程 4 的可行集(即, w w w 中的权重对于给定架构 α \alpha α是最优的)。该示例表明,选择合适的 ξ \xi ξ有助于收敛到更好的局部最优值。

3 EXPERIMENTS AND RESULTS

我们在 CIFAR-10 和 PTB 上的实验包括两个阶段,架构搜索(第 3.1 节)和架构评估(第 3.2 节)。在第一阶段,我们使用 DARTS 搜索单元架构,并根据其验证性能确定最佳单元。在第二阶段,我们使用这些单元构建更大的架构,我们从头开始训练并报告它们在测试集上的性能。我们还通过分别在 ImageNet 和 WikiText-2 (WT2) 上评估它们来研究在 CIFAR-10 和 PTB 上学习到的最佳单元的可转移性。

3.1 ARCHITECTURE SEARCH


3.1.1 SEARCHING FOR CONVOLUTIONAL CELLS ON CIFAR-10


我们在 O \mathcal{O} O中包含以下操作:3 × 3 和 5 × 5 可分离卷积、3 × 3 和 5 × 5 空洞可分离卷积、3 × 3 最大池化、3 × 3 平均池化、恒等和零。所有操作都是步幅为一(如果适用)并且填充卷积特征图以保持其空间分辨率。我们使用 ReLU-Conv-BN 顺序进行卷积运算,每个可分离卷积总是应用两次(Zoph 等人,2018 年;Real 等人,2018 年;Liu 等人,2018a)。

我们的卷积单元由 N = 7 N=7 N=7个节点组成,其中输出节点定义为所有中间节点(不包括输入节点)的深度级联。其余设置遵循 Zoph 等人 (2018);Liu等人 (2018a); Real 等人 (2018),然后通过将多个单元堆叠在一起形成网络。单元 k k k的第一个和第二个节点分别设置为等于单元 k − 2 k-2 k2和单元 k − 1 k-1 k1的输出,并根据需要插入 1 × 1 1 \times 1 1×1卷积。位于网络总深度的1/3和2/3处的单元是缩减单元,其中所有与输入节点相邻的操作都是步长为2的。因此,架构编码为 ( α normal  , α reduce  ) \left(\alpha_{\text {normal }}, \alpha_{\text {reduce }}\right) (αnormal ,αreduce ),其中 α normal  \alpha_{\text {normal }} αnormal 由所有正常单元共享,而 α reduce  \alpha_{\text {reduce }} αreduce 由所有缩减单元共享。

本节的详细实验设置可在 A.1.1 节中找到。

3.1.2 SEARCHING FOR RECURRENT CELLS ON PENN TREEBANK


我们可用的操作集包括线性变换,后跟 tanh、relu、sigmoid 激活之一,以及恒等映射和零操作。这些候选操作的选择遵循 Zoph & Le (2017); Pham 等人 (2018b)。

我们的循环单元由 N = 12 个节点组成。第一个中间节点是通过对两个输入节点进行线性变换,将结果相加,然后通过 tanh 激活函数获得的,就像在 ENAS 单元中所做的那样(Pham 等人,2018b)。学习单元的其余部分。其他设置类似于 ENAS,其中每个操作都通过highway旁路进行增强(Zilly 等人,2016 年),单元输出定义为所有中间节点的平均值。与 ENAS 一样,我们在每个节点中启用批归一化以防止架构搜索期间的梯度爆炸,并在架构评估期间禁用它。我们的循环网络仅由一个单元组成,即我们不假设循环架构中有任何重复模式。

本节的详细实验设置可在 A.1.2 节中找到。

3.2 ARCHITECTURE EVALUATION


为了确定最终评估的架构,我们使用不同的随机种子运行 DARTS 四次,并根据从头开始短期训练获得的验证性能(CIFAR-10 上的 100 轮和 PTB 上的 300 轮)选择最佳单元。这对于循环单元尤为重要,因为优化结果可能对初始化敏感(图 3)。

图3

图 3:DARTS 对 CIFAR-10 上的卷积细胞和 Penn Treebank 上的循环细胞的搜索进度。随着时间的推移,我们会跟踪最新的架构。每个架构快照都使用训练集从头开始重新训练(CIFAR-10 上的 100 个时期和 PTB 上的 300 个epoch),然后在验证集上进行评估。对于每项任务,我们使用不同的随机种子重复实验 4 次,并报告架构随时间推移的中值和最佳(每次运行)验证性能。作为参考,我们还报告了使用 RL 或进化发现的最佳现有单元的结果(在相同的评估设置下;参数数量相当),包括 NASNet-A(Zoph 等人,2018 年)(2000 GPU 天)、AmoebaNet -A(3150 GPU 天)(Real 等人,2018 年)和 ENAS(0.5 GPU 天)(Pham 等人,2018b)。

为了评估所选架构,我们随机初始化其权重(丢弃在搜索过程中学习的权重),从头开始对其进行训练,并报告其在测试集上的性能。我们注意到测试集从未用于架构搜索或架构选择。

CIFAR-10 和 PTB 架构评估的详细实验设置可以分别在 A.2.1 节和 A.2.2 节中找到。除了 CIFAR-10 和 PTB 之外,我们还通过分别在 ImageNet(移动设置)和 WikiText-2 上评估我们最好的卷积单元(在 CIFAR-10 上搜索)和循环单元(在 PTB 上搜索)来进一步研究它们的可迁移性。有关迁移学习实验的更多详细信息,请参阅 A.2.3 节和 A.2.4 节。

3.3 RESULTS ANALYSIS


表 1 列出了卷积架构的 CIFAR-10 结果。值得注意的是,DARTS 取得了与现有技术相当的结果(Zoph 等人,2018 年;Real 等人,2018 年),同时使用的计算资源少了三个数量级(即1.5 或 4 个 GPU 天与 NASNet 的 2000 个 GPU 天和 AmoebaNet 的 3150 个 GPU 天)。此外,由于搜索时间稍长,DARTS 通过发现具有可比错误率但参数较少的单元而优于 ENAS(Pham 等人,2018b)。较长的搜索时间是由于我们已经重复搜索过程四次以进行单元格选择。然而,这种做法对于卷积单元不太重要,因为发现的架构的性能并不强烈依赖于初始化(图 3)。

替代优化策略为了更好地理解双层优化的必要性,我们研究了一种简单的搜索策略,其中 α \alpha α w w w使用坐标下降联合优化训练集和验证集。生成的最佳卷积单元(4 次运行中)使用 3.1M 参数产生 4.16 ± 0.16% 的测试误差,这比随机搜索差。在第二个实验中,我们使用 SGD 同时优化了 α \alpha α w w w(没有改变),再次针对所有可用数据(训练 + 验证)。使用 3.0M 参数得到的最佳结构产生 3.56 ± 0.10% 的测试误差。我们假设这些启发式方法会导致 α \alpha α α \alpha α(类似于超参数)过度拟合训练数据,从而导致泛化能力差。请注意, α \alpha α并未直接针对 DARTS 中的训练集进行优化。

表 2 显示了 PTB 上循环架构的结果,其中 DARTS 发现的单元实现了 55.7 的测试困惑度。这与由 softmax 混合增强的最先进模型不相上下(Y ang 等人,2018 年),并且优于所有其他手动或自动发现的架构。请注意,我们自动搜索的单元优于广泛调整的 LSTM(Melis 等人,2018 年),证明了除了超参数搜索之外架构搜索的重要性。在效率方面,总成本(总共 4 次运行)在 1 个 GPU 天以内,这与 ENAS 相当,并且明显快于 NAS(Zoph & Le,2017)。

同样有趣的是,随机搜索对于卷积模型和循环模型都具有竞争力,这反映了搜索空间设计的重要性。尽管如此,在搜索成本相当或更低的情况下,DARTS 能够在两种情况下显着改进随机搜索(CIFAR-10 上为 2.76 ± 0.09 vs 3.29 ± 0.15;PTB 上为 55.7 vs 59.4)。

表3中的结果显示,在CIFAR-10上学习的细胞确实可以转移到ImageNet。值得注意的是,DARTS实现了与最先进的RL方法(Zoph等人,2018)竞争的性能,同时使用的计算资源少了三个数量级。

表4显示,由DARTS识别的单元转移到WT2的效果比ENAS好,尽管总体结果不如表2中PTB的结果强。PTB和WT2之间的可转移性较弱(与CIFAR-10和ImageNet之间的可转移性相比),这可以解释为架构搜索的源数据集(PTB)的规模相对较小。可转移性的问题有可能通过直接优化感兴趣的任务上的架构来规避。

4 CONCLUSION

我们提出了DARTS,一种简单而高效的卷积和递归网络的架构搜索算法。通过在连续空间中搜索,DARTS能够在图像分类和语言建模任务中匹配或超越最先进的非微分架构搜索方法,效率显著提高了几个数量级。

有许多有趣的方向可以进一步改进 DARTS。例如,当前的方法可能会受到连续架构编码和派生的离散架构之间的差异的影响。这可以缓解,例如,通过退火 softmax 温度(使用合适的时间表)以强制执行单热选择。基于在搜索过程中学习的一次性模型探索性能感知架构派生方案也将很有趣。

A EXPERIMENTAL DETAILS

A.1ARCHITECTURE SEARCH

A.1.1 CIFAR-10

由于架构在整个搜索过程中会发生变化,因此我们始终使用特定于批次的统计信息来进行批归一化,而不是使用全局移动平均值。在搜索过程中禁用所有批量归一化中的可学习仿射参数,以避免重新缩放候选操作的输出。

为了进行架构搜索,我们将一半的 CIFAR-10 训练数据作为验证集。使用 DARTS 训练一个包含 8 个单元的小型网络 50 个时期,批量大小为 64(训练集和验证集),通道的初始数量为 16。选择这些数字是为了确保网络可以适合单个 GPU。我们使用动量 SGD 来优化权重 w,初始学习率 ηw = 0.025(在没有重启的情况下按照余弦计划退火至零(Loshchilov & Hutter,2016)),动量为 0.9,权重衰减为 3 × 10−4。我们对架构变量(正常单元和缩减单元中的 α)使用零初始化,这意味着对所有可能的操作的注意力(在采用 softmax 之后)相等。在早期阶段,这确保每个候选操作的权重都能接收到足够的学习信号(更多探索)。我们使用 Adam (Kingma & Ba, 2014) 作为 α 的优化器,初始学习率 ηα = 3 × 10−4,动量 β = (0.5, 0.999) 和权重衰减 10−3。在单个 GPU3 上搜索需要一天时间。

A.1.2 PTB


对于架构搜索,嵌入和隐藏大小都设置为 300。连接到同一节点的所有传入操作的线性变换参数是共享的(它们的形状都是 300 × 300),因为算法始终可以选择聚焦在其中一位前任上,并掩盖其他人。绑定权重可以节省内存并加快计算速度,使我们能够使用单个 GPU 训练连续架构。批量归一化中的可学习仿射参数被禁用,就像我们对卷积单元所做的那样。然后使用无动量的 SGD 对网络进行 50 个 epoch 的训练,学习率 ηw = 20,批量大小为 256,BPTT 长度为 35,权重衰减为 5 × 10−7。我们将 0.2 的变分 dropout (Gal & Ghahramani, 2016) 应用于词嵌入,将 0.75 应用于单元格输入,将 0.25 应用于所有隐藏节点。输出层也应用了 0.75 的 dropout。其他训练设置与 Merity 等人(2018)中的相同;杨等人 (2018)。与卷积架构类似,我们使用 Adam 优化 α(初始化为零),初始学习率 ηα = 3 × 10−3,动量 β = (0.9, 0.999) 和权重衰减 10−3。在单个 GPU 上搜索需要 6 个小时。

A.2ARCHITECTURE EVALUATION


A.2.1 CIFAR-10


一个由 20 个单元组成的大型网络训练了 600 个 epoch,批量大小为 96。通道的初始数量从 16 增加到 36,以确保我们的模型大小与文献中的其他基线(大约 3M)相当。其他超参数与用于架构搜索的超参数相同。继现有工作(Pham 等人,2018b;Zoph 等人,2018;Liu 等人,2018a;Real 等人,2018)之后,其他增强功能包括剪切(DeVries & Taylor,2017)、概率为 0.2 的路径丢失和辅助塔重量 0.4。使用我们在 PyTorch 中的实现,在单个 GPU 上进行训练需要 1.5 天(Paszke 等人,2017 年)。由于即使使用完全相同的设置,CIFAR 结果也会出现高方差(Liu 等人,2018b),我们报告了完整模型的 10 次独立运行的平均值和标准差。

为了避免不同实施或训练设置(例如批量大小)之间的任何差异,我们将 NASNet-A 单元(Zoph 等人,2018 年)和 AmoebaNet-A 单元(Real 等人,2018 年)纳入我们的训练框架并报告他们在与我们的细胞相同的设置下的结果。

A.2.2 PTB


使用平均 SGD (Polyak & Juditsky, 1992) (ASGD) 训练具有发现单元的单层递归网络,直到与批量大小 64 收敛,学习率 ηw = 20,权重衰减 8 × 10−7。为了加速,我们从 SGD 开始并使用与 Yang 等人(2018)中相同的协议触发 ASGD; Merity 等人 (2018)。嵌入和隐藏大小都设置为 850,以确保我们的模型大小与其他基线相当。嵌入层上的 token-wise dropout 设置为 0.1。其他超参数与架构搜索的超参数完全相同。为了公平比较,我们不会在优化结束时微调我们的模型,也不会使用任何额外的增强功能,例如动态评估(Krause 等人,2017 年)或连续缓存(Grave 等人,2016 年)。使用我们的 PyTorch 实现,在单个 1080Ti GPU 上进行训练需要 3 天。为了解决实施差异,我们还将 ENAS 单元(Pham 等人,2018b)合并到我们的代码库中,并在与我们发现的单元相同的设置下训练他们的网络。

A.2.3 IMAGENET


我们考虑输入图像大小为 224×224 且模型中的乘加运算次数限制在 600M 以下的移动设置。

一个包含 14 个单元的网络训练了 250 个时期,批量大小为 128,权重衰减 3 × 10−5,初始 SGD 学习率为 0.1(每个时期后衰减 0.97 倍)。其他超参数遵循 Zoph 等人(2018); Real 等人 (2018);刘等人 (2018a)。在单个 GPU 上训练需要 12 天。

A.2.4 WIKITEXT-2


我们使用嵌入和隐藏大小 700、权重衰减 5×10−7 和隐藏节点变分丢失 0.15。其他超参数与我们的 PTB 实验中的相同。

B SEARCH WITH INCREASED DEPTH

为了更好地理解深度对架构搜索的影响,我们通过将堆栈中的单元格数量从 8 个增加到 20 个来对 CIFAR-10 进行架构搜索。由于内存预算,初始通道数从 16 个减少到 6 个单个 GPU。所有其他超参数保持不变。搜索成本加倍,生成的单元格达到 2.88 ± 0.09% 的测试误差,略低于使用较浅网络获得的 2.76 ± 0.09%。这种特殊的设置可能会受到架构搜索和最终评估之间通道数量差异的扩大影响。此外,由于要反向传播的层数增加,使用更深层次的模型进行搜索可能需要不同的超参数。

C COMPLEXITY ANALYSIS

在本节中,我们分析了卷积单元搜索空间的复杂性。

我们的每个离散化单元允许 Q4 k=1 (k+1)k 2 × (72) ≈ 109 个可能的 DAG,而不考虑图同构(回想一下,我们有 7 个非零操作、2 个输入节点、4 个中间节点,每个节点有 2 个前驱节点).由于我们正在联合学习普通单元和缩减单元,因此架构总数约为 (109)2 = 1018。这大于 PNAS (Liu et al, 2018a) 的 5.6 × 1014,后者仅学习单一类型的单元.

另请注意,我们仅在最后保留了每个节点的前 2 个节点,并且在最后的离散化步骤之前我们的连续搜索空间甚至更大。具体来说,每个松弛单元(一个完全连接的图)包含 2 + 3 + 4 + 5 = 14 个可学习边,允许 (7 + 1)14 ≈ 4 × 1012 个可能的配置(+1 包括零操作,表示缺少连接).同样,由于我们正在学习普通单元和缩减单元,因此离散化之前连续空间覆盖的架构总数为 (4 × 1012)2 ≈ 1025。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Android App】实战项目之使用OpenCV人脸识别实现找人功能(附源码和演示 超详细)

需要全部代码请点赞关注收藏后评论区留言私信~~~ 人脸识别自古有之&#xff0c;每当官府要捉拿某人时&#xff0c;便在城墙贴出通缉告示并附上那人的肖像。只是该办法依赖人们的回忆与主观判断&#xff0c;指认结果多有出入&#xff0c;算不上什么先进。 如今利用监控摄像头结合…

E3--FPGA实现LVDS收发实例和原理2022-12-03

1.什么是LVDS 一个新东西来的时候&#xff0c;人们总是希望能够宏观的定性的认识它。一个问题是&#xff0c;手机上用的“软件”该如何定义呢&#xff1f;来自百度百科的定义是&#xff0c;软件是指一系列按照特定顺序组织的计算机数据和指令的集合&#xff0c;如果你是非专业…

【Android App】给App集成WebRTC实现视频发送和接受实战(附源码和演示 超详细)

需要源码请点赞关注收藏后评论区留言私信~~~ 一、引入WebRTC开源库 WebRTC开源库的集成步骤如下&#xff1a; &#xff08;1&#xff09;给App模块的build.gradle添加WebRTC的依赖库配置&#xff1b; &#xff08;2&#xff09;App得申请录音和相机权限&#xff0c;还得申请…

[附源码]计算机毕业设计springboot自行车租赁管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

K-means聚类算法及Python代码实现

K-means聚类算法&#xff08;事先数据并没有类别之分&#xff01;所有的数据都是一样的&#xff09; 1、概述 K-means算法是集简单和经典于一身的基于距离的聚类算法 采用距离作为相似性的评价指标&#xff0c;即认为两个对象的距离越近&#xff0c;其相似度就越大。 该算法…

享元设计模式

一、享元模式 1、定义 享元模式&#xff08;Flyweight Pattern&#xff09;又称作轻量级模式&#xff0c;是指提供减少对象数量从而改善应用所需的对象结构的方式。其宗旨是共享细粒度的对象&#xff0c;将多个对同一对象的访问集中起来&#xff0c;不必为每个访问者都创建一个…

C++智能指针shared_ptr用法

目录shared_ptr功能介绍shared_ptr提供的接口shared_ptr初始化shared_ptr管理指针的构造和析构shared_ptr获取原始指针shared_ptr的线程安全shared_ptr应用之enable_shared_from_this写在前面的总结&#xff1a;一个shared_ptr对象管理一个指针&#xff08;new T&#xff0c;在…

TCP/IP五层协议栈(3)

1.网络层 1.1.IP协议 IP协议格式:报头数据 4位版本 :IP协议的版本号.当前只有两个取值,4和6(0100 0110).( 这里讨论IPv4 )4位首部长度 :IP报头和TCP类似,都是可变的,带有选项.8位TOS :只有4位有效,那四位TOS分别表示( 最小延时,最大吞吐量,最高可靠性,最小成本 )(同一时刻只能…

使用 Qt for Android 获取并利用手机传感器数据(下篇)使用C++实现功能

在上一篇&#xff0c;我们搭建了开发环境。本篇&#xff0c;使用C代码真正实现功能。我们使用UDP协议从手机上指定发送的目的地、端口。效果如下图&#xff0c;完整工程参考https://gitcode.net/coloreaglestdio/qtcpp_demo/-/tree/master/android/sensors2pc&#xff1a; 移动…

全志T3 ARM+Ethercat+Codesys工业控制器设计方案

目前codesys EtherCAT驱动 做运动控制很有优势。现在总线式运动控制基本都是这种配置。 Codesys 号称PLC界的安卓&#xff0c;国内造PLC的 基本都用Codesys内核了。 如&#xff1a;汇川 &#xff0c;合信&#xff0c; 和利时 &#xff0c;英威腾&#xff0c; 台达。 包…

原子范数初探:以到达角估计为例

到达方向&#xff08;Direction-of-arrival, DOA&#xff09;估计是指从形成传感器阵列的多个接收天线的输出中检索若干电磁波/源的方向信息的过程。DOA估计是阵列信号处理中的一个主要问题&#xff0c;在雷达、声纳、无线通信中有着广泛的应用。 基本数学模型 考虑KKK个窄带…

Java项目:ssm流浪猫狗救助管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 流浪猫狗救助管理系统。该项目分为前后台&#xff1b; 前台主要功能包括&#xff1a;会员的注册登陆,流浪猫狗知识&#xff0c;领养中心&#…

[附源码]计算机毕业设计JAVA学生实习管理系统

[附源码]计算机毕业设计JAVA学生实习管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybati…

80W美团架构师整理分享出了Spring5企业级开发实战文档

前言 都说程序员工资高、待遇好&#xff0c; 2022 金九银十到了&#xff0c;你的小目标是 30K、40K&#xff0c;还是 16薪的 20K&#xff1f;作为一名 Java 开发工程师&#xff0c;当能力可以满足公司业务需求时&#xff0c;拿到超预期的 Offer 并不算难。然而&#xff0c;提升…

U盘插入提示格式化才能使用,但里面有数据无法复制出来怎么解决?

U盘作为移动储存硬盘&#xff0c;避免不了出现各种问题&#xff0c;特别是莫名提示格式化&#xff0c;无法打开&#xff0c;要使用的话只能先将其格式化。 只要电脑还能正常识别出U盘&#xff0c;那都是有概率恢复出来数据的。先不要点“格式化”&#xff01; 如果一旦出现点…

4.JVM垃圾收集机制

1. 垃圾收集算法 1.1 分代收集理论 当前虚拟机的垃圾收集都采用分代收集算法&#xff0c;这种算法&#xff0c;没有什么新的思想&#xff0c;只是根据对象存活周期的不同将内存分成几块。一般将JAVA堆分为新生代、老年代&#xff0c;这样我们就可以根据各个年代的特点选择合适…

【注意力机制】Self-attention注意力机制理论知识

注意力机制目录输入输出类别&#xff08;N指向量个数&#xff09;&#xff1a;Self-attention引入self-attention架构self-attention怎么产生bbb例子&#xff1a;产生b1b^{1}b1例子&#xff1a;产生b2b^{2}b2self-attention 总结&#xff1a;Multi-head Self-attentionPosition…

使用 Learner Lab - 使用 API Gateway 与 Lambda 上传图片到 S3

使用 Learner Lab - 使用 API Gateway 与 Lambda 上传图片到 S3 AWS Academy Learner Lab 是提供一个帐号让学生可以自行使用 AWS 的服务&#xff0c;让学生可以在 100 USD的金额下&#xff0c;自行练习所要使用的 AWS 服务&#xff0c;如何进入 Learner Lab 请参考 使用 Lear…

【车载开发系列】UDS诊断---读取数据($0x22)

【车载开发系列】UDS诊断—读取数据&#xff08;$0x22&#xff09; UDS诊断---读取数据&#xff08;$0x22&#xff09;【车载开发系列】UDS诊断---读取数据&#xff08;$0x22&#xff09;一.概念定义二.报文格式1&#xff09;请求2&#xff09;肯定响应3&#xff09;否定响应三…

Vue中$nextTick实现源码解析

这篇文章主要为大家介绍了Vue中$nextTick实现源码解析&#xff0c;有需要的朋友可以借鉴参考下&#xff01; 先看一个简单的问题 {{ text }} 此时打印的结果是什么呢&#xff1f;是 old。如果想让它打印 new&#xff0c;使用 nextTick 稍加改造就可以 this.$nextTick(() >…