论文解读《Structured pruning via feature channels similarity and mutuallearning for convolutional neura》

论文:Structured pruning via feature channels similarity and mutual learning for convolutional neural network compression 基于特征通道相似性和相互学习的结构化剪枝卷积神经网络压缩

论文地址:Structured pruning via feature channels similarity and mutual learning for convolutional neural network compression | SpringerLink

DOI: 10.1007/s10489-022-03403-9

发表时间:09 March 2022,Applied Intelligence (2022)

注:大部分是原文,但不全是,带色的是自己的理解

摘要

CNN由于其庞大的内存和计算量,在资源受限的设备中一直受到阻碍。为了获得一个轻量级网络,我们提出了特征通道相似和相互学习微调(FCS-MLFT)方法。首先,我们关注CNN输出特征通道之间的相似度冗余,提出了一种基于余弦相似度的结构化剪枝准则,并利用K-Means将特征映射L1范数对应的卷积核聚类到多个bin中,计算每个bin中特征通道之间的相似度值。(听起来不错!)然后,与传统方法使用和训练过程相同的策略来提高压缩模型的精度不同,我们采用互学习微调(MLFT)来提高压缩模型的精度(?不太理解),所提出的方法所获得的精度可以达到传统微调(TFT)的精度,同时显著减少了epoch数量。实验结果不仅表明FCS方法的性能优于现有的基于核范数和基于分层特征范数的方法,而且证明了MLFT策略可以减少epoch数。

1.引言

随着硬件的持续升级,CNN因其出色的表达能力成为计算机视觉任务中的重要工具,比如ImageNet Classification challenge比赛第一名使用ResNet模型,有超过60 million的参数,并且需要11.3 billion以上的浮点运算。因此,CNN往往很难部署到移动设备或嵌入式传感器上。为了解决这个问题,人们提出了许多方法,如低秩近似、知识蒸馏、量化、轻量级网络结构和剪枝等。

在以上模型压缩方法中,剪枝具有容易部署、硬件友好的优点并被广泛运用。Zhang et al.[11]使用奇异值分解(SVD)对每一层进行低秩逼近,实现了4倍的加速度,而top-5的错误率仅增加了0.9%。Hinton et al.[12]使用教师模型的logits和学生模型的hard targets,将大模型压缩成轻模型。Han et al.[13]描述了一种仅通过学习重要连接就可以在VGG16上减少13×参数的方法。 He et al.[14]提出了AutoML,用强化学习来缩小模型。Li等人[15]减少了CNN中被认为对输出精度几乎没有影响的滤波器,在CIFAR-10上分别将VGG和ResNet110的推断成本降低了34%和38%。Hu et al.[16]定义了激活零值百分比来评估卷积核的重要性,然后删除无用的神经元。Wang et al.[17]计算特征映射的Ln范数来评估核的显著性。(这里好几篇文献都看过,但几乎都是好几年前的了)

虽然剪枝可以有效地减少参数量和计算量,但当剪枝率较大,模型精度的损失是不可接受的。通常采用传统的微调(TFT)技术来弥补精度损失,然而,TFT策略比较耗时,并且由于忽略了其他模型的知识,恢复精度有限。知识蒸馏(Knowledge distillation, KD)是指教师引导学生学习,并将知识传递给学生。[18]将KD与剪枝结合,恢复剪枝模型的准确性。通常情况下,需要一个优秀的教师,教师模型的规模大于学生模型。但是,[19]表明,好的教师不一定能提高学生模型的表现,而且知识转移是单向的,因此,它并不能提高教师模型的准确性。相互学习[20]作为KD的一种,不需要优秀的老师,而是让模型相互学习,同时提高模型的性能。(原来mutual learning相互学习这个概念不是这篇文章提出的,可能又是一篇把已有技术迁移到新领域的文章)

本文提出了一种基于特征信道相似准则和互学习微调(FCS-MLTF)的结构化方法来加速网络压缩。我们的贡献总结如下。

