自学网络结构(一):Neural Architecture Search With Reinforcement Learning
基于强化学习的神经网络架构搜索
以下是改写后的文本
图1详细说明了如何利用该控制器来寻找最优架构并训练网络的同时实现对控制器自身的优化过程。由此可见其中最为关键的就是控制器本身而作者所提出的Controller采用的就是基于RNN架构的设计方案。关于为何能够使用RNN架构构建Controller以及用于寻优的原因作者给出了清晰的解释即我们的研究基础在于观察到神经网络的架构及其连接模式通常可以用一种可变长度字符串来进行描述因此我们可以利用循环神经网络即Controller来生成这样的架构描述。与传统的固定长度空间优化不同的是在这里我们可以在可变长度的空间内进行寻优过程。为了实现这一目标我们需要运用梯度下降算法来进行相应的参数优化工作。

掌握了controller之后,则需深入了解其优化机制的具体流程。参考图1可知:当使用字符串指定的网络结构进行实际数据训练时,在验证集上将获得一定的准确率。将此准确率作为奖励信号使用,则可计算政策梯度以更新控制器。由此,在后续迭代中,控制器将赋予更高概率的架构那些在训练中表现出高准确率的部分。The essence of this mechanism lies in... The controller thus learns to enhance its search efficiency progressively.
Figure 2 illustrates how the controller obtains a child network diagram. In this study, the search space encompasses each layer's filter size and number, as well as stride's numerical values, etc.

这种搜索空间主要局限于传统的网络架构元素,并未包含如GooleNet和ResNet等具有分支层(branching layers)和跳跃连接(skip connections)的架构。因此作者进一步优化了网络架构设计,在第N层中引入了一个锚点(anchor point),并在其上附加了N-1个基于内容的sigmoid单元(content-based sigmoid units),以指示需要与其相连的上一层(previous layers)。具体公式如下:

where hj denotes the hidden state of the controller at an anchor point corresponding to the j-th layer, with j ranging from 0 to N-1. The parameters W_prev, W_curr, and v are trained by the model. Thus, a controller that incorporates skip connections would resemble Figure 4.

但是Skip connection可能会带来一个潜在的问题:编译错误。这个比较笼统的概念具体包括一些问题比如某些层缺乏输入或输出以及特征图尺寸不一等情况。具体解决方案作者提出了以下三点:
- 当某一层没有连接到任何输入层时,则将图像用作该输入层。
- 在最终层时,我们取所有尚未连接的所有层输出,并在传递最终隐藏状态到分类器之前将其拼接在一起。
- 如果要被拼接的输入层尺寸不同,则我们将较小尺寸的层用零填充以便于拼接后的各层尺寸保持一致。
此外,在作者设计的框架中:如果某一层拥有多个输入层,则这些输入层将在深度维度上进行拼接。
那么,在优化controller达到何种程度时才能获得一个网络结构?这一过程对应于图1中从红色矩形框至蓝色矩形框所展示的路径。研究发现,在层数超过某个固定数值时(此处数值会随着controller的持续训练而逐步提升),生成网络的过程就会停止下来。该增长策略在CIFAR-10数据集上始于第6层,在每搜索1600个样本时增加2层。一旦controller生成了一个网络结构(文中将其命名为child network),该结构便会被用于在训练集上进行训练,并在验证集上计算出准确率指标。随后将该准确率反馈给controller进行评估,并通过强化学习方法对其进行持续优化(即更新其参数)。值得注意的是,在这一过程中强化学习采用了基于策略梯度的方法来更新controller的参数。
现在将介绍如何生成Controller。Controller属于 recurrent neural network (RNN)架构中的一种关键组件。以下这个数学表达式代表了最基础的 RNN 层结构:next\_h = \sigma(W_{hx}x_t + U_{hh}h_t + b_h)

因为RNN和LSTM单元的基本计算可以被概括为一种树状结构,在这种架构中xt与ht-1作为输入能够生成ht作为最终输出。因此,在图5中描述生成recurrent cell过程时也采用了树状结构。左边部分展示了一个包含两个叶节点(编号为0和1)以及一个内部节点(编号为2)的结构示意图。研究者在实验过程中采用了8个叶节点,并可在论文附录A中找到详细信息

如Figure5所示的内容非常丰富,在其中分为五个小区域分别对应下面介绍的五个步骤。这些步骤直接构成了一个Recurrent cell,并进一步形成了Controller的核心机制,其核心机制即为控制器的搜索空间。

实验结果:
文章主要包含用于图像分类的关键数据集CIFAR-10和用于语言处理任务的重要数据集Penn Treebank。接下来将重点介绍CIFAR-10数据集上的具体实验结果,并简要提及更多相关细节以供参考。
让我们了解用于CIFAR-10任务的搜索空间情况:该研究聚焦于卷积神经网络架构的设计与优化(Nair & Hinton, 2010)。在此框架下,我们采用了批归一化技术(Ioffe & Szegedy, 2015),并在各层之间加入了跳跃连接(Section 3.3)。具体而言,在每一个卷积层中,控制器RNN需要从候选参数中选择合适的滤波器高度(选项为[1, 3, 5, 7])、宽度(选项为[1, 3, 5, 7])以及滤波器数量(选项为[24, 36, 48, 64])。此外,在步长设置上,我们实施了两组不同的实验方案:一组固定步长为1;另一组则允许控制器自适应地预测步长值(取值范围为[1, 2, 3])。
另外,在学习率(learning rate)、权重衰减(weight decay)、批归一化的小参数(batchnorm epsilon)以及确定学习率衰减的哪个epoch阶段(what epoch to decay the learning rate)这几个方面,则采用网格搜索方法进行优化(grid search)。经过上述优化后,则得到了表1中的结果(Table1)。虽然如此但机器资源确实让人倍感珍惜。

在Table 1中列出的第四个结构:Neural Architecture Search v1 without stride or pooling的架构如Figure 7所示。该架构令人觉得有些复杂。值得注意的是以下几点:发现靠近输出层(即softmax层)时卷积核尺寸有所增加;整体而言,观察到许多卷积核呈现出非方形布局;此外还发现部分二维卷积层采用了不规则形状而非标准正方形设计。这些发现可能为人工设计深度神经网络提供参考依据。

