论文阅读:《DARTS: Differentiable Architecture Search》(阅读中)


pdf


方法

拓扑结构

首先我们作一张有向无环图。图中节点记为\(x^{(i)}\),表示数据的某种潜在表达,例如一个特征图;边记为\((i,j)\),边的意义记作\(o^{(i,j)}\),可认为是“操作”。

\[x^{(j)}=\sum_{i

也就是说,每一个节点所代表的数都是由其前驱节点完全总结而成。
特别地,我们引入零操作\(\mathbf{0}(x)=0\)表示空缺的连接。例如,如果\(o^{(i,j)}=\mathbf{0}\),那么就可以认为节点i和节点j之间没有连接。
以上就是DARTS中图的基本拓扑结构。

连续松弛

进一步地,我们展示连续松弛方法。
在连续松弛图中,我们沿用上述拓扑结构,并加以修改。

这是原文中没有的,而是我基于原文的文意重新总结出来的。

\[\bar{o}^{(i,j)}(x)= \sum_{o\in\mathcal{O}} \cfrac {\exp(\alpha_o^{(i,j)})} {\sum_{o'\in\mathcal{O}} \exp(\alpha_{o'}^{(i,j)})}o(x)\]

相当于是说,\(\bar{o}\)\(o\)的加权和,加权方式类似于softmax,权重为\(\alpha_o^{(i,j)}\),也就是每条边对应不止一个\(o\),每条边的每个\(o\)对应一个权重\(\alpha\)
并且,\(\mathcal{O}\)表示操作\(o\)的候选类型,例如卷积、池化等。

随后我们需要规定训练时损失\(\mathcal{L}_{train}\)和评估时损失\(\mathcal{L}_{val}\)
我们的训练任务可以表示成如下的2级优化问题:

\[\min_{\alpha}\mathcal{L}_val(w^*(\alpha),\alpha) \]

\[s.t. w^*(\alpha)=\arg\min_w\mathcal{L}_{train}(w,\alpha) \]

训练算法

为每个edge创建一个混合操作\(\bar{o}^{(i,j)}\),其中这个混合操作受到参数\(\alpha^{(i,j)}\)的调控。
当未收敛时,执行:

  • 1,通过下降\(\nabla_{\alpha}\mathcal{L}_{val}(w-\xi\nabla_w\mathcal{L}_{train}(w,\alpha),\alpha)\)来更新\(\alpha\)。如果是first-order approximation的情况,则\(\xi\)为零。
  • 2,通过下降\(\nabla_w\mathcal{L}_{trrain}(w,\alpha)\)来更新\(w\)

根据最终学习到的\(\alpha\)得到最终架构。

基本的框架就是这个两部下降循环。
\(\alpha\)在此处叫做结构参数,\(w\)在此处叫做权重。

近似架构梯度

在上述算法框架中可见,我们认为

\[\nabla_{\alpha}\mathcal{L}_{val}(w^*(\alpha),\alpha) \approx \nabla_{\alpha}\mathcal{L}_{val}(w-\xi\nabla_w\mathcal{L}_{train}(w,\alpha),\alpha)\]

。这种近似是在NAS【评估】阶段的改进,为的是在对w的训练还不完全收敛时就得出对应的\(\alpha\)的损失函数。

“近似架构梯度”这个直译可能并不贴切。意译的话应该译作“结构参数梯度的近似”。

推导离散架构

相对于应用了\(\alpha\)的“连续架构”而言,我们还需要一个离散架构作为最终结果。


论文十问

Q1 论文试图解决什么问题?
Q2 这是否是一个新的问题?
Q3 这篇文章要验证一个什么科学假设?
Q4 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员?
Q5 论文中提到的解决方案之关键是什么?
Q6 论文中的实验是如何设计的?
Q7 用于定量评估的数据集是什么?代码有没有开源?
Q8 论文中的实验及结果有没有很好地支持需要验证的科学假设?
Q9 这篇论文到底有什么贡献?
Q10 下一步呢?有什么工作可以继续深入?