[논문] Self-training with Noisy Student improves ImageNet classification

이름 뭐하지·2023년 7월 18일
0

논문

목록 보기
1/5

*** 수정예정

Journal: 2020 CVPR
Github: https://github.com/google-research/noisystudent

⇒ 논문에서 가장 중요한 점은 student 모델을 학습시킬 때 noise를 추가한다, teacher 모델만큼의 크기의 student 모델을 사용한다.

Algorithm

  1. EfficientNet 모델을 labeled ImageNet에서 학습시킨다. 학습된 모델은 teacher 모델이 된다. Labeled images에 대한 cross entropy loss를 최소화 하는 방향으로 학습한다.
  2. Teacher 모델을 사용해서 unlabeled images에 대해 pseudo labels를 생성한다. Pseudo label을 생성할 때는 최대한 정확하게 pseudo label을 만들어야 해서 teacher에 noise를 넣지 않는다. Pseudo label은 soft (continuous distribution)하거나 hard (one-hot distribution)하다.
  3. 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가지 종류로 나뉘고 각각 다른 효과를 낸다.
  1. Input noise: Data augmentation → RandAugment.
    • Invariant constraint가 중요하다.
  2. Model noise: Dropout, stochastic depth.
    • Teacher 모델이 inference하면 앙상블하는 것과 같은 효과가 있다. Student 모델은 앙상블 모델 중 가장 powerful한 모델을 따라하는 것과 같다.
profile
바오바오바오바오바오

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

글이 잘 정리되어 있네요. 감사합니다.

답글 달기