NAS 学习笔记(四)- One-Shot Architecture Search

  |     |   本文总阅读量:

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

引言

  最近看了 Google Brain 关于 One-Shot Architecture Search [1],这里的 One-Shot 和人脸识别里的 One-Shot 网络 Siamese 还不太一样,这里的 One-Shot model 指的主要是 weights sharing。我们之前提到的 SMASH 和 ENAS 都是 One-Shot 的,这篇论文也就是解释了为什么 One-Shot model 中的 weights 能被众多不同的 architecture 共享,并且是有效的。

Defination of One-Shot Model

  首先来解释下啥叫 One-Shot model,我们来下面这个示意图:

  单独的训练分别包含 \(3 \times 3\) convolution,\(5 \times 5\) convolution 和 max pooling 的网络,我们不妨一次性训练包含这三个组件的网络,这就是 One-Shot Model。然后在 evaluate 时,可以选择将其中两种 operation 进行置零来确定哪种 operation 的预测精度最高。如果 One-Shot model 足够复杂,我们训练它的子网络时就可以使用一些 sharing parameter 了,不需要每次重新训练。
  我看 SMASH 和 ENAS 时,也有一个深深的疑问,虽然这些 sharing weights 的主要作用是去排序那些 candidate architecture,然后挑选验证集上精度最高的 architecture 去完整的训练,但是异构的 architecture 使用 sharing weights 真的科学有效吗?本文的目的即是解释这个问题。
  除此之外,作者在 Introduction 里写到一个很有趣的发现,就是他通过实验发现,SMASH 和 ENAS 取得好结果的关键并不在于 HyperNet 或者 RL controller,而是在于 sharing weights,这一点我同组的同学在跑 ENAS 实验时也发现了,他注释掉 controller 的一些内容,最后实验精度影响并不太大。

One-Shot Architecture Search

  作者总结了使用 One-Shot Model 方法的四个步骤:

  1. Design a search space that allows us to represent a wide variety of architectures using a single one-shot model.
  2. Train the one-shot model to make it predictive of the validation accuracies of the architectures.
  3. Evaluate candidate architectures on the validation set using the pre-trained one shot model.
  4. Retrain the most promising architectures from scratch and evaluate their performance on the test set.

  我们接下来分别介绍下这 4 个步骤:

Search Space Design

  下图是论文中给出的一个例子:

  中间的三个 cell 是相同的,每个 cell 的构造如上图第二部分所示,它包含 \(N_{choice} 个 Choice Block(图中画了 3 个,论文中设定的为 4 个)\)。每个 Choice Block 的构造如上图第三部分所示,论文中设定每个 Choice Block 只能接受最多两个 previous cell 的输入,或者同一个 cell 中其他 Choice Block 的输入,所以每个 Choice Block 可接受最少 1 个输入,最多 \(2 + N_{choice} -1\) 个输入。每个 Choice Block 中有 7 个可选 operation,最多每次选 2 个 operation,最少每次选 1 个 operation。

Search Space Size

  对于第 \(i(i = 0, 1, 2,...)\) 个 Choice Block,它最少有 1 个输入,最多有 \(2 + i\) 个输入,那么输入就有 \(2^{2+i}-1\) 种可能。除此之外,每个 Choice Block 会从 7 种 operation 里挑选最少 1 个最多 2 个 operation,这又造成了 operation \(\left(\begin{array}{l}{7} \\ {1}\end{array}\right)+\left(\begin{array}{l}{7} \\ {2}\end{array}\right)=7+21=28\) 种组合的可能。因此,对于 \(N_{choice}=4\), search space 一共有 \((2^2-1) \times (2^3-1) \times (2^4-1) \times (2^5-1) \times 28^4 \approx 6 \times 10^9\) 种可能的 cell。

Training the One-Shot Model

  作者是用 SGD with Momentum 去训练 One-Shot Model 的,还需要考虑三个问题,作者分别作了讨论。

Robustness to Co-adaptation

  因为评估的时候会去掉大量的 path,只留下所选择的 path,所以模型需要具备去掉 path 后进行 evaluate 的鲁棒性,在训练的过程中使用 dropout 来解决这一问题,dropout rate 被设置为 \(r^{1/k}(0 \lt r \lt 1)\)\(r\) 是一个超参,\(k\) 是 incoming paths 的个数。

