본문 바로가기
Paper review

Self-training with Noisy Student improves ImageNet classification(2020) 리뷰

by Yonghip 2024. 4. 9.

ViT가 나온 뒤 현재는 ViT의 다양한 variants들이 CV도메인에서는 SOTA를 달성했다. 하지만 이전에는 CNN과 Noisy student training을 사용한 방법론이 SOTA의 대다수를 차지하고 있었는데 이번에는 그 방법론을 처음 제시간 논문을 리뷰해 보겠다.

Abstract

이 논문은 labeled data가 풍부한 상황에도 적용가능한 semi supervised 학습법인 Noisy student training을 제안한다. 이 기법은 distillation student model teacher와 동일 혹은 큰 사이즈를 사용해 학습하며 student의 학습 시 noise를 더해주는데 저자는 이러한 부분에서 self-training 그리고 distillation의 아이디어를 활용했다고 한다.

Introduction

서론은 지금도 쏟아져 나오는 ViT계 논문들 서론에 흔히 볼 수 있는 기존 모델의 한계를 언급하는데 현재 SOTA model들은 대게 supervised 방법론으로 학습하며 이게 unlabeled 된 데이터를 활용하지 못하는 점을 지적한다.

 

초록에서 언급한 바와 같이 이 논문에서 제안한 Noisy student trainingself-training distillation을 향상시킨 방법론이다.

  • 기존 distillation은 보통 큰 사이즈의 teacher의 정보를 작은 사이즈의 student의 모델에 전달하는 것인데 이 논문에선 이와 반대로 teacher보다 크거나 동등한 사이즈의 student를 사용했다.
  • Distillation시 teacher의 정보를 온전히 전달해야 하는데 이 논문에서는 student에 지속적으로 noise를 추가한다.

Noisy Student Training

Noisy Student Training4가지 단계로 구성되어 있다.

  1. labeled image를 사용해 teacher를 학습시킨다.
  2. 학습된 teacher를 사용해 unlabeled image에 대한 pseudo label을 생성한다.
  3. labeled image와 unlabeled image에 noise를 더한 이미지를 기반으로 teacher보다 크거나 동등한 모델 student를 학습시킨다.
  4. student를 teacher로 사용해 2번 과정부터 다시 반복한다.

전체 과적을 수식 및 그림으로 보면 아래와 같다.

 

Noising Student

Student noise를 주는 방법은 두 가지로 input noise와 model noise가 있다.  Input noise Rand augment를 사용했으며 model noise로는 deopout stochastic depth를 사용하였다.

Other techniques

Noisy student training을 위한 추가적인 트릭인 data filtering balancing에 대해 설명한다. Filtering Teacher confidence가 낮은 image를 거르는 방법이며 balancingclass unlabeled image의 수를 제한하는 것이다.

Experiments

Labeled dataset으로 ImageNet 12년도 버전을 사용했으며 Unlabeled dataset으로 JFT 300M을 사용하였다. JFT 300M은 전체를 사용하지 않고 filtering balancing을 거쳐 130M개의 image만 사용하였다고 한다.

Training details

Noisy student training과정을 통해 점차 큰 모델을 사용하게 되는데 labeled image에는 기본적으로 2048 batch size를 사용하고 이를 점진적으로 줄여 학습했으며 Unlabeled image에는 이보다 큰 batch size를 사용했다고 한다.

Noise

Stochastic depth는 마지막 층에 survival rate 0.8로 나머지에는 linear decay 방식으로 적용했으며 dropout은 마지막 층에 0.5 RandAugment는 두 개의 연산을 27의 강도로 적용했다. EfficientNetB7 L2모두 똑같은 방식을 사용해 Noise를 추가했다.

Iterative Training

실험을 통해 3번 반복한 결과가 최고의 성능을 보여주었다 한다. 3번의 반복동안 아래와 같이 구조를 사용했다.

iteration Teacher Student
1st EfficientNet-B7 EfficientNet-L2
2nd EfficientNet-L2 EfficientNet-L2
3rd EfficientNet-L2 EfficientNet-L2

 

ImageNet Results

Noisy Student는 더 적은 이미지와 파라미터를 사용해 당시 SOTA를 달성했다.

Model size study: Noisy Student Training for Efficient-Net B0-B7 without Iterative Training.

그림과 제목만으로도 저자의 의도를 한눈에 볼 수 있는데 Noisy student training Iterative training 없이도 EfficientNet의 성능을 모든 variants에서 뛰어넘음을 보여준다.

Ablation Study

The Importance of Noise in Self-training

이 항목은 규제를 통해 Student Teacher가 강해진 것을 증명하는 항목이다. 이를 증명하기 위해 Student학습시 noise를 제거해 일련의 실험을 진행한다. 총 3개의 실험을 진행했는데

  1. Student에 증강만 제거
  2. Student에 모든 noise를 제거
  3. Teacher의 입력에 noise 추가

3가지 실험 모두가 성능 저하를 야기했으며 noise를 추가해 pseudo label에 대한 과적합을 막는 효과를 해준다고 언급했다.

 

A Study of Iterative Training

또한 Iterative Training의 성능 역시 실험 중간의 성능을 통해 입증했다.

 

Additional Ablation Study Summarization

Noisy student training의 디자인을 여러 군데 변형시키며 얻은 결과를 보여주는데 이 글에서는 그중 임팩트 높은 몇 가지만 설명하겠다.

 

Study #3: Hard Pseudo-Label vs. Soft Pseudo-Label on Out-of-domain Data.

Soft label을 사용할지 Hard label을 사용할지는 KD를 진행할 때 가장 처음 선택할 수 있는 variants중 하나이다. 이때까지는 “Soft Hard보다 다양한 상황에 좋다정도로 알고 넘어갔는데 이 실험에서는 매우 큰 성능 차이를 보여준다. 저자는 student를 학습시킬 때 out-of-domain 데이터를 사용하는데 이때 teacher confidence가 좋은 지표가 되어주기 때문이라 주장했다.

 

Study #6: Joint Training.

Teacher pseudo label만으로 pretrain labeled image로 finetuning한 결과보다 한 batch 내에 섞어 학습하는 성능이 좋았다. 이때쯤 NLP pretrain+finetune의 성능이 이미 입증되었는데 이 논문에서는 완전히 상반된 결론을 내렸다. 저자는 unlabeled data labeled data의 분포 차가 크기 때문이라 제안했다.

 

Conclusion

기존에 SOTA를 달성하기 위해 적어도 10억개 이상의 weakly labeled data가 필요로 했지만 Unlabeled data의 효과를 끌어올릴 수 있는 간단하고 새로운 self training알고리즘인 Noisy student training 제안했다.

 

논문링크: https://arxiv.org/abs/1911.04252