论文笔记:Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration

时间:2024-03-26 13:36:13

Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration

论文地址:https://arxiv.org/abs/1811.00250?context=cs

卷积神经网络通常通过更深和更宽的结构实现了更好的性能,但是当神经网络需要部署到移动设备时,神经网络需要的资源远远超过了移动设备的限制。例如,ResNet-152拥有超过6000万个参数,需要231MB存储空间;此外,它还需要超过380MB的内存和11.3亿浮点运算(在CPU上耗时6秒钟)来处理单张图像。因此,通过各种方法压缩模型来满足移动设备是非常有必要的。
本论文是使用网络剪枝来压缩模型,更具体的说是一种滤波器剪枝方法,基于几何中心的滤波器剪枝实现网络的加速。

背景

论文笔记:Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration
上图是典型的滤波器剪枝的方法。现有的方法大都是基于范数的标准进行剪枝。小范数不重要,认为滤波器的范数(p-norm)越小,携带的信息越少,于是对网络贡献越小,那么这些滤波器可以去掉而不会严重影响网络的性能。于是我们根据滤波器的p-norm进行重要性排序,规定一个阈值,并且删除p-norm小于阈值的滤波器。

基于范数标准的分析

论文笔记:Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration
(1)the norm deviation of the filters should be large;
(2) the minimum norm of the filters should be small.

V也就是这个浅蓝色区域是一种理想的滤波器范数分布,而基于这种范数标准的剪枝实际隐含了两个条件:一是范数值的标准差尽可能的大,也就是分布相对稀疏,这样的目的是可以更容易的找到一个阈值进行剪枝;第二个条件是小范数的值应该尽可能的小,理想状况下是趋近于0,这样能保证小范数的滤波器对网络的贡献很小,去掉他对模型的影响不大。
但是实际的滤波器范数分布也会出现不满足上述条件的情况。
论文笔记:Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration
如这两幅图所示,浅蓝色区域仍是理想情况下的范数分布,绿色区域是实际的滤波器范数分布。a图我们看到绿色区域这种情况下的分布范数的标准差太小,这样出现的问题是很多滤波器有相似的重要性,很难确定一个合适的阈值(A small norm deviation leads to a small search space, which makes it diffcult to find an appropriate threshold to select fifilters to prune.) b图我们看到最小范数的值仍然很大,也就是说他对网络的贡献度不能被忽视。

作者为了证明在有些场景中上面提到的两个条件并不能很好的满足,做了非常充分的实验证明,分别用resnet110在cifar10和resnet18在ILSVRC2012数据集上进行实验:
论文笔记:Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration
绿色小竖线表示范数的观察值,蓝色线表示核的分布预测。b图我们看到在resnet110的第一层有大量的滤波器,它们的范数集中在10×6的量级上。c图展示滤波器的范数范围跨度只有0.3,远远小于a图第一层范数1.7的跨度,这说明同一个网络不同层的滤波器范数有的标准差较大,有的就偏小。同样的看g图,resnet18最后一层的滤波器最小范数大约是0.8,与e图展示的第一层比起来并没有接近0,通过分析实际的预训练网络,发现这些网络确实出现了上述的情况。

基于几何中位数的滤波器剪枝方法

作者分析了基于范数标准的剪枝是怎么一会事以及存在的问题,之后,作者摒弃了这种基于范数标准剪枝的方法,提出一种基于几何中心的滤波器评价指标。在某一层中,从全局考虑所有filter的关系。

这种方法的提出灵感来源于几何中心的思想。什么是几何中心?
就是在一个d维的空间中,给定一个点集,a1,a2,a3…an,在该空间中找到一个点x*,使得该点到各个点的距离和最小,x就是这个d维空间的几何中心。
论文笔记:Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration
基本思想:几何中心是对于欧几里得空间的点的中心的一个估计。受此启发,作者把滤波器抽象成欧氏空间中的点,对于网络中的每一层,在该层的滤波器空间中,计算GM,也就是第i层的数据中心。如果某个滤波器接近于这个GM,可以认为这个滤波器的信息跟其他滤波器重合,甚至是冗余的,于是可以去掉这个滤波器而不对网络产生大的影响。去掉它后,它的功能可以被其他滤波器代替。
接下来,我们分析一下,针对某一层作者是如何得到该层的数据中心,沿用求取普通几何中心的思想。
论文笔记:Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration
归根结底,作者是想在某一层中找到与几何中心xGM相近的滤波器,然后将他们剪枝。为了方便求解,作者假设第i层的几何中心就位于第i层的滤波器中,因为真实目的是要找到与几何中心最近的滤波器。
此时(2)的优化问题就变为,从第i层中所有的滤波器中寻找一个filter,确保其与剩余的filters的距离之和最小。
论文笔记:Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration
论文中的公式5-9看起来很混乱,其实,这一部分就想证明一点,在计算几何中位数时,包不包含Fi,x
对最后的结果没有影响。为了不这么抽象,我用一个形象的例子给大家说明以下这部分想要证明的东西,说实话这部分的证明内容并不是很有必要。
1、2、3的几何中位数是2,如果计算时不考虑2本身,那么1、3计算得到的中位数还是2,5-9公式就是想证明这样一个思想。
这是基于几何中心进行滤波器剪枝方法的一个算法流程:
论文笔记:Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration

实验

论文笔记:Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration
论文笔记:Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration
论文笔记:Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration
参考:https://cloud.tencent.com/developer/article/1442535