基于滤波器分布拟合的神经网络剪枝算法

张佳钰,寇金桥,刘宁钟

(1.南京航空航天大学 计算机科学与技术学院,江苏 南京 211106;
2.北京计算机技术及应用研究所 方舟重点实验室,北京 100854)

深度神经网络更深更宽的架构为计算机视觉任务带来了卓越的性能[1-2]。例如,Krizhevsky等人[3]在2012年ImageNet挑战赛[4]中取得了突破性的成果,使用的网络包含6 000万个参数,有五个卷积层和三个全连接层。在Labeled Faces in the Wild (LFW)数据集上的顶级人脸验证结果包含数亿个参数,使用了卷积层、局部连接层和全连接层的组合[5-6]。训练这样一个模型以获得合理的性能是非常耗时的。在只依靠全连接层的架构中,参数的数量可以增长到数十亿。这些工作依赖于具有数百万甚至数十亿参数的深度网络,而具有非常高的计算能力的GPU的可用性对其成功起到了关键性的作用。然而,这也导致了过于昂贵的计算成本,并使模型在移动设备上的部署变得困难,甚至不可能。通常情况下,用一台NVIDIA K40机器在ImageNet数据集上训练整个模型需要两到三天时间。即使是具有高效率的最新架构,如残差连接[7]或inception模块[8],也有数百万个参数需要数十亿次浮点运算(FLOPs)。在进行模型部署应用时,硬件不能承载模型巨大的参数量。因此,研究一个能够将模型的参数量和浮点运算(FLOPs)降低,却又能够保持模型的精度的算法,是非常有实际价值的。

针对以上问题,在模型剪枝中,针对滤波器的选择策略,该文设计了能拟合原始滤波器范数分布的算法,并在此算法的基础上,对滤波器的修剪策略进行了相关的改进和设计,使其更加适用于图像分类的场景,从而减缓了小型设备的算力与模型的巨大运算量需求无法匹配的问题,并成功提高了模型的推理速度。

伴随着深度学习技术在目标检测、图像分类、点云等领域的应用普及,在边缘设备上应用深度模型解决实际问题引起了人们的广泛关注并逐渐成为可能。模型压缩[9-11]的方法主要分为以下几类:参数修剪和量化、低等级因子化、转移或压缩卷积滤波器和知识提炼。该文主要研究基于图像分类的模型剪枝算法,从而实现对模型的压缩与加速。网络剪枝[12-15]可以分为两类,即权重修剪[16-17]和滤波器修剪[18-19]。权重修剪直接删除滤波器的权重值,可能会导致一种非结构化的稀疏。这种不规则的结构使得它难以利用高效的基本线性代数子程序(BLAS)库[20]。与此相反,滤波器修剪直接丢弃了整个选定的滤波器,留下一个具有规则结构的模型。因此,它不需要稀疏卷积库的支持,并且可以与现有的用于密集矩阵乘法的高效BLAS库协同工作。因此,滤波修剪更适合用来加速和减少模型大小。

目前,文献[18,21-22]通过遵循“较小规范-不重要”的标准来进行滤波器修剪,认为范值较小的滤波器重要性较低,可以安全地修剪掉。而He等人[23]提出通过几何中值修剪滤波器(FPGM)的方法来压缩模型,不是根据滤波器的重要性来修剪,而是修剪该层中距离数据中心较近的滤波器,该文认为这些滤波器信息是重合的,可能会产生冗余信息,所以这些滤波器不会对网络产生影响。但是笔者认为滤波器数据中心的数据可能是该层较为重要的数据,仅对这一部分数据进行剪枝容易使得滤波器数据质量下降。在训练后,滤波器的权重总是服从某一个分布,而修剪一部分数据中心附近的数据,会导致分布不均衡。集中修剪某一个点附近的数据后,其分布不再拟合原始的数据分布。

以前的工作通常使用“较小规范-不重要”的标准来修剪卷积神经网络中具有较小值的滤波器。该文指出,通过拟合滤波器的范数分布的方式,可以获得更好的效果。基于此,该文提出了一种基于拟合滤波器范数分布的剪枝算法来加速深度卷积神经网络(CNN)的推理过程。具体来说,所提出的FPDF(Filter Pruning via Distribution Fitting)使得筛选的滤波器权重范数的分布能够拟合原始网络的滤波器权重范数的分布。与以前方法不同的是,FPDF通过修剪有冗余的滤波器来压缩模型,而不是筛选掉相对权重值较小或者范数值较小的滤波器。

