这是一篇2019年的CVPR,其工作十分有趣!笔者下面带大家简单地看看这篇文章:

论文地址:https://arxiv.org/abs/1812.04210

1、摘要

模型压缩研究领域中有两种热门的方法:量化和剪枝,这些都在我的博客中讲过,特别是剪枝。在量化过程中,有一种特别极端的方法,1bit的二值量化。对于一个二值网络而言,其本身就是“压缩”的。这篇文章致力于用其提出的一种bottom-up和layer-wise的剪枝方法再次压缩已经“压缩”后二值网络——这是没有人做过的。

2、简介

这篇文章提出了一种主-次网络的剪枝方法。主网络用于学习特征,而次网络负责学习剪枝(相当于filter选择器),这种方法的特点是:

  • 基于非贪心学习算法而不是某种准则
  • 主-次网络这一创新的结构
  • 自上而下,逐层裁剪

上面三点既保证剪枝率也未让精度有过多的损失。

3、方法

2019 CVPR: A main/subsidiary network framework for simplifying binary neural networks

其算法如下:

  1. 初始化次网络
  2. 固定次网络,并从头开始训练主网络
  3. 从第一层二值网络开始,我们进行如下的裁剪:
  • 变换主网络的**函数,并根据所定义的损失函数训练某一层(设为第 i 层)副网络
  • 固定次网络,并固定主网络的1到i-1层,从头训练index大于等于i的层。注意这首前面的层是已经被这样训练和裁剪过的。

训练次网络的损失函数由三部分组成:

2019 CVPR: A main/subsidiary network framework for simplifying binary neural networks

  • 第一部分是常用的针对目标识别的交叉熵。
  • 第二部分是L1正则化,用于减少网络的参数量和防止过拟合。
  • 第三部分是蒸馏loss,其定义在Hinton的2015年的一篇论文:Distilling the Knowledge in a Neural Network,论文地址https://arxiv.org/abs/1503.02531

4、实验

2019 CVPR: A main/subsidiary network framework for simplifying binary neural networks

从给出的实验结果来看,在ImageNet数据集上,ResNet18被裁剪了21.4%,准确度反而上升了0.15%。这证明了这种方法的可行性。

5、细节

  • 学习率很重要,次网络需要更大的学习率:一种可能的解释是,二元神经网络的高维流形的解空间比全精度网络更离散,因此子系统很难从局部最优点跳到更好点的分量。此外,在二进制方案中,较大的学习速率会增加权重值变化的频率。我们的动机是使用可学习的子组件来近似详尽的搜索,因此使用更大的学习速率将使子组件更积极地“搜索”。

  • 参数的初始化并不敏感

6、总结

很优秀的文章!值得进一步研究!

相关文章: