해당 포스팅은 네이버 부스트캠프 AI Tech 학습 정리 자료임을 알려드립니다.
1. 강의 정리
홍원의 마스터 - 양자화
1) Fixed point, floating point
양자화를 이해하기 이전에, Fixed point와 floating point를 먼저 이해해보면, Fixed point는 정수부와 소수부를 나누는 기준이 움직이지 않는 방법입니다. floating point는 지수부와 가수부로 나누기 때문에 어떤 값이 들어오면, 소수점의 위치는 움직이게 됩니다. 그렇다면 두개의 차이는 무엇이 있을까요? 가장 큰 차이는 표현력의 차이입니다. fixed point는 적당한 값을 곱하기만 해도 값이 크게 변동이 크고, floating point 방법에 비해 값의 범위가 작습니다. 하지만, fixed point는 정밀도 측면에서 floating point보다 좋은 성능을 가집니다. 그래서 보통 컴퓨터 계산에서는 부동소수점을 사용하는데, 일부 오차가 생기는 현상을 많이 볼 수 있습니다. Continuous value와 Discrete value에 대해서도 알아보면, int는 float에 비해 작은 메모리를 가지고 있습니다. 연속형 변수와 이산형 변수은 뒤에서 나올 양자화에서 사용하는 방법이기도 합니다.
2) Quantization
양자화는 모델 사이즈, memory bandwidth 측면에서 절감하는 것을 말합니다. float32와 비교해서 int8이 더 빠른 계산이 가능합니다. 양자화는 정밀도를 줄이고, 모델을 경량화할 수 있습니다.
위의 그림처럼 기존에 float32로 얻어진 값들의 min, max를 구해서 int8로 손실 변환하는 방법을 Quantization이라고 합니다.
위의 그림에서 위의 식은 affine Transformation을 표현한 식이고, 아래 부분은 affine quantization으로 중간 중간에 손실 변환을 추가해서 만든 방법입니다. Quantization은 보통 activation function과 weights에 적용합니다. 하지만 backpropagation을 진행할 때에는 quantization되어 있는 부분이 계단형식이기 때문에 미분이 불가능한 점이 많이 존재합니다. 이를 위해 quantization 이전 그래프의 미분값을 곱해줍니다. 이 외에도 미분 불가능한 지점을 보완하기 위해서 sigmoid(Tx)의 T값을 넣어서 smoothing한 그래프를 만들기도 합니다.
3) 다양한 Quatization
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이 모든 기기에서 지원하지는 않습니다. 각 기기가 어떤 것을 지원하는지 여부를 항상 판단하고 적용할 필요가 있습니다.
홍원의 마스터 - 지식 증류
1) Knowledge distillation
Knowledge distillation은 pre-trained된 Teacher 모델이 Student를 알려주는 방식입니다. Transfer learning은 다른 도메인을 학습하는 방식이고, Knowledge distillation은 같은 것을 학습하는 차이가 있습니다.
2) Teacher-Student networks & Hinton loss
Teacher model은 pre-trained 모델입니다. Softmax(T=t)는 기존의 Softmax(T=1)보다 유하게 값을 얻을 수 있습니다. 그래서 그렇게 얻은 분포를 비교하는 distillation loss와 Student에서 예측 후 Softmax(T=1)로 prediction을 해서 ground truth와 비교해서 얻어진 student loss를 합한 값이 loss function이 됩니다.
3) Zero-mean Assumption
distillation은 model compression 측면에서 zero-mean을 만족해야 합니다. 자세한 내용은 추후 추가하도록 하겠습니다.