1、概述
- 一些剪枝的操作主要是减少了全连接层的参数,全连接层的参数量占比最多(比如
VGG-16中全连接层操作占了90%,计算量只占了不到1%), 但是主要的计算量集中在卷层操作 - 论文就是提出了对卷积层进行剪枝操作,然后进行
retrain,不会造成稀疏连接(像上篇论文一样,稀疏矩阵操作需要特殊的库等来处理) - 全连接层可以使用平均池化层来代替以减少参数量
2、对Filters进行剪枝,以及Feature maps
2.1 基础(CNN相关内容)
- 设第
i层的卷积层的输入channel有 $n_i$ , $h_i$ 和 $w_i$ 表示输入的特征图feature map的高和宽 - 使用$n_{i+1}$ 个
3D filters$F_{i,j} \in R^{n_i \times k \times k}$, 则卷积操作可以将输入的feature maps$x_i \in R^{n_i \times h_i \times w_i}$ 转化为 $x_{i+1} \in R^{n_{i+1} \times h_{i+1} \times w_{i+1}}$- 关于
CNN的基础不了解的可以查看这里
- 关于
- 卷积操作的运算数量是:$n_{i+1}n_ik^2h_{i+1}w_{i+1}$ (对应到下图的
kernel matrix) - 所以如下图所示,取出一个
feature map可以直接减少$n_ik^2h_{i+1}w_{i+1}$个运算- 同时接下来的
feature map也就没有了,附加移除$n_{i+2}k^2h_{i+2}w_{i+2}$个运算
- 同时接下来的
- 所以减少
m个featuremaps可以减少 $m/n_{i+1}$ 的计算量- 下图的
kernel matrix,一个feature map对应一列,所以是$m/n_{i+1}$
- 下图的
2.2 去除哪些filters (在单层中)
- 向之前的论文介绍的,权重的绝对值越小,则权重的作用也就越小
- [ 假设权重值都在
0附近,进行乘积得到的值很小,所以对结果造成的影响也很小 ] - [ 删除一些冗余的值还有可能防止过拟合 ]
- [ 假设权重值都在
- 本文使用的是
filter的绝对值的和来衡量这个filter的作用,即 $\sum |F_{i,j}|$ , ($l_1$范数)- 选择前
m个最小的绝对值删除 - 文章和随机选择相同数量
的filters和选择最大值的结果比较,此方法最好
- 选择前
VGG-16在Cifar-10数据集上训练得到的卷积层的权重分布情况,可以看出每一卷积层的分布变化还是很大的

2.3 剪枝的敏感度(Sensitivity)
- 就是每一卷积层进行单独剪枝,查看在
validation set上准确度的变化 - 对于
VGG-16, 一些卷积层的filter数量是一样的,所以对于差不多Sensitivity的卷积层,使用相同的比例进行剪枝,而对于Sensitivity比较大的,选择最小的比例进行剪枝或者不进行剪枝

2.4 多层剪枝的策略
- 之前的一些剪枝策略是逐层剪枝,然后进行
retraining,但是这样是非常耗时的 - 两种策略
- 独立剪枝:就是每一层是独立的,然后进行剪枝
- 贪心剪枝:就是考虑到上一层被剪掉的情况
- 如下图,第一种方法就是不考虑已经前面已经移除的
filters(蓝色的),就是黄色的kernel仍然参与计算- 而对于贪心剪枝就不用计算黄色的
kernel了
- 而对于贪心剪枝就不用计算黄色的

3、 Retraining
- 剪枝之后,应该
retraining,(和迁移学习很像,有些fine-tune的意思) - 也是两种策略:
- 一次性剪枝然后
retrain - 逐层剪枝进行
retrain
- 一次性剪枝然后
- 第二种策略结果可能会更好,但是需要更多的
epochs
4、实验结果
- 剪枝之后进行
retrain,在原来的基础之上得到的结果要比完全重新训练得到的结果好

- 和随机剪枝、减去最大值$l_1$范数的
filters的结果比较

5、结论
- 剪枝
filters,减少计算量 - 注意有
Batch Normalization层的对应剪枝后,BN层也要对应删除 - [其实感觉方法挺简单的]
Reference
- https://arxiv.org/abs/1608.08710
- http://lawlite.me/2017/09/07/%E8%AE%BA%E6%96%87%E8%AE%B0%E5%BD%95-DeepCompression-CompressingDeepNeuralNetworksWithPruning-TrainedQuantizationAndHuffmanCoding/
- http://blog.csdn.net/u013082989/article/details/53673602
- 本文链接: http://lawlite.me/2017/09/10/论文记录-PruningFiltersForEfficientConvNets/
-
版权声明:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议
。转载请注明出处!