DARTS: DIFFERENTIABLE ARCHITECTURE SEARCH
ABSTRACT:
本文以一种可微的方式来描述该任务,从而解决了体系结构搜索的可扩展性挑战。与传统的在离散、不可微的搜索空间上应用进化或强化学习方法不同,我们的方法是基于结构表示的连续松弛,允许使用梯度下降有效地搜索结构。在CIFAR-10、ImageNet、Penn Treebank和Wikitext-2上的广泛实验表明,我们的算法在发现用于图像分类的高性能卷积结构以及用于语言建模的递归结构方面非常出色,而且比最先进的不可微技术快一个数量级。我们的代码已经公开,以便进一步研究高效的体系结构搜索算法。
1 INTRODUCTION:
寻找最先进的神经网络结构需要人类专家的大量努力。最近,人们越来越有兴趣开发算法解决方案,来实现自动化设计代替手工设计结构。自动搜索的结构在图像分类、目标识别等任务中取得了高度竞争性的性能。
现有的最好体系结构搜索算法尽管性能卓越,但是在计算上要求很高。例如,获得CIFAR-10和ImageNet的最新结构,强化学习的方法需要2000 GPU天,进化算法的方法需要3150GPU天。已经提出了一些加快搜索速度的方法,例如强制搜索空间的特定结构,每个单独体系结构的权重或性能预测和跨多个体系结构的权重共享/继承,但可扩展性的基本挑战仍然存在。
对于主流方法效率低下的内在原因是,例如基于RL、Evolution、MCTS、SMBO或贝叶斯优化等,体系结构搜索被看作是一个离散域上的黑箱优化问题,因此需要进行大量的体系结构评估。
在本文中,我们从一个不同的角度来处理这个问题,并提出了一种称为DARTS(可微体系结构搜索)的高效结构搜索的方法。我们不再对一组离散的候选结构进行搜索,而是将搜索空间放松为连续的,从而就可以通过梯度下降来优化该体系结构的验证集性能,而不是低效的黑箱搜索,允许Darts使用数量级更少的计算资源来达到与最先进水平相媲美的性能。它还优于最近的另一种高效的体系结构搜索方法,ENAS。值得注意的是,Darts比许多现有的方法更简单,因为它不涉及控制器,超网或者性能预测器。并且,Darts具有足够的通用性,既可以处理卷积结构又可以处理递归结构。
在连续域内搜索体系结构的想法不是新的,但有几个主要的区别。虽然以前的工作试图微调体系结构的一个特定方面,例如在卷积网络中的卷积核的形状或分支模式。但是Darts能够在丰富的搜索空间中学习具有复杂图形拓扑的高性能体系结构构建块。此外,Darts不仅限于任何特定的体系结构家族,而且适用于卷积和递归网络。
在我们的实验中,Darts在CIFAR-10上设计了一个卷积单元,测试误差为2.76±0.09%,实现图像分类仅需要3.3M参数并且获得了最先进的结果。将同样的卷积单元迁移到ImageNet上top-1错误也达到26.7%,这与最佳的RL方法相当。在语言建模任务中,Darts有效地发现了一个递归的单元,它在PennTreeBank(PTB)上实现了55.7的测试困惑,超越了优化过的LSTM,并且优于现有的全部基于NAS的自动搜索出的单元(cell)和ENAS。
我们的贡献可概括如下:
1.提出了一种新的基于双层优化的可微网络结构搜索算法,该算法适用于卷积结构和递归结构。
2.通过对图像分类和语言建模方面的大量实验表明,我们发现的基于梯度的体系结构搜索在cifar-10上获得了极具竞争力的结果,并在PTB上取得了最先进的性能。这是一个非常有趣的结果,因为到目前为止,最好的结构搜索方法使用了不可微的搜索技术,例如基于rl或基于进化的搜索技术。
3.我们实现了显著的效率改进(将发现结构的成本降低到几个GPU日),这归功于基于梯度的优化。
4.我们证明了在CIFAR-10和PTB上学习的体系结构可以分别迁移到ImageNet和Wikitext-2。
darts的代码可在https://github.com/quark0/darts上使用。
2 DIFFERENTIABLE ARCHITECTURE SEARCH
我们在2.1节描述了我们的搜索空间的一般形式。其中,体系结构(或其中的一个cell )的计算过程表示为有向无环图。然后我们为我们的搜索空间引入了一个简单的连续松弛方案,从而为联合优化结构及其权重提供了一个可微学习的目标。最后,我们提出了一种近似技术, 使算法在计算上是可行和有效的。
2.1 SEARCH SPACE
Following Zoph等人,我们寻找一个计算单元(cell)作为最终结构的构建块。所学习的单元(cell)可以堆叠成一个卷积网络,也可以递归连接形成一个递归网络。
单元是由N个节点的有序序列组成的有向无环图。每个节点 是一个潜在表示(例如,卷积网络中的特征图),每个有向边(i,j)都与转换的操作相关联。我们假设单元有两个输入节点和一个输出节点。对于卷积单元(cells),输入节点定义为前两层中的单元(cell)输出。对于递归单元(cells),这些被定义为当前步骤的输入和从上一步所携带的状态。通过对所有中间结点进行(reduction operation)约简操作(例如级联)来获得单元的输出。
每个中间节点都是根据其前缀计算的:
还包括一个特殊的零操作,以表示两个节点之间缺乏连接。因此,学习单元的任务减少到学习其边的操作。
图1:DARTS概述:
(a)边上的操作最初未知。
(b)通过在每条边上放置候选操作的混合来实现连续松弛搜索空间。
(c)通过求解一个双层优化问题,对混合概率和网络权值进行联合优化。
(d)从学习的混合概率中归纳出最终的结构。
2.2 CONTINUOUS RELAXATION AND OPTIMIZATION(连续松弛优化)
设O是一组候选运算(例如卷积、最大池化、零操作),其中每个运算表示要应用于的某个函数o(·)。为了使搜索空间连续,我们在所有可能的运算上放宽了对特定操作的分类选择,使其成为Softmax:
其中,一对节点(i,j)的混合权重由维数为O的向量参数化。然后,结构搜索的任务简化为学习一组连续的变量。在搜索结束时,可以通过用最有可能的操作替换每个混合运算,来获得一个离散的体系结构。例如,
在下文中,我们称α为结构(的编码)。
松弛后,我们的目标是在所有混合运算(例如卷积核的权值)中共同学习结构α和权重w。类似基于RL或进化的结构搜索,其中验证集的性能被视为reward,Darts的目标是优化验证损失,但是使用的是梯度下降的方法。
Ltrain和Lval分别表示训练和验证损失。这两种损失不仅取决于体系结构α,还取决于网络中的权重w。结构搜索的目标是找到α* ,使验证损失取最小值,其中于体系结构相关联的权重w* 是通过最小化训练损失来获得的,
这意味着一个双层优化问题,将α作为上层变量,w作为下层变量:(s.t.使得...满足)
嵌套公式也出现在基于梯度的超参数优化中,这与体系结构α可以被看作一种特殊类型的超参数有关,尽管它的维数远高于标量值的超参数(例如,学习率),并且很难优化。
算法一的过程:
为每条边(i,j)创建一个由参数化的混合运算
While 不收敛
- 更新体系结构α,通过梯度下降
- 更新权值w,通过梯度下降
最终获得基于α的体系结构
2.3 APPROXIMATE ARCHITECTURE GRADIENT(近似结构梯度)
由于昂贵的内部优化,精确地评估结构梯度是不可能的。因此,我们提出了一种简单的近似方案如下:
其中w表示算法保持的当前权值,ξ是一个step内部优化的学习率。这个想法是通过只使用一个训练step来适应w,而不完全通过训练求解内部优化(方程4)直到收敛。相关技术已被应用于模型迁移的元学习中,基于梯度的超参数调整和展开生成对抗网络。注意如果w已经是局部最优的话,则公式6将变为,从而。
迭代过程请看算法一。虽然我们目前还不知道我们的优化算法的收敛性保证,但在实践中,它可以通过适当选择ξ,达到一个不动点。我们还注意到,当使用momentum以进行权重优化时,对方程6中的一步展开学习目标进行相应的修改,我们的所有分析仍然适用。
链氏求导规则在近似结构梯度(方程6)中的应用
其中表示一步前向模型的权重。上面的表达式在第二项中包含了一个昂贵的矩阵向量积。幸运的是,可以使用有限差分近似可以大大降低复杂性。设为小标量并且。然后:
计算有限差分时,权重只需两次前向传播,α只需两次反向传播,复杂度从降为。
一阶近似 在ξ =0时的一阶近似,方程7中的二阶导数将消失。在这种情况下,结构梯度由给出,对应于通过假设当前w=来优化验证损失的简单启发式方法。根据我们在表1和表2中的实验结果,这导致了一些加速但实验证明其性能不好。在以下情况下,我们将ξ=0作为一阶近似,用ξ>0的作为二阶近似梯度公式。
2.4 DERIVING DISCRETE ARCHITECTURES(获得离散结构)
为了在离散结构中形成每个节点,我们保留从所有先前节点收集的所有非零候选操作中的top-k个最强的运算(operation) (来自不同节点)。运算强度的定义为
。为了使我们获得的体系结构与现有工程中的体系结构相比较,我们使用k=2的卷积单元,和使用k=1递归单元。
由于以下两个原因我们排除了零运算。第一,为了与现有模型进行公平的比较我们需要每个节点由k个非零输入边。第二,零运算的强度未被确定,由于增加了零运算的逻辑,因此只会影响结果节点表示的规模,而不会由于存在批处理规范化而影响最终的分类结果。
图2:当和时,从开始动态学习迭代算法。相应的双层优化问题的解析解是,在红圈中突出显示。虚线表示完全满足约束方程4的可行集合(也就是说w中的权重对于给定的结构α是最优的)。该实例表明,合适的ξ选择有助于收敛到更好的局部最优解。
3 EXPERIMENTS AND RESULTS
我们在CIFAR-10和PTB上的实验分为两个阶段:体系结构搜索和结构评价。在第一阶段,我们使用dart搜索单元结构,并根据它们的验证性能确定最佳单元(cell)。在第二阶段,我们使用这些单元构建更大的体系结构,我们从零开始训练并在测试集中报告它们的性能。我们还分别将搜到的最佳单元移植到ImageNet和WikimText-2(WT2)上,并进行了相应的评估。
3.1 ARCHITECTURE SEARCH
3.1.1 SEARCHING FOR CONVOLUTIONAL CELLS ON CIFAR-10
我们在O中包括一下:3×3和5×5卷积,3×3和5×5膨胀卷积,3×3 最大池化,3×3平均池化,恒等和零的运算。所有的运算都是一步的 (如果适用的话),并为保留其空间分辨率而对特征图进行了填充。我们使用relu-conv-bn来处理卷积运算,并且每个卷积总是被用两次。
我们的卷积单元由N=7个节点组成,其中输出节点定义为所有中间节点(不包括输入节点)的深度级联。其余的设置follow Zoph等人。网络是通过将多个单元叠加在一起形成的。单元k的第一和第二节点被设置为k-2和k-1节点的输出,必要时插入1* 1卷积。位于网络总深度的1/3和2/3处的cell是reduction cells,其中与输入节点相邻的运算stride都为2。因此,体系结构编码是,其中由所有normal cells共享,由所有reduction cells共享。
本节详细的实验设置可在第三节中找到。A.1.1
3.1.2 SEARCHING FOR RECURRENT CELLS ON PENN TREEBANK
我们的一组可用运算包括线性变换,然后是tanh、relu、Sigmoid激活,以及恒等映射和零运算。这些候选操作的选择follows Zoph & Le (2017); Pham et al. (2018b).
我们的递归单元由n=12个节点组成。第一中间节点是通过对两个输入节点进行线性变换,将结果相加,然后通过tanh激活函数得到的,正如ENAS所做的那样。单元的其余部分是学习的。其他设置类似于ENAS,其中每个操作都通过highway来增强。就像在ENAS中一样,我们在每个节点中启用批处理规范化,以防止结构搜索期间的梯度爆炸,并在体系结构评估期间禁用它。我们的递归网络仅由一个单元组成,即我们假设在递归结构中没有任何的重复模式。
本节详细的实验设置可在A.1.2.找到。
图3:Darts在CIFAR-10上搜索卷积单元和Penn Treebank上搜索递归单元的研究进展。随着时间的推移,我们会跟踪最新的体系结构。每个体系结构都是使用培训集从零开始重新培训的(在CIFAR-10上进行100 epochs培训,在PTB上进行300 epochs培训),然后在验证集上进行评估。对于每个任务,对于每个任务,我们用不同的随机种子重复4次实验,并报告架构的中间值和最佳(每次运行)验证性能。作为参考,我们也报告了结果(在相同的评估设置下),使用RL或进化发现的现有最佳单元,包括Nasnet-A(2000GPU day), AmoebaNet-A (3150 GPU days), and ENAS (0.5 GPU day)
图4:在CIFAR-10上学到的Normal cell。
图5:在CIFAR-10上学到的Reduction cell。
图6:在PTB上学习的递归单元
3.2 ARCHITECTURE EVALUATION
为了确定最终评估的体系结构,我们用不同的随机种子运行了四次Darts,并根据短期(在CIFAR-10和PTB上分别为100 epochs和300 epochs) 从头训练获得的验证性能选择最佳的单元。这对于递归单元特别重要,因为优化结果可能是对初始化敏感的(图3)。
为了评估所选的体系结构,我们随机初始化它的权重(搜索过程中学习的权重被丢弃),从零开始训练它,并在测试集中报告它的性能。我们注意到,测试集从未用于结构搜索或体系结构选择。
CIFAR-10和PTB的体系结构评估的详细实验设置可以在中A.2.1和A.2.2找到。除了CIAR-10和PTB外,我们还分别在ImageNet(移动设置)和WikimText-2上评估了我们最好的卷积单元(在CIAR-10上搜索)和递归单元(在PTB上搜索)的可移植性。
表1:与CIFAR10上最先进的图像分类器进行比较(较低的错误率更好)。请注意,DARTS的搜索成本不包括选择成本(1GPU天)或通过从头开始培训所选结构的最终评估成本(1.5GPU天)。
*通过使用作者公开发布的代码重复ENAS 8次获得。根据与Darts相同的选择用于最终评估的单元。
†通过使用我们的设置来训练相应的体系结构而获得。
‡根据100个 training epochs 后的验证误差,在24个样本中,发现了最佳的体系结构
表2:与最先进的PTB语言模型比较(较低的困惑更好)。注意:搜索Darts的成本不包括选择成本(1 GPU日)或通过从零开始培训所选体系结构的最终评估成本(3天GPU)。
*使用作者公开发布的代码获得。
†通过使用我们的设置来训练相应的体系结构而获得。
‡ 根据300个 training epochs 后的验证困惑度,在8个样本中,发现了最佳的体系结构。
表3:与移动环境下ImageNet上最先进的图像分类器的比较.
3.3 RESULTS ANALYSIS
在CIFAR-10上卷积结构的结果如表1所示。值得注意的是,Darts在使用时取得了与最佳水平相当的结果。但是减少了几个数量级的计算资源(即1.5或4GPU天,NASNet为2000GPU天,AmoebaNet为3150GPU天)。此外,虽然搜索时间稍微长了一点,但是DARTS表现优于ENAS,发现了具有错误率相当但参数更少的单元。搜索时间长,是因为我们对单元格选择重复了四次搜索过程。然而,对于卷积单元来说,这种做法并不那么重要,因为发现的体系结构的性能并不强烈依赖于初始化。
Alternative Optimization Strategies(替代优化策略)为了更好地理解双层优化的必要性,我们研究了一个简单的搜索策略,其中α和w在训练集和验证集的结合上通过并行下降进行联合优化。用3.1M参数得到的最佳卷积单元(4次运行)的测试误差为4.16±0.16%,比随机搜索差。在第二个实验中,在第二个实验中,我们使用SGD同时优化了α和w(没有改变),再次覆盖所有可用数据(培训+验证)。结果表明,使用3.0M参数得出的最佳单元格产生3.56±0.10%的测试误差。我们假设这些启发式算法会导致α(类似于超参数)过度拟合训练数据,从而导致泛化能力较差。注意,α不是直接在Darts训练集上优化的。
表2给出了PTB的递归结构的结果,其中由Darts发现的单元达到了55.7的测试困惑。这优于手动或自动发现的所有体系结构。请注意,我们自动搜索的单元优于LSTM。
值得注意的是,随机搜索对于卷积模型和递归模型都具有竞争力,这反映了搜索空间设计的重要性。然而,两种情况下的随机搜索均有显著改善。
表3中的结果显示,在CIFAR-10上学习的单元确实可以转移到ImageNet。值得注意的是,Darts与使用最先进的rl方法实现了竞争性能。
表4显示,通过Darts识别的单元转移到WT2的效果优于ENAS,尽管总体结果不如表2所示的PTB,可以用相对较小的源数据集(PTB)来进行体系结构搜索来解释。
4 CONCLUSION
提出了一种简单而高效的卷积网络和递归网络的结构搜索算法—Darts算法。通过在连续空间中搜索,Darts能够在图像分类和语言建模任务上与最先进的、不可微的结构搜索方相当或优于它们,但效率提高了几个数量级。
有许多有趣的方向可以进一步改进Darts。例如,当前的方法可能存在连续体系结构编码与导出的离散结构之间的差异。这是可以进一步解决的。