*** 수정예정
Journal: 2020 CVPR
Github: https://github.com/google-research/noisystudent
⇒ 논문에서 가장 중요한 점은 student 모델을 학습시킬 때 noise를 추가한다, teacher 모델만큼의 크기의 student 모델을 사용한다.
Algorithm
- EfficientNet 모델을 labeled ImageNet에서 학습시킨다. 학습된 모델은 teacher 모델이 된다. Labeled images에 대한 cross entropy loss를 최소화 하는 방향으로 학습한다.
- Teacher 모델을 사용해서 unlabeled images에 대해 pseudo labels를 생성한다. Pseudo label을 생성할 때는 최대한 정확하게 pseudo label을 만들어야 해서 teacher에 noise를 넣지 않는다. Pseudo label은 soft (continuous distribution)하거나 hard (one-hot distribution)하다.
- Larger EfficientNet을 student 모델로 해서 labeled + pseudo labeled images에서 학습시킨다. Teacher 모델보다 generalization을 잘하게 만들기 위해서 student에 noise를 넣는다. Noise를 추가하는건 dropout, stochastic depth, data augmentation (via RandAugment)을 추가하는 걸 말한다. Labeled images와 unlabeled images에 대한 combined cross entropy loss를 최소화 하는 방향으로 학습한다.
- Student 모델은 다시 teacher 모델이 되어 2-3번을 반복하며 새로운 pseudo labels를 생성하고 새로운 student 모델을 학습시킨다.
- 단점은 teacher가 생성한 pseudo label이 정확하지 않으면 student는 정확하지 않은 데이터로 학습 돼버린다. (확증 편향 문제)
Noise
- Noise를 student 모델에 넣는 건 local smoothness를 향상시키는 효과가 있다.
- Noise는 2가지 종류로 나뉘고 각각 다른 효과를 낸다.
- Input noise: Data augmentation → RandAugment.
- Invariant constraint가 중요하다.
- Model noise: Dropout, stochastic depth.
- Teacher 모델이 inference하면 앙상블하는 것과 같은 효과가 있다. Student 모델은 앙상블 모델 중 가장 powerful한 모델을 따라하는 것과 같다.
글이 잘 정리되어 있네요. 감사합니다.