论文地址: paper
代码地址: HRank, HRankPlus
1. 论文概述
这篇文章认为卷及神经网络中每层生成的特征图中包含信息量的大小可以使用特征图的秩作为评判标准,特征图秩的大小和对应着卷积核的重要性。因此本文在网络压缩中将保留 High Rank 对应的 filter, 裁剪 Low Rank 对应的 filter。上述网络裁剪的前提是基于每个 filter 产生的特征图的 rank 均值是一致的,并不会被 CNN 的参数和数据集中图片的不同而改变。同时,文章用数学证明了具有low-rank属性特征图对应的 filter 具有较少的信息,具有 high-rank属性特征图对应的 filter 具有更多的信息。
网络裁剪通常分成两类:weight pruning (非结构化剪枝) 和 filter pruning(结构化剪枝),第一种剪枝策略产生的是稀疏的权重矩阵,第二种剪枝策略是根据 filter 的重要性进行裁剪。本文从两个方向衡量 filter 的重要性。
- A. Property Importance: 这种类型的方法是建立在网络的固有属性上的,并不需要修改网络的损失训练损失函数,在完成剪枝之后需要finetune用以恢复精度。一些典型的方法有L1或L2范数/一阶梯度度量/特征图反向映射filter重要性/网络层的几何中值。这些方法会存在精度和压缩比例的局限;
- B. Adaptive Importance:这种类型的方法是将剪裁的方法嵌入到网络的训练过程(给损失函数添加额外的正则项并使其稀疏)中,这样通过在网络训练过程中通过数据流的形式选择更加的裁剪方案。一些方法有:在BN中scaling稀疏/引入结构稀疏参数。这些直接在网络中加入的稀疏约束的方式一般比第一种方法中获得结果要好,但是由于网络的损失函数已经被改变,这就使得整个网络都需要重新训练而不仅仅是重新fintune了;
这篇论文则是根据 filter 产生的特征图的秩的大小衡量 filter 的重要性,从而决定裁剪掉哪些 filter,其流程如下图所示:
同时,文章还发现网络的特征图的秩并不会根据训练 batch 的变化而变化(也就是filter对输入数据分布并不敏感),见下图:
本篇论文的贡献:
- A. 文章发现单个 filter 生成的特征图秩的均值并不会随着网络参数的改变而改变;
- B. 文章证明了具有 low-rank 属性的特征图信息含量较少,而 high-rank 属性的
特征图信息含量较多。 - C. 实验证明文章中提出的算法在模型压缩和加速方面具有很好的表现。
2. 数学建模
2.1. 变量说明
假设CNN中拥有 K K K 层卷积, C i C^i Ci代表第 i i i个卷基层,该层的卷积参数表示为 W C i = { w 1 i , w 2 i , … , w n i i } ∈ R n i ∗ n i − 1 ∗ k i ∗ k i W_{C^{i}} = \left\{w_1^i, w_2^i, \dots, w_{n_i}^i\right\} \in R^{n_{i}*n_{i-1}*k_i*k_i} WCi={w1i,w2i,…,wnii}∈Rni∗ni−1∗ki∗ki ,生成的特征图表示为 O i = { o 1 i , o 2 i , … , o n i i } ∈ R n i ∗ g ∗ h i ∗ w i O^i=\left\{o^i_1, o^i_2, \dots, o^i_{n_i} \right\} \in R^{n_i*g*h_i*w_i} Oi={o1i,o2i,…,onii}∈Rni∗g∗hi∗wi。经过选择可以将原有的 filter 分为两个子集: 保留集 I C i = { w I 1 i i , w I 2 i i , … , w I n i 1 i i } I_{C^i}=\left\{w^i_{I^i_1}, w^i_{I^i_2}, \dots, w^i_{I^i_{n_{i1}}}\right\} ICi={wI1ii,wI2ii,…,wIni1ii} 和剪除集 U C i = { w U 1 i i , w U 2 i i , … , w U n i 1 i i } U_{C^i}=\left\{w^i_{U^i_1}, w^i_{U^i_2}, \dots, w^i_{U^i_{n_{i1}}}\right\} UCi={wU1ii,wU2ii,…,wUni1ii}, 上述两个集合构成了原有的 filter, 并且两者之间并没有交集。
2.2 HRank 描述
Filter Pruning 的目标是辨别和剪除包含较少信息的 filter, 文章中给出的待优化目标函数:
min
δ
i
,
j
∑
i
=
1
K
∑
j
=
1
n
i
δ
i
,
j
L
(
w
j
i
)
\min_{\delta_{i,j}}\sum_{i=1}^{K}\sum_{j=1}^{n_i}\delta_{i,j}L(w_j^i)
δi,jmini=1∑Kj=1∑niδi,jL(wji)
s
.
t
.
∑
j
=
1
n
i
δ
i
,
j
=
n
i
2
s.t. \sum_{j=1}^{n_i}\delta_{i,j}=n_{i2}
s.t.j=1∑niδi,j=ni2
其中,指示函数
δ
∈
{
0
,
1
}
\delta \in \left\{0, 1\right\}
δ∈{0,1}, 当filter很重要的时候值为1,否则为0.
L
(
⋅
)
L(\cdot)
L(⋅) 是度量函数,衡量 filter 的重要性。
这篇文章中设计的度量函数希望的是度量输入图像(特征图)的分布与输出鲁棒,否则会出现取得次优解。这篇文章将度量的对象放在了特征图上,而不是 filter 的权值,这样做的好处是可以很好共同反应filter与输入图像(特征图)的特性。因而上面建立的最优化模型就可以描述为:
min
δ
i
,
j
∑
i
=
1
K
∑
j
=
1
n
i
δ
i
,
j
E
I
−
P
(
I
)
[
L
^
(
o
j
i
(
I
,
:
,
:
)
)
]
\min_{\delta_{i,j}}\sum_{i=1}^K\sum_{j=1}^{n_i}\delta_{i,j}E_{I-P(I)}\left[\hat{L}(o_j^i(I,:,:))\right]
δi,jmini=1∑Kj=1∑niδi,jEI−P(I)[L^(oji(I,:,:))]
s
.
t
.
∑
j
=
1
n
i
δ
i
,
j
=
n
i
2
s.t. \sum_{j=1}^{n_i}\delta_{i,j}=n_{i2}
s.t.j=1∑niδi,j=ni2
其中,
I
I
I 是输入图像(特征图),其采样的分布是
P
(
I
)
P(I)
P(I),
L
^
\hat{L}
L^度量filter
w
j
i
w_j^i
wji生成的特征图
o
j
i
(
I
,
:
,
:
)
o_j^i(I,:,:)
oji(I,:,:)的信息含量,因此,
L
^
\hat{L}
L^和
L
L
L是正相关的关系,特征图包含的信息越多,与之相对应的filter也就越重要。
因而当前的问题已经转化成估计filter产生的特征的信息度量函数
L
^
\hat{L}
L^, 之前的一些度量方法对输入数据的分布
P
(
I
)
P(I)
P(I)比较敏感。因而,本文中提出了使用 rank 概念的度量方式,特征图的度量就可以描述为:
L
^
(
o
j
i
(
I
,
:
,
:
)
)
=
R
a
n
k
(
o
j
i
(
I
,
:
,
:
)
)
\hat{L}(o_j^i(I,:,:))=Rank(o_j^i(I,:,:))
L^(oji(I,:,:))=Rank(oji(I,:,:))
其中,
R
a
n
k
(
⋅
)
Rank(\cdot)
Rank(⋅)是输入图像
I
I
I的 rank, 在输入图像对应的矩阵上使用 SVD分解,并划分重要区域与非重要区域,得到:
o
j
i
(
I
,
:
,
:
)
=
∑
i
=
1
r
σ
i
μ
i
v
i
T
=
∑
i
=
1
r
′
σ
i
μ
i
v
i
T
+
∑
i
=
r
′
+
1
r
σ
i
μ
i
v
i
T
o_j^i(I,:,:)=\sum_{i=1}^r\sigma_{i}\mu_{i}v_{i}^T=\sum_{i=1}^{r'}\sigma_{i}\mu_{i}v_{i}^T+\sum_{i=r'+1}^{r}\sigma_{i}\mu_{i}v_{i}^T
oji(I,:,:)=i=1∑rσiμiviT=i=1∑r′σiμiviT+i=r′+1∑rσiμiviT
文章将当前特征图包含的信息量描述为:
r
=
R
a
n
k
(
0
j
i
(
I
,
:
,
:
)
)
r=Rank(0_j^i(I,:,:))
r=Rank(0ji(I,:,:))
2.3 网络裁剪
文章发现由某个filter生成的特征其 rank 不与输入的数据相关(不同输入样本可以通过求取期望的形式进行平滑近似),而且其 rank 还可以表示数据含有信息的多少,根据上述两个性质对网络中 filter 进行裁剪, 因而度量网络层中的重要性可以用某个filter下的rank期望:
E
I
−
P
(
I
)
[
L
^
(
o
j
i
(
I
,
:
,
:
)
)
]
≈
∑
t
=
1
g
R
a
n
k
(
o
j
i
(
t
,
:
,
:
)
)
E_{I-P(I)}[\hat{L}(o_j^i(I,:,:))] \approx \sum_{t=1}^{g}Rank(o_j^i(t,:,:))
EI−P(I)[L^(oji(I,:,:))]≈t=1∑gRank(oji(t,:,:))
因而可以将原来的最优化表达式描述为:
min
δ
i
j
∑
i
=
1
K
∑
j
=
1
n
i
δ
i
j
(
w
j
i
)
∑
t
=
1
g
R
a
n
k
(
o
j
i
(
t
,
:
,
:
)
)
\min_{\delta_{ij}}\sum_{i=1}^K\sum_{j=1}^{n_i}\delta_{ij}(w_j^i)\sum_{t=1}^gRank(o_j^i(t,:,:))
δijmini=1∑Kj=1∑niδij(wji)t=1∑gRank(oji(t,:,:))
s
.
t
.
∑
j
=
1
n
i
=
n
i
2
s.t.\sum_{j=1}^{n_i}=n_{i2}
s.t.j=1∑ni=ni2
因而,文章中的网络裁剪过程可以具体描述为:
- A. 首先计算生成当前层特征图的每个 filter 的 rank 期望 R i = { r 1 i , r 2 i , ⋯ , r n i i } ∈ R n i R^i=\left\{r^i_1, r^i_2, \cdots, r^i_{n_i}\right\} \in R^{n_i} Ri={r1i,r2i,⋯,rnii}∈Rni;
- B. 对这些 rank 值进行降序重排后的值 R i ^ = { r I 1 i i , r I 2 i i , ⋯ , r I n i i i } ∈ R n i \hat{R^i}=\left\{r^i_{I^i_1}, r^i_{I^i_2}, \cdots, r^i_{I^i_{n_i}}\right\} \in R^{n_i} Ri^={rI1ii,rI2ii,⋯,rIniii}∈Rni;
- C. 按照设定好的裁剪阈值将上述的 rank 划分成两个部分,也就是要保留的和裁剪的;
- D. 移除裁剪的部分之后对重要的部分的参数进行初始化对网络进行 finetune。
3. 实验结论
CIFAR-10数据集上 ResNet-56/110 结果:
ImageNet数据集上 DenseNet-40:
ImageNet 数据集上 ResNet-50: