原文链接:https://arxiv.org/pdf/1904.12760.pdf 发表:ICCV 2019
编辑:牛涛
code:https://github.com/ chenxin061/pdarts
作者argue的是之前的DARTS方法搜索是在浅的网络,验证在深的网络,因此会有一个depth gap的问题,即有些操作会在浅网络下更倾向于被选择,但是深网络不会。作者提出了一种渐进式的NAS,逐渐拓展深度从浅过渡到深,实现搜索和验证都能维持很好的性能。如下图
问题:人家DARTS搜的不是cell吗然后堆叠在一起吗?哪里有什么浅的网络??
anyway,作者先回顾了下之前的DARTS,给了mix-operation及cell输出的公式。然后表明为了验证这个depth gap,作者重复了几次DARTS的实验,发现normal cell中更倾向于保留shallow connections。推测这是因为浅的网络更利于梯度快速传递(更容易收敛)
那么怎么改变这个情况呢?增加深度固然可行,但是GPU压力太大,就得减小网络宽度。直接减小宽度的话,如DARTS中提到会使性能下降。那么就渐进式吧,逐渐缩小要么宽度,要么操作数量。本文采用的是后者,取名为search space approximation。解释起来也很简单,就是随着深度增加,把概率低的操作逐渐丢掉。
第二个问题是,深网络在训练的时候更倾向于skip-connection而不是卷积这种有可学习参数的。虽然很容易train,但是泛化能力不足。很容易导致过拟合。
为了解决这个问题,作者首先在skip-connection后插入一个dropout。但是这一步又会影响operation的选择,比较难控制(如果我dropout率一直维持不变,到训练后期skip-connection肯定会被舍弃)。因此作者逐渐减小dropout率使其更平滑稳定。
此外,作者通过在CIFAR10上进行3次相同实验,发现skip-connect的数量与性能成正相关,设计了一种正则的规则。在更新结构参数之前,先根据skip-connect对应的weight大小保留M个,并把其余的N-M个置零,然后在这个基础上去更新结构参数。虽然更新中可能会加入新的skip,但是这个过程被做成了迭代的,最终会收敛在只有M个skip-connect。正则必须要在dropout的基础上进行,不然正则的weight被认为是低质量的(这部分也是文字描述,可以参考原文)