我在閱讀這篇論文: “Optimal Clipping and Magnitude-aware Differentiation for Improved Quantization-aware Training” [arxiv] 的時候, 看到這個式子說明 uniform constrained quantizer 有這樣的 quantization error:
J=s2max4−B3
這裡要特別說明一下, 這邊的 quantization error 沒有考慮超過最大最小值造成的 clipping error. 將 clipping error 一起考慮是開頭說的那篇論文會探討的情況.
這樣的 quantization error 分析在傳統訊號處理可以看到, 例如 analog 訊號經過 ADC 變成 digital 訊號後會有 quantization 損失. 如果 quantization bit 增加 1 bit 則 SNR 增加約 6dB. 又如果採用 nonlinear quantization 則對音量較低的情況其 SNR 提昇會比 linear quantization 好. Nonlinear quantization 又分 μ-law (北美 and 日本) 和 A-law (歐洲 and 其他). 這些內容在下面的筆記都會解釋. Let’s go~
Uniform Quantization
令 quantization step size 為 Δv=smax/2B−1, 其中 B 為 bit 數, 數值範圍在 [−smax,smax] 之間. 則 input x 和 quantized xq 的關係如下圖 (圖片裡的 mp=smax): [來源1]
我們將 quantization error q=x−xq 畫出來則如下圖: [來源1]
所以 quantization error q:=x−xq 數值範圍分布在 [−Δv/2,Δv/2] 之間. 到這邊應該都滿清楚的.
此時做了一個假設, 假設 q 的分布是 uniform distribution, 所以 power of q 的期望值為:
Pq=∫Δv/2−Δv/2q21Δvdq=1Δv[q33]Δv/2−Δv/2=...=(Δv)212=(smax/2B−1)212=s2max112⋅22(B−1)=s2max4−B3
SNR=Signal PowerNoise Power=PsPq=10log10(3⋅4Bs2maxPs)=10log10(3Ps/s2max)+20Blog10(2)≈α+6B
Non-uniform Quantization
另外考慮到一般訊號數值大的只占少部分, smax 容易被 outlier 影響, 因此 quantization error 就會比較大. 如果說我們先將訊號做 nonlinear 壓縮 (compresser), i.e. 數值大的會被加比較多, 數值小的壓一點就好 (見下圖), 這樣數值間的差異變小後, 再經過 linear quantization 的話, quantization error 就不會那麼大了.
相對的解碼的時候要做擴展 (expander).
由於在 transmitter/receiver 端我們會做 compress/expand, 所以我們稱為 compander = compresser + expander
Telephone system (北美和日本):
- μ=100 for 7-bits (128 levels)
- μ=255 for 8-bits (256 levels)
而在歐洲和其他地方 A=87.7 or 87.6.