Search

'Dreaming to Distill'에 해당되는 글 1건

  1. 2020.07.17 Dreaming to Distill : Data-free Knowledge Transfer via DeepInversion 논문 리뷰
본 게시글에서는 얼마전 진행되었던 2020 CVPR에서 인상깊었던 논문인 "Dreaming to Distill: Data-free Knowledge Transfer via DeepInversion"을 소개해드리고자 합니다. Training dataset에 대한 사전 정보 없이 network inversion 방식을 통해 noise 이미지에서 해당 클래스에 속하는 이미지를 생성하는 방법론에 대한 논문입니다. 논문 링크는 이곳을 클릭해주세요. 

 

논문 포스팅에 앞서 Neural network inversion 방법론에 대해 간략히 소개합니다.

 

기존에 모델을 학습시켰던 training dataset에 대한 정보가 없을때, training dataset 이미지의 input space를 복원하는 방법론 중에는 Neural network inversion 방식이 있습니다. Neural network inversion은 기존에 pre-trained 된 모델의 weight를 고정시킨채로 noise한 이미지를 모델에 포워딩시키고, back propagation을 수행하며 weight가 아닌 node의 output 값을 update하는 방식입니다. 

 

이러한 Neural network inversion방식은 크게 2가지 카테고리로 분류할 수 있습니다.

  • Optimization based inversion
    • loss 값을 back propagation하며 gradient를 기반으로 optimization기법을 수행하여 실제 이미지와 근사한 input space를 예측하는 방식
  • Training based inversion
    • image를 생성하는 sub network가 존재하며 sub network를 학습시키며 input space를 예측하는 방식
    • ex ) Generative Adversarial Network와 같이 image generator를 활용하는 경우 

해당 논문은 첫번째 카테고리인 Optimization based inversion 방식으로, sub network를 활용하지 않고 optimization 기법을 통해 synthesized image를 생성해 내는 방식입니다. 본 논문에서는 기존의 DeepDream 방법론에서 사용하였던 loss function에 Regularization term을 추가하여 복원된 이미지를 실제 이미지와 비슷한 분포로 생성해 냈습니다.

 

DeepDream은 Optimization based inversion 기법중 하나로, 아래와 같은 loss function을 통해 noise에서 synthesized image로 optimize하는 방식입니다. 

 

loss function의 첫번째 term은 실제 이미지의 target label인 y와 inversion 과정에서 생성된 synthesized image인 x hat과 의 classification loss 입니다. 두번째 term은 image의 regularization term으로 생성된 이미지의 total variance (R_tv)와 l2 norm (R_l2)로 구성되어있습니다. 이러한 regularization term은 실제 이미지에 생성된 이미지가 수렴할수 있도록 도움을 주는 term입니다. 

본 논문에서 소개하는 DeepInversion은 DeepDream에서 사용하였던 loss function을 확장하여 synthesized image가 실제 이미지와 더 유사해지도록 만들었습니다. 

 

DeepInversion은 실제 training dataset 이미지와 synthesized image를 CNN에 포워딩 시켰을 때 각 레이어의 feature map 거리를 최소화 시켜 원래 이미지의 데이터 분포를 따라가게 하는 term을 추가 했습니다. feature 통계정보로서 feature map에서의 평균분산을 활용하였고 이러한 정보는 생성된 이미지가 실제 이미지의 분포를 따를 수 있도록 정규화 합니다. 따라서 synthesized image가 실제 training dataset batch단위의 평균과 분산을 따라가게 하는 R_feature term은 아래와 같습니다.  

 

실제 training dataset의 배치마다의 평균과 분산은 CNN 아키텍처에서 널리 사용되는 BatchNorm (BN) layer에 저장되어있습니다. 따라서 실제 training dataset 배치 x 평균의 기대값과 분산의 기대값은 아래와 같이 BN layer에 저장된 정보로 치환가능합니다.

 

따라서 DeepInversion의 regularization term은 R_prior와 R_feature를 추가함으로써 아래와 같이 정의할 수 있습니다. 

 

DeepInversion Regularization term

추가로, 논문에서는 DeepInversion의 성능을 개선시키기 위해 Adaptive DeepInversion (ADI) 방법론을 소개하고 있습니다. DeepInversion 방식으로 생성된 이미지의 다양성을 위해 정규화 term을 확장시켰습니다. 본 논문에서 주장하는 이미지의 다양성이란, 동일 클래스에 속하는 이미지더라도 다양성을 추구하는 이미지를 생성하는 것을 의미합니다. 

 

논문에서는 Jensen-Shannon divergence를 활용한 정규화 term을 추가하여 synthesized image가 student 모델과 teacher 모델의 output의 분포의 불일치를 유도합니다. Jensen-Shannon divergence는 KL divergence의 평균으로, 두 output간의 분포를 거리로 치환하여 거리를 최소화 시킴으로써 두 분포를 일치시킵니다. 하지만 본 논문에서는 이미지의 다양성을 추구해야 하므로 두 분포의 거리를 최대화 시키기 위해 Jensen-Shannon divergence 값을 1에서 뺍니다. 

 

따라서 Adaptive DeepInversion의 regularization term은 아래와 같이 정의할 수 있습니다. 

 

Adaptive DeepInversion Regularization term

아래의 그림은 위에서 설명한 loss function을 활용하여 random noise를 신뢰도 있는 synthesized image로 최적화하는 플로우 입니다. loss 값을 backpropagation 하며 원래 training dataset에 대한 정보 없이 input 이미지를 업데이트하며 synthesized image를 생성하게 됩니다. 향후 생성된 이미지로 Knowledge distillation 기법을 통해 student network를 학습시키며 높은 accuracy를 달성합니다. (논문의 4.4 section 참고) 

 

본 논문에서는 synthesized image가 얼마나 실제 training dataset의 분포와 비슷한지를 보여주고 있으며 다양한 application에 Data-free 기법으로 접근하여 높은 성능에 달성한 결과를 보여주고 있습니다. Pruning, Knowledge distillation, Continual learning 등에서 state-of-the-art 성능을 달성하며 자세한 실험 결과는 논문을 참조해주세요.

이상 논문 리뷰를 마치도록 하겠습니다. 자세한 내용은 full paper를 참고해주세요!

감사합니다.