NAS 学习笔记(八)- SPOS

  |     |   本文总阅读量:

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

引言

  本文分享一篇旷视 2019 年的关于 NAS 的论文 [1],论文中提出了 SPOS(Single Path One-Shot) 算法,它是 One-Shot 的,并且作者提出了一种 Single Path 的 supernet,以及用 uniform sampling ,值得一提的是论文中采取 search 的方法是 evolutionary algorithm,本文对它做简单的笔记。

Drawbacks of weights sharing

  首先作者提出一些关于在 NAS 中应用 weight sharing 方法的缺陷,这两个缺陷也是我之前一直感到疑惑的地方:

  1. supernet 中将要给采样 child model 共享的 weights 是耦合的,无法确定对于特定 architecture 直接使用 supernet 的权重是否有效。
  2. joint optimization 会进加剧采样的 architecture 的 parameters 和 supernet weights 之间的耦合的程度。

  下图是作者在论文中列出各种使用了 weights sharing 方法的 NAS 算法的比较:

One-Shot NAS

  One-Shot NAS 一般分两个阶段,第一个阶段训练 supernet 相当于并行训练子网络,第二个阶段就不训练采样出来的 architecture 了,直接在验证集上预测查看性能。而 weight sharing 可能在训练 controller 的时候也训练部分 supernet:这个过程可以描述为公式 1 和 公式 2:

\[ W_{\mathcal{A}}=\underset{W}{\operatorname{argmin}} \mathcal{L}_{\text {train }}(\mathcal{N}(\mathcal{A}, W)) \tag{1} \]

\[ a^{*}=\underset{a \in \mathcal{A}}{\operatorname{argmax}} \mathrm{ACC}_{\mathrm{val}}\left(\mathcal{N}\left(a, W_{\mathcal{A}}(a)\right)\right) \tag{2} \]

  所以一般的 One-Shot 模型可以解决 weights sharing 方法的第二个缺陷,但却很难解决 weights sharing 方法的第一个缺陷,supernet 的 weihts 对于采样的 architecture 来说依然耦合了。

Single Path

  我们知道我们的目标就是找到一个好的 \(W_{\mathcal{A}}\) 让所有在 search space 里采样得到的 architecture 可以也有很好的性能,即:

\[ W_{\mathcal{A}}=\underset{W}{\operatorname{argmin}} \mathbb{E}_{a \sim \Gamma(\mathcal{A})}\left[\mathcal{L}_{\text {train }}(\mathcal{N}(a, W(a)))\right] \tag{3} \]

  为了进一步缓解 weights sharing 方法的第一个缺陷,也就是为了减少 node weights 的 co-adaptation,例如如两个网络共享了很多 node,更新其中一个相当于部分更新了另外一个,耦合很严重,所以作者设计了一个非常简单的 supernet,也代表着非常简洁的 search space,如下图所示:

  它和一些使用 dropout strategy 的 NAS 方法形成了鲜明对比,因为往往这些 NAS 方法的性能都对 drop rate 非常敏感,而在 Single Path 中不存在 drop rate,因为每次在 choice block 里也就只保留一条边。
  作者设计了两周 choice block:

  • Channel Number Search:它主要用来搜索卷积层的通道数,主要思想是预先分配具有最大通道数的 weight tensor。在 supernet 训练期间,系统会随机选择通道数并切出相应的 tensor 进行卷积。
  • Mixed-Precision Quantization Search:它主要用来在搜索 weiths 和 features 的量化精度以用于卷积层。在 supernet 中,feature map 的 width 和 kernal weights 是随机选择的。

Uniform Sampling

  公式 3 中用到的 prior distribution \(\Gamma(\mathcal{A})\) 是非常重要的,论文中作者直接使用了 uniform sampling,非常简单,但是在作者的实验中发现效果却很好,可能是因为它可以使所有的 architecture 可以同时公平的 optimize。
  需要注意的是,\(\Gamma(\mathcal{A})\) 跟不之前的一些 NAS 方法不同,在论文中它是 fixed 的,是不可学习的,这样做可以进一步缓解耦合的情况。

Evolutionary Architecture Search

  在搜索最优 architecture 的时候,作者使用了 evolutionary algorithm,我们知道对于一般的问题来说这样的开销很大,但是因为我们搜索到每一个 architecture 后只 infer 不 train,所以还是挺高效的,伪代码如下:

Conclusion

  综合来说,作者我了解决 weight sharing 方法和 One-Shot 方法一些耦合的问题,提出了很简单的 Single Path supernet,以及用 uniform sampling,最后用 evolutionary algorithm 来搜索最优的 architecture,总体思路还是非常简单高效的,也容易理解。

Refer

[1]. [1] Z. Guo et al., “Single Path One-Shot Neural Architecture Search with Uniform Sampling,” 2019.

相关内容


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



文章目录
  1. 1. 引言
  2. 2. Drawbacks of weights sharing
  3. 3. One-Shot NAS
  4. 4. Single Path
  5. 5. Uniform Sampling
  6. 6. Evolutionary Architecture Search
  7. 7. Conclusion
  8. 8. Refer
  9. 9. 相关内容
您是第 位小伙伴 | 本站总访问量 | 已经写了 680.3k 字啦

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