由于常规基于大小对权重的剪枝可以对全连接层的参数显著较少,但可能对卷积层的计算量降低不够,因为剪枝后的网络的不规则稀疏。本论文对输出精度影响较小的卷积核以及与之相连的特征映射移除,达到计算量显著降低的效果。与权重剪枝不同的是,本文的方法不会导致稀疏连接模式。
过滤器Filters和特征图Feature maps的剪枝
nin_ini为第iii层卷积层的输入通道数,hi/wih_i/w_ihi/wi为输入特征图的高/宽。卷积层将输入特征图Xi∈Rni×hi×wiX_i \in \mathbb{R}^{n_i \times h_i \times w_i}Xi∈Rni×hi×wi转换为Xi+1∈Rni+1×hi+1×wi+1X_{i+1} \in \mathbb{R}^{n_{i+1} \times h_{i+1} \times w_{i+1}}Xi+1∈Rni+1×hi+1×wi+1。这是通过ni+1n_{i+1}ni+1个3D过滤器Fi,j∈Rni×k×k\mathcal{F}_{i,j} \in \mathbb{R}^{n_i \times k \times k}Fi,j∈Rni×k×k作用在nin_ini个输入通道上,即,一个过滤器产生一个特征图。每个过滤器由nin_ini个2D卷积核K∈Rni×ni+1×k×k\mathcal{K} \in \mathbb{R}^{n_i \times n_{i+1} \times k \times k}K∈Rni×ni+1×k×k。原论文中给出的卷积层的运算数为
ni+1nik2hi+1wi+1
n_{i+1}n_ik^2h_{i+1}w_{i+1}
ni+1nik2hi+1wi+1
这里应该只是给出了卷积操作时与权重相关的乘法运算,输出的单个特征图上的每个元素对应于nin_ini次卷积运算,每个卷积核的运算数为k2k^2k2,这样,输出特征图上的单个元素的运算数为nik2n_ik^2nik2,单个特征图的运算为nik2hi+1wi+1n_i k^2 h_{i+1} w_{i+1}nik2hi+1wi+1,共生成ni+1n_{i+1}ni+1个特征图。如果第jjj个3D过滤器Fi,j\mathcal{F}_{i,j}Fi,j被剪枝,则相应的第i+1i+1i+1层中的第jjj个特征图Xi+1,jX_{i+1,j}Xi+1,j也将被移除,这样减少运算数为nik2hi+1wi+1n_i k^2 h_{i+1} w_{i+1}nik2hi+1wi+1。与之对应的第i+2i+2i+2层的运算数减少ni+2k2hi+2wi+2n_{i+2}k^2h_{i+2}w_{i+2}ni+2k2hi+2wi+2。对第iii层剪去mmm个过滤器,第iii和i+1i+1i+1层所减少的计算开销的比例均为m/ni+1m/n_{i+1}m/ni+1(第iii层减少的运算数和总运算数分别为mnik2hi+1wi+1m n_i k^2 h_{i+1} w_{i+1}mnik2hi+1wi+1和ni+1nik2hi+1wi+1n_{i+1} n_i k^2 h_{i+1} w_{i+1}ni+1nik2hi+1wi+1,第i+1i+1i+1层减少的运算数和总运算数分别为mni+2k2hi+1wi+1m n_{i+2} k^2 h_{i+1} w_{i+1}mni+2k2hi+1wi+1和ni+1ni+2k2hi+1wi+1n_{i+1} n_{i+2} k^2 h_{i+1} w_{i+1}ni+1ni+2k2hi+1wi+1)。过滤器剪枝所对应的特征图移除以及下一层卷积核移除,如下图所示。
单层中的过滤器剪枝
出于对计算效率的考虑,在尽可能减小精度下降的前提下,对已经受到良好训练的网络中的不重要的过滤器进行剪枝。
通过对每一层中的过滤器的权重绝对值之和∑∣Fi,j∣\sum |\mathcal{F}_{i,j}|∑∣Fi,j∣的计算,即,li−norml_i-normli−norm 。
第iii层卷积层进行m个过滤器剪枝的过程:
- 对于每个过滤器Fi,j\mathcal{F}_{i,j}Fi,j,计算其核权重的绝对值之和sj=∑l=1ni∑∣Kl∣s_j=\sum_{l=1}^{n_i}\sum|\mathcal{K}_l|sj=∑l=1ni∑∣Kl∣
- 对sjs_jsj进行排序
- 对m个最小值的过滤器以及相应的特征图进行剪枝。对应于该特征图的下一层的卷积层的核也移除
- 对第iii层和第i+1i+1i+1层创建新的核矩阵,并将剩下的核权重拷贝到新模型中。
多层过滤器的剪枝
一次性进行多层过滤器剪枝的优势:
- 对于深度网络,逐层剪枝和再训练是非常耗时的
- 对整个网络层进行剪枝,给出了得到较小网络的鲁棒性的整体视角,
- 对于复杂网络,整体视角可能是必要的。例如,对于ResNet,对恒等特征图的剪枝活每个残差块的第二层的剪枝会导致其他层的剪枝
为了对多层过滤器剪枝,本文提出了层级过滤器选择的两种策略:
-
独立剪枝,对每一层的过滤器决定是否剪枝与其他层无关
择的两种策略: -
独立剪枝,对每一层的过滤器决定是否剪枝与其他层无关
-
贪婪剪枝,考虑到先前层中所移除的过滤器。这种策略在计算权重绝对值之和时,不需要考虑先前已剪枝的特征图所对应的核。