在两个图像分类基准上进行实验,实验结果验证了FPDF的有效性和优越性。值得注意的是,在CIFAR-10上,FPDF在ResNet20上减少了62%以上的FLOPs,相对准确率仅降低了0.14%。此外,在CIFAR-100上,FPDF在ResNet56上减少了63%以上的FLOPs,相对准确率仅降低了1.27%。

2.1 基于拟合滤波器范数分布的剪枝算法

FPGM[23]指出处于中位数附近的滤波器包含了冗余的信息,这些滤波器是可以被替代的,并提出了基于几何中位数的剪枝方法。如果将中位数附近的滤波器减去,会造成滤波器分布上的一种空缺。位于中位数附近的滤波器对网络的贡献较大,当剪枝率较大的时候,FPGM会将重要的滤波器误删,对计算结果造成较大的波动。图1分别展示了原滤波器范数分布(图1a),按照文中算法删除滤波器后的范数分布(图1b),按照SFP删除滤波器后的范数分布(图1c)。由图1a和图1b的分布可以看出,文中算法使得滤波器删除前后的数据分布趋于一致。SFP删去的数据都是滤波器范数排序靠后,处于底部的数据,其分布已经和图1a的分布区分开了。删除尾部范值较小的数据之后,分布曲线的尾部明显消失,并且其规范值的偏离是显著的。

图1 删去部分数据前后的数据分布

2.2 算法流程

算法的总体流程如图2所示。

图2 FPDF选择需要删除的滤波器的策略图示

针对每一层网络的所有滤波器,按照滤波器的范数数值进行排序,然后按照设置好的间隔选择要被删去的滤波器。M、N为间隔参数,表示每M个数据取前N个,N/M也表示压缩率。间隔参数将滤波器分为M个组,每一个组中的数据都是相似的,对滤波器范数分布的贡献趋于相同,所以仅删去其中的前N个数据,能够使其保持原有的滤波器范数分布,即仅使用后M-N个数据来代表组内M个数据。当压缩率为20%时,数据筛选方法是间隔四个数据取一个(1/5=20%)。当删除率为50%时,间隔为2,表示每两个数据取出一个数据。

图3展示了应用FPDF的滤波器选择算法前后的滤波器范数分布。ResNet56和ResNet110的第一层仅有16个滤波器,最后一层有64个滤波器。图3a和图3c为网络第一层的数据,图3b和图3d为网络最后一层的数据。可以看出,删去20%的滤波器之后,其分布随着滤波器数量的增加可以拟合删除前的分布。

与SFP[22]不同,该文采用的是硬剪枝,在选择拟合原模型分布的滤波器之后对模型进行一次性的裁剪。在剪枝之后,对得到的小模型进行微调,微调可以使模型收敛。具体步骤为对小模型进行训练,直到模型收敛。

图3 ResNet56和ResNet110在CIFAR-10数据集上网络第一层和最后一层的滤波器分布

3.1 数据集描述

CIFAR-10(Canadian Institute for Advanced Research - 10 classes)是一个用于识别普适目标的数据集。共包含10个类别的RGB彩色图片:飞机、汽车、鸟类、猫、鹿、狗、蛙类、马、船和卡车。数据集中一共有50 000张训练图片和10 000张测试图片,图片的尺寸为32×32。图片所包含的都是现实世界中真实的物体,含有较大的噪声,并且物体的比例与特征都不尽相同。

CIFAR-100(Canadian Institute for Advanced Research - 100 classes)是一个微小图像数据集的子集。该数据集包含100个类别的图片,每个类别有600张图片,其中500张用于训练,另外100张用于测试。图片尺寸为32×32。该数据集中包含两个维度的类别:100个粗粒度类别和200个细粒度类别,每一张图片都有一个粗粒度类别和一个细粒度类别。

3.2 实验细节

实验基于ResNet20、ResNet32、ResNet56、ResNet110网络,在CIFAR-10和CIFAR-100两个数据集上对FPDF进行验证。对比实验的方法包括SFP[22]、FPGM[23]、PEEC[18]、CP[24]等加速算法。CIFAR数据集的输入为32×32的图像,而原始的ResNet第一层卷积核为7×7,这样的卷积结构对于CIFAR数据集的性能表现较差,所以将ResNet第一层网络的卷积核修改为3×3,并去掉之后的最大池化层。该文对这个修改后的网络进行剪枝以适用于基于CIFAR的图像分类场景。

3.3 训练设置

