본문 바로가기
Paper Review

[논문리뷰] (Deep Inversion) Dreaming to Distill: Data-free Knowledge Transfer via DeepInversion (CVPR 2020)

by 3neutronstar 2022. 6. 27.

이번에는 CVPR2020에 accept 된 Nvidia lab의 Dreaming to Distill: Data-free Knowledge Transfer via DeepInversion을 리뷰하려고 합니다. 자세한 내용은 원문을 참고해주세요. 

 

Introduction

 

이미지를 학습된 모델에서 새로운 것으로 이동하는 능력은 되게 많은 영역에서 진행되어져 왔습니다. 예를 들어 Pruning이나, Quantization이라던지 를 통해서 efficient하게 옮기는 방법이 있을 것이 있어왔고, 하드웨어를 바꿔서도 되는 방식이라던지 또는 continual learning 같은게 있어왔습니다.

 

보통은 이러한 작업을 위해서 knowledge distillation과 같은 방법들을 많이 사용해왔는데 데이터셋을 무조건 보존을 해야한다는 단점이 있었고(KD의 제약), 혹은 training set의 분포를 나타내는 real image가 일부 존재한다는 제약이 있었습니다. (Class Incremental learning의 제약) Distillation 기반이 아닌 경우에는 prior training에 대한 additional statistics가 존재해야된다는 것이 문제였습니다.

 

이러한 것은 실제에서 사용하기 어렵게 만드는 요인이라고 볼 수가 있습니다. 제약이 고려되는 요인은 보통은 user의 privacy와 security와 같은 문제가 있을 수 있겠습니다. 이러한 training데이터를 직접 가져오는 것은 불가능 하니 이를 recover해서 knowledge transfer에 사용해보자! 가 목적이라고 할 수 있겠습니다.

 

본 논문에서는 model이 내부적으로 rich information을 보유하고 있으니까 이를 다시 사용해보자가 목적이며 이를 어떻게 하는지에 대해서 다루고 있습니다. 그래서 "Inversion"이라고 표현 하는 것입니다.

 

Method

 

Knowledge distillation 을 모르시는 분들도 있으니 간단하게만 다루자면, teacher의 knowledge를 student로 transfer하는 방법론입니다. 많은 방식이 있지만, Hinton paper의 logit을 teacher와 student와 유사하게 만드는 방식으로 학습합니다. 

p(x)가 모델의 logit이고 kl divergence loss를 minimize하는 방식으로 student의 weight를 업데이트해서 학습합니다. 

 

Image generation을 위해서 DeepDream이라는 방식을 차용했는데 noise를 optimize해서 image를 생성하는 방식을 가져왔습니다. randomly initialize 된 noise를 classifier에 흘려서 생성된 logit을 loss로 업데이트 함으로써 만들어내는 것을 목표로합니다. 이때 minimize할 loss는 다음과 같습니다.

$\hat{x}$는 synthetic noise이고, y는 임의의 target label입니다. R은 regularize term으로 $\hat{x}$를 업데이트하는 방식입니다. Regularize는 real한 이미지를 만들기 위해서 total variation term과 l2 term을 통해서 smooth한 이미지를 만들기 위해서 노력합니다. 이를 iteration으로 반복하면 synthetic image를 만들어 낼 수 있습니다.

 

DeepDream의 방식을 upgrade하는 방식으로 Regularize term에서 feature distribution도 regularization term에 추가합니다. 모든 feature level에서의 값을 유사하게 만들기 위해서 feature map의 차이를 minimize하게 만드는 것입니다. 이 때, Batch norm의 statistics를 사용하면 다음과 같이 정의 될 수 있습니다.

$\mu$값은 각 batch norm layer에서의 mean과 variance를 사용하는데 $\mu_l(\hat{x})$의 경우 synthetic data의 feature map의 mean이고, Expectation term은 pretrained running mean과 running variance를 활용하면 feature distribution도 regularization을 통해서 더 나은 퀄리티의 이미지를 만들어 낼 수 있다고 주장하고 있습니다.

Adaptive Deep Inversion

Deep Inversion에서의 방법에 더해서 quality뿐만 아니라 diversity 입장에서는 repeated image를 만드는 것을 피하는 것이 좋겠지만, feature level마저 유사하게 만들면 사실 그러기 어렵습니다. GAN의 경우에는 다양한 trick을 사용하ㅂ니다. 하지만 이러한 방법은 deep inversion에서는 사용하기 어려워서 본 논문에서는 새로운 방법을 제안합니다. 

 

Regularization term에서 teacher와 student간의 disagreement를 발생하는 방식으로 term을 구성함으로써 update하면 가능하다고 제안합니다. Logit의 jensen-shannon divergence를 maximize함으로써, logit의 다양성을 유도하도록 update하면서 이를 가능하게 합니다.

모든 regularization term을 합치면 다음과 같습니다.

해당 부분은 논문에 그렸는데 student가 배운 부분보다 regularization term이 더 추가되면 teacher가 배운 더 넓은 범위를 배울 수 있다 라고 아래 그림에서 주장하고 있습니다.

사실 저는 백프로 동의하기는 어렵고, diversity를 넓히기 위한 노력임은 맞는 것 같습니다. (hyperparameter에 따라 다를 것 같기는 합니다.)

 

Experiments

 

기존 method들 보다는 좀더 자연스러운 image를 생성하는 것 같기는 하네요.

저는 이 결과가 되게 인상적이었는데, 각 regularization term이 유의미하게 성능향상에 도움을 받고 있는 점이 되게 인상적이었습니다. 사실 더 재밌는 것은 DAFL인데요, 사진은 되게 엉망인데 model의 learning에는 도움이 되는 이미지가 생성된는 것인지 궁금할 정도로 성능이 잘나오네요.

 

이미지넷사진을 보는 것이 저한테는 되게 의미가 있었는데, model이 학습하는 것은 확실히 배경쪽보다는 model 보고 싶어하는 위치를 보여주는 것 같아 인상적인 것 같습니다.

생성된 이미지로 학습한 결과와 GAN과의 비교점수 인데, 확실히 동일 method였던 DeepDream보다 좋은 것 같습니다. Inception Score도 GAN과 비교가능한 군인 것이 되게 인상적인 것 같네요.

 

다른 application에 대한 부분과 자세한 내용은 Full paper를 참조해주세요.

댓글