上一篇文章我們提到, uniformly constrained quantizer 有這樣的 quantization error:
$$\begin{align}
J=s_{\text max}^2{4^{-B}\over 3}
\end{align}$$ 其中 $s_{\text {max}}$ 表示 input $x$ 在 $[-s_{\text {max}}, s_{\text {max}}]$之間.
這麼做雖然能確保所有 $x$ 都不會發生 clipping error, 但如果有一些 outlier 則會使得 quantization step 變很大 (quantization resolution 變低), 因此 quantization 的離散化誤差 (discretization error) 變大.
Quantization error = (Discretization error) + (Clipping error)
舉例來說, 考慮下圖 (ref. from SongHan course EfficientML.ai Lecture 6):
上圖左是 clipping scalar 設定很大, 上圖右則是設定很小. 可以看見 discretization error 跟 clipping error 互為 trade-off.
那麼問題來了, 怎麼設定 clipping scalar, 才會使得整體的 quantization error 最小?
這篇文章 “Optimal Clipping and Magnitude-aware Differentiation for Improved Quantization-aware Training” [arxiv] 給出了理論值, 並使用 Newton’s method 幫助我們很快找到最佳解.