Neural Architecture Search With Reinforcement Learning

Abstract

  • 神经网络是功能强大且灵活的模型,适用于图像,语音和自然语言理解中的许多困难学习任务。 尽管它们取得了成功,神经网络仍然难以设计。在本文中,我们使用循环网络生成神经网络的模型描述,并通过强化学习训练此RNN,以最大化验证集上生成的体系结构的预期准确性。在CIFAR-10数据集上,我们的方法从头开始,可以设计一种新颖的网络架构,可以在测试集精度方面与人类发明的最佳架构相媲美。我们的CIFAR-10模型的测试错误率为3.65,比使用类似架构方案的先前最先进模型快0.09%和1.05倍。在Penn Tree银行数据集中,我们的模型可以组成一个新的复发细胞,其优于广泛使用的LSTM细胞和其他最先进的基线。 我们的单元在Penn Treebank上实现了62.4的测试集困惑度,这比先前最先进的模型更好3.6。该单元还可以转移到PTB上的字符语言建模任务中,实现了1.214的最先进的复杂度。

Introduction

  • 在过去几年中,深度神经网络在许多具有挑战性的应用中取得了很大成功,例如语音识别(Hinton等,2012),图像识别(LeCun等,1998; Krizhevsky等,2012)和机器翻译。 (Sutskever等,2014; Bahdanau等,2015; Wu等,2016)。 随着这一成功,从功能设计到架构设计的范式转变,即从SIFT(Lowe,1999)和HOG(Dalal&Triggs,2005),到AlexNet(Krizhevsky等,2012),VGGNet(Simonyan& Zisserman,2014),GoogleNet(Szegedy等,2015)和ResNet(He等,2016a)。 虽然它变得更容易,但设计架构仍然需要大量的专业知识并且需要充足的时间。
  • 本文介绍了神经架构搜索,这是一种基于梯度的方法,用于发现良好的架构(参见图1)。 我们的工作基于以下观察:神经网络的结构和连通性通常可以由可变长度的字符串指定。 因此可以使用循环网络 - 控制器 - 来生成这样的字符串。 训练由字符串指定的网络 - “子网络” - 在真实数据上将导致验证集的准确性。 使用此准确度作为奖励信号,我们可以计算策略梯度以更新控制器。 因此,在下一次迭代中,控制器将为具有高精度的架构提供更高的概率。 换句话说,控制器将学习如何随着时间的推移改进其搜索。
  • 我们的实验表明,Neural Architecture Search可以从头开始设计好的模型,这是其他方法无法实现的成就。 在使用CIFAR-10进行图像识别时,神经架构搜索可以找到一种比大多数人类发明的架构更好的新型ConvNet模型。 我们的CIFAR-10型号实现了3.65的测试设置误差,同时比当前最佳型号快1.05倍。 在使用Penn Treebank进行语言建模时,Neural Architecture Search可以设计出一种新的循环单元,它也比以前的RNN和LSTM架构更好。 我们的模型发现的单元在Penn Treebank数据集上实现了62.4的测试集困惑,这比先前的最新技术要好3.6。

Related Work

  • 超参数优化是机器学习中的重要研究课题,并且在实践中被广泛使用。 尽管取得了成功,但这些方法仍然受到限制,因为它们只能从固定长度的空间中搜索模型。 换句话说,很难要求他们生成一个可变长度的配置,指定网络的结构和连接性。 在实践中,如果这些方法提供了良好的初始模型,这些方法通常会更好。 贝叶斯优化方法允许搜索非固定长度的体系结构,但它们不像本文提出的方法那样通用且不太灵活。
  • 另一方面,现代神经进化算法对于组成新模型更灵活,但它们通常在大规模上不太实用。 它们的局限在于它们是基于搜索的方法,因此它们很慢或者需要很多启发式才能很好地工作。
  • 神经架构搜索与程序综合和归纳编程有一些相似之处,即从例子中搜索程序的想法。 在机器学习中,概率程序归纳已经在许多环境中成功使用,例如学习解决简单的问答,对数字列表进行排序 ,只用很少的例子学习。
  • 神经网络搜索中的控制器是自回归的,这意味着它可以根据先前的预测一次预测超参数。 这个想法是从解码器中以端到端的顺序借用到序列学习中。 与序列学习序列不同,我们的方法优化了不可微分量度量,即子网络的准确性。 因此,它类似于神经机器翻译中BLEU优化的工作。 与这些方法不同,我们的方法直接从奖励信号中学习而没有任何监督引导。
  • 与我们的工作相关的还有学习元学习的想法,这是使用在一项任务中学到的信息来改进未来任务的一般框架。 更密切相关的是使用神经网络来学习另一个网络的梯度下降更新的想法以及使用强化学习来找到另一个网络的更新策略的想法。

