DARTS+
华为诺亚方舟实验室的NAS工作,针对现有DARTS框架在搜索阶段训练过程中存在 skip-connection 富集现象,导致最终模型出现大幅度的性能损失的问题,提出了一种可微分的神经网络架构搜索算法DARTS+,将早停机制(early stopping)引入到原始的 DARTS算法中,不仅减小了 DARTS 搜索的时间,而且极大地提升了 DARTS 的性能。在 CIFAR10、CIFAR100 和 ImageNet 上分别取得 2.32%、14.87% 和 23.7% 的错误率。
- 论文名称《DARTS+: Improved Differentiable Architecture Search with Early Stopping》
- 论文地址:https://www.weiranhuang.com/publications/DARTS+.pdf
动机
DARTS 算法有一个严重的问题,就是当搜索轮数过大时,搜索出的架构中会包含很多的 skip-connect,从而性能会变得很差。文章把这个现象叫做 Collapse of DARTS。例如,在 CIFAR100 上用 DARTS 做搜索。从下图可以看出,当 search epoch(横轴)比较大的时候,skip-connect 的 alpha 值(绿线)将变得很大。
因此,在 DARTS 最后选出的网络架构中,skip-connect 的数量也会随着 search epoch 变大而越来越多,如下图中的绿线所示。
方法实现
为了解决 DARTS 会 collapse 的问题,防止 skip-connect 产生过多,本文提出一种非常简单而且行之有效的早停机制,改进后的 DARTS 算法称之为 DARTS+ 算法,DARTS+ 最大的优点就是操作起来非常简单。相比于其他改进 DARTS 的算法,DARTS+ 只需要一点点改动就可以显著地提高性能,同时还能直接减少搜索时间,方法如下图所示。
在合适的训练过程中终止搜索,可以有效规避 skip-connect 富集问题。因此,早停准则的制定至关重要!本文提供了两种早停的准则供参考:
早停准则1
当一个 cell 中出现两个及两个以上的 skip-connect 的时候,搜索过程停止。
早停准则2
当各个可学习算子(比如卷积)的 alpha 排序足够稳定(比如 10 个 epoch 保持不变)的时候,搜索过程停止。
由于 alpha 值最大的可学习算子对应最后的网络会选择的算子,当 alpha 排序稳定时,这个算子在最后选择的网络不会出现变化,这说明 DARTS 的搜索过程已经充分。从上图中蓝线也能看出,当过了红圈之后,架构的性能开始出现下降,从而出现 collapse 问题。因此,我们可以选择在可学习算子 alpha 排序不再改变(图中红圈处)的时间点附近早停。当早停准则满足时(左图中红色虚线),基本处于 DARTS 搜索充分处,因此在早停准则处停止搜索能够有效防止 DARTS 发生 collapse。
文中指出,早停准则 1 更便于操作,而当需要更精准的停止或者引入其他的搜索空间的时候,可以用早停准则 2 来代替。由于早停机制解决了 DARTS 搜索中固有存在的问题,因此,它也可以被用在其它基于 DARTS 的算法中来帮助提高进一步性能。
值得一提的是,前面写的基于 DARTS 改进的算法其实也隐式地使用了早停的想法:
P-DARTS 使用搜 25 个 epoch 来代替原来的 50 个 epoch;在 skip-connects 之后加 dropout;手动把 skip-connects 的数目减到 2。
PC-DARTS 使用部分通道连接来降低搜索时间,因此搜索收敛需要引入更多的 epoch,从而仍然搜索 50 个 epoch 就是一个隐式的早停机制。