论文地址:https://arxiv.org/abs/1903.03046
代码地址:https://github.com/deep-fry/mayo.
作者针对稀疏CNNs提出了聚焦量化(focused quantization):基于二次幂的量化策略,利用了经过细粒度剪枝后的权重。该方法能够发现不同稀疏度层(经过剪枝)中的最有效的权值表示,并且量化后的的乘法被移位操作代替,实现了高效推理。
在ResNet50中,实现了18.08倍的压缩比(CR),top5精度损失0.24%优于现有的压缩方法。
细粒度剪枝是在最细粒度(单个权重)上将权重设为0,实现压缩;权重的移位量化是将权重量化为0或2的次幂,即
{
0
,
±
1
,
±
2
,
.
.
.
}
\{0,\pm1,\pm2,...\}
{0,±1,±2,...},使得卷积中的乘法变为更简单的移位操作。但是,细粒度剪枝常常与量化冲突,如图1,在剪枝后的稀疏CNNs的某些层,对其进行移位量化,效果却很不理想:在权值出现概率高的区域,量化的bit却很少,即有太多的权重量化到同一个值,而在权值出现概率高的区域,量化的bit却很多。这就造成了量化的bit数的严重浪费,没有用在该用的地方。
为了解决这个问题,作者提出了聚焦量化:将移位量化和重中心量化混合使用。重中心量化使用混合高斯分布来寻找稀疏层中权重分布最集中的概率质量,并将其量化为2的次幂值,具体过程如图2。
Method
shift quantization
移位量化即将浮点数量化为2的次幂或0。(k+2)-bit的移位量化的值有:
其中,
s
=
{
−
1
,
0
,
1
}
s=\{-1,0,1\}
s={−1,0,1},即符号值,
e
e
e为
[
0
,
2
k
−
1
]
[0,2^k-1]
[0,2k−1]的有界整数,
b
b
b为偏差。
θ
^
=
Q
n
,
b
s
h
i
f
t
[
θ
]
\hat{\theta}=Q^{shift}_{n,b}[\theta]
θ^=Qn,bshift[θ]表示n-bit的带有偏差b的权值
θ
\theta
θ通过移位量化到最接近的值
θ
^
\hat{\theta}
θ^。简单来说,就是确定了所有的量化值,然后将权值量化为最近的量化值。
Recentralized Quantization
重中心量化函数
Q
[
θ
]
Q[\theta]
Q[θ]可以将量化值集中在权重分布概率高的区域,并且产生更少的舍入误差。假设
θ
∈
θ
\theta\in\bm{\theta}
θ∈θ是某个卷积层的权重,
Q
[
θ
]
Q[\theta]
Q[θ]定义为:
其中,
z
θ
∈
{
0
,
1
}
z_{\theta}\in\{0,1\}
zθ∈{0,1},表示
θ
\theta
θ是否修剪(修剪的权重设为0);
c
∈
C
c\in C
c∈C表示FQ作用的位置,都由c处的均值
μ
c
\mu_c
μc和标准差
δ
c
\delta_c
δc决定;常数
m
θ
∈
C
m_{\theta}\in C
mθ∈C用于量化
θ
\theta
θ;
δ
c
,
m
θ
∈
{
0
,
1
}
\delta_{c,m_{\theta}}\in\{0,1\}
δc,mθ∈{0,1},当
c
=
m
θ
c=m_{\theta}
c=mθ时为1,否则为0;
Q
c
r
e
c
[
θ
]
Q^{rec}_c[\theta]
Qcrec[θ]用移位量化局部量化c。而后作者又引入一个可学习的放缩因子
α
\alpha
α,初始化为1。
通过调整每个c的
μ
c
,
δ
c
\mu_c,\delta_c
μc,δc,找到合适的权重,使得量化后的权重分布接近原始的分布。
Optimizing Recentralized Quantization Q [ θ ] Q[\theta] Q[θ]
对于
μ
c
,
δ
c
\mu_c,\delta_c
μc,δc,可以进行优化。首先,找到高概率区域(图2(1)),然后用移位量化进行局部量化(图2(2)(3))。
通常,权值分布可以近似为混合高斯分布,因此用混合高斯分布模型
q
ϕ
m
i
x
(
θ
)
q^{mix}_{\phi}(\theta)
qϕmix(θ)来近似原始分布
p
(
θ
∣
D
)
p(\theta|D)
p(θ∣D)进行优化:
其中,
f
(
θ
∣
μ
c
,
δ
c
)
f(\theta|\mu_c,\delta_c)
f(θ∣μc,δc)是高斯分布
N
(
μ
c
,
δ
c
)
N(\mu_c,\delta_c)
N(μc,δc)的概率密度函数,非负数
λ
c
\lambda_c
λc表示第c个的混合权重,且
∑
c
∈
C
λ
c
=
1
\sum_{c\in C}\lambda_c=1
∑c∈Cλc=1。
对于给定的
θ
∼
p
(
θ
∣
D
)
\theta \thicksim p(\theta|D)
θ∼p(θ∣D),因为
ϕ
\phi
ϕ包含了
μ
c
,
δ
c
,
λ
c
\mu_c,\delta_c,\lambda_c
μc,δc,λc,因此只需求
q
ϕ
m
i
x
(
θ
)
q^{mix}_{\phi}(\theta)
qϕmix(θ)的最大值——这就是所谓的最大似然估计(MLE),可以用EM算法高效求解。
实际上,使用两个高斯分量
C
=
{
−
,
+
}
C=\{-,+\}
C={−,+}来识别权值分布中的高概率区域已经足够(如图2,正负都看作是高斯分布)。为了让EM算法快速收敛,用层的权值的均值和标准差分别初始化
μ
−
,
δ
−
\mu_-,\delta_-
μ−,δ−和
μ
+
,
δ
+
\mu_+,\delta_+
μ+,δ+,同时
λ
−
=
λ
+
=
1
2
\lambda_-=\lambda_+=\frac{1}{2}
λ−=λ+=21;然后混合模型会为每个权重
θ
\theta
θ生成相应的
m
θ
m_{\theta}
mθ,
m
θ
m_{\theta}
mθ通过对一个类别的分布进行抽样来评估每个权重,其中
c
=
m
θ
c=m_{\theta}
c=mθ的概率
p
(
c
=
m
θ
)
=
λ
c
f
(
θ
∣
μ
c
,
δ
c
)
q
ϕ
m
i
x
(
θ
)
p(c=m_\theta)=\frac{\lambda_cf(\theta|\mu_c,\delta_c)}{q^{mix}_{\phi}(\theta)}
p(c=mθ)=qϕmix(θ)λcf(θ∣μc,δc)。
最后,将b的值设置为2的次幂值,确保
q
n
,
b
s
h
i
f
t
[
⋅
]
q^{shift}_{n,b}[\cdot]
qn,bshift[⋅]最多有
1
2
n
+
1
\frac{1}{2^n+1}
2n+11的比例的数溢出,然后将溢出值clip到最大值。
Choosing the Appropriate Quantization
若是两个高斯分布之间有很高的重叠率,如图3,则直接使用移位量化就能得到很好的结果。
为了度量两个分布直接的相似性,从而决定使用移位量化或重中心量化,作者建议先对混合分布标准化,再使用2-Wasserstein度量作为决策准则,称为Wasserstein separation:
至此,FQ可以自适应地选择量化方法:当
W
(
c
1
,
c
2
)
<
w
s
e
p
W(c_1,c_2)<w_{sep}
W(c1,c2)<wsep时,使用重中心量化;否则使用移位量化。在实验中,
w
s
e
p
=
2.0
w_{sep}=2.0
wsep=2.0。
Experiments