Stabilizing Model Training

  因为 One-Shot Model 的训练在早期是非常不稳定的,同时还在训练中引入了 dropout,所以训练很困难。作者发现对于同一个 single training batch,如果每次 dropout 相同的 paths,那么会非常不稳定。因此,作者引入了 A variant of ghost batch normalization 来解决这一问题,它将一个 single training batch 分成若干个 ghost batch,不同的 ghost batch 间 dropout 不同的 paths,同一 ghost batch 内 dropout 相同的 paths。

Preventing Over-regularization.

  给定的 convolution 可能仅用于 search space 中 architectures 的子集。在训练期间,为了防止过度正则化,L2 正则化仅应用于当前 architecture 使用的 model 的部分,如果不进行此更改,则频繁的 dropout 会使 layers 更加正规化。

Evaluating Candidate Architectures Once

  这里作者写的很简单,就是用 held-out 的验证集去 evaluate 那些 candidate architecture。论文中产生 candidate architecture 的方法也是根据一个概率分布简单的随机采样。

Final Model Selection and Training

  这一步就是根据 rank 去挑选 best-performing 的 architectures 从头开始训练。

Understanding One-Shot Models

  作者做了大量的实验,那些和其它算法对比的实验我们就不说了,我们来看一看作者试图解释 sharing weights 有效的一些实验。
  作者分层抽样 architectures,比较 One-Shot Model 和 Stand-Alone Model 的 accuracy。如下图所示,两者几乎呈线性关系,因此作者认为 One-Shot Model 能够找到哪些操作是有效的,它学习出了哪些 operation 在 model 里是有效的,如果这些有效 operation 存在于模型中,那么就可以预测出这些 architecture 的 accuracy 很高,如果他们不存在模型中,所以就预测他们的 accuracy 很低。

  为了进一步验证上述实验的假设,作者又进行了一个实验,使用 symmetrized KL divergence(\(D_{\mathrm{KL}}(p \| q)=\sum_{i=1}^{n} p_{i} \log \frac{p_{i}}{q_{i}}\),作者使用了 \(D_{\mathrm{KL}}(p \| q)+D_{\mathrm{KL}}(q \| p)\) 来 evaluate 来评估搜索出的模型和 ALL ON Model(保留大量 paths 基本不削减)的预测分布,结果如下图所示。我们可以发现表现好的 One-Shot Model 和 ALL ON Model 的 symmetrized KL divergence 低,即这两者的预测很接近,这些 One-Shot Model 的验证集 accuracy 也高。作者认为这表明权重共享会使得 One-Shot Model 专注于最有效的操作。

  最后作者,又做了实验验证 symmetrized KL divergence 随着时间的变化,如下图所示,随着训练的进行,symmetrized KL divergence 越来越低,One-Shot Model 的 predict 越来越准确,也就是说那些有效的 operation 逐渐被采样到了。

Conclusion

  这篇论文虽然没有从理论上说明 sharing weights 为啥是有效的,但是通过实验验证了这个想法,并且把 NAS 里 One-Shot Model 这类算法的流程介绍的还是很清楚的。
  同时如果能构建一个 One-Shot Model,覆盖 search space 中的所有操作,在 evaluate 阶段,一个 child network 通过 drop-connect 其它连接来进行模拟。但是它依赖的超参数,如 dropout rate 和 Choice Block 的 operation 可选数量,这使得该方法的鲁棒性较差,必须采取特定的措施来稳定训练和防止过度正则化。另外,这样一个 One-Shot Model 由于包含了所有的 architecture ,其实是存在内存爆炸的问题,当搜索空间增长时,内存变得太大而无法训练。

Refer

[1]. Bender, Gabriel. "Understanding and simplifying One-Shot architecture search." (2018).

相关内容


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



文章目录
  1. 1. 引言
  2. 2. Defination of One-Shot Model
  3. 3. One-Shot Architecture Search
    1. 3.1. Search Space Design
      1. 3.1.1. Search Space Size
    2. 3.2. Training the One-Shot Model
      1. 3.2.1. Robustness to Co-adaptation
      2. 3.2.2. Stabilizing Model Training
      3. 3.2.3. Preventing Over-regularization.
    3. 3.3. Evaluating Candidate Architectures Once
    4. 3.4. Final Model Selection and Training
  4. 4. Understanding One-Shot Models
  5. 5. Conclusion
  6. 6. Refer
  7. 7. 相关内容
您是第 位小伙伴 | 本站总访问量 | 已经写了 670.5k 字啦

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