Title
- Self-training with Noisy Student improves ImageNet classification
0. 논문 읽기 전에 알면 좋을 것들
Self-Training
Semi-supervised Learning
Knowledge Distillation
Robustness
Abstract
- Noisy Student는 SOTA 모델에 unlabeld image를 활용하여 성능 향상시키는 학습 방법을 의미한다.
- 'RandAugment', 'Dropout', 'Stochastic Depth' 등 Random한 학습 기법들을 사용하였고, 이를 Noise라고 부른다.
1. Introduction
- Image classification 분야에는 2012년부터 지금까지 다양한 Network들이 제안되었다.
- 2012 ~ 2016년
: AlexNet(2012), VGG(2014), GoogLeNet(2014), ResNet(2015) 등 모델의 정확도를 높이기 위해 모델의 깊이를 연구하면서 많은 사람들이 여러가지 시도를 해봄
- 2016년 ~ 2018년
: AutoML을 이용한 NAS를 이용하여 최적의 구조를 찾고, 탐색에 필요한 시간을 획기적으로 줄임
- 2018년 ~ 2020년
: EfficientNet(2020) 등 AutoML에서 찾은 구조를 기반으로 인간이 직접 튜닝을 하면서 성능 향상
- 위의 논문들은 supervised learning으로 큰 Labeled images를 필요로 했고, UnLabeled images를 이용하지 않았다.
- SOTA 비전 모델들도 마찬가지로 Labeled Dataset이 클수록 성능이 잘 나왔고, 이는 많은 양의 UnLabeled Dataset를 사용하지 않았다.
- 본 논문은 ImageNet에 속하지 않은 UnLabeled Dataset을 효율적으로 사용하여 모델 성능을 높이고 이는 SOTA를 달성하였다.
- teacher network와 동등하거나 보다 큰 student network를 만들고 student network에 noise를 주입함으로써 모델을 보다 Robust하게 하고, Robustness 성능까지 높이는 방법에 대해 이야기 한다.
-> 즉, student는 teacher보다 적어도 동일하거나 더 크다. 그 이유는 noisy와 pseudo labeled data가 추가되었기 때문이다.
- ImageNet 실험 결과, ImageNet-A, C, P에서 test한 결과, 모든 면에서 성능이 좋아졌다는 것을 알 수 있다.
BYEONGJO's RESEARCH BLOG블로그의 Noisy Student model에 대한 요약정리에 감명을 받아서 다음과 같이 정리를 하였다.
"본인보다 똑똑한(equal or larger student model) 학생들(with noise)에게 본인도 확실하지 않은 어려운 공부(pseudo labeled datas)와 확실한 공부(Labeled datas)를 시킨다. 학생들은 머리를 맞대며(ensemble) 청출어람하고, 선생님이 되어 새로운 학생을 같은 방식으로 가르친다."
Noisy Student는 마치 '교학상장
'과도 같다. '가르치고 배우면서 서로 성장하다'라는 의미로 student와 teacher model과 일맥상통한것같다.
2. Noisy Student Training
2.1. Algorithm
Noisy Student Training은 Self training을 이용하여 아래와 같은 Process를 거친다.
1) Labeled data에 noisy를 추가해서 teacher model을 학습
2) 학습된 teacher model을 사용하여 Unlabeled data에 대한 pseudo labels 생성
- Unlabeled data는 noisy가 추가되지 않은 pure한 데이터를 의미한다.
3) teacher model과 동등하거나 큰 student model를 학습시킨다.
이때 Labeled data와 pseudo labeled data를 이용하여 student model를 학습시킨다.
- Labeled data와 Unlabeled data에 대한 Cross Entropy를 모두 감소하는 방향으로 학습한다.
- 이때 student를 학습할 때는. 'Data Augmentation', 'Dropout', 'Stochastic depth'를 사용하여 noisy 추가 후 투입한다.
4) 학습된 student model을 다시 teacher model로 대체를 하고 새로운 student model 학습을 n번 반복한다.
- 이 부분은 Iterative Learning과 관련되어 있다.
- Input data와 model에 Noise를 주고 학습을 진행하기 때문에 ensemble과 비슷한 효과를 낼 수 있다.
2.2. Adding Noise to Student Model
앞에서 언급한 noise에 대해 구체적으로 살펴보면
1) Input Noise
- RandAugment
: 회전 대비 등 14가지 Augmentation 기법들 중 임의로 N개를 적용한 데이터 증강기법
이를 통해 바뀐 이미지가 기존 이미지와 같은 label인 사실을 student가 학습하고, 더 어려운 이미지도 잘 분류할 수 있게 된다.
2) Model Noise
- Dropout
: 학습에서 신경망 일부 노드를 drop하는 기법
- Stochastic Depth
: 신경망의 Depth를 Random하게 줄이는 기법
이는 ensemble과 비슷한 효과를 낸다.
2.3. Other Techniques
- 본격적인 학습에 앞서 Unlabeled Data에 Data Fitering과 Data Balancing을 적용한다.
- Data Fitering
- teacher model에서 낮은 confidence를 가진 image를 걸러주는 것이다.
- confidence가 낮은 데이터는 category에 특화된 이미지가 아닐 확률이 높기 때문이다.
- 본 논문에서는 Labeled Data로 학습한 EfficientNet-B0 model 추론 결과, confidence score가 0.3보다 높은 데이터만 가져온다.
- Data Balancing
- Training set과 Unlabeled dataset의 분포를 동일시 하기 위해 각 class에 대한 Unlabeled data의 수를 균일하게 만들어준다.
a. Data가 부족한 class는 image를 duplicate하여 채워준다 .
b. Data가 너무 많은 class 경우 confidence가 높은 데이터를 제거한다.
- Data Filtering 이후 class 당 최대 130K 이미지를 가질 수 있는데, 이때 class balance를 맞추기 위해 130K보다 적은 class의 경우 random으로 data를 duplicate하여 130K를 채워주는 것을 의미한다.
- Pseudo Labels
- 모델에 의해 만들어진 인공적인 Label를 의미한다.
- 이는 모델 학습할 때 사용되며, 가장 높은 예측확률을 가진 class를 pseudo label로 선택된다
- 하지만 pseudo labeldms pre-training된 모델을 finie-tuning할 때만 사용된다.
- 본 논문에서는 Soft / Hard labels 중 Soft pseudo labels를 사용했을 때 Unlabeled data에 대해 성능이 좋았기 때문에 Soft pseudo labels를 사용하였다.
3. Experiments
3.1. Details
가짜연구소_youtube에서 그림을 가져왔습니다.
- teacher model:
EfficientNetB7
3.2. ImageNet Results
- 위의 도표는 ImageNet 2012 ILSVRC validation set accuracy이다. Top-1 Accuaracy를 확인해보면, 기존 EfficientNet-B7에 비해 3.4% 성능 개선이 있었으며, 88.4%라는 놀라운 성능을 보여주며 SOTA를 갱신하였다.
- tag로 Labeling된 SOTA 모델인 FixRes, ResNeXt-101 WSL과 비교해봤을 때, Noisy Student는 300M Unlabeled image을 사용하여 더 높은 성능을 기록하였고, parameter의 개수 또한 2배정도 차이나는 것을 확인할 수 있다.
- Noisy Student가 기존 EfficientNet에 비해 효과가 있는지를 알아보기 위해 실험하였고,
iterative training을 진행하지 않고 한 번만의 student 학습을 진행했을 때의 성능을 나타낸 것이다.
- 적은 파라미터 개수에 비해 성능이 압도적으로 높고, iterative training없이도 성능이 좋은 것을 확인할 수 있다.
3.3. Robustness Results
ImageNet-(A, C, P) 소개
-> Robustness 측정을 위해 아래 세 데이터가 이용되었다.
- 각 데이터셋에 대한 실험 결과, ImageNet-A 데이터셋에서는 높은 정확도를 보여주고 있고, Noisy Student에 잘 버티고 있고, 견고한 Baseline에 Noisy Student를 적용하면 더 잘 견고할 수 있다.
- ImageNet-C의 평가에 사용된 mCE 지표와 ImageNet-P의 평가에 사용된 mFR 지표는 낮을수록 좋은 값을 의미한다. mCE를 45.7%에서 28.3%까지 낮추었고, mFR를 resolution에 따라 14.2와 12.2까지 낮추었다.
이 논문은 Robustness 향상 초점을 의도하지 않았는데도 불구하고 세 데이터셋에서 모두 좋은 성능을 달성하였다.
3.4. Adversarial Attack 실험 결과
- 위의 실험은 Adversarial Attack에 얼마나 Robust하게 버틸 수 있는지 평가한 실험이다.
- 1) Adverssarial Attack에 많이 사용되는 FSGM 공격을 EfficientNet에 가하였을 때와 2) Noisy Student을 EfficientNet에 적용했을 때의 성능을 비교해본 결과, 전반적으로 Adversarial Attack에 Robust함을 확인할 수 있다.
4. Ablation Study
4.1. The Importance of Noise in Self-training
Self-Training이란?
- 먼저 Labeled Data를 가지고, 학습 모델을 만들고, Unlabeled Data를 위에서 만든 모형에 넣어 예측치를 확보한다.
- 위의 예측된 값을 labeling된 데이터를 다시 학습시키는 것이다.
- 즉, pseudo label or Unlabeled data를 통해 더 많은 양의 training data를 얻는 방법이다.
ex) ELMo, GPT, BERT
4.2. A Study of Iterative Training
Iterative Training이란?
- 반복적으로 새로운 pseudo label을 만들고, 이를 이용하여 student model을 학습시키는 것이다.
- EfficientNet은 B7, L0, L1, L2으로 뒤로 갈 수록 모델의 size가 커지며, 학습 과정은 위의 표와 같다.
4.3. Additional Ablation Study Summarization
- teacher model이 Unlabeled Data를 추론시 noise는 추가하지 않는 것이 좋다.
Additional Ablation Study Summarization는 다음과 같다.
- (1) 더 크고 좋은 성능을 내는 teacher model을 쓰는 것은 좋은 결과를 가져온다.
- (2) 많은 양의 Unlabeled Data는 좋은 성능을 위해 필수적이다.
- (3) 도메인 외 데이터에 대해 Soft Pseudo Label이 Hard Pseudo Label보다 더 좋은 성능을 낸다.
- (4) student model이 더 Robust한 모델을 배울 수 있도록 하기 위해 큰 student model은 중요하다.
- (5) Data Balancing은 작은 모델에서 유용하다
- (6) Labeled Data와 Unlabeled Data 모두에 대해 학습하는 것이 Unlabeled data에 대해 학습 후 Labeled data에 대해 finie-tuning한 것보다 성능이 뛰어나다.
- (7) Labeled Data와 Unlabeled Data의 batch size에 대한 큰 비율은 더 높은 정확도를 위해 모델이 Unlabeled Data에 대해 오래 학습하도록 한다.
- (8) 처음부터 student model을 학습시키는 것이 teacher model의 가중치로 초기화한 것보다 더 좋은 성능을 낸다.
5. Conclusion
- Label 지정되지 않은 이미지를 사용하여 최첨단 ImageNet 모델의 정확성과 견고성을 크게 향상시킬 수 있음을 보여주었다.
-
Noisy student training은 CV model의 Robustness를 향상시키는 것을 보여주었다.
-
제안된 모델이 ImageNet-A, C 및 P의 성능을 크게 향상시킨다.
🎯 Summary
- 저자가 뭘 해내고 싶어 했는가?
-
ImageNet에 속하지 않은 UnLabeled Dataset을 효율적으로 사용하여 모델 성능을 높이고자 하였다.
-
teacher network와 동등하거나 보다 큰 student network를 만들고 student network에 noise를 주입함으로써 모델을 보다 Robust하게 하고, Robustness 성능까지 높이고자 한다.
- 이 연구의 접근 방식에서 중요한 요소는 무엇인가?
- Noise 기법
1) RandAugment
2) Dropout
3) Stochastic Depth
- 어느 프로젝트에 적용할 수 있는가?
- 참고하고 싶은 다른 레퍼런스에는 어떤 것이 있는가?
- 느낀점은?
- 적용한 아이디어가 간단하면서도 성능이 우수해서 정말 놀라웠다. 또한 Accuracy에 초점을 맞춰서 연구 했는데, 모델의 Robustness가 의도지 않았는데도 증가한 점이 인상 깊었다.
📚 References
-
유튜브
- [논문미식회] CV331: Self-training with Noisy Student improves ImageNet classification
-
블로그