CNN向けの量子化アルゴリズム
Learned Step Size Quantization, 2019
愛称はLSQ。
浮動小数点データを整数データに割り当てるときに使うStep sizeを学習するタイプの量子化アルゴリズム。
対象とするモデルは、ResNetやVGG、SqueezeNextといったCNNモデル。
量子化
量子化前(Floating point)の値を
量子化ビット幅を
量子化後の値を量子化前と同じスケールに直すと、
Step size gradient
Step sizeに対するGradientは下記のように定義する。
LSQはTransition pointでGradientの値
実験結果
3ビット量子化で良好な結果を得ることができてる。
LSQ+: Improving low-bit quantization through learnable offsets and better initialization, 2020
LSQではStep sizeを学習するアルゴリズムだったけど、LSQ+ではoffset parameterも学習するように拡張した。LSQは最小値と最大値が等しいSymmetricな範囲にしか対応できないが、LSQ+ではoffsetを加えることでAymmetricな範囲にも対応できるようにした。
さらにChannel単位でStep sizeとOffset parameterを持つことでより細かく量子化できる手法を提案した。
量子化
量子化前の値を
量子化後の値
Step size
LSQと同じStraight-Through-Estimator (STE)を使った定義になっている。
つまり