NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING

NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING

本文提出了一种基于梯度的神经结构搜索方法(见图1)

NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING

我们的工作是基于这样的观察:神经网络的结构和连接性通常可以由一个可变长度的字符串来指定。因此,可以使用一个递归网络(控制器)来生成这样的字符串。在真实数据上训练由字符串指定的网络——“子网络”——在验证集的准确率。使用这种准确率作为奖励信号,我们可以计算策略梯度来更新控制器。因此,在下一次迭代中,控制器将为接收高精度的体系结构提供更高的概率。换句话说,控制器将学习随着时间的推移改进其搜索。

使用控制器递归神经网络生成模型描述

在神经网络结构搜索中,我们使用控制器生成神经网络的结构超参数。为了使控制器具有一定的灵活性,采用递归神经网络来实现。假设我们想要预测只有卷积层的前馈神经网络,我们可以使用控制器将它们的超参数作为一系列标记生成:

NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING

图2:我们的控制器递归神经网络如何采样一个简单的卷积网络。它可以预测滤波器高度、滤波器宽度、步长、步宽和一层滤波器的数目,并进行重复。每个预测由一个softmax分类器执行,然后作为输入输入到下一个时间步。

在我们的实验中,如果层的数量超过某个值,生成架构的过程就会停止。这个值遵循一个时间表,我们在训练过程中增加它。一旦控制器RNN生成了一个体系结构,就用这个体系结构建立并训练一个神经网络。在收敛时,记录验证集上网络的准确性。然后对控制器RNN的参数thetac进行优化,以最大限度地提高所提出架构的预期验证精度。在下一节中,我们将描述一种策略梯度方法,用于更新参数thetac,以便控制器RNN随着时间的推移生成更好的体系结构。

3.2 TRAINING WITH REINFORCE

控制器预测的令牌列表可以看作是设计子网络架构的操作a1:T的列表。在收敛时,这个子网络将在验证集上达到一个精度R。我们可以用这个精度R作为奖励信号,用强化学习来训练控制器。更具体地说,为了找到最优的架构,我们要求控制器将其期望报酬最大化,表示为

NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING

由于奖励信号R是不可微的,我们需要使用策略梯度方法来迭代更新。

NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING

上述量的经验近似为:

NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING

其中m是控制器在一批中采样的不同结构的数目,T是控制器在设计神经网络结构时必须预测的超参数的数目。 k-th神经网络结构在训练数据集上训练后的验证精度为Rk

上面的更新是对我们的梯度的一个无偏估计,但是有一个非常高的方差。为了减少这个估计的方差,我们使用了一个基线函数:

NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING

只要基线函数b不依赖于当前动作,那么这仍然是一个无偏的梯度估计。在这项工作中,我们的基线b是以前架构精度的指数移动平均值。

3.3 通过跳过连接等增加架构复杂性层类型

在3.1节中,搜索空间没有跳跃连接,也没有现代架构中使用的分支层,如GoogleNet和Residual Net。在本节中,我们将介绍一种方法,该方法允许控制器建议跳过连接或分支层,从而扩展搜索空间。

为了使控制器能够预测这种连接,我们使用了一个基于注意力机制的集选择类型注意力(Pointer Net)。在N层,我们添加一个锚点,该锚定点具有N-1个基于内容的sigmoid,以指示需要连接的前几层。每个“sigmoid”都是控制器的当前隐藏状态和以前的N-1锚点的先前隐藏状态的函数:

NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING

其中hj表示第j层anchor处控制器的隐藏状态,其中j的范围为0到N-1。然后,我们从这些sigmoid中取样,以确定将哪些以前的层用作当前层的输入。矩阵Wprev、Wcurr和v是可训练的参数。由于这些连接也由概率分布定义,强化训练方法仍然适用,没有任何重大修改。图4显示了控制器如何使用跳过连接来决定它想要哪些层作为当前层的输入。

NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING

在我们的框架中,如果一个层有多个输入层,那么所有的输入层都连接在深度维度中。跳过连接可能导致“编译失败”,其中一层与另一层不兼容,或者一层可能没有任何输入或输出。为了避免这些问题,我们使用三个简单的技术。首先,如果一个层没有连接到任何输入层,那么图像将被用作输入层。其次,在最后一层,我们获取所有未连接的层输出,并在将最终隐藏状态发送给分类器之前将它们连接起来。最后,如果要连接的输入层有不同的大小,我们用0填充小层,以便连接的层有相同的大小。

最后,在3.1节中,我们并没有预测学习速率,我们也假设架构仅仅由卷积层组成,这也有很大的局限性。可以将学习率添加到预测中。此外,还可以预测池化、局部对比归一化(local contrast
normalization)和batchnorm 。为了能够添加更多类型的层,我们需要在控制器RNN中添加一个附加步骤来预测层类型,然后是与之相关的其他超参数。

了能够添加更多类型的层,我们需要在控制器RNN中添加一个附加步骤来预测层类型,然后是与之相关的其他超参数。