CVPR2019 oral
TL;DR
这篇文章提出了一种基于几何中位数的卷积核修剪方法,核心思想是找出那些信息冗余且可以被替代的卷积核进行修剪。
Algorithm
作者提出一种基于几何中位数的卷积核修剪方法,不同于以往的基于核范数指标的修剪方法,作者提出一种新的指标,几何中位数。该指标旨在找出各层中卷积核之间的共同信息,然后将冗余可替代的卷积核修剪掉。
首先,作者对当前的基于核范数指标的剪枝方法进行分析,指出这种指标的有效性有两个并不总是能满足的依赖:1)卷积核的范数偏差应比较大;2)卷积核的最小范数应该尽可能小。如下图所示:
上图的实验结果反映了卷积核范数分布的两个问题:1)实际中,网络各层中,卷积核的范数之间偏差较小。这种情况下,卷积核的范数分布太密集,导致很难选出合适的阈值来辨别出更重要的卷积核。2)范数的最小值较大。具有相对较小norm的filters,虽然根据范数规则的指标来看,它们相对不太重要,但是它们仍然在网络中有重要贡献。 这两个问题都是不利于基于范数规则的剪枝的。
然后,为了摆脱这些基于范数的方法的不足,作者提出了基于几何中位数的方法,并给出了理论推导。
首先给出这个方法的理论前提:由于几何中位数是欧氏空间中数据中心性的经典鲁棒估计,我们使用几何中位数来得到单个卷积层中各个卷积核的公共信息。某卷积层的几何中位数定义如下:
如果在该层中,某些卷积核具有核几何中位数相同或相似的值,则这些卷积核便可以被该层中的其他卷积核所取代,因此,修剪掉它们对网络的性能不会产生不良影响。这些卷积核的定义如下:
因为几何中位数在计算几何中是一个重要的问题,对它的估计一般比较耗时。在本文这种情况下, 因为最后的一些点事一列已知的点(即该层中的候选滤波器),因此该问题可以被简化。下面作者进行了问题的简化。最后简化得到:
这表明几何中位数附近的filters可以被其他层取代,然后通过fine-tune,少量丢失的信息可以恢复。(最终还是要进行fine-tune,所以这篇文章的novelty就在于提出了一个新的筛选指标,修剪流程和之前的流程完全相同。)
Experiments
实验部分和以往的模型压缩方面文章一样,分别在cifar10和imagenet上进行测试。
1)resent在cifar10上的修剪效果。
2)resnet在imagenet上的效果
3)vgg16在cifar10上的修剪效果
Thoughts
感觉这篇文章的作者比较会写,novelty并不算高。其novelty主要在于提出了一个新的筛选指标-几何中位数,然后加了求该指标理论推导,其他的如修剪流程和之前的流程完全相同,还是传统的基于规则的剪枝方法。