Practical Block-wise Neural Netw

2018-08-21  本文已影响0人  Junr_0926

Practical Block-wise Neural Network Architecture Generation

在模型搜索方面,当前的研究遇到了很多挑战

  1. 神经网络经常包含上百个卷积层,每一层保护很多的选择和超参数,因此搜索空间就很大,导致需要的计算量非常大
  2. 一种设计好的网络一般只适用于一类任务,无法迁移学习
    这篇论文就提出了一种新的快速的Q-learning,用于解决上述问题,称为BlockQNN
    如下图,右边红色是本文提出的block:
    BlockQNN
    作者使用的是 Q-learning,采取了DQN中的memory replay, \epsilon-greedy 搜索策略来进行搜索。除此之外,使用early-stopping来缩短训练的时间。

Methodology

卷积网络块(Convolutional Neural Network Blocks)

首先作者使用了一种新的表示层结构的方法:Network Structure Code如下表:

NSC

每一个block由一组5维向量表示,其中向量的前三个数分别表示: layer index, operation type, kernel size。后两个是predecessor parameters用于指示该层前一层的位置。如下图:

NSC

所有没有下一层的层会被连接起来作为输出层,并且每一个卷积层都指三个部分的组合:ReLU, Convolution, Batch Normalization
使用上面描述的block,可以stack起来作为整个网络的结构,也就是连接起来。

Designing Network Blocks With Q-Learning

使用Q-learning来进行模型搜索,其中 状态s\in S 表示为前面所说的NSC,一个5维的向量。动作a \in A表示的是下一个层的选择,状态转移(s_t, a(s_t))\rightarrow (s_{t+1})用下图a来表示

Q-learning
图b是一个block的例子。
block的结构可以看作是 action 选择的轨迹。也就是一连串的NSC。用于表示reward的公式为 R_{\tau} = E_{P(\tau_{a_{1:T}})}[R]

Early Stop Strategy

由于整个训练非常费时,作者考虑采用early-stopping,但是early-stopping会带来精度的损失。因此设计了一个新的reward。首先,定义几个概念:
FLOPs:表示block的计算复杂度
Density: 表示一个block中的边除以点
由于作者观察到,FLOPs和Density与对应block的精度呈负相关,因此,重新定义reward公式如下:
reward = ACC_{EarlyStop} - \mu log (FLOPs) - \rho log (Density)

Distributed Asynchronous Framework

作者使用了分布式训练来加快速度,分布式框架采用的是参数服务器:parameter-server。更新采用异步更新,大体思路:每一个工作节点计算一个block构建的网络,返回validation accuracy,之后更新agent。

Training Details

note:更多细节请参考论文

上一篇下一篇

猜你喜欢

热点阅读