NAS 学习笔记(六)- Evolution NAS

  |     |   本文总阅读量:

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

引言

  最近读了一篇在 NAS 中应用Evolutionary Algorithm 的论文 [1],也是 Google Brain 提出的,它利用 NAS 搜出一个网络来解决图像分类的问题,实验效果接近达到了当时的 STOA。它用简单的构建模块和常用的初始条件设置了一个进化过程,主要思想是剔除掉人的参与,让进化算法自动的大规模构建网络架构,从非常简单的网络开始,逐渐找到越来越复杂的网络,到最后这个过程可以找到与手动设计模型性能相当的分类器。

Evolutionary Algorithm

  Wikipedia 上的 Evolutionary Algorithm 的流程如下:

  1. Step One: Generate the initial population of individuals randomly. (First generation)
  2. Step Two: Evaluate the fitness of each individual in that population (time limit, sufficient fitness achieved, etc.)
  3. Step Three: Repeat the following regenerational steps until termination:
    1. Select the best-fit individuals for reproduction. (Parents)
    2. Breed new individuals through crossover and mutation operations to give birth to offspring.
    3. Evaluate the individual fitness of new individuals.
    4. Replace least-fit population with new individuals.

  把这个过程抽象到 NAS 问题中,population of individuals 就是我们需要搜索的那些 architectures,fitness value 就是每个 architecture 在验证集上的 accuracy。
  作者在论文中给出的思路,worker 每次从 population 中随机挑选两个 individual,然后评估它们的 fitness value,在 population 中 kill 较差的那一个,把较好的那一个作为 parent,对它进行 mutation 生成 child 再放到 population 中。
  由此看来,这个过程是一个计算开销非常大的过程,因此作者通过并行的方式来完成这个计算过程,有多个 worker (通常是不同的计算节点),它们之间没有通信,只是共享 population,然后不点进行进化。
  论文中作者设置 population 的大小为 1000,worker 的个数是 population 的四分之一。

Initial Conditions

  作者把初始的 population 设置的很简单,都是一些单层的网络模型,learning-rate 设置为 0.1。

Encoding and Mutations

  每个 individual 被 encode 成一个 graph,作者也称它为一个 DNA,每个点表示一个 rank-3 tensor 或者是 activation(batchnorm + RELU 或者 plain linear unit),因为是图像分类的 CNN,前两维表示图片的 spatial coordinates ,第三维表示 channel 数。
  每条边表示 identity connection 或者 convolution,并且包含了 convolution 变异所需要的数值参数。
  当多条边需要连接到一个点时,可能涉及到输入 shape 和 channel 不符合的问题,这里作者会选择一条边作为 primary one,并且不是一个 skip connection,然后其它边根据这条边进行重塑[2]。learning rate 的值也会被存储在 DNA 中。
  parent 和 child 的差别主要就是变异,论文中列出下面一些变异:

  • ALTER-LEARNING-RATE
  • IDENTITY (effectively means “keep training”)
  • RESET-WEIGHTS
  • INSERT-CONVOLUTION (inserts a convolution at a random location in the “convolutional backbone”, as in Figure 1. The inserted convolution has \(3 \times 3\) filters, strides of 1 or 2 at random, number of channels same as input. May apply batch-normalization and ReLU activation or none at random)
  • REMOVE-CONVOLUTION
  • ALTER-STRIDE (only powers of 2 are allowed)
  • ALTER-NUMBER-OF-CHANNELS (of random conv)
  • FILTER-SIZE (horizontal or vertical at random, on random convolution, odd values only)
  • INSERT-ONE-TO-ONE (inserts a one-to-one/identity connection, analogous to insert-convolution mutation)
  • ADD-SKIP (identity between random layers)
  • REMOVE-SKIP (removes random skip).

  worker 会每次随机挑选一个 mutation 给 parent 进行变异,变异里涉及到一些数值变换的都会有一些变化范围,例如原来某个 convolution 有 10 个 output channel,变异后的 output channel 采样是在 [5, 20] 里采。
  下图是一个不断变异迭代的示意图:

Weight Inheritance

  为了加速训练收敛,child 会继承 parent 里可用的 weights,也就是结构相同的部分的 weights。因为每次只进行一次变异,其实大部分 weights 都是可以被继承下来的。

Meta Parameter

  其实有两个超参影响了算法最后能达到的效果,一个是 population size,另外一个是每个 individual 需要训练的 step 数,下图是作者做的一个实验:

Conclusion

  其实看完这篇论文,我们可以发现,用 Evolutionary Algorithm 进行 NAS 的思路还是非常简单的,但是就是计算开销实在太大了,我觉得应该很难在生产环境下使用。
  从这篇论文还发现 Evolutionary Algorithm 在 NAS 上的一个优势,就是每次 parent 和 child 之间只经过一次变异,它们之间的结构应该是很类似的,所以许多 weights 应该是可以被继承下来共享的,这应该是个提速的优化点。

Refer

[1]. Real, Esteban, et al. "Large-scale evolution of image classifiers." Proceedings of the 34th International Conference on Machine Learning-Volume 70. JMLR. org, 2017.
[2]. He, Kaiming, Zhang, Xiangyu, Ren, Shaoqing, and Sun, Jian. Deep residual learning for image recognition. In Proceedings of the IEEE Conference on Computer Vi- sion and Pattern Recognition, pp. 770–778, 2016.

相关内容


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



文章目录
  1. 1. 引言
  2. 2. Evolutionary Algorithm
  3. 3. Initial Conditions
  4. 4. Encoding and Mutations
  5. 5. Weight Inheritance
  6. 6. Meta Parameter
  7. 7. Conclusion
  8. 8. Refer
  9. 9. 相关内容
您是第 位小伙伴 | 本站总访问量 | 已经写了 670.5k 字啦

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