Abstract

A very simple way to improve the performance of almost any machine learning algorithm is to train many different models on the same data and then to average their predictions [3]. Unfortunately, making predictions using a whole ensemble of models is cumbersome and may be too computationally expensive to allow deployment to a large number of users, especially if the individual models are large neural nets. Caruana and his collaborators [1] have shown that it is possible to compress the knowledge in an ensemble into a single model which is much eas- ier to deploy and we develop this approach further using a different compression technique. We achieve some surprising results on MNIST and we show that we can significantly improve the acoustic model of a heavily used commercial system by distilling the knowledge in an ensemble of models into a single model. We also introduce a new type of ensemble composed of one or more full models and many specialist models which learn to distinguish fine-grained classes that the full models confuse. Unlike a mixture of experts, these specialist models can be trained rapidly and in parallel.


머신러닝 알고리즘의 성능을 향상하는 간단한 방법은 동일한 데이터에 대해 다른 모델을 학습시키고 그들이 예측한 값을 평균내는 것이다.

불행하게도 앙상블을 통해 모델 예측을 얻는 것은 특히 개별 모델이 클 경우에 많은 사용자에게 배치시킬 경우 큰 계산비용이 들고, 거추장스럽다.

Caruana의 팀은 앙상블을 통해 얻는 결과를 배치하기 훨씬 쉬운 단일모델로 압축하는 것이 가능하다는 것을 보여주었고, 우리는 다른 압축 기법을 사용하여 이 접근법을 더 발전시켰다.

우리는 MNIST에서 놀라운 결과를 얻었고, 모델의 앙상블 결과를 하나의 모델로 distilling함으로써 많이 사용되는 상업 시스템의 음향 모델을 크게 개선할 수 있다는 것을 보여준다.

또한 하나 이상의 풀 모델로 구성된 새로운 유형의 앙상블과 전체 모델이 혼동하는 세분화 된 클래스를 구별하는 많은 전문가 모델을 소개합니다.

전문가의 혼합과 다르게 이러한 모델은 신속하고 parallel하게 학습되어질 수 있다.

 


요약

  • 이전에 Hinton 교수님은 앙상블 시에 각 모델의 구성을 다르게 하는 것 보다는 서로의 initial parameter을 다르게하여 학습시키는게 더 효과적이라고 말한적이 있다. 
  • 앙상블 모델은 매번 실행하기에는 시간이 오래걸리기 때문에(예를 들어, vgg를 이용하는 경우는 너무 무거워서 smartphone에 사용하기가 힘듬) 앙상블 모델의 정보를 싱글모델(shallow하면서도 good performance인)에 이전하는 것을 'Distilling'이라고 한다.
  • 이를 행하는 방법은 크게 3가지가 있다.
  1. 첫번째 방법은, 데이터가 많지 않은 경우 앙상블은 일반화가 잘 되도록 학습되나 그렇지 않은 경우는 overfit이 될 확률이 높다. 하지만 데이터가 많다면 overfit될 가능성이 줄어들고 결과도 좋을 것이다. 이러한 가정을 바탕으로 훈련 데이터를 많게 하기 위해 oversampling을 하게 되는데 이때 만들어지는 데이터는 label이 없는 상태로 만들어진다. 이떄 미리 학습된 앙상블 모델을 이용하여 label을 predict하고 이를 훈련데이터로 사용한다. 
  2. 두번째 방법은, 각 데이터의 분포를 알면 predict의 결과가 더 좋지 않을까라는 생각에서 출발하게 된다. 이때도 위와 같이 oversampling을 하기 때문에 label을 붙여줘야 하는데, 이전에 사용된 앙상블 모델을 통해 최종 결과값이 아닌 logit값을 label을 주면 class의 분포를 학습하게 되어 좋은 결과를 얻을 수 있게 된다.
  3. 세번째 방법은 Hinton교수님이 제안한 방법이다. 이 방법은 softmax를 사용하게 되는데, Temperature라는 개념을 도입하게 된다. 이는 전체 확률의 합이라고 할 수 있는데 softmax같은 경우는 모든 확률의 합이 1이므로 Temperature = 1을 뜻하게 된다. 이때 문제는 Temperature가 1일 경우에 class확률이 높은 것은 전부 1의 근처에 있고, 나머지는 0에 가깝게 되므로 분포를 알기 어렵게 된다. 따라서 분포를 알기 위해 보통 T = (2, 5)의 범위를 사용한다고 한다. 하지만 반대로 T가 너무 높으면 모든 class에 대해 유사한 확률값을 가지게 되어 분포의 의미가 없어지게 된다. 그래서 적당한 T를 사용해야 한다. 또한, 이때 loss에서는 기존의 cross_entropy의 indicator(1 or 0이 들어가는 부분)대신에 T를 통해 얻어진 확률값으로 대체하였다. 

 

Reference

Hinton, G., Vinyals, O., & Dean, J. (2015). Distilling the knowledge in a neural network. arXiv preprint arXiv:1503.02531.