DARTS:Differentiable Architecture Search 可微分架构搜索(一)
加油加油!如果你感觉你现在很累,那么恭喜你,你现在正在走上坡路!让我们一起加油!
欢迎关注我的讲解视频,让我们一起学习:
Bilibili主页:https://space.bilibili.com/481802918
DARTS:Differentiable Architecture Search(一)
ABSTRACT摘要
本文通过一个可微分(differentiable)的方法来解决在结构搜索中存在的可伸缩性(scalability)挑战。与在离散的或者一个不可微分的搜索空间来采用演算(evolution)或者强化学习的传统方法不同,我们的方法是基于结构表示形式的连续松弛,允许使用梯度下降的方式实现高效率的结构搜索。我们在CIFAR-10,ImageNet,Penn Treebank和WikiText-2多个数据集上的大量试验结果表明我们的算法擅长于发掘图像分类的高性能卷积网络架构和用于语言建模的高性能循环网络架构,同时比最新的不可微分的方法快几个数量级。我们的算法实现已经公开,以促进对高效架构搜索算法的进一步研究。
1. INTRODUCTION介绍
发掘最新的神经网络架构需要人类专家付出巨大的努力。最近,对于开发算法来使架构设计的手动过程自动化的兴趣氛围越来越浓厚。自动搜索的架构在图像分类以及目标检测等任务中获得了极高的竞争性能。
现存的最好的结构搜索算法尽管有着非凡的表现,但是它们对计算的要求极为苛刻。举个例子:(现存最好的算法)获得应用于CIFAR-10和ImageNet数据集上的最新架构需要2000天的GPU强化学习或者3150天的GPU演算(evolution)。尽管一些用于提速的方法已经被提出来了,例如施加搜索空间的特定结构,每个单独架构的权重或性能预测以及在多重架构之间实现权重共享/继承,但是最根本的可伸缩性挑战仍然存在。主导方法效率低下的内在原因,例如 基于RL,演算(evolution),MCTS,SMBO或贝叶斯优化的事实是架构搜索被视为在离散域中的黑盒优化问题,这导致需要进行大量架构评估。
在这项工作中,我们从另一个角度解决了问题,并提出了一个高效的架构搜索算法,称为DATRS。我们无需在离散的候选架构集上进行搜索,而是放宽了搜索空间,使其成为连续的,以便可以通过梯度下降来针对其验证集性能对架构进行优化。与低效的黑盒搜索相反,基于梯度优化的数据效率使得DARTS可以使用更小数量级的计算资源来获得与现有技术相竞争的性能。它也胜过另一种最新的高效结构搜索算法ENAS。值得注意的是,DARTS比很多现有的算法都要简单,因为它不涉及控制器,超网络或性能预测器,但它足够处理卷积和循环架构。
在一个连续域内进行架构搜索的主意并不是最新的,但是我们与它有几个主要的区别。尽管先前的工作试图微调一个体系结构的特定方面,例如卷积网络中的滤波器形状(filter shapes,特征层型状?)或者分支模式,但DARTS能够在丰富的搜索空间中学习到具有复杂图形拓扑的高性能体系结构构建块。而且,DARTS不局限于任何特定的体系结构家族,它同时适用于卷积网络和循环网络。
在我们的实验中(第三节),我们表明DARTS能够设计卷积单元利用3.3M的参数在CIFAR-10数据集上实现2.76±0.09%测试误差的图像分类,这与使用比它大三个数量级计算资源的正则演算得到的最新结果。当转移到ImageNet(移动设置)时,同一卷积单元也实现了26.7%的top-1(最小)错误率,这与最佳的强化学习(RL)方法相当。在语言建模任务上,DARTS有效地发现了一个在Penn Treebank(PTB)上达到55.7测试困惑度的循环单元,其性能优于经过广泛调优的LSTM和所有现有基于NAS和ENAS的自动搜索单元。
我们的贡献可以总结如下:
- 我们提出了一种新颖的基于双重优化的可微网络结构搜索算法,它同时适用于卷积结构和循环结构。
- 通过对图像分类和语言建模任务进行的大量实验,我们表明基于梯度的体系结构搜索在CIFAR-10上获得了非常有竞争力的结果,并且在PTB上的表现优于最新技术。考虑到目前为止最好的结构搜索算法都是使用的不可微分的技术,例如基于强化学习的,这是一个有趣的结果。
- 我们实现了显着的效率提高(将架构发现的成本减少到几天的GPU),这归因于使用基于梯度的优化而不是不可微分的搜索技术。
- 我们表明DARTS在CIFAR-10和PTB上所学到的结构可以分别转移到ImageNet和WikiText-2上。
DARTS的实现可从https://github.com/quark0/darts获得。
2. 可微的结构搜索
我们在2.1小节中以一般形式描述我们的搜索空间,其中的架构(或其中的单元)的计算过程被表示为有向无环图。然后,在2.2小节中我们为搜索空间引入一个简单的连续松弛方案,这导致了针对体系结构及其权重的联合优化的可微分的学习目标。最后在2.3小节中我们提出一种近似方案使得算法高效可行。
2.1 搜索空间
我们搜索计算单元作为最终架构的组成部分。学习的单元可以堆叠形成卷积网络,也可以递归连接形成递归网络。
一个计算单元是由N个节点的有序序列组成的有向无环图。每个节点 x(i) 是一个潜在的表现形式(例如卷积网络中的特征图),每个有向边 (i,j) 都与转换节点 x(i) 的某些操作 o(i,j) 相关。我们假设该单元具有两个输入节点和一个输出节点。对于卷积单元,将输入节点定义为前两层中的输出。对于循环单元,这些单元定义为当前步骤的输入以及上一步的状态。单元的输出是通过对所有中间节点进行归约运算(例如级联)而获得的。每个中间节点都是根据其所有上一个节点计算的:
x ( j ) = ∑ i < j o ( i , j ) ( x ( i ) ) (1) x^{(j)}=\sum_{i<j} o^{(i, j)}\left(x^{(i)}\right) \tag 1 x(j)=i<j∑o(i,j)(x(i))(1)
Figure 1: DARTS概述:(a)边缘的操作最初未知(b)通过在每个边上混合候选操作来连续放松搜索空间(c)通过解决双层优化问题,对混合概率和网络权重进行联合优化(d)从学到的混合概率中得出最终的体系结构
还包括特殊的零操作以指示两个节点之间缺少连接。 因此,学习单元的任务减少为学习其边缘上的操作。
单词部分学习
word | meaning |
---|---|
address | |
scalability | |
formulate | |
conventional | |
apply | |
evolution | |
reinforcement | |
discrete | |
continuous | |
gradient | |
descent | |
extensive | |
algorithm | |
excel | |
convolution | |
recurrent | |
magnitude | |
technique | |
implementation | |
facilitate | |
state-of-the-art | |
neural | |
substantial | |
automate | |
manual | |
demanding | |
despite | |
remarkable | |
obtain | |
inheritance | |
multiple | |
fundamental | |
inherent | |
cause | |
inefficiency | |
dominant | |
discrete | |
domain | |
evaluation | |
approach | |
opposed | |
magnitude | |
outperform | |
notably | |
involve | |
generic | |
recurrent | |
distinction | |
prior | |
fine-tune | |
pattern | |
topology | |
within | |
moreover | |
restrict | |
specific | |
applicable | |
comparable | |
attribute | |
respectively | |
transferable | |
scheme | |
joint | |
approximation | |
feasible | |
procedure | |
acyclic | |
stack | |
latent | |
associated | |
transform | |
assume | |
concatenation | |
intermediate | |
predecessor | |
categorical | |
initially | |
analogous | |
denote | |
imply | |
nested | |
arise | |
substantially | |
derive | |
inner | |
equation | |
convergence | |
unroll | |
generative | |
adversarial | |
optimum | |
iterative | |
outline | |
finite | |
first-order approximation | |
exclude | |
investigate |