(1)提出了一种基于特征通道余弦相似度(FCS)的结构准则来识别无意义卷积核。众所周知,每个卷积层产生许多特征图,其中一些特征图高度相似,这表明用于生成这些特征图的滤波器是高度相似的。丢弃这些相似的冗余卷积核有利于加速网络压缩。

(2)提出了互学习微调(MLFT)来代替传统的微调(TFT)来恢复模型精度,MLFT不仅可以达到TFT所达到的精度,而且大大减少了微调所需的epoch数。(具体怎么互学习?再看看)

(3)将特征通道相似度与互学习微调相结合,提出了特征通道相似度准则和互学习微调(FCSMLTF)剪枝算法(这一点太牵强了吧……),并在基准数据集上比较了该方法的精度和剪枝步骤。

本文的其余部分如下。第二节列出了剪枝的相关研究工作。第三节详细介绍了特征通道相似度(FCS)剪枝准则和互学习微调(MLTF)算法。第四节验证了特征通道相似准则和互学习微调(FCS-MLTF)方法在基准数据集上的有效性,第五节对本文进行了总结。

2.背景 (巨水,介绍了很多其他的)

研究人员发现深度学习模型受到庞大参数量的限制。因此,人们研究了大量压缩模型尺寸的方法来克服这一瓶颈。在本节中,我们大致从五个方面介绍了常用的算法。(意思是通过介绍前四种方法的缺点来说明为什么要深入改进剪枝?)

2.1 Low rank approximation 低秩近似

低秩近似或分解可以消除全连通层和卷积层的冗余参数。Lebedev et al.[21]通过张量分解和判别微调(原文是discrimination fine tuning)对卷积层进行加速,在36个字符类的CNN上获得8.5倍的CPU加速,在标准ImageNet架构上获得4倍的CPU加速,误差增加1%。Yu et al.[22]将权重矩阵分解为低秩稀疏矩阵,最多可节省15倍的存储空间。Kim et al.[23]在内核上应用了变分贝叶斯矩阵分解和Tucker分解,提高了AlexNet和VGG16在智能手机上的运行时间。Calvi等人[24]提出了塔克张量层(Tucker Tensor Layer)作为深度神经网络(DNN)密权矩阵的替代方案,并在训练时间内实现了10%的加速。低秩分解需要更多的矩阵分解资源,同时减少卷积运算,这使得实现成本过高。

2.2 知识蒸馏

知识蒸馏是将预先训练好的性能优秀的大网络作为教师,引导小网络进行训练和学习,将大网络的知识转化为权重参数较少的小网络的方法。(好基础的介绍)根据迁移方法的不同,大致可分为两类:基于目标的蒸馏[12,25]和基于特征的蒸馏算法[26-28]。Hinton et al.[12]使用教师模型的logits来监督学生模型的输出,从而将教师模型的信息传递给学生模型。Tang et al.[25]将BERT模型中的知识细化为参数更少、推理时间更短的单层BiLSTM模型。Romero et al.[26]同时使用输出和教师的中间表示来训练更深层次的学生模型,参数量减少了近10.4×。Yim et al.[27]提出提取的知识可以在两层之间以流的形式传递,这样可以优化DNN模型,速度更快,性能更高。Chen et al.[28]将知识提取与提示学习相结合,训练出高速目标检测模型。基于知识蒸馏的方法可以使深层模型变得更浅,从而帮助网络减少计算量。

2.3 量化

量化包括权值量化和二值化。Gupta et al.[29]在使用随机舍入时,仅使用16位宽的定点表示法来训练深度网络而不降低精度。Han等人[30]结合了剪枝、训练量化和霍夫曼编码,在不损失精度的情况下将存储减少了35×到49×。Courbariaux et al.[31]提出在正向传播过程中使用比特运算代替算术运算来训练具有二进制权值和激活的二值化神经网络,以大大降低内存容量。然而,上述用于修剪的量化方法要么需要特殊的硬件加速器,如EIE硬件加速器,要么基于特定的深度学习库,如Pylearn2和Lasagne,实现起来很复杂,对硬件不友好。

2.4 轻量级网络结构

