BlockQNN:NASNet同期,商汤提出block-wise版的MetaQNN | CVPR 2018

作为 NASNet 的同期论文,BlockQNN 同样地将目光从整体网络转换到了 block-wise,整体思路大概是 MetaQNN 的 block 版,增加了一些细节地小修改。配合 Early Stop Strategy,计算资源十分少,但性能较同期的 NASNet 差点

来源:晓飞的算法工程笔记 公众号

论文: Practical Block-wise Neural Network Architecture Generation

Introduction


  为了让网络搜索更高效,论文提出 block-wise 网络生成方法 BlockQNN,整体的思想跟同期的 NasNet 十分类似,不同点在于这篇论文是基于 Q-learning 进行学习的,可以认为是 MetaQNN 的 block 版。BlockQNN 以 block 为单位进行搜索,每个 block 包含多层,然后再将 block 按预设的框架堆叠成完整的网络,这样不仅能提高搜索的效率,还可以提高搜索结果的泛化能力。
  BlockQNN 主要有以下有点:

  • Effective,自动生成的网络的性能与人工设计的网络相当。
  • Efficient,首个考虑 block-wise 的自动网络生成方法,配合 Early Stop Strategy 仅需要 32GPU3 天。
  • Transferable,CIFAR 上搜索到的架构仅添加些许修改就能迁移到 ImageNet 上。

Methodology


Convolutional Neural Network Blocks

  现代卷积网络大都可以看成是多个相似 block 的堆叠,只是每个 block 的超参数不同。因此,针对 block 的精心设计不仅可以达到更高的准确率,还可以有更好的泛化能力。为此,论文主要针对 block 结构的自动生成。

  CNN 网络的前向推理可以看成一个有向无环图,为了统一,使用网络结构编码(Network Structure Code,NSC)进行表示,如图 2。每个 block 由一组 5-D NSC 向量表示,前 3 个值分别表示层序号,操作类型,核大小,后两个值表示输入对应的层序号,如层包含单个输入,则第二个输入序号为 0。如果层的输出没有作为其它层的输入,则 conate 成最终的输出。这里的卷积操作指的是预激活卷积单元(a Pre-activation Convolutional Cell, PCC),包含 ReLU、卷积以及 BN,这样的设定能减少搜索空间并保持较好的性能。

  基于以上搜索到的 block,将普通的网络转换成对应的 block 版本,CIFAR-10 和 ImageNet 数据机的堆叠网络如图 3 所示,block 内没有下采样模块,下采样直接使用池化层,每个 block 会重复 N 遍来满足不同的要求。如果特征图大小下降了一半,则权重增加两倍。

Designing Network Blocks With Q-Learning

  论文使用 Q-learning 加速搜索,Q-learning 是强化学习的其中一种,目的是选择合适的 action 来最大化累计奖励,包含 agent,states 和 actions。state s\in S代表当前层结构 NSC,action a\in A为后续层结构 NSC 的选择,由于 NSC 合集是有限的,state 和 action 空间也是有限且离散的,保证了搜索空间相对较小。

  状态转移过程(s_t, a(s_t)) \to (s_{t+1})如图 4a 所示,t代表当前层,而图 4b 则是图 4a 的状态转移构建的实际网络。agent 的主要任务是选择 block 的 NSC 结构,block 的结构可以认为是 action 的选择轨迹\tau_{a_{1:T}},比如一连串 NSCs。论文将层选择过程视为马尔科夫决策,假定在某个 block 中表现好的层在别的 block 中也可以表现得不错。

  为了找到最好的结构,agent 需要最大化所有可能路径的回报期望R_{\tau}\mathbb{R}为累计回报。

  通常使用公式 2 的 Bellman’s Equation 进行公式 1 的优化,给予状态s_t \in S以及后续的操作a \in A(s_t),定义最大的总期望回报为Q^*(s_t, a),即 state-action 对的 Q-value。

  由于期望很难直接求得,所以一般采取迭代式 Bellman’s Equation,以经验假设的方式解决公式 2。\alpha为学习率,决定新旧状态的占比,\gamma为折扣率,决定后续回报的权重,r_t为当前状态s_t得到的中间回报,s_T代表最终状态,r_T为对应网络收敛后的验证准确率。

  由于r_t不能显示地计算,这里采用 reward shaping 的方法加速训练,之前的方法比如 MetaQNN 都直接将中间奖励设为零,这会导致 RL 耗时,因为在刚开始的阶段,s_T的 Q-value 会明显高于其它状态(终止层 Q-value 无折扣率,直接是准确率?),导致网络偏向于构建很少层的小 block(倾向于选择终止层)。

  这里对 reward shaping 进行了实验,可以看到使用后能显著提高收敛速度。
  完整的学习过程如图 4c,agent 首先采用一系列结构编码来构建 block 并构建完整的网络,然后训练生成的网络,将验证准确率作为 reward 来更新 Q-value,最后,agent 选择另外的结构编码来获得更好 block 结构。

Early Stop Strategy

  尽管 block-wise 的生成方式能增加搜索速度,但仍然十分耗时,这里采用 early stop strategy 来进一步加速。early stop strategy 可能带来较低的准确率,如图 6 所示,early stop strategy 的准确率明显低于最终的准确率,意味着 early stop strategy 没有完全体现 block 的效果。同时,论文注意到 FLOPs 以及 block 的 density 与最终准确率为负相关的

  基于上面的发现,论文重新定义了 reward 函数,\mu\rho为平衡因子,新的 reward 函数能更好地关联最终准确率。基于 early stop strategy 和较小的搜索空间,仅需要 32 卡搜索 3 天。

Framework and Training Details


Distributed Asynchronous Framework

  论文使用分布式异步框架进行搜索,如图 7 所示,包含三部分:

  • master node: 采样 batch block 结构。
  • controller node: 使用 block 构建完整网络结构,分配给 compute node。
  • compute node: 训练并返回网络的验证准确率。

Training Details

  • Epsilon-greedy Strategy,有\epsilon概率进行随机 action 选取,1- \epsilon概率选择最优 action,\epsilon随训练逐步下降,有助于 agent 平滑地从探索模式转换为榨取模式。
  • Experience Replay,与 MetaQNN 一样,保存结构和对应准确率,在一定区间内直接采样存储的结构进行 agent 训练。

Results


Block Searching Analysis

  这里展示了 Epsilon-greedy Strategy 的效果,在开始榨取模式后,准确率极速提升。

  这里验证 PCC 的作用,可以看到,PCC 的效果十分明显。

Results on CIFAR

Transfer to ImageNet

CONCLUSION


  作为 NASNet 的同期论文,BlockQNN 同样地将目光从整体网络转换到了 block-wise,整体思路大概是 MetaQNN 的 block 版,增加了一些细节地小修改。配合 Early Stop Strategy,计算资源十分少,但性能较同期的 NASNet 差点。



如果本文对你有帮助,麻烦点个赞或在看呗 ~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.