论文:Neural Architecture Search With Reinforcement Learning
链接:https://arxiv.org/abs/1611.01578
代码链接:https://github.com/tensorflow/models
这是ICLR2017的文章,讲述如果用强化学习(reinforcement learning)来学习一个最优的网络结构。这篇文章的搜索方式现在看来较为简单粗暴,没有计算资源支持的话基本上跑不起来。这篇文章(可以结合Figure1看)通过一个controller在搜索空间(search space)中得到一个网络结构(child network),然后用这个网络结构在数据集上训练得到准确率,再将这个准确率回传给controller,controller继续优化得到另一个网络结构,如此反复进行直到得到最佳的结果。原文有一句概括写的不错:In this paper, we use a recurrent network to generate the model descriptions of neural networks and train this RNN with reinforcement learning to maximize the expected accuracy of the generated architectures on a validation set. 所以比较新颖的地方就是如何通过controller得到一个child network。
Figure1解释了如何通过一个controller来搜索最优结构并训练网络和优化controller的过程。可以看出最关键的部分就是controller,而作者的controller采用的就是RNN结构。关于为什么可以用RNN结构做controller来搜索最优结构,作者也给出了解释:Our work is based on the observation that the structure and connectivity of a neural network can be typically specified by a variable-length string. It is therefore possible to use a recurrent network – the controller – to generate such string. 因此和其他超参数优化只能在一个fixed-length space中搜索模型不同的是,这里可以在一个variable-length space中搜索模型。训练这个RNN网络