Notes on Neural Architecture Search

NAS 提供了一种自动化搜索网络结构的方法. 其大体思想是固定网络的训练过程, 然后寻找通过该训练过程可以达到最好效果的网络结构. 从一定程度上看这种方法和我们通常选定一种网络结构然后使用不同的优化参数和优化方法找到最好的模型参数的过程恰好相反.

目标网络结构的描述

NAS 使用一个RNN去训练网络结构, 在NAS中, 该RNN被称为Controller.

初级网络结构描述

既然要用RNN去训练一个网络结构, 那么就需要一种可以用RNN来描述网络结构的方法. 在NAS中, 使用字符串了描述网络结构. 基本模式为 [number of filters][filter height][filter width][stride width], 例如如下图中描述的结构:

高级网络结构描述

上面的网络结构只能描述最简单的结构, 如果像是 resnet 这种网络结构, 上面的方法就无法描述.
为了描述skip connection这种结构, 在 Controller中增加了一个 Anchor Point结构. 例如, 在第N层的Anchor Point描述的是前面N-1层了当前层是否有skip connection.

Controller 的训练

在训练的过程中, 会逐渐增加目标网络的层数, 也就是增加字符串的长度.
Controller使用强化学习的gradient policy方法训练, 训练的reward是Controller得到的神经网络在具体的数据集上的performance, 例如, 寻找ConvNet使用的是在cifar10上的accuracy作为强化学习的reward.

怎样得到reward

每次Controller输出的网络, 全部使用同一套参数在数据集上进行相同的训练, 训练结束后得到的performance作为reward. 例如, 搜索cifar10上的CNN结构, 使用的策略是:

  1. 在该CNN上训练50个epoch
  2. learning rate 设置为0.1
  3. weight decay 设置为 1e-4
  4. momentum 设置为0.9
  5. 使用 Nesterov Momentum

50个epoch结束之后, 使用该模型在validation dataset上测试accuracy, 该accuracy作为reward.

0%