文中实验参数设置与FPGM文中的参数保持一致。在CIFAR-10的实验中,使用的预训练模型为FPGM代码仓库中提供的模型,因此不需要重新训练基线模型。在CIFAR-100的实验中,按照本节中的设置训练基线模型。文中实验在Ubuntu16.04操作系统下进行,使用TITAN XP进行训练,使用Pytorch1.4.0框架实现。学习率(learning rate)初始值设置为0.02,分别在第60轮、120轮以及160轮的时候分别衰减为0.000 2、0.000 02和0.000 002;
动量值为0.9;
使用SGD表示优化器;
批大小(batch size)设置为128。

3.4 剪枝设置

将FPDF应用到四个网络中,在CIFAR-10上的实验设置40%和50%的压缩率,表示将模型的残差块的滤波器剪去40%和50%。在CIFAR-100的实验上设置了50%和60%的压缩率,表示将模型的残差块的滤波器修剪去50%和60%。在滤波器修剪的过程中,为了与SFP、FPGM的设置保持一致,为网络的每一层设置相同的剪枝率。将大模型修剪成小模型后会对模型进行微调,促使模型收敛。

3.5 评价标准

准确率:对于一个给定的数据集,分类器将其分类正确的样本数与总样本数的比例。计算公式为:

Accuracy=TP/(TP+FP)

其中,TP表示所有被预测为正类的正类实例个数,FP表示所有被预测为负类的正类实例个数。下文中的准确率Accuracy使用简写accu.代替。

FLOPs:Floating Point Operations,每秒浮点运算次数,通常用来衡量网络模型的计算复杂度,也可以用来间接地衡量网络模型的速度。

3.6 结果分析

实验结果如表1和表2所示。表格第一列均表示不同的网络模型,ResNet20、ResNet32、ResNet56、ResNet110,第二列均表示剪枝的方法,第三列均表示该网络下训练的大模型的准确率,第四列均表示模型压缩之后的准确率,第五列均表示模型压缩后下降的准确率,第六列均表示模型压缩后的FLOPs,第七列均表示模型压缩后减少的FLOPs。在CIFAR-10的实验结果中FPDF在剪枝率为50%的时候,文中方法的准确率都优于对比方法。在基于ResNet110的剪枝上,修剪去62.8%的FLOPs,可以将准确率恢复至93.54%。在基于CIFAR-100的实验结果中,仅有基于ResNet20的剪枝效果略低于SFP,但是在基于层数较多的网络上的剪枝效果均优于SFP和FPGM,并且FPDF在ResNet110上压缩了72.3%的FLOPs的准确率比压缩了62.8%的FLOPs的准确率高了0.2%。

表1 在CIFAR-10数据集上剪枝的结果比较

表2 在CIFAR-100数据集上剪枝的结果比较

剪枝算法通常是依据滤波器的重要性进行滤波器的删除,经典的剪枝方法仅依照滤波器权重值或范数值的大小对滤波器的重要性进行评估,往往导致所选取的滤波器的范数分布发生变化,造成一定的精度损失。因此,该文提出了一种拟合滤波器范数分布的方法,用来解决范数分布不均衡问题。并详细介绍了该方法的算法流程,展示了其与现有算法的剪枝效果区别。通过在公开数据集(CIFAR-10,CIFAR-100)上进行实验,展示了该方法能够更好地维持原范数分布,并证明了该方法相比于现有方法,在图像分类任务上有更高的精度,且具有一定的鲁棒性,可以泛化到多个数据集上。

综上所述,提出的滤波器选择策略改进了现有的模型剪枝算法,使剪枝后的小模型维持较高的精度,有助于实际模型的产品落地。

猜你喜欢 剪枝范数滤波器 人到晚年宜“剪枝”保健医苑(2022年5期)2022-06-10基于YOLOv4-Tiny模型剪枝算法成都信息工程大学学报(2021年6期)2021-02-12向量范数与矩阵范数的相容性研究安阳工学院学报(2020年4期)2020-09-11基于激活-熵的分层迭代剪枝策略的CNN模型压缩计算机应用(2020年5期)2020-06-07从滤波器理解卷积电子制作(2019年11期)2019-07-04开关电源EMI滤波器的应用方法探讨电子制作(2018年16期)2018-09-26基于加权核范数与范数的鲁棒主成分分析中国校外教育(下旬)(2017年8期)2017-10-30剪枝天津诗人(2017年2期)2017-03-16如何解决基不匹配问题:从原子范数到无网格压缩感知自动化学报(2016年3期)2016-08-23基于Canny振荡抑制准则的改进匹配滤波器系统工程与电子技术(2016年7期)2016-08-21

推荐访问:剪枝 拟合 神经网络