Neural Architecture Search With Reinforcement Learning
论文连接:https://arxiv.org/abs/1611.01578
用一个循环网络生成模型描述,并且用强化学习训练这个RNN以在测试集上最大化生成网络的期望精度。
一个神经网络的连接和结构可以用变长的序列描述,所以可以用一个循环网络(controller)去生成这样的序列,在validation set上训练此网络,可以得到accuracy,将accuracy视作回馈信号,就可以计算policy gradient来更新这个controller。在下一次迭代中,the controller将会给高accuracies的架构更高的概率。
1、Generate Model Descriptions with A Controller Recurrent Neural Network
用一个RNN controller产生神经网络架构的超参
当层数超过一个特定的值时停止,停止后,一个此架构的神经网络将被建立并且训练,并且它的accuracy也会被记录,controller的参数θ将会被优化。
2、Training With Reinforce
运用强化学习的方法,将RNN controller的预测视为动作,将accuracy视作回报,目的是使controller最大化期望回报
因为回报是不可微的所以需要用policy gradient方法迭代更新参数θ
简化上式子:
m代表着controller在一个batch中采样的不同架构的数量,T代表着controller需要预测的超参的数量,Rk是第k个神经网络架构训练之后的validation accuracy
Accelerate Training with Parallelism and Asynchronous Updates:
采用distributed training 和 asynchronous parameter updates加速训练
神经结构搜索的分布式训练。使用一组S个Parameter Server来存储参数并将参数发送给K个Controller Replica。然后每个Controller Replica对m个体系结构进行采样,并并行地运行多个子模型。记录每个子模型的精度对θc计算梯度,然后发送回Parameter Server。
3、Increase Architecture Complexity with Skip Connections And Other Layer Types
skip connection 的方法
在第N层,添加一个具有N-1个基于内容的sigmoid的锚点,以指示需要连接的前一层,每个sigmoid是controller当前隐藏状态和前N-1个锚点之间隐藏状态的函数:
hj为第j层controller在第j层锚点的隐藏状态,j取值范围为0~N-1.
skip connection需要注意以下问题:
1.若一个层没有连接到任何输入,那么图像将被用作输入层。
2.在最有一层,获取所有未连接的层的输出,并在将最终隐藏状态发送给分类器之前将它们concatenate起来。
3.如果要连接的输入层大小不同,则用0填充小层,使得连接的层有相同的大小。
另外,需要添加额外的步骤去预测层类型和与其有关的超参(lr、pooling、local contrast normalization、batchnorm)
4、Generate Recurent Cell Architectures
基本RNN和LSTM单元的计算可以概括为以xt和ht - 1为输入,以ht为最终输出的步骤树。控制器RNN需要使用组合方法(加法、elementwise乘法等)和激活函数(tanh、sigmoid等)来标记树中的每个节点,以合并两个输入并产生一个输出。然后将两个输出作为输入提供给树中的下一个节点。为了使控制器RNN能够选择这些方法和函数,对树中的节点按顺序进行索引,这样控制器RNN就可以逐个访问每个节点,并标记所需的超参数。
受LSTM单元构造的启发(Hochreiter Schmidhuber, 1997),还需要单元变量ct−1和ct来表示内存状态。为了合并这些变量,需要控制器RNN来预测树中的哪些节点将这两个变量连接到。这些预测可以在控制器RNN的最后两个块中完成。