Abstract
以前的工作使用“较小范数不太重要”的标准来修剪卷积神经网络中具有较小范数值的滤波器。本文分析了这种基于范数的准则,指出其有效性取决于两个不总是满足的要求:(1)滤波器的范数偏差应该很大;(2)滤波器的最小范数应该很小。为了解决这个问题,我们提出了一种新的滤波剪枝方法,即基于几何中值(FPGM)的滤波剪枝,来压缩模型而不考虑这两个要求。与以前的方法不同,FPGM通过修剪冗余过滤器来压缩CNN模型,而不是那些“相对不太重要”的过滤器。当应用于两个图像分类基准时,我们的方法验证了它的有用性和优势。值得注意的是,在CIF AR-10上,FPGM在ResNet-110上减少了52%以上的浮点运算,相对精度提高了2.69%。此外,在ILSVRC2012上,FPGM在ResNet101上减少了超过42%的浮点运算,而没有前5名的精度下降,这提高了最先进的水平。
GitHub:
https://github.com/he-y/filter-pruning-geometric-median
1. Introduction
深层神经网络更深更广的体系结构带来了计算机视觉任务的卓越性能[6,26,45]。然而,它们也导致了极其昂贵的计算成本,并使得在移动设备上部署模型变得困难,如果不是不可能的话。即使是最新的高效率架构,如剩余连接[12]或初始模块[34],也有数百万个参数需要数十亿次浮点运算(FLOPs) [15]。
因此,有必要获得计算成本相对较低但精度较高的深层CNN模型。

