Distillation-증류
액체를 가열하여 생긴 기체를 냉각하여 다시 액체로 만드는 일. 여러 성분이 섞인 혼합 용액으로부터 끓는점의 차이를 이용하여 각 성분을 분리하는 것

이러한 화학적 증류 과정은, 화학물에서 추출한 특정 물질의 정수를 추출해 내는것으로 받아들일 수 있다.
그렇다면 모델 경량화 기법에서 사용되는 지식 증류라는 의미는 무엇일까? 화학적 정의의 메타포를 바탕으로 생각하면, 아마 모델의 정수를 추출해내는 과정일 것이라고 추측할 수 있다.
Knowledge Distillation(지식 증류)?
- “Distilling the Knowledge in a Neural Network”(2015)에서 처음으로 등장한 개념이며, Pretrain된 Teacher Network의 지식을 학습 과정을 통해 Student Network로 transfer하여, 성능을 유지하는 작고 빠른 Network를 구축하는 방법을 의미한다.
- 보통 최신 연구에서 사용되는 state-of-the-art Network들은 최고의 성능을 내기 위해서, 더 많은 데이터와 더 복잡하고 큰 Structure를 가지고 있는 경우가 많다.
- 단순히 모델의 성능을 높이기 위해서는 Ensemble모델을 사용하기도 한다. 하지만 이는 Coputatuonal Cost가 너무 높아지기 때문에, 실시간성을 중요 요소로 생각하는 system에는 적합한 solution이 아니다.
- 이를 실제 서비스에 적용하거나 배포하기 위해선 추론이나 평가 지표에 대한 최고의 성능도 중요하지만, 실 사용의 있어서 사용 편의성이나 Low latency와 같은 요소들 또한 고려하여야 한다.


지식 증류의 주요 방법론 및 특징
Soft Target, Temperature Scaling
- Pretrain된, 많은 Parameter로 학습된 Teacher Model에서 불필요한 parameter의 개수를 줄이고 학습된 정수만을 학습하여 이를 더 경량화된 모델로 tranfer하는 목표를 가지고 있다.
- 지식 증류의 과정에서, 클래스의 label들은 hard target을 가지면 안되며, softmax activation을 통과한 soft target을 바탕으로 모델을 학습한다.
$$
Softmax(z_i) = \frac {exp(z_i)} {\Sigma_j (z_j)}
$$
$$
Softmax(z_i) = \frac {exp(z_i / \tau)} {\Sigma_j (z_j / \tau)}
$$

hard targets - soft targets
- Softmax는 각 클래스에 대한 확률 분포를 출력한다. 이는 Student model학습을 위한 입력 데이터에 따른 출력 범위 차이가 너무 커지게 되므로, Scaling을 통해 확률분포를 더 부드럽게 하기위한 temperature scaling parameter가 추가된다.
- Student Model이 단순히 정답 label을 prediction 하는것이 목적이 아닌, Teacher model의 예측 패턴을 확률 분포를 통해 정보 손실을 줄이고, 더 잘 학습하기 위해서이다.