AutoDL论文解读(五):可微分方法的NAS

自动化机器学习(AutoML)最近变得越来越火,是机器学习下个发展方向之一。其中的神经网络结构搜索(NAS)是其中重要的技术之一。人工设计网络需要丰富的经验和专业知识,神经网络有众多的超参数,导致其搜索空间巨大。NAS即是在此巨大的搜索空间里自动地找到最优的网络结构,实现深度学习的自动化。自2017年谷歌与MIT各自在ICLR上各自发表基于强化学习的NAS以来,已产出200多篇论文,仅2019年上半年就有100多篇论文。此系列文章将解读AutoDL领域的经典论文与方法,笔者也是刚接触这个领域,有理解错误的地方还请批评指正!
此系列的文章:

  • AutoDL论文解读(一):基于强化学习的开创性工作
  • AutoDL论文解读(二):基于遗传算法的典型方法
  • AutoDL论文解读(三):基于块搜索的NAS
  • AutoDL论文解读(四):权值共享的NAS
  • AutoDL论文解读(五):可微分方法的NAS
  • AutoDL论文解读(六):基于代理模型的NAS
  • AutoDL论文解读(七):基于one-shot的NAS

此篇博文介绍CMU的《DARTS:Differentiable Architecture Search》。之前介绍的NAS方法搜索空间都是离散的,而可微分方法将搜索空间松弛化使其变成连续的,则可以使用梯度的方法来解决。

一、DARTS:Differentiable Architecture Search

1、搜索空间

DARTS也是搜索卷积cell然后堆叠cell形成最终的网络。这里的cell是一个包含有向无环图,包含一个有 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)。作者假设cell有两个输入加点和一个输出节点,cell的输入输出设置和《Learning Transferable Architectures for Scalable Image Recognition》里的一致。每个中间节点是它所有的前驱节点计算得到:

x ( i ) = ∑ j < i o ( i , j ) ( x ( j ) ) x^{(i)}=\sum_{jx(i)=j<io(i,j)(x(j))

一个特殊的操作: z e r o zero zero,包括在可能的操作集合里,表示两个节点之间没有连接。学习cell结构的任务就转换成了学习边上的操作。

2、松散化和优化

O \mathcal O O为可选操作的集合(比如卷积、最大池化、 z e r o zero zero),每个操作表示作用在 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 ) \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) oˉ(i,j)(x)=oOoOexp(αo(i,j))exp(αo(i,j))o(x)

一对节点 ( i , j ) (i,j) (i,j)之间的操作被一个 ∣ O ∣ |\mathcal O| O维向量 α ( i , j ) \alpha^{(i,j)} α(i,j)参数化。松弛化之后,搜索任务就变成了学习一组连续的变量 α = { α ( i , j ) } {\alpha} = \{\alpha^{(i,j)} \} α={α(i,j)},如下图所示:
AutoDL论文解读(五):可微分方法的NAS_第1张图片
图(a)表示初始化的边,操作是未知的。图(b)通过在每条边放置混合的候选操作来松弛搜索空间,每个颜色的线表示不同的操作。图(c)是通过解决一个优化问题,联合训练候选操作的概率和网络的权重,不同的粗细表示了 α ( i , j ) \alpha^{(i,j)} α(i,j)的大小。图(d)是最终学习到的结构。

学习到了所有操作的可能性 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)}={\rm argmax}_{o \in {\mathcal O}}\alpha_{o}^{(i,j)} o(i,j)=argmaxoOαo(i,j)。接下来,我们都用 α \alpha α表示结构。

松弛化之后,我们的目标就是共同地学习结构 α \alpha α和权重 w w w,DARTS的目标是用梯度下降优化验证集损失。令 L t r a i n \mathcal L_{train} Ltrain L v a l \mathcal L_{val} Lval分别表示训练和验证损失,我们就是要找到一个最优的 α ∗ \alpha^{\ast} α最小化验证集损失 L v a l ( w ∗ , α ∗ ) \mathcal L_{val}(w^{\ast},\alpha^{\ast}) Lval(w,α),其中 w ∗ w^{\ast} w通过最小化训练集损失 L t r a i n ( w , α ∗ ) \mathcal L_{train}(w,\alpha^{\ast}) Ltrain(w,α)。这是一个双层优化问题(bilevel opyimization problem), α \alpha α是上层变量, w w w是下层变量:

min ⁡ α L v a l ( w ∗ ( α ) , α )  s.t.  w ∗ ( α ) = argmin ⁡ w L train ( w , α ) (1) \begin{aligned} \begin{array}{cl}{\min _{\alpha}} & {\mathcal{L}_{v a l}\left(w^{*}(\alpha), \alpha\right)} \tag1\\ {\text { s.t. }} & {w^{*}(\alpha)=\operatorname{argmin}_{w} \mathcal{L}_{\text {train}}(w, \alpha)}\end{array} \end{aligned} minα s.t. Lval(w(α),α)w(α)=argminwLtrain(w,α)(1)