轻量级网络是模型压缩的另一个新领域。Iandola et al.[32]提出了一种名为SqueezeNet的小型DNN架构,该架构使用大量的1 × 1卷积核而不是3 × 3核,用少50倍的参数实现AlexNet的精度。Howard et al.[33]和Hu et al.[34]提出了一系列MobileNet网络模型,从MobileNetv1到MobileNetv3。他们用深度可分离卷积代替传统的卷积,大大减少了网络参数的数量。

2.5 剪枝

剪枝可分为细粒度和粗粒度剪枝,包括权重剪枝、滤波器剪枝、通道剪枝和层剪枝。Han et al.[13]在AlexNet和VGG中分别实现了9×和13×的压缩。LeCun et al.[35]和Hassibi et al.[36]使用二阶导数信息来减少不重要的权重,以提高网络的准确性和泛化性能。Li et al.[15]通过计算绝对权值之和来测量各层滤波器的相对重要性,然后丢弃对输出精度影响较小的CNN滤波器。Luo et al.[37]认为利用各卷积核权值的绝对和很难确定各卷积核的重要性,提出了一种基于熵的剪枝方法(这个看起来不错!这篇文章有空看看)。在此基础上,Luo et al.[38]提出了一个统一的框架ThiNet,它根据从下一层计算出的统计信息(什么是统计信息?这篇文章有空看看)对滤波器进行修剪。Hu et al.[16]定义了ReLu层后零的平均百分比,然后去除这些零冗余激活神经元。但是,[16]的缺点是只能修剪几层,压缩比有限。Wang et al.[17]计算每个卷积核输出的特征映射的Ln范数来评估核的显著性。他们假设特征映射的Ln值越大,对应的卷积核的意义就越大。但是,我们注意到保留下来的卷积核生成的特征图像之间存在相似性。我们的实验表明,去除这些高度相似的卷积核并不会降低精度。

本文首先提出了一种基于特征通道相似性(FCS)的卷积核剪枝方法。我们的想法来自于观察到卷积核输出的许多特征通道具有很高的相似性,特征通道的相似性表明生成这些特征通道的滤波器是相似的。因此,修剪这些冗余的相似卷积核有利于加速网络压缩。在剪枝过程中,我们将特征映射的L1范数聚类到多个堆栈(bin)中,计算每个堆栈中的相似度,并对相似值进行排序。具有较高相似度和较小L1值(为什么又要考虑L1?)的冗余核可以安全去除。

3.方法

在本节中,我们首先介绍了基于特征通道相似性的结构化剪枝方法(FCS),然后描述了基于K-Means算法的特征映射L1范数聚类。然后,我们介绍了基于互学习微调(MLFT)的微调策略,最后讨论了针对不同CNN结构的特征通道相似度和互学习微调(FCSMLFT)修剪策略的总体框架。

3.1 基于特征通道相似性的剪枝准则

大部分计算和参数都在卷积层和CNN的全连接层中。卷积层具有多个卷积核,这些卷积核被视为不同的模式算子。在非线性激活函数之前,卷积运算表示为:

 (对这个式子中各个符号的解释不想翻了,就这样看吧……)

卷积运算是卷积核与相应步长位置矩阵的内积。典型的CNN结构由几个卷积层组成。也就是说,卷积核越多,模型表达的模态越多,模型表达能力越强。例如,ImageNet分类挑战赛的获胜者在[2]中使用ResNet模型,该模型有超过6000万个参数,需要超过113亿次失败。在实际应用中,参数庞大的模型很难应用于资源有限的小型设备。(这段话在引言里几乎一模一样,好水)

在剪枝中,为了区分这些不重要的卷积核,[15 - 17,37]中提出了一些启发式剪枝准则,即去除本应具有较少信息的较小值的权重或过滤器,以获得较小的模型。一个典型的算法使用L1范数来衡量滤波器的重要性。L1值较小的滤波器被认为影响较小,可以丢弃[15,16]。核L1范数的大小不能反映滤波器的意义,特别是在迁移学习中。近年来另一种流行的方法是基于feature maps的Ln范数剪枝滤波器[17]。通过计算feature maps的范数代替核范数来评估核的重要性。与前面的修剪类似,删除具有较小值的核。

