所以本文提出了近似迭代优化过程,其中w和α通过分别在权重和架构空间中的梯度下降步骤之间交替来优化(算法见下图Alg.1)。
算法说明:
假设在第k步,给定当前网络结构\(α_{k-1}\),我们通过\(\mathcal{L}_{train}(w_{k-1},α_{k-1})\)计算梯度更新得到\(w_k\)。然后固定\(w_k\),通过更新网络结构\(a_k\)来最小化验证集损失值(公式3),其中\(\xi\)表示学习率。
\[\mathcal{L}_{val}(w',a_{k-1}) = \mathcal{L}_{val}(w_k-\xi \nabla_w \mathcal{L}_{train}(w_{k},α_{k-1}),a_{k-1}) \tag{3}\]
网络结构梯度是通过将公式3对\(α\)求导得到的,结果如公式4(为方便书写,用于表示步骤的k已省略)所示:
\[\nabla_α \mathcal{L}_{val}(w',α) - \xi \nabla^2_{α,w} \, \mathcal{L}_{train}(w,α) \nabla_{w'}\mathcal{L}_{val}(w',α) \tag{4}\]
上式中的第二项包含一个矩阵向量积,这是非常难计算的。但是我们知道微分可以通过如下公式进行近似:
\[f'(x)=\frac{f(x+\epsilon)-f(x-\epsilon)}{2\epsilon}\]
所以有:
\[\nabla^2_{α,w} \, \mathcal{L}_{train}(w,α) \nabla_{w'}\mathcal{L}_{val}(w',α) ≈ \frac{ \nabla_α \mathcal{L}_{train}(w^+,α) - \nabla_α \mathcal{L}_{train}(w^-,α) }{2\epsilon} \tag{7}\]
其中\(w^{+}=w+\epsilon \nabla_{w'}\mathcal{L}_{val}(w',α),w^{-}=w-\epsilon \nabla_{w'}\mathcal{L}_{val}(w',α)\)
计算有限差分只需要两次权值前传和两次向后传递(α),复杂度从\(\mathcal{O}(|α||w|)\)降低为\(\mathcal{O}(|α|+|w|)\)。
4.Deriving Discrete Architecture在求得连续模型结构编码\(α\)之后,离散网络结构求解方式如下:
Evaluation作者如何评估自己的方法,有没有问题或者可以借鉴的地方
Conclusion贡献如下:
引入了一种适用于卷积和循环结构的可微分网络体系结构搜索的新算法。
通过实验表明我们的方法具有很强的竞争力。
实现了卓越的结构搜索效率(4个GPU:1天内CIFAR10误差2.83%; 6小时内PTB误差56.1),这归因于使用基于梯度的优化而非非微分搜索技术。
我们证明DARTS在CIFAR-10和PTB上学习的体系结构可以迁移到ImageNet和WikiText-2上
Notes疑问:relaxation操作是什么意思?为什么使用softmax能将操作连续化?即公式(1)是什么意思?\(α\)又是什么?
MARSGGBO♥原创
2018-8-5
https://baike.baidu.com/item/%E6%9D%BE%E5%BC%9B%E6%B3%95/12508962?fr=aladdin