논문 읽기/Classification

[논문 읽기] Noisy Student(2020) 리뷰, Self-training with Noisy Student improves ImageNet classification

AI 꿈나무 2021. 3. 27. 18:44
반응형

  안녕하세요! 이번에 읽어볼 논문은 2020년에 SOTA를 달성한 Noisy Student, Self-training with Noisy Student improves ImageNet classification 입니다.

 

  Noisy Student는 SOTA 모델에 unlabeled image를 활용하여 성능을 향상시키는 학습 방법입니다. ImageNet training set에 포함되지 않는 image들을 unlabeled image로 사용합니다(ImageNet 카테고리에도 포함되지 않습니다.) 그다음에 모델을 준-지도 학습 접근법인 Noisy Student Training으로 학습합니다. Noisy Student Training은 3가지 단계로 이루어져 있습니다.

 

 (1) labeled image로 teacher model을 학습합니다. (2) unlabeled image의 pseudo label을 생성하기 위해 teacher model을 사용합니다. (3) labeled image와 pseudo labeled image를 결합하여 student model을 학습합니다. 학습된 student model을 teacher로 사용하여 pseudo label을 다시 생성합니다. 생성된 pseudo labeled image로 다른 student를 학습합니다. 위 과정을 반복하는 것이 Noisy Student Training 입니다. 참고로 student를 학습할 때는 dropout, stochastic depth, data augmentation과 같은 노이즈를 추가합니다.

 

 Noisy Student Training은 self-training과 distilation을 향상시킵니다. student는 teacher보다 적어도 동일하거나 더 큽니다. 노이즈와 pseudo labeled image가 추가되었기 때문입니다. 따라서 student는 teacher보다 더 나은 성능을 갖습니다.이 방법은 정확도만 향상시킬 뿐만 아니라, robustness도 향상시킵니다. 저자는 ImageNet-A, C, P 에서도 test를 합니다. 아래는 결과 표 입니다.

 

 

Noisy Student Training

 Noisy Student Training의 알고리즘 입니다.

 

 

 labeled image와 unlabeled image가 필요합니다.

 

1. labeled image로 teacher model을 학습시킵니다. 이때 손실 함수는 labeled image의 cross entropy loss를 최소화 하도록 합니다. 논문에서는 EfficientNet을 사용합니다. 아래 수식을 보면 noise를 추가해서 학습하네요.

cross entropy loss

 

2. teacher model을 사용하여 unlabeled image에 대한 pseudo label을 생성합니다. 노이즈를 추가하지 않습니다.

 

3. pseudo labeled image와 labeled image로 노이즈가 추가된 student model을 학습합니다. 이때, student model은 teacher model보다 같거나 큰 모델을 사용합니다. 손실 함수는 다음과 같습니다.

 

4. 위 과정을 반복합니다. student model을 teacher model로 사용하여 unlabeled image에 대한 pseudo label을 생성합니다.

 

 이전 논문과의 차이점은 (1) student model에 노이즈를 추가한 것과 (2) teacher보다 같거나 큰 student model을 사용한 것입니다. 위 과정을 반복하면 student model은 teacher model보다 어려운 환경에서 학습이 이루어지기 때문에 더 나은 성능을 갖게 됩니다. 아래 표는 위 과정을 반복할 때마다 모델의 성능이 향상되는 것을 보여주는 표입니다.

Noising Student

 Student model에 추가하는 노이즈는 두 종류 입니다.

 (1) input noise : RandAugment를 사용한 data augmentation

 (2) model noise : dropout, stochastic depth

 

 아래 표는 student model에 noise를 적용했을 때와 적용하지 않았을 때의 성능 표입니다. teacher model에도 noise를 적용한 결과도 있네요.

Other Techniques

 추가적으로 적용한 기법은 data filtering과 balancing을 입니다. data filtering은 teacher model에서 낮은 confidence를 가진 image를 걸러주는 것입니다. confidence가 낮은 image는 카테고리에 특화된 이미지가 아닐 확률이 높기 때문입니다. balancing은 training set과 unlabeled image의 분포를 동일하게 하기 위해서 각 class에 대한 unlabeled image의 수를 균일하게 하는 것입니다. 이미지가 부족한 클래스는 이미지를 복사하여 늘려주고, 이미지가 너무 많은 클래스는 confidence가 높은 이미지를 제거합니다.

 

Performance

 EfficientNet-L2는 EfficientNet-B7에서 크기를 키운 모델입니다. 학습에 소요되는 시간이 5배는 더 걸렸다고 하네요. 학습에 사용하는 labeled image는 ImageNet 2012 dataset을 사용했고, unlabeled image는 JFT dataset을 사용합니다. best model은 Noisy Student training 알고리즘을 3번 반복했다고 하네요. 초기 teacher은 EfficientNet-B7을 학습하고, student model은 EfficientNet-L2를 사용합니다. 

 

 아래 그림은 EfficientNet-L2가 아닌 작은 모델에 noisy student training을 적용했을 떄의 결과입니다. 

반응형