3、近似迭代求解优化问题

解决上面的双层优化问题是困难的,因为任何 α \alpha α的改变都会要求重新计算 w ∗ ( α ) w^{\ast}(\alpha) w(α)。因此作者提出了一种近似的迭代解法,用梯度下降在权重空间和结构空间中轮流地优化 w w w α \alpha α
AutoDL论文解读(五):可微分方法的NAS_第2张图片
在第k步,给定当前结构 α k − 1 \alpha_{k-1} αk1,我们通过在最小化 L t r a i n ( w k − 1 , α k − 1 ) {\mathcal L}_{train}(w_{k-1},\alpha_{k-1}) Ltrain(wk1,αk1)的方向上移动 w k − 1 w_{k-1} wk1来获得 w k w_{k} wk。然后固定 w k w_{k} wk,用单步梯度下降最小化验证集损失,以此更新结构:

L v a l ( w k − ξ ∇ w L t r a i n ( w k , α k − 1 ) , α k − 1 ) (2) \mathcal{L}_{v a l}\left(w_{k}-\xi \nabla_{w} \mathcal{L}_{t r a i n}\left(w_{k}, \alpha_{k-1}\right), \alpha_{k-1}\right) \tag2 Lval(wkξwLtrain(wk,αk1),αk1)(2)

其中 ξ \xi ξ是学习率。通过求用式(2)关于 α \alpha α的导数得到结构梯度(为了简介,省略了角标k):

∇ α L v a l ( w ′ , α ) − ξ ∇ α , w 2 L t r a i n ( w , α ) ∇ w ′ L v a l ( w ′ , α ) (3) \nabla_{\alpha} \mathcal{L}_{v a l}\left(w^{\prime}, \alpha\right)-\xi \nabla_{\alpha, w}^{2} \mathcal{L}_{t r a i n}(w, \alpha) \nabla_{w^{\prime}} \mathcal{L}_{v a l}\left(w^{\prime}, \alpha\right) \tag3 αLval(w,α)ξα,w2Ltrain(w,α)wLval(w,α)(3)

其中 w ′ = w − ξ ∇ w L t r a i n ( w , α ) w^{\prime}=w-\xi \nabla_{w} \mathcal{L}_{t r a i n}(w, \alpha) w=wξwLtrain(w,α)。上式第二项包含了矩阵向量乘积,难以计算。不过使用有限差分近似可以大大降低复杂度,令 ϵ \epsilon ϵ是一个很小的数, w + = w + ϵ ∇ w ′ L v a l ( w ′ , α ) w^{+}=w+\epsilon \nabla_{w^{\prime}} \mathcal{L}_{v a l}\left(w^{\prime}, \alpha\right) w+=w+ϵwLval(w,α) w − = w − ϵ ∇ w ′ L v a l ( w ′ , α ) w^{-}=w-\epsilon \nabla_{w^{\prime}} \mathcal{L}_{v a l}\left(w^{\prime}, \alpha\right) 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 ϵ (4) \nabla_{\alpha, w}^{2} \mathcal{L}_{t r a i n}(w, \alpha) \nabla_{w^{\prime}} \mathcal{L}_{v a l}\left(w^{\prime}, \alpha\right) \approx \frac{\nabla_{\alpha} \mathcal{L}_{t r a i n}\left(w^{+}, \alpha\right)-\nabla_{\alpha} \mathcal{L}_{t r a i n}\left(w^{-}, \alpha\right)}{2 \epsilon} \tag4 α,w2Ltrain(w,α)wLval(w,α)2ϵαLtrain(w+,α)αLtrain(w,α)(4)

ϵ = 0 \epsilon=0 ϵ=0时,式(3)的二阶导数消失,结构梯度仅由 ∇ α L v a l ( w , α ) \nabla_{\alpha} \mathcal{L}_{v a l}(w, \alpha) αLval(w,α)提供,通过假设 α \alpha α w w w相互独立来启发式地最优化验证集损失。这会加速计算,但通过实验发现效果并不好。因此要选择一个合适的 ϵ \epsilon ϵ值。作者称 ϵ = 0 \epsilon=0 ϵ=0的情况为一阶近似, ϵ > 0 \epsilon>0 ϵ>0为二阶近似

参考文献

[1] Liu, Hanxiao, Karen Simonyan, and Yiming Yang. “Darts: Differentiable architecture search.” arXiv preprint arXiv:1806.09055 (2018).
[2] 《深度理解AutoML和AutoDL》

AutoDL论文解读(五):可微分方法的NAS_第3张图片

你可能感兴趣的:(AutoDL)