Gate Decorator: Global Filter Pruning Method for Accelerating Deep Convolutional Neural Networks
相关背景
- 过滤器的修建不会改变模型的设计理念且易于和其他压缩,加速技术结合。不需要专门的硬件和软件进行加速。
- 过滤器修建的研究可以主要分为两类:逐层修建和全局修建。由于每层网络需要预定义修建率,对于深度卷积,逐层修剪会非常耗时。全局修建只需要个一个修建率就可以对整个网络结构进行修改,但是全局修剪必须解决全局过滤器重要性排名问题(Global filter importance ranking)。
- FLOPs:16亿个浮点运算操作
- 本文的贡献:
- 提出 Gate Decorator 算法用以解决 GFIR 问题,并将其应用于 Batch Normalization。
- 提出 Tick-Tock 的迭代修剪框架,用于提高修剪的精度。
- 介绍组修剪技术,用以解决 shortcuts 的约束修剪问题。
本文方法
Gate Decorator
提出背景
简单的说,过滤器剪枝就是选择一个过滤器集合
k
∈
K
k ∈ K
k∈K,删除这些过滤器集合所对应的参数
θ
−
\theta^-
θ−,剩下模型参数
θ
+
\theta^+
θ+。则模型的目标函数如下:
传统的思路:循环 K 次,假设删除该次所对应的滤波器,计算损失差,如下:
得到所有损失差中最小的那个,该损失差对应的滤波器为 least effect of pruning。但是传统方法对于成千上万个滤波器的效率是很低的。为此,作者提出了 Gate Decorator 的方法用于 评估过滤器的重要性。
具体方法:
Gate Decorator 的意思就是为过滤器所输出的特征图
z
z
z赋予一个 Gate:
ϕ
\phi
ϕ。即现在的特征图输出为:
z
^
=
ϕ
z
\hat{z}=\phi z
z^=ϕz
当
ϕ
=
0
\phi=0
ϕ=0 时,等价于修剪该过滤器。如果利用
Ω
Ω
Ω 表示上面的 X,Y以及模型中除却
ϕ
\phi
ϕ 的其他参数,那么整个模型的目标函数,可以化为如下形式:
对
L
Ω
0
L_Ω^0
LΩ0进行泰勒展开如下:
由于 R1 是一个拉格朗日余数,因此可以对这个余数进行省略。
综上,得到目标函数如下:
也就是说,我们可以将上面的目标函数作为每个过滤器的重要性评分,将上面公式还原,得到重要性评分
θ
(
ϕ
i
)
\theta(\phi_i)
θ(ϕi):
最后,利用上面的重要性评分和 Batch Normalization 相结合(GBN),得到式子如下:
z
i
n
z_{in}
zin 为 BN 的输入数据(线性转换后的数据),
r
z
^
+
β
r\hat{z}+\beta
rz^+β 为 BN 的输出数据,将 BN 后的数据,放入本论文的评分系统中,得到该过滤器的评分。
Tick-Tock Pruning Framework
一种简单的迭代的修剪结构
即 ResNet 的每一个模块的卷积都会在后面跟一个 GBN 层用于剪枝该层卷积中的过滤器。
注意:Tick-Tock 阶段是独立于训练阶段的,每次epoch在一个小的训练子集上进行,只更新
ϕ
\phi
ϕ 值和 最后一层网络层的参数,用于避免过拟合。
实验结果
比较剪枝方法之间的比较(on CIFAR-10):
在数据 IMageNet上的比较
“[Top-1] ↓” and “[Top-5] ↓”:表示准确率下降的点数
“P .Top-1” and “P .Top-5”:表示剪枝的精度
总结
本文提出了三个组件来服务于全局过滤器修剪的目的
1)解决全局过滤器重要性排序(GFIR)问题的Gate Decorator算法。
2)提升修剪精度的 Tick-Tock 框架。
3)解决约束剪枝问题的群体剪枝方法。
我们证明了全局过滤剪枝方法可以看作是一种任务驱动的网络结构搜索算法。大量实验表明,该方法优于现有的几种过滤器剪枝方法。