Methods

  • 在下一节中,我们将首先描述使用循环网络生成卷积体系结构的简单方法。 我们将展示如何使用策略梯度方法训练循环网络,以最大化采样架构的预期精度。 我们将介绍我们的核心方法的几个改进,例如形成跳过连接以增加模型复杂性和使用参数服务器方法来加速训练。在本节的最后一部分,我们将重点介绍生成循环体系结构,这是本文的另一个重要贡献。
  • 在神经网络搜索中,我们使用控制器来生成神经网络的架构超参数。 为了灵活,控制器被实现为递归神经网络。 假设我们想要仅使用卷积层来预测前馈神经网络,我们可以使用控制器将它们的超参数生成为一系列令牌:
  • 在我们的实验中,如果层数超过某个值,则生成架构的过程将停止。 该值遵循我们随着培训的进展而增加的时间表。 一旦控制器RNN完成生成体系结构,就构建并训练具有该体系结构的神经网络。 在收敛时,记录在保持的验证集上的网络的准确性。 然后优化控制器RNN的参数,以便最大化所提出的架构的预期验证精度。 在下一节中,我们将描述一种策略梯度方法,我们用它来更新参数,以便控制器RNN随着时间的推移产生更好的架构。
  • 控制器预测的令牌列表可以被视为动作列表来设计子网络的架构。 在收敛时,该子网络将在保持的数据集上获得准确度. 我们可以使用此精度作为奖励信号,并使用强化学习来训练控制器。 更具体地说,为了找到最佳架构,我们要求我们的控制器最大化其预期奖励,用表示:
  • 由于奖励信号R是不可微分的,我们需要使用策略梯度方法来迭代地更新。 在这项工作中,我们使用Williams(1992)的REINFORCE规则:上述数量的经验近似值为:其中m是控制器在一个批次中采样的不同架构的数量,T是我们的控制器必须预测的超参数的数量,以设计神经网络架构。第k个神经网络架构在训练数据集上训练后达到的验证精度是。上述更新是对我们的梯度的无偏估计,但具有非常高的方差。 为了减少这种估计的方差,我们采用了基线函数:。只要基线函数b不依赖于当前动作,那么这仍然是无偏的梯度估计。 在这项工作中,我们的基线b是先前架构精度的指数移动平均值。
  • 在神经结构搜索中,对控制器参数的每个梯度更新对应于训练一个子网络到收敛。 由于培训儿童网络可能需要数小时,我们使用分布式培训和异步参数更新来加速控制器的学习过程。 我们使用参数服务器方案,其中我们有一个S分片的参数服务器,它存储K个控制器副本的共享参数。 每个控制器副本都采样并行训练的不同子架构。 然后,控制器根据会聚m架构的小批量结果收集梯度,并将它们发送到参数服务器,以便更新所有控制器副本的权重。 在我们的实现中,当其训练超过一定数量的时期时,达到每个子网络的收敛。 这种并行方案总结在图3中。
  • 在3.1节中,这些空间没有跳过连接,或者在现代架构中使用的分支层,例如GoogleNet和Residual Net。 在本节中,我们介绍一种方法,允许我们的控制器提出跳过连接或分支层,从而扩大搜索空间。为了使控制器能够预测这种连接,我们使用了基于注意机制的集合选择型注意。 在N层,我们添加一个锚点,该锚点具有N -1个基于内容的sigmoids,以指示需要连接的先前层。 每个sigmoid是控制器的当前隐藏状态和先前N-1个锚点的先前隐藏状态的函数:
  • 其中表示第j层锚点处控制器的隐藏状态,其中j的范围为0到N -1。 然后,我们从这些sigmoid中进行采样,以确定将哪些先前层用作当前图层的输入。 矩阵是可训练的参数。由于这些连接也是由概率分布定义的,因此REINFORCE方法仍然适用,没有任何重要的修改。 图4显示了控制器如何使用跳过连接来决定它想要哪些层作为当前层的输入。
  • 在我们的框架中,如果一个图层有许多输入图层,则所有输入图层都在深度维度中连接在一起。 跳过连接可能导致“编译失败”,其中一个层与另一个层不兼容,或者一个层可能没有任何输入或输出。 为了解决这些问题,我们采用了三种简单的技术。 首先,如果图层未连接到任何输入图层,则图像将用作输入图层。 其次,在最后一层,我们将所有尚未连接的层输出连接起来并连接它们,然后再将这个最终的隐藏状态发送给分类器。 最后,如果要连接的输入图层具有不同的大小,我们用零填充小图层,以便连接的图层具有相同的大小。最后,在3.1节中,我们不预测学习速率,我们还假设架构仅包含卷积层,这也是相当严格的。 可以将学习率添加为预测之一。 此外,还可以预测体系结构中的池化,局部对比度归一化和批量规范。 为了能够添加更多类型的图层,我们需要在控制器RNN中添加一个额外的步骤来预测图层类型,然后再预测与其相关的其他超参数。
  • 在本节中,我们将修改上述方法以生成重复的单元格。 在每个时间步t,控制器需要找到的函数形式,它将作为输入。 最简单的方法是使,这是一个基本的复发细胞的公式。 更复杂的配方是广泛使用的LSTM复发细胞。
  • 基本RNN和LSTM单元的计算可以概括为以xt和作为输入并将作为最终输出的步骤树。 控制器RNN需要用组合方法(加法,元素乘法等)和激活函数(tanh,sigmoid等)来标记树中的每个节点,以合并两个输入并产生一个输出。 然后将两个输出作为输入馈送到树中的下一个节点。 为了允许控制器RNN选择这些方法和功能,我们按顺序索引树中的节点,以便控制器RNN可以逐个访问每个节点并标记所需的超参数。
  • 受LSTM单元构造的启发,我们还需要单元变量ct-1和ct来表示存储器状态。 为了合并这些变量,我们需要控制器RNN来预测树中哪些节点将这两个变量连接起来。 这些预测可以在控制器RNN的最后两个块中完成。
  • 为了使这个过程更加清晰,我们在图5中展示了一个具有两个叶节点和一个内部节点的树结构的示例。 叶节点由0和1索引,内部节点由2索引。控制器RNN需要首先预测3个块,每个块指定组合方法和每个树索引的激活函数。 之后,它需要预测最后2个块,这些块指定如何将连接到树内的临时变量。 具体而言,根据本例中控制器RNN的预测,将发生以下计算步骤:

Conclusion

  • 在本文中,我们介绍了神经网络搜索,一种使用当前神经网络构成神经网络架构的想法。 通过使用循环网络作为控制器,我们的方法是灵活的,因此它可以搜索可变长度的架构空间。 我们的方法在非常具有挑战性的基准测试中具有很强的经验性能,并为自动发现良好的神经网络架构提供了新的研究方向。 运行控制器在CIFAR-10和PTB上找到的模型的代码将在https://github.com/tensorflow/models上发布。 此外,我们已将使用我们的方法在NASCell下找到的RNN单元添加到TensorFlow中,因此其他人可以轻松使用它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值