DARTS论文总结

论文:DARTS: DIFFERENTIABLE ARCHITECTURE SEARCH


论文地址:https://arxiv.org/abs/1806.09055
代码:https://github.com/khanrc/pt.darts (源代码有版本限制所以找的其他论文修改后的代码,允许pytorch>1.0)
发表在:ICLR19

解决的问题

通过对网络架构表示的连续松弛(continuous relaxation),允许使用梯度下降对网络的架构和权值同时更新。本文是第一个使用可微分的表示方法,不同于不可微分的方法,可微分的方法不需要评价算法过程中产生的大量网络架构,所以可微分的方法效率更高,后续有非常多的工作都是基于此进行改进。

搜索空间

我们的目标是搜索一个Cell,这个Cell既可以组成卷积神经网络也可以组成循环神经网络。一个Cell是N个节点的有向无环图,每个Cell有两个输入和一个输出,卷积神经网络中,Cell的两个输入对应前两层的输出。循环神经网络中,Cell的两个输入对应前两时间步Cell的输出。网络共搜索两种Cell,一种是Normal Cell,另一种为Reduction Cell。Reduction Cell会把输出的特征图高度和宽度缩小一倍,用在网路的1/3和2/3处。通过把Cell不断堆叠得到表现好的网络。

算法流程

DARTS论文总结
图a所示为网络中Cell的最初形态,我们假设一个Cell中有4个节点,图b中把节点之间的线全部连接,每两个节点之间是一个混合的候选操作,每个操作都对应一个概率,图c表示的是训练过程中,求解一个双层优化问题,同时优化混合的概率和权值,图d表示保留概率最大的操作,形成最终的Cell。

连续松弛

本文的关键所在,如何把架构转化为可微的!
简单的说:就是把一个Cell中的两个节点之间的混合操作中每一个操作都赋予一个概率,这个概率是通过Softmax函数实现的,这样就可以把架构也加入到权值的优化过程中来,从而形成一个双层优化问题,架构是一个高阶的变量,权值是低阶变量,因为演化架构的过程中同时也需要权值的参与,同时优化两者的过程比较困难。所以本文又提出近似的梯度优化过程来简化优化架构和权值的过程,有兴趣同学可以自行查看论文。

最终搜索出来的Cell结构

DARTS论文总结

结果

DARTS论文总结
DARTS方法在不同数据集和不同初始化的实验对比。可以看出不同的初始化虽然会导致过程不同,但是大部分都会收敛到好的结果。
DARTS论文总结
在移动设备上ImageNet数据集的结果。可以看出搜索效率至少提高了两个数量级,参数量和结果也是SOTA。

总结

这篇论文标志着可微分的方法的开端,后续会介绍更多基于此的改进,也希望能在这个领域有所建树。