CNN由具有大量滤波器的卷积层组成。在前向传播中得到了许多相似的特征图(即feature maps ),这些特征图反映了滤波器的相似性。丢弃这些冗余的相似滤波器可以在不影响网络性能的情况下减少计算量。为了验证所提方法的有效性,研究了conv1_1、conv2_1、conv3_1等层间高度相似的特征图。这些特征图是通过向VGG16网络输入一张图片来获得的,例如一只鸟栖息在树枝上。如图1(a)所示,conv1层的一些特征图可以反映鸟类相同的信息,如index2、39、index14、44、index5、45、index31、47、index32、40、index46、57。因此,去除冗余特征核并不会影响目标识别的准确性。图1(b)中的特征映射比图1(a)中的特征映射包含更多的信息,特征信息的组成比较复杂,如index7, 61, index33, 62, index34, 89, index40, 42, index52, 87, index55, 86。每组所代表的信息大致相同,去除冗余特征核并不会影响精度。在图1(c)所示的上层中,indexx1、15、index44、245、index90、137、index90、140、index221、254、index122、205能较好地表示目标鸟,且它们之间存在相似度冗余。,可以修剪相似的滤波器以得到一个更小的模型。

在本文中,我们首先提出了一种基于相似性的识别准则来衡量核的显著性。我们首先从给定的训练集中任意选取一定比例的样本,逐个输入网络,得到特征映射的L1范数。然后,利用K-Means将L1范数划分为若干簇(为什么按照L1范数划分?),计算每个簇内特征映射的相似度值(相似度值怎么计算?仍然是L1范数吗?——下边的式子)。最后,去除相似度高、L1值小的卷积核。特征图L1范数和特征图相似度的计算方法为:

3.1.1 特征图的L1正则聚类

k均值算法是一种传统的无监督聚类算法,因其实现简单、效果好而被广泛应用。K- means算法的计算过程是根据样本之间的距离将样本集分成K个聚类。使聚类中的点尽可能靠近,使聚类之间的距离尽可能远。给定一个数据集X,有N个样本{x1, x2,…, xn}时,算法的一般步骤如下。(对K-means也要介绍的这么详细,可能是实在没什么好写了)

(1)初始化K个中心点;

(2)根据最小距离公式,计算N个样本到K个中心点的距离,将每个物体分配到最近中心点对应的聚类中:

(3)根据聚类组中的样本,计算每个聚类的新中心点;

(4)迭代执行步骤(2)-(4),直到聚类算法收敛,即中心点和分组不变。

如前所述,卷积框架包含了大量的卷积层,在正向传播过程中产生了大量的特征映射,这些特征映射包含了不同层次的信息。因此,我们使用一个简单的L1范数来测量。L1值越小,特征信息越少,L1值越大,特征信息越多。在相似度计算过程中,特征图的数量会影响相似度计算的量。使用K-means聚类后再计算相似度可以大大减小计算量(否则就需要两两比较来计算)。

3.2 基于互学习的微调策略

在剪枝领域,大多数研究都集中在设计有效的剪枝规则上。微调(FT)是不可缺少的,却很少受到关注。但是,TFT策略费时且忽略了原始模型的知识。互学习[20]作为KD的一种,不需要优秀的老师,而是允许模型相互学习以提高性能,参数调整简单。基于互学习,我们提出了互学习微调(MLFT)。考虑到我们的剪枝是从预训练的模型开始的,压缩后模型也是基于预训练的模型,我们的MLFT策略是基于预训练参数模型的相互学习。然而,与TFT不同的是,MLFT可以减少微调的次数,提高所有模型的精度。采用MLFT,还可以在一定程度上提高裁剪速度,减少裁剪次数。具体而言,在MLFT学习过程中,每个网络的目标函数由传统的交叉熵损失和交互的KL散度损失组成。前者用于衡量预测与真值标签之间的差异,后者用于衡量网络之间预测概率分布之间的差异。对于有Q个网络(Q≥2)的MLFT,第k个网络的目标函数表示为:

 MLFT的原理图如图2所示。在第一次MLFT调整中,只有两个模型:pretrained model_0和pretrained model_1,我们在Eq.(5)中设置N = 2,让它们分别学习以恢复模型精度。从第二个MLFT开始,取N =3inEq。(5)利用三个模型相互学习来提高模型的精度。

