DeiT 모델을 이해하기 위해 세 개의 논문을 순차적으로 리뷰하도록 하겠습니다.
Distilling the Knowledge in a Neural Network(2015)
이 논문에서 DeiT의 훈련 전략의 기초가 되는 distillation에 대해 이해하겠습니다.
An Image is Worth 16x16 Words: Transformers for Image Recognition at
Scale(2020)
이 논문에서 DeiT와 아키텍쳐와 동일한 ViT 모델에 대해 이해하겠습니다.
Training data-efficient image transformers & distillation through attention (2020)
이 논문에서 DeiT에 대해 구체적으로 이해하겠습니다.
Transformer는 NLP에서 큰 성과를 거두었습니다. Vision, 특히 이미지 분류 분야에서도 Transformer를 적용하여 모델 성능을 올리려는 연구가 꾸준히 진행되고 있습니다. 그러나 여전히 이미지 분류 분야에서 Transformer-based architecture 가 아닌 Convolutional-based architecture가 더 좋은 성능을 보였습니다.
한편 ConvNet과 Transformer를 결합한 Hybrid architecture가 경쟁력있는 결과를 보여줬는데요, 대표적으로 ViT가 ConvNet과 비슷한 성능을 보이면서 이미지 분류 분야에서의 Transformer 아키텍쳐의 발전 가능성을 보여줬습니다.
ViT 모델로 좋은 성능을 얻기 위해선 대규모의 데이터셋이 필요합니다. 막대한 양의 Pre-train data를 요구하기 때문에 실질적으로 모델을 채택하는 데 제한이 있을 겁니다.
DeiT(Data-efficient Image Transformers)는 Facebook AI Research에서 개발한 데이터 효율성이 높은 모델입니다. 말인 즉슨 대규모의 데이터셋 없이도 좋은 성능을 보인다는 것이죠.
DeiT는 ViT모델과 동일한 아키텍처(MLP head 제외)이며, convolution 연산 대신 self-attention 매커니즘을 사용하여 입력 이미지의 특징을 추출합니다.
DeiT는 ViT와 동일한 아키텍쳐를 가지고 있는데도 대규모의 데이터셋 없이도 좋은 성능을 달성합니다.
DeiT와 ViT는 self-attention 매커니즘을 사용하여 입력 이미지의 특징을 추출합니다. self-attention을 통해 이미지의 전역 정보를 캡쳐하기 때문에, DeiT 모델이 작은 데이터셋에서도 효과적으로 작동할 수 있었을 것이라 추측됩니다만 사실 ViT도 동일하게 self-attention 매커니즘을 사용하고 있죠.
다시 원점으로 돌아가 똑같은 질문을 하게 됩니다. 결국 self-attention 매커니즘을 사용하는 것도 똑같고, 아키텍처도 동일한데, 왜 DeiT는 large datasets 없이도 좋은 성능을 보이는 걸까요?
바로 Distillation 기법 덕분입니다.
본 논문에서는 distillation token을 기반으로 한 새로운 Distillation 기법을 소개합니다.
이는 transformer 특화 전략으로, 일반적인 distillation 기법을 능가한다고 합니다.
We introduce a new distillation procedure based on a distillation token, which plays the same role as the class token, except that it aims at reproducing the label estimated by the teacher. Both tokens interact in the transformer through attention.This transformer-specific strategy outperforms vanilla distillation by a significant margin.
그럼 그들이 제시한 transformer-specific distillation strategy와 vanila strategy의 차이는 뭘까요? 그전에 vanilla distillation에 대해 짚고 넘어가겠습니다.
논문에서 지시하는 vanilla distillation은 일반적인 distillation 기법입니다.
distillation은 모델 경량화를 위해 널리 사용되는 기술 중 하나입니다.
보통 사전학습 모델 등의 large model은 매우 큰 파라미터를 가지고 있습니다. 또한 학습 및 추론 시간이 길다는 특징으로 인해 해당 모델을 그대로 배포하기엔 무리가 있습니다.
모델이 배포되는 장치는 모바일 혹은 IoT 기기가 될텐데요, large model이 작동하기에 적합한 환경은 아닙니다. 더 강력한 하드웨어를 필요로 하고, 배포에 성공한다 하더라도 모델 추론 시간이 오래걸리기도 합니다. 아무리 성능이 좋더라도 추론에 몇 분 이상 소요된다면 해당 모델을 사용하기에는 어려울 겁니다. 따라서 large model의 크기를 줄이거나, 계산량을 줄여서 모델을 더 가볍고 빠르게 만든다면 딥러닝 모델을 사용할 수 있게 됩니다.
모델 경량화 기법에는 Pruning, quantization, distillation 등이 있는데요, 그 중 하나인 distillation이 앞으로 설명할 기법입니다.
본 논문(Distilling the Knowledge in a Neural Network_2020)에서의 vanilla distillation은, 2015년 Hinton 등이 "Distilling the Knowledge in a Neural Network"라는 논문에 의해 제안한 기술입니다.
distillation은 Rich Caruana와 공동 연구자들에 의해 "Model Compression(2016)"에서 먼저 제안되었습니다. 이 논문에서는 큰 모델에서 작은 모델로 지식을 "전달"하는 것에 중점을 두었습니다. Distilling the Knowledge in a Neural Network에서는 큰 모델과 작은 모델 모두에서 지식을 추출하고 전달하는 것에 중점을 둡니다. 더 나아가 soft target vs. hard target의 차이를 분석하고 soft target을 사용하여 작은 모델의 정확도를 향상시키는 방법을 제안합니다.
다음 글에서 DeiT 관련 논문 시리즈의 첫 번 째 논문인 Distilling the Knowledge in a Neural Network를 리뷰하며, DeiT 훈련 전략의 기초인 distillation 기법에 대해 알아가보겠습니다.
뇌섹녀 🩷