程小辉,李 钰,康燕萍
(1.桂林理工大学 信息科学与工程学院,广西 桂林 541006;
2.广西嵌入式技术与智能系统重点实验室,广西 桂林 541006)
近年来,卷积神经网络(Convolutional Neural Network,CNN)在图像识别、文本翻译等领域应用越来越广泛,引起了国内外诸多学者的关注。然而,卷积神经网络在计算和存储上存在大量开销,尤其是近些年出现的大规模CNN 模型,如VGGNet[1]、GoogleNet[2]、ResNet[3]、AlexNet[4]等,网络模型均存在巨量的参数,对设备的内存和计算性能要求较高,难以在嵌入式等算力和存储资源均有限的设备上部署[5]。文献[6]指出,卷积神经网络的参数存在大量冗余权值。因此,对大型卷积神经网络模型进行压缩极为重要[7]。
神经网络的压缩方法主要包括低秩分解、量化、知识蒸馏、剪枝等[8-9],其中,低秩分解是通过分解权重矩阵的方式来减少网络的计算量。LI 等[10]提出一种基于内核分解的算法,同时设计相关的微架构,可以最大限度地优化卷积网络。量化算法以占用较少存储空间的低精度参数权值来替代卷积神经网络中的高精度浮点型参数,目前最常见的是采用8 位整型参数来替代原有网络中的32 位浮点型参数。HAN 等[11]提出基于量化和哈夫曼编码的网络压缩方法,在AlexNet 网络上获得了35 倍的压缩比。知识蒸馏的主要思想是通过大网络训练小网络,将大网络的输出作为小网络的监督信息,让小网络的准确率逐渐逼近大网络,从而达到模型剪枝的目的。针对ResNet 等多分支残差网络,AGHLI[12]提出了相应的知识蒸馏架构和损失函数,能够在保持基线模型精度的情况下较好地压缩模型结构。
通过剪枝方法缩小网络规模的方式在设备部署、应用等方面更有普适性,因此,本文采用剪枝方法对卷积神经网络进行压缩。从剪枝粒度的角度可以将剪枝分成非结构化剪枝(unstructured pruning)和结构化剪枝(structured pruning)两个大类。其中,非结构化剪枝直接对单体权重进行剪枝,剪枝后模型的部署不易实现,结构化剪枝则是通过修剪整个过滤器的方法对模型进行剪枝,对硬件部署更为友好。
LI 等[13]根据卷积核的L1 范 数来衡量卷积核的重要性,通过裁剪L1 范数较小的卷积核来实现模型剪枝。HE 等[14]通过在欧氏空间中计算每个卷积核对应的几何中位数,将中心点附近的卷积核进行裁剪,从而实现模型剪枝。文献[15]所提出的CP 算法通过使用LASSO 回归方式来完成对卷积神经网络通道的逐层剪枝。文献[16]提出的剪枝方法采用计算权重的范数以保留BN 层偏置。文献[17]提出一种融合卷积层和BN 层参数信息的动态剪枝方法,引入注意力机制来评判卷积核的重要性。文献[18]提出一种基于BN 层缩放因子和输出的剪枝方法,对较小缩放因子匹配的通道进行剪枝,并对剪枝后的整个网络进行微调。文献[19]提出一种基于矩阵余弦相似度的剪枝方法,通过度量不同通道间的余弦相似度来对网络进行剪枝。除此之外,文献[20-23]也都提出关于网络剪枝的方法。然而,上述方法几乎都采用固定的剪枝率对卷积层逐层进行操作,忽略了卷积层之间存在的差异性,另一方面,对于模型权重过于重视而忽略了其在实际数据集或者应用场景下的情况,从而在剪枝后造成较大的精度下降。
本文提出一种基于中间图特征提取的双标准卷积核剪枝算法,结合BN 层的gamma 因子和卷积核输出的信息特征与实际标签之间的互信息,对卷积核的重要性进行全局评测。同时,针对一些如VGG网络全连接层参数冗余的情况,提出一种基于节点相似度和K-means++聚类的全连接层剪枝算法。
全连接层存在大量节点,占用较大的存储空间,针对该问题,本文提出一种基于节点相似度和K-means++聚类的全连接层剪枝方法以及剪枝后的权重融合策略,按照指定剪枝率大幅裁剪全连接层的节点。
另外,本文提出一种基于中间图特征提取的卷积核双标准剪枝方法,结合卷积核输出特征与样本标签之间的互信息以及BN 层的缩放系数来衡量卷积核提取特征的能力,将其作为评判卷积核重要性的依据,对重要性较小的卷积核进行裁剪。
1.1 基于相似度和K-means++聚类的全连接层剪枝
考虑一个简单的三层全连接层网络,如图1 所示,3 个全连接层分别为Layer1、Layer2 和Layer3,其中,Layer1 的权重矩阵 为,节点S与节点Q以及节点P与节点Q之间的权重分别为,网络的输入为x。
图1 三层全连接层网络Fig.1 Network of three full connectivity layers
现在欲将节点S与节点P合并,即裁减掉节点P。在忽略偏置的情况下,节点S和节点P输出的差值OutSP为:
其中:F(·)为激活函数,可以是ReLU或Sigmiod等函数。从式(1)可以看出,在不考虑输入x的情况下,当和十分接近时,输出的差值可以近似看作0,而这也是P节点能被S节点近似代替的条件。对于同一全连接层i的权重和,本文通过计算两者差值的L2 范数(即欧氏距离)来衡量两个向量的近似程度:
其中:Sim(,)表示向量和的相似度;
L为wix和的长度。通过式(2)能够得到同一全连接层任意两个权重向量之间的相似程度,然后根据节点之间的相似度进行聚类,对于每个类的节点集合,只保留一个作为该类的节点参与构成剪枝后的新网络结构,称这个节点为代表节点。获取代表节点的过程可以使用K-means++聚类算法的思想来实现。K-means++是一种基于样本集合划分的聚类算法,可以筛选出代表节点集合。
传统的K-means 算法对初值具有很强的敏感性,K-means++算法在选择初值时使用概率化选择方法,以样本的距离权值作为选择依据,可以很好地避免原始K-means 算法对初值敏感的问题。K-means++聚类算法以N个数据作为输入,将数据聚类成k类的结果R*作为输出,其具体过程如下:
1)令t=0,随机选择一个数据点a1作为第一个中心。
2)对于其他数据点,计算其与当前最近的已选择聚类中心的距离D(n),根据D(n)计算每个数据点被选择为下一个聚类中心的概率P(n)。
3)选择P(n)最大的节点作为下一个聚类中心。
4)重复第2 步和第3 步,直至选择出初始的k个聚类中心at=a1,a2,…,ak。
5)对n中的每个样本ni,计算其到聚类中心的距离,并且据此进行聚类,得到聚类结果Rt。
6)针对每个类别aj,重新计算其聚类中心,得到新的聚类中心集合at+1。
7)判断是否满足停止条件,如果满足,则令R*=Rt;
否则,令t=t+1,返回第5 步。
文献[21]分析,权重的L2 范数越大,其重要程度越高。基于此思想,对于给定剪枝率的全连接层,可以计算当前层每个节点与当前层权重L2 范数最大的节点的相似度,将其作为分组结合的依据,以此保证该节点不被裁剪,然后基于K-means++聚类算法和剪枝率来确定剪枝的分组集合,这样可以在不设置阈值的情况下,基于确定的剪枝率完成对该全连接层的剪枝,而且能够减少计算量。本文提出的基于相似度和K-means++聚类的全连接层剪枝算法描述如算法1 所示。
算法1基于相似度和K-means++聚类的全连接层剪枝算法
剪枝后网络的精确度必然会受到影响,而且会随着剪枝率的增加而提高。对于图1,剪去节点P之后,将会影响当前层以及下一层的权重,从而造成部分特征信息丢失,而这也是剪枝后准确率下降的原因。通过权重融合的方法可以在一定程度上消除裁剪节点对网络结构的影响。
在采用权重补偿的情况下,对节点P进行剪枝前后,Layer3 层任意节点Q所获得的来自Layer2 层所有节点的特征值之差ValueQ的平方为:
设∂=-,而F(·)的导数 不大于1,因此,由拉格朗日中值定理可知:
由Cauchy-Schwarz 不等式可知:
其中:x是与网络结构无关的输入。通过式(2)可知,在和相似的情况下,Sim(,)≈0,即。因此,当裁剪P节点时,可以通过将其权重融合到其他节点来弥补精度损失。
在已知某全连接层剪枝后的节点数以及节点聚类结果的情况下,可以根据聚类结果中所有子类节点对于下一全连接层各个节点的权重,然后通过权重融合的方式去弥补裁剪该全连接层节点后所造成的精度损失。
图2(a)和 图2(b)分别为VGG16 网络在CIFAR100[24]和CIFAR10[24]数据集上对全连接层采用不同剪枝策略时的准确率对比,可以看到,与随机剪枝相比,采用基于节点相似度和K-means++聚类思想的剪枝策略能够在剪去大量节点后依然保持较高的准确率。相较于不进行权重融合的剪枝,权重融合剪枝能够在一定程度上弥补剪枝带来的影响,当分类难度、剪枝比例更大时,权重融合方法对精度的补偿效果更为明显。
图2 不同剪枝策略的准确率对比Fig.2 Comparison of accuracy of different pruning strategies
1.2 基于中间图特征提取的卷积层双标准剪枝方法
本节提出一种新的卷积核重要性评估框架,使用卷积核输出特征与样本标签之间的互信息以及BN 层的缩放系数作为双标准,衡量卷积核的特征提取能力,以此作为卷积核的重要程度评判指标。然后将卷积核按照重要程度进行排序,裁剪重要性较小的卷积核。使用这一框架可以裁减掉不重要的卷积核,从而达到对复杂模型进行加速和压缩的目的,使其适用于不带残差结构的普通卷积神经网络以及带有残差结构的残差神经网络。
1.2.1 卷积核重要性评价指标
互信息是衡量两个变量之间相关性的信息度量,广泛应用于图像处理领域,尤其是图像配准任务。对于配准多模图像而言,互信息不需要对图像进行预处理而且鲁棒性强,是一种经典的相似性测度方法。对于两个变量X和Y而言,其互信息计算公式如下:
其中:p(x,y)表示x和y的联合概率;
p(x)和p(y)分别表示x和y的边缘概率。式(6)是概率层面上的互信息计算公式。
对于卷积神经网络的某一卷积层而言,结合文献[25]提出的使用全局平均池化(GAP)层构建网中网的思想,本文提出一种卷积核重要性评价框架,即在每个卷积核后放置一个全局平均池化层,得到这一层输入对于该卷积核的特征,然后求解特征所对应的真实标签之间的互信息,并且结合该通道对应的BN 层缩放因子来判断卷积核的重要性。
首先划定一部分数据作为计算卷积核与标签之间互信息的计算集E,将计算集E输入到要剪枝的网络中,对于某一卷积层,可以得到一个特征矩阵F∈RN×C×W×H,其中,N为计算集E所包含的数据量,C为该卷积层的通道数,W和H分别代表输出特征矩阵的宽和高。
对于特征矩阵F,可以认为是计算集E的图像在经过卷积后形成的“子图”,即中间生成特征矩阵。全局平均池化层的工作机理如图3 所示。全局平均池化层可以提取子图在某一通道上对于计算集E图像的特征向量,具有提取并且简化特征的作用,可以将原本的四维特征矩阵缩放到二维空间,然后基于计算集E和子图通道输出的特征向量完成互信息计算。
图3 全局平均池化层Fig.3 Global average pooling layer
BN(Batch Normalization)层[26]一般放在卷积层后,用于对特征图进行归一化,BN 层归一化过程如式(11)~式(14)所示:
其中:D为数值集合,D={d1,2,…,m};
γ和β分别为可学习参数缩放因子和平移因子;
数值集合E={e1,2,…,m}为批归一化后的输出。
式(11)和式(12)分别计算D的均值和方差,式(13)和式(14)分别为归一化和重构变换的过程。γ和β是可训练参数,在基础模型的训练过程中,添加系数约束后每个卷积核对应的γ参数会呈现分化趋势,重要卷积核所对应的γ参数会越大,不重要卷积核的γ参数会变小。BN 层进行批量归一化后,γ小的通道对应的激活也会更小,修剪这样的通道能够在缩减网络规模的同时尽可能地减小对网络输出的影响。
文献[20]分析表明,BN 层的缩放因子γ与卷积层通道的重要性密切相关。根据此思想,结合互信息的特点,本文提出一种结合BN 层缩放因子与互信息的卷积核重要性衡量方法。对于某一卷积层的卷积核f,通过计算其与标签的互信息及所对应的BN层缩放因子γ得出重要程度Im(f) :
根据卷积核的重要程度,可以对卷积层进行裁剪。本文提出的基于中间图特征提取的卷积层双标准剪枝算法描述如算法2 所示。对卷积神经网络卷积核进行裁剪的具体过程如图4 所示。
图4 卷积核裁剪流程Fig.4 The clipping process of convolution kernel
算法2基于中间图特征提取的卷积层双标准剪枝算法
在CIFAR100 测试集上利用式(15)对已经训练好的VGG16 卷积神经网络模型的卷积层进行重要性计算,得到的结果如图5 所示,图中横轴代表VGG16 模型的13 层卷积层,纵轴表示不同剪枝率下保留及裁减掉的节点分布,其中,越靠近图像上方的卷积核重要程度越高。从图5 可以看到,卷积核的重要性大体上随着层次的加深呈递减趋势,处于网络中间部分的卷积层的卷积核携带大量特征信息,而这也与经验相符。将卷积核按照重要性进行全局排序,根据设定的卷积层剪枝率的大小,裁剪重要程度较小的卷积核,便可达到对卷积神经网络卷积核进行裁剪的目的。
图5 不同剪枝率下裁剪的节点个数Fig.5 Number of cut nodes under different pruning rates
1.2.2 带有残差结构的卷积网络卷积核剪枝方法
与VGG 网络不同,残差网络模型一般都含有残差模块(也就是shortcut),存在“分支”结构。以ResNet网络模型为例,其两种主要的残差模块如图6 所示。
图6 两种残差模块对比Fig.6 Comparison of two residual modules
本文所提基于卷积核互信息与缩放因子的卷积核剪枝方法同样可以应用于残差网络,但是需要进行以下两点补充:
1)对于Conv1、Conv1_1 和Conv2_1 而 言,直接采用本文所提卷积核剪枝方法进行裁剪即可。
2)残差结构存在权重依赖,对于两种残差结构而言,都要求分支1 的输出通道和分支2 的输出通道数量保持一致,因此,如果在同一层次内,对于Conv2、Conv1_2 和Conv2_2,在剪枝时,取两者通道的并集作为整个模块的保留通道数。以残差结构2为例,分支1 的通道剪枝掩码mask1={1,0,1,…,1,0},分支2 的通道剪枝掩码mask2={0,1,1,…,1,0},其中,0 表示经过重要性计算后该通道应该舍弃,1 表示应当保留。因此,最终保留通道为mask1∪mask2={1,1,1,…,1,0},即只要两个分支 中有一个分支认为该通道重要,裁剪便跳过该通道。
对于不同层之间,本文采用每层保留通道数中的最大值作为整个层次串联模块的保留通道数。
在CIFAR10 和CIFAR100 数据集上,对同时含有图6 中两种残差结构的残差网络ResNet34 进行实验,结果如表1 所示。表2 为采用本文所提针对卷积核的剪枝方法,对ResNet34 网络在CIFAR10上进行60%剪枝前后ResNet34 网络各卷积层的通道数变化情况,其中,含有“^”的数组表示图5 中的残差结构2,含有该符号的元素表示图5 中的残差结构2 的分支2 部分。从表2 可以看出,本文所提针对残差网络的基于互信息和BN 缩放因子的联合剪枝算法,能够在满足残差网络权重依赖的情况下实现剪枝。除此之外,通过观察ResNet34 剪枝前后保留通道数可以发现,相对于单分支网络,残差网络由于加入了跨层连接,其剪枝掉的节点在各层的分布更加“均匀”。
表1 ResNet34 剪枝前后性能对比Table 1 Performance comparison of ResNet34 before and after pruning %
表2 ResNet34 剪枝前后通道数对比Table 2 Comparison of the number of channels on ResNet34 before and after pruning
2.1 实验设置
本文以Ubuntu18.04 系统、英伟达2080Ti 显卡和i7-6700HQ CPU 为实验环境,将本文所提基于相似度和K-means++聚类的全连接层剪枝算法与基于中间图特征提取的卷积核双标准剪枝算法,分别在CIFAR10 和CIFAR100 两个数据集上进行实验。CIFAR10 是深度学习中经常使用的一种数据集,共包含60 000 张长、宽均为32 像素的彩色图片,总共分为10 类,每类含有6 000 张图片,训练集总共为50 000 张图片,测试集为10 000 张图片。CIFAR100的图片大小与CIFAR10 一致,测试集和训练集的数目也相同,但是分类数量为100 类。
对于不同算法的对比实验,在网络结构上采用VGG16 卷积神经网络与ResNet56 卷积神经网络进行实验。其中,VGG16 为传统的卷积神经网络,ResNet56为带有残差的卷积神经网络。训练基准网络用于剪枝。对于VGG16,设定训练轮次为160,初始学习率为0.1,在训练轮次达到1/2 和3/4 时学习率分别变为原来的1/10。对于ResNet56,设置训练轮次为200,其他设置与VGG16 相同。两个网络均使用SGD 优化方法,采用交叉熵函数计算损失。在CIFAR10 和CIFAR100 上分别按照上述参数训练VGG16 和ResNet56 网络得到基准网络,然后在基准网络的基础上进行剪枝。
实验中的对比算法包括:文献[20]提出的PF 算法,即基于L1 范数的剪枝方法;
文献[14]提出的FPGM 算法,即基于几何中位数的剪枝策略;
文献[27]提出的SFP 算法,即柔性剪枝策略;
文献[28]提出的Taylor 算法,即基于Taylor 展开的剪枝标准;
文献[29]提出的VCNNP 算法,即基于变分贝叶斯的剪枝策略;
文献[15]提出的CP 算法,即基于LASSO回归和最小二乘法的剪枝策略。
2.2 不同剪枝算法的比较
在CIFAR10 数据集上不同剪枝算法的比较结果如表3 所示。从表3 可以看出:
表3 在CIFAR10 数据集上的实验结果Table 3 Experimental results on CIFAR10 dataset %
1)对于单分支的卷积神经网络VGG16,本文所提针对卷积层和全连接层的剪枝算法,在剪枝率为60%的情况下分别能够剪掉网络94.5%的参数量和64.4%的计算量,而准确率几乎保持不变。相较PF等剪枝算法,本文算法因为分别针对卷积层和全连接层进行剪枝,在保持精度基本不变的情况下获得了更大的参数量和FLOPs 的剪枝比例。
2)对于残差网络ResNet56,本文所提剪枝算法在剪枝率为40%时,能够在保持精度仅下降0.19%的情况下裁减掉48.2%的参数量和46.7%的计算量,如果再牺牲不到1%的精度,能够获得60.7%的参数量裁剪率和57.6%和计算量裁剪率。随着剪枝比例的提高,网络保留的卷积核数量减少,但是带来了精度上的损失。当剪枝率设置为60%时,能够获得参数量减少71.3%和计算量减少66.0%的网络模型,但是准确率减少比例也达到了1.83%。
使用本文针对卷积层的联合剪枝算法与针对全连接层的基于相似度和K-means++聚类的剪枝算法,在CIFAR100数据集上与其他算法进行对比实验,结果如表4所示。从表4可以看出:VGG16网络能够在裁减掉95.0%参数量和51.2%计算量的情况下保持准确率基本不变;
ResNet56在经过大幅裁剪后准确率仅下降很小幅度,在设置剪枝率为30%时,在准确率、参数量和FLOPs上基本达到了平衡。尽管本文算法相对于PF算法在准确率的减少比例上高了0.5%,但是获得了更大的剪枝比例,在参数量和计算量的裁剪上比PF算法表现更好。当剪枝比例设置为40%时,本文算法能够裁减掉41.3%的参数量和61.2%的FLOPs,准确率仅下降1.96%。
表4 在CIFAR100 数据集上的实验结果Table 4 Experimental results on CIFAR100 dataset %
相对于其他剪枝算法,本文所提算法能够在准确率下降幅度很小的情况下实现对参数量和计算量的大幅裁剪,这是因为本文采取的针对卷积层的联合剪枝算法,结合了网络的权重参数和网络在实际数据集应用场景下的双重表现。
2.3 剪枝前后通道数对比
在CIFAR10 数据集上,使用本文提出的剪枝算法在剪枝率为60%的情况下对VGG16 网络进行剪枝,剪枝前后各个卷积层的通道数对比情况如图7所示。在CIFAR10 数据集上,使用本文算法在40%剪枝率下对ResNet56 进行剪枝,剪枝前后各个卷积层模块的通道数对比如表5 所示。
图7 VGG16 剪枝前后通道数对比Fig.7 Comparison of the number of channels on VGG16 before and after pruning
表5 ResNet56 剪枝前后通道数对比Table 5 Comparison of the number of channels on ResNet56 before and after pruning
从图7可以看出,对于VGG16卷积网络而言,其浅层的卷积核蕴含了大量的特征信息,而深层的卷积核携带的信息较少,对其进行剪枝,不会对网络结构和精度产生较大影响。表5的结果也证明了这一点,ResNet56网络呈现出和VGG16 网络一样的特征,即浅层网络剪枝比例较小,深层网络剪枝比例较大。
针对现有卷积神经网络参数量和计算量过大,较难在存储能力和算力均有限的设备上进行部署的问题,本文提出一种新的卷积核重要性评估框架,使用卷积核输出特征与样本标签之间的互信息以及BN 层的缩放系数来衡量卷积核的特征提取能力,更好地兼顾权重在实际应用数据集上的表现。在此基础上,提出一种基于相似度和K-means++聚类的全连接层剪枝算法,在确定的剪枝率下完成对网络模型的优化。实验结果表明,该算法在对模型进行大幅剪枝的同时能够保持较小的精度损失。下一步将分析剪枝后的权重优化问题并探索量化等网络模型压缩方法,在不损失准确率的情况下更大幅度地压缩卷积神经网络,使其能够在端设备上进行部署。
猜你喜欢互信息剪枝残差人到晚年宜“剪枝”保健医苑(2022年5期)2022-06-10基于双向GRU与残差拟合的车辆跟驰建模网络安全与数据管理(2022年3期)2022-05-23基于模型性能相关性的分级剪枝率剪枝方法计算机工程与设计(2021年4期)2021-04-22基于YOLOv4-Tiny模型剪枝算法成都信息工程大学学报(2021年6期)2021-02-12基于残差学习的自适应无人机目标跟踪算法北京航空航天大学学报(2020年10期)2020-11-14基于递归残差网络的图像超分辨率重建自动化学报(2019年6期)2019-07-23剪枝天津诗人(2017年2期)2017-03-16基于互信息的贝叶斯网络结构学习北京信息科技大学学报(自然科学版)(2016年6期)2016-02-27联合互信息水下目标特征选择算法西北工业大学学报(2015年4期)2016-01-19改进的互信息最小化非线性盲源分离算法电测与仪表(2015年9期)2015-04-09