中国科技论文在线
http://www.paper.edu.cn
一种基于注意力机制的卷积神经网络剪枝
方法
汪枭杰,姚文斌**
(北京邮电大学计算机学院,北京市 100876)
摘要:卷积神经网络剪枝技术可以有效减少神经网络的内存占用和运行耗时,有利于神经网
络在资源有限的设备上部署。剪枝研究中,如何衡量参数重要性是核心问题,参数重要性直
接决定哪些参数被优先移除。本文提出一种基于注意力机制的卷积神经网络剪枝方法,该方
法借助注意力模块,自适应地学习卷积网络中同层滤波器输出通道的权重,并以此计算滤波
器重要性,在滤波器级别指导网络剪枝。实验结果表明,本方法在相同剪枝比例下可以获得
更高的准确率,并且不依赖特定的底层运算库或硬件设备。
关键词:卷积神经网络;剪枝;注意力机制
中图分类号:TP391.4
A Convolutional Neural Network Pruning Method Based on
Attention Mechanism
Xiaojie Wang, Wenbin Yao
(School of Computer Science, Beijing University of Posts and Telecommunications, Beijing)
Abstract: Convolutional neural network pruning technology can effectively reduce the memory and
running time cost of the neural network, which is conducive to the deployment of the neural network
on equipment with limited resources. In pruning research, how to measure the importance of
parameters is the core issue. The importance of parameters directly determines which parameters can
be removed first. In this paper, a convolutional neural network pruning method based on attention
mechanism is proposed. With the help of attention module, the method adaptively learns the weight of
the output channel of the same-layer filter in convolutional network, and calculates the importance of
the filter to guide network pruning at the filter level. The experimental results show that this method
can achieve higher accuracy under the same pruning ratio, and does not depend on specific underlying
operation libraries or hardware devices.
Keywords: Convolutional Neural Network;Pruning;Attention Mechanism
0 引言
卷积神经网络具有很强的表征学习能力,在计算机视觉领域取得了许多突破性进展。随
着卷积神经网络性能的提升,网络中的参数量也在不断增加,在运行时需要占用大量的内存
和 CPU 计算资源,这使得卷积神经网络在资源有限的移动设备上难以部署。
为了解决上述问题,卷积神经网络剪枝技术被广泛研究。早期研究[1-2]根据参数对损失
函数的二阶导数确定参数重要性,网络中的一部分神经元连接参数被移除后,仍能够保持预
测精度。但是这些方法依靠海森矩阵求得二阶导数,而海森矩阵的空间代价是 O(n2),n 为
网络中的参数量,这对于深度神经网络(参数量级在 108 左右)来说计算开销过于庞大。
为了避免过于庞大的计算开销,部分研究根据参数本身数值来确定其重要性。Han 等人
作者简介:汪枭杰(1994-),男,硕士研究生,主要研究方向:神经网络压缩
通信联系人:姚文斌(1972-),男,教授,博士生导师,主要研究方向:信息安全与灾备技术、可信计算与
容错计算、云计算技术、信息化系统建模与仿真、高性能物联网. E-mail: yaowenbin_cdc@163.com
- 1 -
5
10
15
20
25
30
35
40
中国科技论文在线
http://www.paper.edu.cn
[3-4]通过设定一个阈值,去除神经元之间参数数值低于阈值的连接来达到剪枝目的。但是针
对神经元连接的剪枝会产生稀疏矩阵,稀疏矩阵需要特定的底层库和硬件才能实现压缩加速
效果。为了避免稀疏矩阵产生,滤波器(Filter)级别的剪枝被提出。通过衡量卷积层中滤
波器的重要性对其进行排名,移除重要性较低的滤波器来避免稀疏矩阵的产生。现有的滤波
器级别剪枝方法大多根据滤波器中参数数值[5]或滤波器造成的直接影响[6]来确定重要性,虽
然计算复杂度较低,但是没有刻画参数对模型最终输出的影响力。
为了解决上述方法对参数影响力刻画的不足,本文提出一种基于注意力机制(Attention
Mechanism)的卷积神经网络剪枝方法。该方法通过注意力模块对同层滤波器的输出通道分
配权重,同时在反向传播中根据模型的损失函数调整通道权重,使网络自主学习到通道重要
性关系。最终根据通道和滤波器的一一对应关系,对滤波器进行逐层剪枝。实验结果表明,
该方法把参数重要性和损失函数关联起来的同时,不需要耗费大量计算资源,可以更好的指
导滤波器级别的剪枝。
1 滤波器级别的剪枝
神经网络中的卷积层包含多个滤波器,每个滤波器由多个卷积核(Convolution Kernel)
组成。输入通道经过卷积处理后,输出通道数有可能会发生变化。输出通道数取决于滤波器
的数量,每个滤波器产生一个通道。如图 1 所示,一个滤波器中存在与输入通道数相同的卷
积核,每个卷积核处理一个输入通道,将滤波器中各个卷积核得到的特征图(Feature Map)
相加就可以产生一个输出通道。
图 1 滤波器卷积过程
Fig.1 Convolution process of filter
滤波器级别的剪枝是以滤波器为最小剪枝单位的剪枝,移除一组滤波器意味着移除滤波
器中所有的卷积核,对应一组参数矩阵。如图 2 所示,当某个滤波器被移除时,其产生通道
- 2 -
45
50
55
60
65
70
中国科技论文在线
http://www.paper.edu.cn
也不再存在,因此下一层中每个滤波器中处理这一通道的卷积核也可以被移除。对于某一个
卷积层来说,假设其原始参数矩阵表示为:
W
核宽度, H 为卷积核高度,C 为输出通道数(也就是滤波器数量)。那么可以计算得出本
层的滤波器参数量为:
W I,W,H,C
<
=>
CHWI
×
×
×
当对本层进行滤波器剪枝后,假设剪枝比例为q,即移除的滤波器数量为
本层参数矩阵变为
I,W,H,W
<
1(
−
Cq
)
>
,相应地参数量将变为:
W
<
I,W,H,
1(
−
Cq
)
=>
HWI
×
×
×
1(
−
Cq
)
(1)
Cq × ,此时
当上一层卷积层也完成剪枝后,假设剪枝比例为 p,即移除的滤波器数量为
时本层中处理相应输入通道的卷积核需要被移除,参数矩阵变为
pW
−<
1(
I,W,H,
1(
)
(2)
I×p ,此
−
Cq
)
>
,相应地
(3)
−
1(
−
)
Cq
×
1()
p
−
参数量将变为:
75
W
−<
1(
I,W,H,
p
)
1(
−
Cq
)
=>
−
1(
HWIp
)
×
×
×
最终剪枝完成后,本层参数量最终将减少为原始参数量的
q
)
。例如当
前 后 两 层 的 剪 枝 比 例 都 为 30% 时 , 参 数 量 将 会 减 少 至 原 本 的 参 数 量
1(
,超过半数参数将被移除。显然,滤波器级别的剪枝可以
%)30
%)30
%49
1(
1(
=
−
×
−
80
有效地对模型进行参数量的缩减,同时保持参数矩阵仍然规则,完全避免对底层运算库的依
赖。
图 2 滤波器级别剪枝过程图
Fig.2 Process of filter-level pruning
2 基于注意力机制的卷积神经网络剪枝方法
85
2.1 注意力模块
为了避免只考虑滤波器参数本身量级或其造成直接影响的局限性,本文提出使用一种能
够刻画同层滤波器输出通道间依赖关系的注意力模块,来让网络自主学习滤波器的重要性。
- 3 -
中国科技论文在线
http://www.paper.edu.cn
注意力机制的本质是加权,通过合理分配有限的计算资源来使模型关注更为重要的特征。本
方法采用的注意力模块(SEBlock)来自 SENet[7],模块结构如图 3 所示,主要由一个全局
池化层、两个全连接层和激活函数组成。SEBlock 可以被添加到卷积层后部,假设通道数量
为 C,输入通道经过池化层后会得到一个含有 C 个元素的向量,随后经过两层全连接层进
行编解码处理后,恢复成一个含有 C 个元素的向量,这个向量中的每个元素就是对应通道
的缩放因子。缩放因子向量 nSF 计算公式如式 4 所示:
(
(
XGAP
<
FCsig
)
)
)
)
)
(4)
(
2 Re
FCLU
1
SF
n
=
Cn
,
>
(
(
90
95
>
其中
< CnX , 为第n个样本产生的含有C 个通道的原始输出,GAP 为全剧平均池化层,
FC 为全连接层,ReLU 和 sig 分别代表 ReLU(Rectified Linear Unit)激活函数和 sigmoid 激
活函数。通过显式刻画同层间通道的重要性关系,在反向传播过程中不断调整全连接层的参
数,最终网络会呈现出抑制或增强某些通道的趋势,因此可以根据缩放因子反映出通道的重
100
要性。因为通道和滤波器是一一对应的关系,所以通道的重要性可以反映滤波器的重要性,
从而指导滤波器级别的剪枝。
图 3 SEBlock 模块结构图
Fig.3Structure of SEBlock
2.2 通道重要性计算
105
由于 SEBlock 产生的缩放因子是数据驱动的,不同的输入会产生不同的缩放因子,为了
避免个别样本偏差造成的影响,需要统计每个通道的平均缩放因子。对于给定的一个用于计
算平均缩放因子的样本集,假设其中含有样本数量为,可以根据公式(5)计算得出平均缩
放因子向量 CI :
=
I
C
1
N
N
=
n
1
SF
n
(5)
110
其中 nSF 为第n个样本产生的缩放因子。理论上可以选取整个训练集作为样本集,但是
对于数据量较大的数据集来说,使用所有样本计算平均缩放因子开销过于庞大,同时也是不
- 4 -
中国科技论文在线
http://www.paper.edu.cn
必要的。实际上对于分类问题,只需要保证样本分布均匀(每类图片样本数量一致)的前提
下,随机选取 10%~20%的数据作为样本集即可。
2.3 剪枝步骤
115
前两节介绍了注意力模块和重要性计算公式。本小节描述了基于注意力机制的剪枝方法
的总体步骤,并阐述在残差网络上的适应性调整。剪枝具体步骤如下:
1) 添加注意力模块:对于一个训练好的网络,给网络添加注意力模块,并完成模块的全连
接层参数初始化;
2) 划分样本集:根据数据集大小,选取训练集中的部分数据作为样本集,用于计算平均缩
120
放因子;
3) 微调网络:添加了注意力模块或者完成一层剪枝后的网络会出现精度丢失,需要微调
(Fine-tuning)来恢复精度;
4) 选择剪枝通道:在当前剪枝层,使用步骤 2 中划分的样本集,根据公式(5)计算本层
通道的平均缩放因子,根据当前层的目标剪枝比例 pr%(需要预定义),选择本层缩放
因子较小的 pr%的通道作为需要移除的通道;
5) 滤波器和卷积核剪枝:移除步骤 4 中所选择通道对应的滤波器和下一层中处理这些通道
的卷积核。为了和其他方法比较剪枝效果,这一步需要移除步骤 1 中添加的注意力模块,
来控制模型参数量和其他方法一致。实际上,SEBlock 本身已经考虑到参数量的问题,
此外,随着通道的移除,SEBlock 的参数量会进一步减少,因此在真实应用场景中,即
使保留 SEBlock 也不会带来明显的参数量增加;
6) 回到步骤 3,进行下一层的剪枝:假如已经完成所有层的剪枝,进入步骤 7;
7) 再训练:继续微调网络以恢复最后一次剪枝带来的精度丢失,精度恢复后剪枝完成。
上述步骤中每层剪枝需要设定剪枝比例 pr,但是给每一层各自确定合适的剪枝比例比
较困难。并且不同的模型剪枝敏感度不同,这种探究没有通用性。也有部分文献中通过设定
阈值,移除重要性得分低于阈值的参数,但是 SEBlock 刻画的是同层通道间的重要性关系,
不同阶段的卷积层重要性得分分布存在差异,统一设定阈值没有意义,并且可能会导致部分
层被移除过多参数。因此,算法设定每一层的剪枝比例 pr 相同,通过进行多组不同比例的
剪枝验证剪枝算法的性能,也有利于对比不同参数重要性衡量方法的性能表现。
对于传统的卷积神经网络(例如 VGGNet[8]),对某一层进行滤波器级别的剪枝后,只需
要移除下一层相应的卷积核即可。而对于带有残差模块的模型(例如 ResNet[9]),由于短路
连接(Shortcut Connection)的存在,短路连接两端的通道数和特征图尺寸必须一致。如果
对这些层进行裁剪,会导致短路连接另一端的层也需要进行裁剪,而这样的裁剪并没有考虑
到连接另一端层中通道的重要性关系,并且破坏主干路上的通道数量直接影响整个网络的结
125
130
135
140
145
构,牵一发而动全身。因此,对于有残差结构的神经网络,只裁剪残差模块内除最后一个卷
积层之外的卷积层,对这些层裁剪不会影响网络主干通路上通道的数量。
3 实验与分析
实验使用 Tensorflow 计算框架,在 CIFAR-10 和 CIFAR-100[10]两个数据集上进行了验证,
分别对 VGGNet 和 ResNet-56 进行了剪枝。在 CIFAR-10 上,验证了基于注意力机制的剪枝
方法在 3 种剪枝比例下的剪枝效果。在 CIFAR-100 上,比较了与另外两种方法在 9 种剪枝
- 5 -
150
155
160
165
170
175
中国科技论文在线
比例下的分类准确率表现。
3.1 CIFAR-10 数据集结果
http://www.paper.edu.cn
本章在 CIFAR-10 数据集上,对 VGGNet 和 ResNet-56 进行了剪枝实验,结果如表 1 和
表 2 所示,其中 M 表示单位数量百万:
表 1 CIFAR-10 数据集上 VGGNet 剪枝结果表
Tab.1 VGGNetresults on CIFAR-10 dataset
通道
准确率
参数量
模型
原模型
剪枝后
剪枝比例
0%
30%
50%
70%
92.24%
92.18%
91.97%
91.57%
14.98M
7.43M
3.82M
1.42M
浮点计算量
6.27×108
3.0×108
1.57×108
0.57×108
如表 1 所示,原始 VGGNet 精确率为 92.24%,参数量为 14.98M。在剪枝刚开始时,前
几层的剪枝完成后模型精确率有所上升,这是因为参数量的减少一定程度上缓和了模型过拟
合的风险。在剪去每层 30%通道后,VGGNet 几乎没有精度丢失,此时参数量已经减少约一
半,符合公式 3 的计算结果。当通道剪枝比例为 50%时,网络准确率下降 0.27%。这是由于
基于注意力机制的参数重要性衡量方法准确地反映了参数影响力,以及神经网络本身具备一
定从剪枝带来的结构破坏中恢复的能力。当通道剪枝比例为 70%时,网络出现比较明显的
精度下降,但是精度损失仍然在 1%以内。此时,网络参数已经下降至 1.42M,约 90%的参
数已被移除。
表 2CIFAR-10 数据集上 ResNet-56 剪枝结果表
Tab.2 ResNet-56results on CIFAR-10 dataset
通道
准确率
参数量
模型
原模型
剪枝后
剪枝比例
0%
30%
50%
70%
92.84%
92.43%
91.82%
91.86%
0.85M
0.58M
0.42M
0.26M
浮点计算量
2.51×108
1.76×108
1.26×108
0.76×108
如表 2 所示,原始 ResNet-56 分类准确率为 92.84%,参数量为 0.85M。不同于 VGGNet,
ResNet-56 参数利用率更高,网络更为轻量,因此其中的冗余参数更少。实验中同样进行了
30%、50%、70%三种剪枝比例,尽管准确率下降比 VGGNet 更为严重,但是仍然可以在移
除约 50%参数时保持 1.02%的精度丢失。这种结果是合理的,对于带有短路连接的网络,网
络前部的特征信息可以更好地传递到后。网络参数利用率很高,因此同样比例的剪枝带来的
精度丢失现象更为严重。这个现象表明,在对带有短路连接的网络剪枝时需要更为谨慎。在
残差网络的剪枝完成后,模型参数量没有得到类似 VGG 网络一样程度的下降。这是由于
ResNet-56 的每个残差模块中只有两个卷积层,根据 2.3 小节中所描述问题的限制,实验中
仅对第一个卷积层进行减剪枝,所以每层裁剪后的参数量达不到 2.2 小节中计算的(1-p)×
(1-q)倍,第一层剪枝后的参数量为(1-p)倍,第二层剪枝后的参数量为(1-q)倍,由于 p 和 q
相等,所以模型的总体剩余参数比例和每层中剩余通道比例一致。
3.2 CIFAR-100 数据集结果
CIFAR-100 有 100 种类别的图片需要分类,但是图片总量和 CIFAR-10 相同,这意味着
每一类图片的样本更少,更容易发生过拟合。如图 4 所示,原始准确率为 72%。实验中选
- 6 -
中国科技论文在线
http://www.paper.edu.cn
180
取了通道剪枝比例在 10%~90%之间,步长为 10%的 9 组实验。目前主流的通道重要性衡量
方法为:Weight Sum[5]和 APoZ[6],本实验对比了这两种方法,它们的滤波器重要性得分计
算方法分别为:
1) Weight Sum:滤波器参数绝对值之和。
2) APoZ:滤波器输出通道经过 ReLU 激活函数后非零值输出的占比。
185
190
195
图 4CIFAR-100 数据集上的对比实验图
Fig.4 Comparative experiments on CIFAR-100 dataset
结果表明,三种方法中 Weight Sum 准确率下降最快,通道剪枝比例大于 10%后开始有
明显的下降。这是由于参数量级无法准确反应参数重要性和特征提取能力,和模型最后的损
失函数没有建立关联。APoZ 有更好的表现,因为在原始模型中,确实存在许多通道在经过
激活函数后输出大量的零值,这些通道被正确移除了。但是随着剪枝比例的上升,剩余通道
包含不同的有效特征信息,非零值占比小的通道可能包含更多的形状信息,APoZ 不再能衡
量参数的重要性关系。本章提出的方法准确率下降最慢,当参数裁剪率低于 50%时几乎没
有精度下降。值得注意的是,当参数裁剪率超过 90%时,本章提出的裁剪方法仍能保持部
分分类能力,而另外两种方法裁剪后的网络得到的是几乎随机的分类结果。这表明本章提出
的方法很好地将参数和损失函数联系起来,帮助网络更好地进行特征筛选以及从剪枝中恢
复。
4 结论
本文提出了一种基于注意力机制的卷积神经网络剪枝方法。不同于现有滤波器级别剪枝
200
方法仅考虑参数本身量级或参数造成的直接影响,本算法使用注意力模块为通道产生缩放因
子,以缩放因子计算通道重要性关系。由于缩放因子在反向传播中得到调整,通道重要性和
损失函数联系起来,这种显式的关系刻画让网络自主学习到通道重要性关系。实验结果表明,
相比其他剪枝方法,基于注意力机制的剪枝方法能够在相同剪枝比例下取得更高的准确率。
[参考文献] (References)
- 7 -
205
210
215
220
225
http://www.paper.edu.cn
中国科技论文在线
[1] LeCun Y, Denker J S, Solla S A. Optimal brain damage[C]// Advances in Neural Information Processing
Systems, New York: Curran Associates, 1990: 598-605.
[2] Hassibi B, Stork D G. Second order derivatives for network pruning: Optimal brain surgeon[C]// Advances in
Neural Information Processing Systems, New York: Curran Associates, 1993: 164-171.
[3] Han S, Pool J, Tran J, et al. Learning both weights and connections for efficient neural network[C]// Advances
in Neural Information Processing Systems, New York: Curran Associates, 2015: 1135-1143.
[4] Han S, Mao H, and Dally W J. Deep compression: Compressing deep neural networks with pruning, trained
quantization and huffman coding[C]// The International Conference on Learning Representations, Cambridge:
MIT Press, 2016:1-14.
[5] Li H, Kadav A, Durdanovic I, et al. Pruning filters for efficient ConvNets[C]// The International Conference on
Learning Representations, Cambridge: MIT Press, 2017:1-13.
[6] Hu H, Peng R, Tai Y W, et al. Network trimming: A data-driven neuron pruning approach towards efficient
deep architectures[J]. arXiv preprint arXiv:1607.03250, 2016.
[7] Hu J, Shen L, Sun G. Squeeze-and-excitation networks[C]// Proceedings of the IEEE Conference on Computer
Vision and Pattern Recognition, New York: IEEE Press, 2018: 7132-7141.
[8] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]// Proceedings of the IEEE
Conference on Computer Vision and Pattern Recognition, New York: IEEE Press, 2016: 770-778.
[9] Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. arXiv
preprint arXiv:1409.1556, 2014.
[10] Krizhevsky A, Hinton G. Learning multiple layers of features from tiny images[R]. Canada: University of
Toronto, 2009.
- 8 -