딥러닝 모델 지식의 증류기법, Knowledge Distillation

딥러닝의 세계에서 **“지식을 증류한다”**라는 말은 어떤 뜻일까요? 딥러닝 모델에 대한 이해가 어느 정도 있는 분은 “아! 학습된 모델로부터 지식을 추출하는 건가?”라고 바로 유추할 수 있을 것 같습니다. 그렇다면, 이렇게 추출한 지식을 활용할 수 있지 않을까요?

결국 딥러닝에서 지식 증류는 큰 모델(Teacher Network)로부터 증류한 지식을 작은 모델(Student Network)로 transfer하는 일련의 과정이라고 할 수 있습니다.


딥러닝 용어 정리, Knowledge distillation 설명과 이해

그러나 딥러닝은 단순히 "목적 성능이 좋은 모델이 좋은 모델이다." 라고 말할 수 있는 기술 수준을 넘어섰습니다. 작은 모델로 더 큰 모델만큼의 성능을 얻을 수 있다면, Computing resource(GPU 와 CPU), Energy(배터리 등), Memory 측면에서 더 효율적이라고 말할 수 있겠죠. 예를 들어서 핸드폰에서 딥러닝을 활용한 어플리케이션을 사용하고 싶은데, 몇 GB 의 메모리를 필요로하는 모델을 사용하려면 온라인 클라우드 서버등에 접속해서 GPU 등의 자원을 사용해야 하지만, 이 모델을 충분히 작게 만들어서 핸드폰의 CPU 만으로도 계산이 가능하다면 여러가지 비용 측면에서 더 좋을 것입니다.

이렇게 Knowledge distillation 은 작은 네트워크도 큰 네트워크와 비슷한 성능을 낼 수 있도록, 학습과정에서 큰 네트워크의 지식을 작은 네트워크에게 전달하여 작은 네트워크의 성능을 높이겠다는 목적을 가지고 있습니다

2021-11-16_12-24-38.png