또르르's 개발 Story

[39-1] 경량화(3) - 지식 증류(Knowledge distillation) 본문

카테고리 없음

[39-1] 경량화(3) - 지식 증류(Knowledge distillation)

또르르21 2021. 3. 18. 18:21

1️⃣ Knowledge란?

 

Knowledge Spectrum에서 Knowledge에 대한 답을 찾을 수 있습니다.

 

  • Data : 아무 의미가 없는 Raw 숫자, 문자
  • Information : 의미(Meaning)를 가지고 있는 Data
  • Knowledge : 맥락 속에서 Context가 해석이 되는 Data
  • Wisdom : Knowledge를 가지고 Applied 할 수 있는 것

 

[Wiliams et al., Journal of Entrepreneurship 2014]

 

 

2️⃣ Knowledge distillation

 

지식 증류(Knowledge distillation)"모여있는 Knowledge" 중 "중요한 Knowledge"만 남기고 제거하는 방법입니다.

 

지식 증류(Knowledge distillation)의 대표 모델로는 Teacher-Student Network가 있습니다.

필요한 Knowledge만 Student 모델에 전달하고 나머지는 제거하는 network입니다.

 

[Hinton et al., arXiv 2015]

 

KD (Knowledge distillation) Loss는 teacher model soft label, teacher model soft prediction, student model hard prediction, ground truth 총 4개의 값을 사용해 구성됩니다.

 

Soft label (또는 Soft prediction)은 hard prediction (0,1로만 표현되는 vector)와는 다르게 확률값들로 표현됩니다.

따라서 Soft label 부분에서 Knowledge를 발견할 수 있는 힌트가 존재합니다.

 

아래 그림과 같이 dog와 cat은 0.3, 0.2로 비슷한 확률값을 가지고 있고, dog와 car는 0.3, 0.005로 완전히 다른 확률값을 가지고 있습니다. 따라서 dog와 cat은 가까운 거리를 가지고 있고, dog와 car는 먼 거리를 가지고 있습니다.

 

 

[Hinton et al., arXiv 2015]

 

이 개념을 Teacher-Student model에 집어넣기 위해 Softmax에 Temperature (T) 값을 집어 넣게 됩니다.

 

pi=exp(ziT)jexp(ziT)

 

Temperature에 따른 Softmax 함수의 변화는 다음과 같습니다.

T가 커질수록 뾰족한 부분 (class 6~8)이 점점 내려가는 양상을 보이며, 대신 다른 class 부분들이 점점 올라갑니다.

즉, T가 커질수록 모든 class의 확률값이 고르게 분포됩니다.

 

https://github.com/kmsravindra/ML-AI-experiments/blob/master/AI/knowledge_distillation/Knowledge%20distillation.ipynb

 

 

 

3️⃣ 여러 distillation

 

지금까지 배운 distillation은 logit이나 softmax outcome에서만 사용할 수 있는 한계를 가졌습니다.

즉, distillation이 classification 문제에만 사용할 수밖에 없는 문제점을 가지고 있습니다.

 

2015년 이후 Knowledge distillation이 활발하게 연구되면서 여러가지 distillation이 나오게 되었습니다.

 

distillation 또한, 다양한 방법들이 존재합니다.

github.com/karanchahal/distiller

 

karanchahal/distiller

A large scale study of Knowledge Distillation. Contribute to karanchahal/distiller development by creating an account on GitHub.

github.com

 

https://github.com/karanchahal/distiller

 

 

1) Feature distillation

Knowledge Distillation이 나오고 나서 나온 여러가지 다른 distillation 관점에서 정리한 논문입니다.

 

[Heo, Byeongho. et al. "A comprehensive overhaul of feature distillation." IEEE/CVF 2019]

ref) arxiv.org/pdf/1904.01866.pdf

 

이 논문에서는 Teacher network에서 나온 soft label 결과를 가지고 training 하는 것이 아니라 중간중간의 layer마다 값을 비교하는 방법을 설명합니다.

 

[Heo et al., IEEE 2019]

 

또한, 뽑아낸 Knowledge를 ReLU 앞에 놓아가지고 Distillation을 수행하는 방법을 설명합니다.

 

[Heo et al., IEEE 2019]

 

 

2) Data-free knowledge distillation

기존의 distillation들은 original train set에 많이 의존했습니다. 

따라서 Student를 학습 시킬 때는 original train set을 가지고 다녀야 했습니다.

하지만 Student network는 경량화된 목적으로 사용하는 network이므로 사용목적에 맞지 않게 됩니다.

 

따라서 data에 종속되지 않는 (data가 없거나 매우 적은 양)으로 knowledge distillation을 만들어내야 합니다.

 

아래 논문에서는 다음과 같이 설명합니다.

 

[Lopes, Raphael Gontijo, Stefano Fenu, and Thad Starner. "Data-free knowledge distillation for deep neural networks." arXiv 2017]

ref) arxiv.org/pdf/1710.07535.pdf

 

학습시킨 student model을 deploy할 때, Data center에서 뽑아온 metadata와 함께 deploy 하고, stduent model이 필요한 시점에 필요한 데이터를 reconstruction 한다는 것입니다.

 

[Lopes et al., arXiv 2017]

Comments