Ruihao Gong 1,2 Xianglong Liu 1∗ Shenghu Jiang 1,2 Tianxiang Li2,3 Peng Hu 2Jiazhen Lin 2 Fengwei Yu 2Junjie Yan2
IEEE/CVF International Conference on Computer Vision (ICCV)
CCF A
2019
一、动机和贡献
动机:
由于量化函数(均匀量化和二元量化)的导数大多数情况下都是
0
0
0,因此,使用这些方法进行量化,往往会导致训练的困难,以及模型精度的下降。
贡献:
本文提出一种“可微的”软量化方法(DSQ)来解决上述问题,其主要优势为:
- DSQ函数可以较为精确地模拟二元/均匀量化函数,同时保持训练过程中的可控性;
- 由于DSQ函数处处可微(相对于之前量化函数导数处处为0的情况),因此可以很容易且精确地应用于实际的网络训练中;
- 根据DSQ,可以平衡“剪枝误差”和“近似误差”(量化误差包含的两种形式),从而减少整体误差。
二、主要算法
2.1 可微对称函数
二元量化可以表示为:
Q
B
(
x
)
=
sgn
(
x
)
=
{
+
1
,
if
x
>
0
,
−
1
,
otherwise
.
Q_B(x)=\text{sgn}(x)=\begin{cases} +1,&\text{if~} x>0,\\ -1,&\text{otherwise}. \end{cases}
QB(x)=sgn(x)={+1,−1,if x>0,otherwise.
均匀量化可以表示为:
Q
U
(
x
)
=
round
(
x
Δ
)
Δ
,
Q_U(x)=\text{round}(\frac{x}{\Delta})\Delta,
QU(x)=round(Δx)Δ,
其中,范围
(
l
,
u
)
(l,u)
(l,u) 分为
2
b
−
1
(
b
∈
I
+
)
2^b-1~(b\in\mathbb{I}^+)
2b−1 (b∈I+) 个区间
P
i
\mathcal{P}_i
Pi,区间长度定义为
Δ
=
u
−
1
2
b
−
1
\Delta=\frac{u-1}{2^b-1}
Δ=2b−1u−1。
由于量化函数的导数几乎处处为0,因此引入一种“可微对称函数”来模拟二元/均匀量化器,其形式为:
φ
(
x
)
=
s
tanh
(
k
(
x
−
m
i
)
)
,
if
x
∈
P
i
,
\varphi(x)=s\tanh\left(k(x-m_i)\right),\quad\text{if}~x\in \mathcal{P}_i,
φ(x)=stanh(k(x−mi)),if x∈Pi,
其中,
m
i
=
l
+
(
i
+
0.5
)
Δ
m_i=l+(i+0.5)\Delta
mi=l+(i+0.5)Δ,
s
=
1
tanh
(
0.5
k
Δ
)
s=\frac{1}{\tanh(0.5k\Delta)}
s=tanh(0.5kΔ)1。参数
k
k
k 控制了函数的形状;当
k
↑
k\uparrow
k↑,函数越接近于阶梯函数(量化可以看成多个阶梯函数叠加的效果)。
2.2 DSQ
根据可微对称函数,可以得到DSQ为:
Q
S
(
x
)
=
{
l
,
x
<
l
,
u
,
x
>
u
,
l
+
Δ
(
i
+
φ
(
x
)
+
1
2
)
,
x
∈
P
i
.
Q_S(x)=\begin{cases} l,&x<l,\\ u,&x>u,\\ l+\Delta\left(i+\frac{\varphi(x)+1}{2}\right),&x\in\mathcal{P} _i. \end{cases}
QS(x)=⎩
⎨
⎧l,u,l+Δ(i+2φ(x)+1),x<l,x>u,x∈Pi.
因此 ,在实际中,通常利用函数函数 Q S ( ⋅ ) Q_S(\cdot) QS(⋅) 在“向前传播”阶段模拟量化,在“向后传播”阶段进行参数更新。
2.3 DSQ的超参数选择
2.3.1 特征变量 α \alpha α 的选择
本文引入“特征变量characteristic variable”
α
\alpha
α 来表征DSQ和标准量化函数的差异。本文定义
α
\alpha
α 为最大点之间的距离,如下图所示:
根据上图可以观察到,
α
\alpha
α 越小,DSQ就可以约精确地模拟传统量化函数,因此将
α
\alpha
α 定义为:
α
=
1
−
tanh
(
0.5
k
Δ
)
=
1
−
1
s
\alpha=1-\tanh(0.5k\Delta)=1-\frac{1}{s}
α=1−tanh(0.5kΔ)=1−s1
那么,DSQ的精度就取决于参数
α
\alpha
α 和
Δ
\Delta
Δ。因此,可以将
s
,
k
s,k
s,k 表示为
s
=
1
1
−
α
s=\frac{1}{1-\alpha}
s=1−α1,
k
=
1
Δ
log
(
2
α
−
1
)
(
Δ
=
u
−
l
2
b
−
1
,
φ
(
0.5
Δ
)
=
1
)
k=\frac{1}{\Delta}\log(\frac{2}{\alpha}-1)~\left(\Delta=\frac{u-l}{2^b-1},\varphi(0.5\Delta)=1\right)
k=Δ1log(α2−1) (Δ=2b−1u−l,φ(0.5Δ)=1)。
那么如何对
α
\alpha
α 进行优化?可以选用对损失函数优化的方式得到,具体优化问题表示为:
min
α
L
(
α
;
x
,
y
)
s
.
t
.
∥
α
∥
2
<
λ
.
\min_\alpha \mathcal{L}(\alpha;x,y)\quad s.t.\|\alpha\|_2<\lambda.
αminL(α;x,y)s.t.∥α∥2<λ.
因此,可以通过“向后传播”更新
α
\alpha
α :
∂
y
∂
α
=
{
0
,
x
<
l
,
0
,
x
>
u
,
∂
Q
S
(
x
)
∂
α
,
x
∈
P
i
.
\frac{\partial y}{\partial \alpha}=\begin{cases} 0,&x<l,\\ 0,&x>u,\\ \frac{\partial Q_S(x)}{\partial\alpha},&x\in\mathcal{P}_i. \end{cases}
∂α∂y=⎩
⎨
⎧0,0,∂α∂QS(x),x<l,x>u,x∈Pi.
2.3.2 参数 l , u l,u l,u 的更新
类似于
α
\alpha
α 更新,参数
l
,
u
l,u
l,u 的更新可以表示为:
∂
y
∂
l
=
{
1
,
x
<
l
,
0
,
x
>
u
,
1
+
q
∂
Δ
∂
l
+
Δ
2
∂
φ
(
x
)
∂
l
,
x
∈
P
i
,
\frac{\partial y}{\partial l}=\begin{cases} 1,&x<l,\\ 0,&x>u,\\ 1+q\frac{\partial \Delta}{\partial l}+\frac{\Delta}{2}\frac{\partial \varphi(x)}{\partial l},&x\in\mathcal{P}_i, \end{cases}
∂l∂y=⎩
⎨
⎧1,0,1+q∂l∂Δ+2Δ∂l∂φ(x),x<l,x>u,x∈Pi,
∂
y
∂
u
=
{
0
,
x
<
l
,
1
,
x
>
u
,
q
∂
Δ
∂
u
+
Δ
2
∂
φ
(
x
)
∂
u
,
x
∈
P
i
,
\frac{\partial y}{\partial u}=\begin{cases} 0,&x<l,\\ 1,&x>u,\\ q\frac{\partial \Delta}{\partial u}+\frac{\Delta}{2}\frac{\partial \varphi(x)}{\partial u},&x\in\mathcal{P}_i, \end{cases}
∂u∂y=⎩
⎨
⎧0,1,q∂u∂Δ+2Δ∂u∂φ(x),x<l,x>u,x∈Pi,
其中,
q
=
i
+
1
2
(
φ
(
x
)
+
1
)
q=i+\frac{1}{2}\left(\varphi(x)+1\right)
q=i+21(φ(x)+1)。
2.4 算法流程
注意:DSQ需结合 sgn ( ⋅ ) \text{sgn}(\cdot) sgn(⋅) 函数才可以模拟传统梁阿器。