挑选显著权重:权重矩阵的一行作为一个单位。在计算时,首先将激活值对每一列求绝对值的平均值,然后把平均值较大的一列对应的通道视作显著通道,(保留fp16精度)。引入显著权重的放大
首先考虑一般量化:
$$Q(W) =  \Delta · Round(\frac{w}{\Delta}) , \Delta = \frac{max(|w|)}{2^{N-1}}$$
在此引入缩放因子 S>1 (量化时对显著权重进行放大可以降低量化误差):
$$Q(W) = \Delta' · Round(\frac{ws}{\Delta'}) · x · \frac{1}{s}$$
考虑量化的误差:
$$Err(Q(W)x) = \Delta · RoundErr(\frac{w}{\Delta}) · x
$$
$$Err(Q(W·s)\frac{x}{s}) = \Delta' · RoundErr(\frac{ws}{\Delta}) · \frac{1}{s}$$
所以量化误差的比值:
$$\frac{\Delta}{\Delta'} · \frac{1}{s} $$,
进行显著权重放大后可以实现误差的减小。且我们认为$$\Delta ≈ \Delta'$$(看定义)。
对所有权重均进行低比特量化,但是,在量化时,对于显著权重乘以较大的 s ,相当于降低其量化误差;同时,对于非显著权重,乘以较小的 s ,相当于给予更少的关注。
[图片]