NAS 学习笔记(十五)- P-DARTS

  |     |   本文总阅读量:

版权声明:本文原创,转载请留意文尾,如有侵权请留言, 谢谢

引言

  本文分享一篇华为 2019 年关于 NAS 的论文 [1],文中提出了 P-DARTS 算法,它主要优化了原来 DARTS 中 depth gap 和 skip-connect 过多的问题。

Motivation

   这篇文章要解决的问题主要是 DARTS 在搜索过程中出现的 proxy dataset 和 target dataset 出现的 depth gap 的问题。proxy dataset 指的是 NAS 搜索时用的数据集,这个数据集往往比较小,例如 CIFAR10,此时 NAS 堆叠的 cell 数往往更小。而 target dataset 是 DARTS 搜出 cell 的结构后需要 evaluate 的数据集,这个数据集往往比较大,例如 ImageNet,所以需要堆叠的 cell 数也更多。因此便产生了 depth gap,为什么不直接也在 proxy dataset 上堆叠较多的 cell 呢?这由于 DARTS 受限于内存和计算消耗,一般都会在 proxy dataset 上进行较浅的 initial channel 及 layer depth 搜索,然后把搜好的模型再扩充较大的 channel 和 depth 放到target集上重训重测。本文就是试图解决这个问题。
   本文另外一个优化的问题是 DARTS 搜出来的 skip-connect 过多会占据主导地位,这对模型稳定性有较大影响。作者对 skil-connect 做了一些正则化约束。 DARTS 为什么随着搜索的进行搜出来的 skip-connect 越来越多呢,知乎上有一个很好的解释[2]

  DARTS 发生 Collapse 背后的原因是在两层优化中,alpha 和 w 的更新过程存在先合作(cooperation)后竞争(competition)的问题。粗略来说,在刚开始更新的时候,alpha 和 w 是一起被优化,从而 alpha 和 w 都是越变越好。渐渐地,两者开始变成竞争关系,由于 w 在竞争中比 alpha 更有优势(比如,w 的参数量大于 alpha 的参数量,One-Shot 模型在大多数 alpha 下都能收敛,等等),alpha 开始被抑制,因此网络架构出现了先变好后变差的结果,也就是上上图中蓝线的情况。   具体来说,在搜索过程的初始阶段,One-Shot 模型欠拟合到数据集,因此在搜索过程刚开始的时候,alpha 和 w(也就是 One-Shot 模型的参数)都会朝着变好的方向更新,这就是合作的阶段。由于整个 One-Shot 模型中,前面的 cell 比后面的 cell 能接触到更干净的数据,如果我们允许不同的 cell 可以拥有不同的网络结构(打破 DARTS 中 cell 共享网络结构的设定),那么前面的 cell 会比后面的 cell 更快地学到特征。   一旦前面的 cell 已经学到了不错的特征表达,而后面的 cell 学到的特征表达相对较差,那么后面的 cell 接下来会倾向于选择 skip-connect,来把前面 cell 已经学好的特征表达直接传递到后面。下图是打破 DARTS 中 cell 共享网络结构的设定下,搜出来的网络结构图:可以看到,前面的 cell 大部分都是卷积算子,而靠后的 cell 大部分都是 skip-connect。   回到 DARTS 的设定,如果我们强制不同的 cell 共享同一个网络结构,那么 skip-connect 就会从后面的 cell 扩散到前面的 cell。当 skip-connect 开始显著变多的时候,合作的阶段就转向了竞争的阶段:alpha 开始变坏,DARTS 开始 collapse。

P-DARTS

Depth Gap

  P-DARTS 优化 depth gap 的方法其实很简单,是一个渐进式的方法,随着搜索的进行不断增加层数,所以计算量也会成倍增加,因此为了解决这个问题,P-DARTS提出了 search space approximation 策略,即每当层数增加时就会相应地减少候选操作的数量,一张图就可以理解:

    1. cells=5 时,每个 node 间有 5 个 candidate,当训练好了25 epochs后,会有对应的 softmax 置信度。
    1. 接着进行 cells=11 的搜索,虽然深度加了一倍多,但这时每个 node 间 operation candidate 将会减少接近一半,即把 (a) 中最后置信度较低的 operation 直接 delete 掉。
    1. 同样的流程,最后进行 cells=17 的搜索,再砍掉置信度低的一半 opeartion。

  这实际上也是一个 trade-off。

Skip-connect

  P-DARTS 为了避免出现过多的 skip-connect,给 skip-connect 加了正则,主要是两种方法:

  1. 在每个 skip-connect 操作后插入 operation-level dropout,然后训练时逐渐减少 dropout rate。
  2. 加个超参 M 来限制最后 cell 内部 skip-connect 的最大总数。

  需要注意的是作者提出第二种正则方法必须是在使用第一种正则方法的前提上才能使用,否则,在没有 operation-level dropout 的情况下,搜索过程会产生低质量的 architecture weight,基于此即使有固定数量 skip-connect 的 architecture,我们也无法构建更好的 architecture。

Conclusion

  P-DARTS 通过一种渐进式的算法缓解了 DARTS 中 depth gap,并且给 skip-connect 加上了正则,也进一步提高了搜出的架构的稳定性。

Refer

  • [1] X. Chen, L. Xie, J. Wu, and Q. Tian, “Progressive differentiable architecture search: Bridging the depth gap between search and evaluation,” Proc. IEEE Int. Conf. Comput. Vis., vol. 2019-Octob, pp. 1294–1303, 2019.
  • [2] https://zhuanlan.zhihu.com/p/82679004

相关内容


坚持原创技术分享,您的支持将鼓励我继续创作,π(3.14)元就够啦!



文章目录
  1. 1. 引言
  2. 2. Motivation
  3. 3. P-DARTS
    1. 3.1. Depth Gap
    2. 3.2. Skip-connect
  4. 4. Conclusion
  5. 5. Refer
  6. 6. 相关内容
您是第 位小伙伴 | 本站总访问量 | 已经写了 605.5k 字啦

载入天数...载入时分秒...