3.3 不同CNN框架的剪枝方案

CNN被公认为深度学习中最具吸引力的网络框架,特别是在计算机视觉领域。随着近年来的发展,CNN的层次越来越深,架构也越来越复杂。根据网络结构,可分为“串联”和“并联”两种网络模式。前者以AlexNet和VGGNet为代表,通过线性叠加卷积层来增加网络层数;后者以GoogleNet和ResNet为代表,通过增加初始单元或旁路连接来增加网络复杂度。我们提到的剪枝过程描述如下。

(1)从给定的训练集中随机选取一定比例的样本;

(2)将选取的N个样本逐一送入预训练模型。根据K-Means聚类算法,将特征图的L1范数简单划分为3个簇,计算成对特征图的相似度;

(3)根据FCS对所有滤波器进行排序,并根据预定义的阈值对相似度较高、L1值较小的卷积核进行剪枝;

(4)采用MLFT方法恢复修剪后的模型精度;

(5)重复步骤(2)-(4),递归地获得所需的紧凑模型。

对于VGGNet模型,当一层减去m个滤波器时,对应的特征图也会被修剪,下一层特征图对应的滤波器也会被丢弃。而对于ResNet模型,由于其身份映射,需要考虑额外的操作。VGGNet修剪策略可用于修剪ResNet每个块中的前两个卷积核。在切割最后一层和短连接时,丢弃的卷积核应一致,以确保能够执行求和操作。

与现有的结构化Ln剪枝准则类似,我们从特征通道相似性(FCS)的角度评估卷积核的重要性,在剪枝过程中,我们参考L1范数和相似度,而不是单一的规则,如特征映射的Ln范数或卷积核。此外,我们提出了不同于常规微调的互学习微调策略,即使用与训练阶段相同的迭代次数或更多的迭代次数来恢复修剪模型的精度损失,以充分利用模型之间的知识。我们的方法不仅可以缩短迭代次数,而且允许一个大的裁剪尺度进行模型压缩,而不会导致额外的精度下降。

4. 实验(不写了)

在本节中,我们使用三个公共数据集CIFAR-10、CIFAR-100和街景门牌号(SVHN)在VGG16、ResNet50和MobileNetV2上实现了我们的方法。在裁剪之前,我们从头开始训练每个模型以获得基线精度。我们使用随机梯度下降(SGD)来优化所有网络,并在CIFAR和SVHN数据集上分别设置200和20个epoch,学习率从10-2到10-4。对于MLTF,我们使用40和10个具有相同学习率的epoch。所有实验都在一台装有NVIDIA RTX 2070 SUPER的计算机上进行,主要算法程序如下所示。

 4.1 数据集

4.2 结果

4.2.1 VGG16的结果

4.2.2 ResNet50的结果

4.2.3 MobileNetV2的结果

5. 结论及未来工作

本文提出了一种卷积核结构化剪枝方法,将特征通道相似度与互学习微调方法相结合,对CNN模型进行压缩。实验结果表明,该方法可以在保持较高精度的同时逐步减小模型的尺寸,最终在VGGNet、ResNet和MobileNet中分别节省高达12倍、3.5倍和3.5倍的存储空间,且没有额外的精度损失。实验结果还表明,保留MLFT可以减少微调次数,提高切削效率。在本研究的基础上,一方面,我们将探索如何在不依赖人工设计标准的情况下自动识别不重要的卷积核,并进一步探索结构化剪枝与其他压缩算法如知识蒸馏和轻量级结构化搜索算法的结合。另一方面,我们将探索该方法在实际工程检测中的应用,实际工程检测需要实时处理,占用内存小,以提高检测效率。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值