论文记录-Pruning Filters For Efficient ConvNets
Posted 莫失莫忘Lawlite
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文记录-Pruning Filters For Efficient ConvNets相关的知识,希望对你有一定的参考价值。
1、概述
- 一些剪枝的操作主要是减少了全连接层的参数,全连接层的参数量占比最多(比如
VGG-16
中全连接层操作占了90%
,计算量只占了不到1%
), 但是主要的计算量集中在卷层操作 - 论文就是提出了对卷积层进行剪枝操作,然后进行
retrain
,不会造成稀疏连接(像上篇论文一样,稀疏矩阵操作需要特殊的库等来处理) - 全连接层可以使用平均池化层来代替以减少参数量
2、对Filters
进行剪枝,以及Feature maps
2.1 基础(CNN
相关内容)
- 设第
i
层的卷积层的输入channel
有 ni , hi 和 wi 表示输入的特征图feature map
的高和宽 - 使用
ni+1
个
3D filters
Fi,j∈Rni×k×k , 则卷积操作可以将输入的feature maps
xi∈Rni×hi×wi 转化为 xi+1∈Rni+1×hi+1×wi+1
- 关于
CNN
的基础不了解的可以查看这里
- 关于
- 卷积操作的运算数量是:
ni+1nik2hi+1wi+1
(对应到下图的
kernel matrix
) - 所以如下图所示,取出一个
feature map
可以直接减少 nik2hi+1wi+1 个运算
- 同时接下来的
feature map
也就没有了,附加移除 ni+2k2hi+2wi+2 个运算
- 同时接下来的
- 所以减少
m
个featuremaps
可以减少 m/ni+1 的计算量
- 下图的
kernel matrix
,一个feature map
对应一列,所以是 m/ni+1
- 下图的
2.2 去除哪些filters
(在单层中)
- 向之前的论文介绍的,权重的绝对值越小,则权重的作用也就越小
- [ 假设权重值都在
0
附近,进行乘积得到的值很小,所以对结果造成的影响也很小 ] - [ 删除一些冗余的值还有可能防止过拟合 ]
- [ 假设权重值都在
- 本文使用的是
filter
的绝对值的和来衡量这个filter
的作用,即 ∑|Fi,j| , ( l1 范数)
- 选择前
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
,在原来的基础之上得到的结果要比完全重新训练得到的结果好
- 和随机剪枝、减去最大值
l1
范数的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
以上是关于论文记录-Pruning Filters For Efficient ConvNets的主要内容,如果未能解决你的问题,请参考以下文章
论文记录-Deep Compression:Compressing DeepNeural Networks With Pruning, Trained Quantization And Huffman
论文记录-Deep Compression:Compressing DeepNeural Networks With Pruning, Trained Quantization And Huffman
论文阅读 | COMPRESSING BERT: STUDYING THE EFFECTS OF WEIGHT PRUNING ON TRANSFER LEARNING
GNN论文笔记: Graph Neural Networks with convolutional ARMA filters