基於Pre-trained模型,採用Post-training量化策略,能夠在一定程度上彌補量化精度損失,並且避免了相對耗時的quantization-ware training或re-training過程。
-
WA與BC
"Data-Free Quantization through Weight Equalization and Bias Correction" 這篇文章提出了兩種post-training策略,包括Weight Adjustment (WA)與Bias Correction (BC)。
Paper地址:
1. Weight Adjustment
在執行Per-tensor量化時,由於Weights或Activation的數值分佈存在奇異性,例如存在個別數值較大的outliers,導致寬泛的分佈區間對量化(如MAX方法)不友好,產生較大的量化精度損失。Weight Adjustment通過在相鄰的[Weight-tensor, Weight-tensor]或[Activation-tensor, Weight-tensor]之間,執行均衡調整、等價變換(確保變換後推理精度不變),使得調整之後的數值分佈對量化更爲友好。
具體的WA策略如下所示,均衡調整通常在W1的output channel與W2的input channel之間進行:
調整係數計算如下,相鄰tensors按channel均衡調整之後,分佈範圍將達到相一致的水平:
2. Bias Correction
Per-tensor或Per-channel量化的誤差,直接體現在Conv2D等計算節點的輸出產生了誤差項:
沿channel c的誤差項,可按前置BN層的參數予以估計:
將估計獲得的誤差項補償回Bias,可提升一定的量化精度。
- 基於BN層的調整策略
"A Quantization-Friendly Separable Convolution for MobileNets" 這篇文章2提出了基於BN層的調整策略,即將BN層中趨於零的Variance替換爲剩餘Variance的均值,以消除對應通道輸出的奇異性,從而獲得對量化更爲友好的Activation數值分佈。