안녕하세요~


이번글은 Knowledge distillation이라는 개념에 대해서 간단하게 소개해드리려고해요!




Q1. Distillation이 무엇인가요?


Knowledge distillation에 대해서 알아보기전에 "distillation(증류)"라는 단어부터 알아보고 갈게요.


Distillation이란 액체상태의 혼합물을 분리하는 방법이에요. 쉽게 말해서 A+B의 혼합물이 있으면 특정 기법을 이용하여 A 또는 B를 따로 추출하는 방법이에요. 그래서 Distillation이라는 용어를 인지할때는 '복잡하게 섞인 물체에서 필요로 하는 부분만 따로 추출하는 것'이라고 이해하고 있으면 좋습니다.


<사진1. Distillation>




Q2. 딥러닝에서 사용되는 knowledge distillation이라는 용어는 무엇인가요?


Distillation을 알아보았으니 knowledge라는 개념이 딥러닝에서 어떻게 사용되었는지 이해하면 되겠죠?



딥러닝 모델이 발달됨에 따라 모델이 점점 복잡해졌데요. 이렇게 복잡해진 딥러닝 모델 중에서 정말 필요한 지식들만 따로 가벼운 모델에 distillation(or transfer) 할 순 없을까?라는 질문에서 시작된 학습 방법론이라고 할 수 있어요.  





Q3. 예를 들어주세요!


일반화 성능을 높이기 위해서 자주 쓰이는 방법은 더 깊고 복잡한 네트워크를 구성하거나, 여러 네트워크들의 결과를 조합하여 사용하는 ensemble 기법을 사용하는데요.



<사진2. Ensemble 기법>




만약 이러한 ensemble 모델의 결과값(softmax)을 작은 크기의 single neural network 학습에 적용시킬 순 없을까요? 예를들어, 작은 CNN 모델 같은 경우는 마지막 feature map을 이용해 FC layer (MLP 과정)를 거쳐 classification하게 되는데요. 


만약에 "마지막 feature map+ensemble 모델의 softmax 결과"를 통해 학습한다면 어떨까요? 


작은 CNN 모델이 거대한 ensemble CNN 모델과 비슷한 성능을 낸다면 결과적으로 작은 CNN 모델이 ensemble CNN에서 필요한 부분만 증류시킨 것이라고 볼 수 있겠죠?!


<사진3. CNN 기본구조>


 


정리해보자면 아래와 같이 요약 할 수 있겠어요!




"Knowledge Distillation이란

크고 무거운 모델의 정보(Knowledge)를 작고 가벼운 모델로 전달하여 

작고 가벼운 모델이 더 정확한 추론을 하도록 학습시키는 방법론"




이번장에서는 Knowledge Distillation이라는 개념에 대해 추상적으로 이해해보았으니

다음장부터는 본격적으로 논문을 통해 구체적으로 살펴보도록 할게요!








[사진 래퍼런스]

사진1

https://www.scienceall.com/%EB%B6%84%EB%B3%84-%EC%A6%9D%EB%A5%98fractional-distillation/

사진2

https://pythonkim.tistory.com/42

사진3

https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53




[글 래퍼런스]

https://blog.lunit.io/2018/03/22/distilling-the-knowledge-in-a-neural-network-nips-2014-workshop/

https://seongkyun.github.io/study/2019/04/16/model_comp_1/



+ Recent posts