原文链接:https://www.yuque.com/yahei/hey-yahei/quantization-retrain_differentiable
欢迎引用&转载,但烦请注明出处~
在传统的QAT中,训练的只有权重,而量化参数是根据权重的分布所确定的。有研究者就想,为什么不把量化参数也作为训练对象呢?既然量化参数是可训练的,那么它能被求导,也就是可微的,所以我们可以称这类方法为“可微量化参数”。
PACT
论文:《PACT: Parameterized Clipping Activation for Quantized Neural Networks (ICLR2018)》
PArameterized Clipping acTivation(PACT)——这字母缩写取的还真是奇葩……
PACT讨论了ReLU激活下,如何直接训练输入数据的截断范围 α \alpha α
y = P A C T ( x ) = C l a m p ( x , 0 , α ) = { 0 x ∈ ( − ∞ , 0 ) x x ∈ [ 0 , α ) α x ∈ [ α , + ∞ ) y = PACT(x) = Clamp(x, 0, \alpha) = \begin{cases} 0 & x \in (- \infty, 0) \\ x & x \in [0, \alpha) \\ \alpha & x \in [\alpha, +\infty) \end{cases} y=PACT(x)=Clamp(x,0,α)=⎩⎪⎨⎪⎧0xαx∈(−∞,0)x∈[0,α)x∈[α,+∞)
y ˉ = R o u n d ( y ⋅ 2 N − 1 α ) \bar{y} = Round(y \cdot \frac{2^N - 1}{\alpha}) yˉ=Round(y⋅α2N−1)
y ~ = α 2 N − 1 y ˉ \tilde{y} = \frac{\alpha}{2^N-1} \bar{y} y~=2N−1αyˉ
跟ReLU6有点像,ReLU6用的是一个固定的 α = 6 \alpha=6 α=6,而PACT让 α \alpha α作为一个可训练参数,直接用目标任务的loss来训练。思路比较简单,求导也不复杂
∂ y ~ ∂ α = ∂ y ~ ∂ y ∂ y ∂ α ≈ S T E ∂ y ∂ α = { 0 x ∈ ( − ∞ , α ) 1 x ∈ [ α , ∞ ) \frac{\partial \tilde{y}}{\partial \alpha} = \frac{\partial \tilde{y}}{\partial y} \frac{\partial y}{\partial \alpha} \mathop{\approx} \limits_{STE} \frac{\partial y}{\partial \alpha} = \begin{cases} 0 & x \in (-\infty, \alpha) \\ 1 & x \in [\alpha, \infty) \end{cases} ∂α∂y~=∂y∂y~∂α∂ySTE≈∂α∂y={
01x∈(−∞,α)x∈[α,∞)
众所周知,量化时动态范围越小,那么分辨率就越高。为了避免截断范围 α \alpha α太大,论文里为 α \alpha α引入了L2正则化。并建议,惩罚参数 λ α \lambda_\alpha λα跟权重的惩罚参数 λ \lambda λ保持一致,并且随着量化位宽的增加而减小——直观理解,量化位宽越大,则可以保证有更大的分辨率,那么与之对立的动态范围也应该有更大的增长空间。
QIL
论文:《Learning to Quantize Deep Networks by Optimizing Quantization Intervals with Task Loss (CVPR2019)》
Quantization Interval Learning(QIL)
在PACT的基础上,QIL除了训练输入数据的量化参数外,还训练权重的量化参数,并且使用了带offset的量化,实际操作中用一个区间中心 c Δ c_{\Delta} cΔ和区间半宽 d Δ d_\Delta dΔ来表示( Δ \Delta Δ可以是权重 W W W,也可以是输入数据 X X X)。
![image.png](https://img-blog.csdnimg.cn/img_convert/b6093a049a8fd7b69fdb48b8a66765a6.png#align=left&display=inline&height=208&margin=[object Object]&name=image.png&originHeight=284&originWidth=703&size=56409&status=done&style=none&width=515)
$$\begin{aligned}
\hat{w} &= \begin{cases}
0 & |w| < c_W - d_W \
sign(w) \cdot (\alpha_W |w| + \beta_W)^\gamma & c_W - d_W \leq |w| \leq c_W + d_W \
sign(w) & |w| > c_W + d_W
\end{cases}
\
\hat{x} &= \begin{cases}
0 & x < c_X - d_X \
\alpha_X x + \beta_X & c_X - d_X \leq x \leq c_X + d_X \
1 & c_X + d_X
\end{cases}
\end{aligned}
\bar{\Delta} = Round(\hat{\Delta} \cdot q_D)
其 中 , 区 间 宽 度 其中, 区间宽度 其中,区