修剪的最新发展可分为两类,即权重修剪[11,1]和过滤修剪[21,39]。权重修剪直接删除过滤器中的权重值,这可能会导致非结构化稀疏性。这种不规则的结构使得利用高效的基本线性代数子程序库变得困难[25]。相比之下,过滤器修剪直接丢弃整个选定的过滤器,并留下具有规则结构的模型。因此,为了加速网络和减小模型尺寸,过滤器修剪是更优选的。
目前的实践[21,38,15]通过遵循“较小范数不太重要”的标准来执行过滤器修剪,该标准认为具有较小范数的过滤器由于其不太重要而可以被安全地修剪。如图1(a)的右上角所示,在计算模型中过滤器的规范之后,使用预先指定的阈值T来选择其规范小于它的过滤器。
然而,如图1(b)所示,利用这个“较小的规范不太重要”的标准有两个先决条件。第一,过滤规范的偏差应该是显著的。这一要求使得阈值T的搜索空间足够宽,因此分离那些需要修剪的过滤器将是一项简单的任务。第二,那些可以删减的滤波器的范数应该任意小,即接近于零;换句话说,具有较小规范的过滤器被期望对网络作出绝对小的贡献,而不是相对小但肯定大的贡献。令人满意地满足这两个要求时的理想范数分布如图1中的蓝色曲线所示。不幸的是,根据我们的分析和实验观察,这并不总是正确的。
为了解决上述问题,我们提出了一种新的滤波修剪方法,称为几何中值滤波修剪(FPGM)。与以前修剪贡献相对较小的过滤器的方法不同,FPGM选择贡献最可替换的过滤器。具体来说,我们计算同一层内滤波器的几何中值(GM) [8]。根据遗传算法的特点,它附近的滤波器可以用剩余的滤波器来表示。因此,修剪这些过滤器不会对模型性能产生实质性的负面影响。请注意,FPGM没有使用基于规范的标准来选择要修剪的过滤器,这意味着即使在未能满足基于规范的标准的要求时,其性能也不会恶化。
我们有三个贡献:
(1)我们分析了以前工作中使用的基于规范的准则,它删减了相对不太重要的过滤器。我们详细阐述了导致其局限性的两个基本要求;(2)我们提出FPGM剪枝包含冗余信息的最可替换的过滤器,当基于规范的准则失败时仍能获得良好的性能;(3)对两个基准的广泛试验证明了FPGM的有效性和效率。
2. Related Works
以往大多数关于加速CNNs的工作大致可以分为四类,即矩阵分解[42,35]、低精度权重[44,43,32]、知识提取[17,19]和剪枝。基于剪枝的方法旨在去除神经网络中不必要的连接[11,21,24]。本质上,权重修剪总是导致非结构化模型,这使得部署高效的BLAS库变得困难,而过滤器修剪不仅减少了设备上的存储使用,而且降低了计算成本以加速推理。我们可以根据训练数据是否用于确定被修剪的过滤器,将过滤器修剪方法大致分为两类,即数据相关的和数据无关的过滤器修剪。与数据无关的方法比与数据相关的方法更有效,因为训练数据的利用是计算消耗。
Weight Pruning.。最近的许多工作[11,10,9,36,1,15,41,4]集中在修剪过滤器的细粒度权重。例如,[11]提出了一种迭代方法来丢弃其值低于预定阈值的小权重。[1]将修剪公式化为在满足修剪成本条件的同时找到最小化损失的权重的优化问题。
Data Dependent Filter Pruning 一些过滤器修剪方法[23,25,16,27,7,33,39,37,46,14,18,22]需要利用训练数据来确定被修剪的过滤器。[25]采用下一层的统计信息来指导过滤器的选择。[7]旨在通过最小化训练集样本激活的重构误差来获得分解。[33]提出了一种固有的数据驱动方法,该方法使用主成分分析来指定应该保留的能量比例。[37]将子空间聚类应用于特征映射,以消除卷积滤波器中的冗余。
Data Independent Filter Pruning.与我们的工作同时,已经探索了一些数据独立的过滤器修剪策略[21,15,38,47]。[21]使用一个“1”标准来删减不重要的过滤器。[15]建议用“2范数”标准选择过滤器,并以软方式删减那些选择的过滤器。[38]提出通过加强批量标准化层的缩放参数的稀疏性来修剪模型。[47]在过滤器上使用光谱聚类来选择不重要的过滤器。
据我们所知,只有一个先前的工作重新考虑了较小的规范不太重要的标准[38]。我们希望强调我们与这种方法相比的优势如下:(1) [38]更注意在批处理规范化操作符中对缩放参数实施稀疏性,这对于没有批处理规范化的结构是不友好的。我们的方法不受这一限制。(2)选择修剪通道后,[38]需要微调以减少性能下降。然而,我们的方法结合了修剪操作和正常的训练程序。因此,不需要额外的微调。(3)[38]需要计算比例因子的梯度;因此,大量的计算成本是不可避免的,而我们的方法可以在不计算比例因子梯度的情况下加速神经网络。
4. Experiments
我们根据两个基准评估FPGM的单分支网络(VGGNet [31])和多分支网络(ResNet):CIFAR-10[20]和ILSVRC-2012 [29]3。CIFAR-10 [20]数据集包含10个不同类别的60,000幅32 × 32彩色图像,其中包括50,000幅训练图像和10,000幅测试图像。ILSVRC2012 [29]是包含128万个训练图像和1000个类的50k个验证图像的大规模数据集。
4.1. Experimental Settings
Training setting。在CIFAR-10上,参数设置与[13]相同,训练计划与[40]相同。在ILSVRC-2012实验中,我们使用了与[12,13]相同的默认参数设置。ILSVRC-2012的数据论证策略与PyTorch [28]官方示例相同。我们分析了从零开始和预先训练的模型之间的区别。为了从头开始修剪模型,我们使用正常的训练时间表,而没有额外的微调过程。对于预训练模型的剪枝,我们将学习率降低到原始学习率的十分之一。为了对修剪模型和预训练模型进行公平的比较,我们使用相同的训练时期来训练/微调网络。以前的工作[21]可能使用较少的时期来微调修剪后的模型,但它收敛得太早,即使使用更多的时期,其精度也不能提高,这可以在第4.2节中显示。
Pruning setting。在过滤器修剪步骤中,我们简单地同时以相同的修剪率修剪所有加权层,这与[15]相同。因此只需要一个超参数Pi= P就可以平衡加速度和精度。修剪操作在每个训练周期结束时进行。与以前的工作[21]不同,灵敏度分析在FPGM并不是实现良好性能的必要条件,这将在后面的章节中演示。
.png)
除了FPGM唯一准则外,我们还使用了FPGM和以前基于规范的方法[15]的混合,以表明FPGM可以作为以前方法的补充。FPGM唯一标准表示为“FPGM混合标准”,FPGM和基于规范的标准相结合的标准表示为“混合标准”。“FPGM-仅40%”表示该层的40%过滤器仅由FPGM选择,而“FPGM-混合40%”表示该层的30%过滤器由基于规范的标准选择[15],其余10%过滤器由FPGM选择。我们将FPGM与以前的加速算法进行了比较,例如MIL [5],PFEC [21],CP [16],ThiNet [25],SFP [15],NISP [39],重新思考[38]。毫不奇怪,我们的FPGM方法达到了最先进的结果。
4.2. Single-Branch Network Pruning
CIFAR-10上的VGGNet。由于[21]的训练设置不公开,我们重新实施了修剪程序,并获得了与原始论文相似的结果。表3和表4分别显示了修剪预训练模型和擦除模型的结果。毫不奇怪,FPGM在这两种情况下都取得了比[21]更好的表现。
4.3. Multiple-Branch Network Pruning
CIFAR-10上的ResNet。对于CIFAR-10数据集,我们在ResNet-20、32、56和110上用两种不同的修剪率测试了我们的FPGM:30%和40%。如表1所示,我们的FPGM实现了最先进的性能。例如,没有微调的MIL [5]将ResNet-32的加速比提高了31.2%,精度下降了1.59%,但我们没有微调的FPGM实现了53.2%的加速比,精度甚至提高了0.19%。与SFP [15]相比,当修剪ResNet-56的52.6%的浮点运算时,我们的FPGM只有0.66%的精度下降,远远小于SFP [15] (1.33%)。对于修剪预先训练的ResNet-110,我们的方法获得了高得多(52.3% vs . s . 38.6%)的加速比,性能提高了0.16%,而PFEC [21]损害了加速比较低的性能。这些结果表明,FPGM可以产生一个性能相当甚至更好的压缩模型。
关于ILSVRC-2012的ResNet。对于ILSVRC-2012数据集,我们在ResNet-18、34、50和101上测试了我们的FPGM,剪枝率分别为30%和40%。与[15]相同,为了简化,我们不修剪投影快捷键。
5. Conclusion and Future Work
在本文中,我们详细阐述了基于规范的过滤器修剪标准的基本要求,并指出其局限性。为了解决这个问题,我们提出了一种基于几何中值的新的滤波修剪策略,命名为FPGM,以加速深层神经网络。与以前的标准不同,FPGM明确考虑了过滤器之间的相互关系。由于这一点,FPGM在几个基准中实现了最先进的性能。未来,我们计划研究如何将FPGM与其他加速算法(如矩阵分解和低精度权重)相结合,将性能推向更高的阶段。