共计 3028 个字符,预计需要花费 8 分钟才能阅读完成。
DARTS 是很经典的 NAS 办法,它的呈现突破了以往的离散的网络搜寻模式,可能进行 end-to-end 的网络搜寻。因为 DARTS 是基于梯度进行网络更新的,所以更新的方向比拟精确,搜寻工夫相当于之前的办法有很大的晋升,CIFAR-10 的搜寻仅须要 4GPU days。
起源:晓飞的算法工程笔记 公众号
论文: DARTS: Differentiable Architecture Search
- 论文地址:https://arxiv.org/abs/1806.09055
- 论文代码:https://github.com/quark0/darts
Introduction
目前风行的神经网络搜寻办法大都是对离散的候选网络进行抉择,而 DARTS 则是对间断的搜寻空间进行搜寻,并依据验证集的体现应用梯度降落进行网络结构优化,论文的次要奉献如下:
- 基于 bilevel 优化提出翻新的 gradient-based 神经网络搜寻办法 DARTS,实用于卷积构造和循环构造。
- 通过试验表明 gradient-based 构造搜寻办法在 CIFAR-10 和 PTB 数据集上都有很好的竞争力。
- 搜寻性能很强,仅须要大量 GPU days,次要得益于 gradient-based 优化模式。
- 通过 DARTS 在 CIFAR-10 和 PTB 上学习到的网络可能转移到大数据集 ImageNet 和 WikiText- 2 上。
Differentiable Architecture Search
Search Space
DARTS 的整体搜寻框架跟 NASNet 等办法一样,通过搜寻计算单元 (cell) 的作为网络的根底构造,而后重叠成卷积网络或者循环网络。计算单元是个有向无环图,蕴含 $N$ 个节点的有序序列,每个节点 $x^{(i)}$ 代表网络的两头信息(如卷积网络的特色图),边代表对 $x^{(i)}$ 的操作 $o^{(i,j)}$。每个计算单元有两个输出和一个输入,对于卷积单元,输出为前两层的计算单元的输入,对于循环网络,输出则为以后 step 的输出和前一个 step 的状态,两者的输入均为将两头节点的所有输入进行合并操作。每个两头节点的计算基于后面所有的节点:
这里蕴含一个非凡的 zero 操作,用来指定两个节点间没有连贯。DARTS 将计算单元的学习转换为边操作的学习,整体搜寻框架跟 NASNet 等办法一样,本文次要集中在 DARTS 如何进行 gradient-based 的搜寻。
Continuous Relaxation and Optimization
让 $O$ 为候选操作集,每个操作代表利用于 $x^{(i)}$ 的函数 $o(\cdot)$,为了让搜寻空间间断化,将本来的离散操作抉择转换为所有操作的 softmax 加权输入:
节点 $(i,j)$ 间的操作的混合权重示意为维度 $|O|$ 的向量 $\alpha^{(i,j)}$,整个架构搜寻则简化为学习间断的值 $\alpha=\{\alpha^{(i, j)}\}$,如图 1 所示。在搜寻的最初,每个节点抉择概率最大的操作 $o^{(i,j)}=argmax_{o\in O}\alpha^{(i,j)}_o$ 代替 $\bar{o}^{(i,j)}$,构建出最终的网络。
在简化后,DARTS 指标是够同时学习网络结构 $\alpha$ 和所有的操作权值 $w$。比照之前的办法,DARTS 可能依据验证集损失应用梯度降落进行构造优化。定义 $\mathcal{L}_{train}$ 和 $\mathcal{L}_{val}$ 为训练和验证集损失,损失由网络结构 $\alpha$ 和网络权值 $w$ 独特决定,搜寻的最终目标是找到最优的 $\alpha^{*}$ 来最小化验证集损失 $\mathcal{L}_{val}(w^{*}, \alpha^{*})$,其中网络权值 $w^{*}$ 则是通过最小化训练损失 $w^{*}=argmin_w \mathcal{L}_{train}(w, \alpha^{*})$ 取得。这意味着 DARTS 是个 bilevel 优化问题,应用验证集优化网络结构,应用训练集优化网络权重,$\alpha$ 为下级变量,$w$ 为上级变量:
Approximate Architecture Gradient
公式 3 计算网络结构梯度的开销是很大的,次要在于公式 4 的内层优化,即每次构造的批改都须要从新训练失去网络的最优权重。为了简化这一操作,论文提出了提出了简略的近似的改良:
$w$ 示意以后的网络权重,$\xi$ 是内层优化单次更新的学习率,整体的思维是 在网络结构扭转后,通过单次训练 step 优化 $w$ 来迫近 $w^{(*)}(\alpha)$,而不是公式 3 那样须要残缺地训练直到收敛。理论当权值 $w$ 为内层优化的部分最优解时($\nabla_{w}\mathcal{L}_{train}(w, \alpha)=0$),公式 6 等同于公式 5$\nabla_{\alpha}\mathcal{L}_{val}(w, \alpha)$。
迭代的过程如算法 1,交替更新网络结构和网络权重,每次的更新都仅应用大量的数据。依据链式法则,公式 6 能够开展为:
$w^{‘}=w – \xi \nabla_w \mathcal{L}_{train}(w, \alpha)$,上述的式子的第二项计算的开销很大,论文应用无限差分来近似计算,这是论文很要害的一步。$\epsilon$ 为小标量,$w^{\pm}=w\pm \epsilon \nabla_{w^{‘}} \mathcal{L}_{val}(w^{‘}, \alpha)$,失去:
计算最终的差分须要两次正向 + 反向计算,计算复杂度从 $O(|\alpha| |w|)$ 简化为 $O(|\alpha|+|w|)$。
First-order Approximation
当 $\xi=0$ 时,公式 7 的二阶导会隐没,梯度由 $\nabla_{\alpha}\mathcal{L}(w, \alpha)$ 决定,即认为以后权值总是最优的,间接通过网络结构批改来优化验证集损失。$\xi=0$ 能减速搜寻的过程,但也可能会带来较差的体现。当 $\xi=0$ 时,论文称之为一阶近似,当 $\xi > 0$ 时,论文称之为二阶近似。
Deriving Discrete Architectures
在构建最终的网络结构时,每个节点选取来自不同节点的 top- k 个响应最强的非 zero 操作,响应强度通过 $\frac{exp(\alpha^{(i,j)_o})}{\sum_{o^{‘}\in O}exp(\alpha^{(i,j)}_{o^{‘}})}$ 计算。为了让搜寻的网络性能更好,卷积单元设置 $k=2$,循环单元设置 $k=1$。过滤 zero 操作次要让每个节点有足够多的输出,这样能力与以后的 SOTA 模型进行偏心比拟。
Experiments and Results
搜寻耗时,其中 run 代表屡次搜寻取最好的后果。
搜寻到的构造。
CIFAR-10 上的性能比照。
PTB 上的性能比照。
迁徙到 ImageNet 上的性能比照。
Conclustion
DARTS 是很经典的 NAS 办法,它的呈现突破了以往的离散的网络搜寻模式,可能进行 end-to-end 的网络搜寻。因为 DARTS 是基于梯度进行网络更新的,所以更新的方向比拟精确,搜寻工夫相当于之前的办法有很大的晋升,CIFAR-10 的搜寻仅须要 4GPU days。
如果本文对你有帮忙,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】