
위의 그림에서 위의 식은 affine Transformation을 표현한 식이고, 아래 부분은 affine quantization으로 중간 중간에 손실 변환을 추가해서 만든 방법입니다. Quantization은 보통 activation function과 weights에 적용합니다. 하지만 backpropagation을 진행할 때에는 quantization되어 있는 부분이 계단형식이기 때문에 미분이 불가능한 점이 많이 존재합니다. 이를 위해 quantization 이전 그래프의 미분값을 곱해줍니다. 이 외에도 미분 불가능한 지점을 보완하기 위해서 sigmoid(Tx)의 T값을 넣어서 smoothing한 그래프를 만들기도 합니다.

Quatization을 나누는 종류는 위의 기준에 의해 다양하게 나눌 수 있습니다. 그 중 대표적으로 Dynamic quantization, Static quantization, Quantization aware training 등이 있습니다. Dynamic Quatization은 training할 때에는 activation은 그대로 두고, weight만 quantization했다가 인퍼런스할 때에 activation도 quantization을 하는 방법입니다. 주로, 작은 batch의 LSTM과 MLP에서 좋은 성능을 보입니다. Static quantization은 Post-training Quantization이라고도 불리는데, training을 다하고, weight, activation을 quantization을 하는 방식입니다. 주로 CNN에서 좋은 성능을 보여줍니다. Quantization aware training은 trainig 과정 중 quatization 될 것을 학습하도록 만드는 방법입니다. 앞에서 언급한 방법보다 좋은 방식입니다. 하지만, 항상 Quantization이 모든 기기에서 지원하지는 않습니다. 각 기기가 어떤 것을 지원하는지 여부를 항상 판단하고 적용할 필요가 있습니다.