强化学习用于 深度神经网络架构搜寻

论文:NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING

随着深度神经网络在各应用场景上大放异彩,如何自动搜索优秀的深度网络架构以及超参,也成为了一个热门研究点。本文介绍的论文就是通过强化学习,来进行深度网络的架构搜索。

强化学习用于 深度神经网络架构搜寻_第1张图片

全文的整体概览如下图所示,一个基于RNN的controller用于搜索和生成架构,然后使用强化学习中的policy gradient 方法来更新controller中的参数,这里把架构运行的accuracy作为reward

强化学习用于 深度神经网络架构搜寻_第2张图片

3.1 GENERATE MODEL DESCRIPTIONS WITH A CONTROLLER RECURRENT NEURAL
NETWORK

文章首先介绍了如何通过RNN来生成神经网络的超参,这里举了一个例子,想要生成一个只有卷积层的线性神经网络的超参,可以使用如下图所示的架构,即简单粗暴的把每一层所有的超参用rnn串联在一起。从layerN-1到layerN到LayerN+1,直到达到预先设定好的层数,一个简单粗暴的神经网络就生成好了。神经网络拿去跑一下,得到accuracy,accuracy作为reward,用来更新这个rnn网络,更新方法就是经典的policy gradient 方法,公式在下面,就不赘述了。

强化学习用于 深度神经网络架构搜寻_第3张图片

文中还提出了一种平行异步更新的方法,来加速训练过程,即同时并行训练多个controller,但每次参数更新都是共享的

强化学习用于 深度神经网络架构搜寻_第4张图片

3.3   INCREASE ARCHITECTURE COMPLEXITY WITH SKIP CONNECTIONS AND OTHER  LAYER TYPES

很显然,大部分优秀的的神经网络,不会像上面的例子一样简单粗暴,只有卷积层,还没有分支。因此文章接下来提出了在架构中加入分支点的方法,即在rnn网络中,为每个layer加一个AnchorPoint层,

强化学习用于 深度神经网络架构搜寻_第5张图片

每一层Layer的Anchor Point层都和之前所有Layer的AnchorPoint连接了起来

这里hi是LayerN的AnchorPoint层的输出,而hj是前面的Layer的AnchorPoint的输出,(即从Layer0到LayerN-1),而当前层要不要把前面的第j层作为输入,就取决于上面的公式,其中Wprev和Wcurr都是可学习的。

3.4     GENERATE RECURRENT CELL ARCHITECTURES

除了上述插入分支的方法,文章还提出了另一种方法,即预先定义好一个结构树,rnn网络依次对树中的每一个块进行搜索,下图是一个简单的只有两层分支的树,及其生成的神经网络架构示意图。仿照LSTM的结构,在这样一个分支单元中,除了前面传递上来的隐参数ht-1,新输入xt,还加入了一组变量ct表示这一单元的memory states

强化学习用于 深度神经网络架构搜寻_第6张图片

这一方法,相比于3.3中的方法,可以学习到更复杂的架构,但搜索空间也更大

4 EXPERIMENTS AND RESULTS

文章最后对3.3 ,3.4中的两种方法都进行了测试,其中3.3中的方法在CIFAR-10 数据集上进行了测试

强化学习用于 深度神经网络架构搜寻_第7张图片

3.4中的方法在Penn Treebank dataset上进行了测试(一个经典的自然语言数据集)

强化学习用于 深度神经网络架构搜寻_第8张图片

你可能感兴趣的:(强化学习用于 深度神经网络架构搜寻)