Practical Block-wise Neural Network Architecture Generation
在模型搜索方面,当前的研究遇到了很多挑战
- 神经网络经常包含上百个卷积层,每一层保护很多的选择和超参数,因此搜索空间就很大,导致需要的计算量非常大
- 一种设计好的网络一般只适用于一类任务,无法迁移学习
这篇论文就提出了一种新的快速的Q-learning,用于解决上述问题,称为BlockQNN。
如下图,右边红色是本文提出的block:
BlockQNN
作者使用的是 Q-learning,采取了DQN中的memory replay, -greedy 搜索策略来进行搜索。除此之外,使用early-stopping来缩短训练的时间。
Methodology
卷积网络块(Convolutional Neural Network Blocks)
首先作者使用了一种新的表示层结构的方法:Network Structure Code如下表:
每一个block由一组5维向量表示,其中向量的前三个数分别表示: layer index, operation type, kernel size。后两个是predecessor parameters用于指示该层前一层的位置。如下图:
所有没有下一层的层会被连接起来作为输出层,并且每一个卷积层都指三个部分的组合:ReLU, Convolution, Batch Normalization。
使用上面描述的block,可以stack起来作为整个网络的结构,也就是连接起来。
Designing Network Blocks With Q-Learning
使用Q-learning来进行模型搜索,其中 状态 表示为前面所说的NSC,一个5维的向量。动作表示的是下一个层的选择,状态转移用下图a来表示
图b是一个block的例子。
block的结构可以看作是 action 选择的轨迹。也就是一连串的NSC。用于表示reward的公式为
Early Stop Strategy
由于整个训练非常费时,作者考虑采用early-stopping,但是early-stopping会带来精度的损失。因此设计了一个新的reward。首先,定义几个概念:
FLOPs:表示block的计算复杂度
Density: 表示一个block中的边除以点
由于作者观察到,FLOPs和Density与对应block的精度呈负相关,因此,重新定义reward公式如下:
Distributed Asynchronous Framework
作者使用了分布式训练来加快速度,分布式框架采用的是参数服务器:parameter-server。更新采用异步更新,大体思路:每一个工作节点计算一个block构建的网络,返回validation accuracy,之后更新agent。
Training Details
- 作者使用了-greedy的策略来进行空间的探索,随着训练迭代次数增加,作者逐步降低。
- Experience Replay。每个训练回合,agent会选择64个blocks和它们的validation accuracies来进行Q-value的更新
note:更多细节请参考论文
网友评论