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