논문 리뷰/self-supervised learning

[논문 리뷰] MoCo-v2

curious_cat 2023. 2. 24. 22:56
728x90
728x90

개요:

논문 링크: https://arxiv.org/abs/2003.04297 (Improved Baselines with Momentum Contrastive Learning)

이전 글: 2023.02.24 - [paper review] - [논문 리뷰] MoCo-v1 (Momentum Contrast for Unsupervised Visual Representation Learning)

MoCo-v1에 SimCLR-v1에서 도움 되었던 디자인들을 채용하여 성능을 높이는 논문이다.

방법

  • 기본적으로 MoCo-v1이랑 방법은 같다. Query q를 만드는 encoder은 학습되는 neural network (gradient 를 계산하는 neural net)이고 key k를 만드는 neural network는 neural network의 parameter을 exponential average해서 얻는다. 같은 이미지를 augmentation하면 positive pair을 이루고, 다른 이미지는 negative pair을 이룬다. q와 positive pair을 이루는 key \(k^+\)와 negative pair을 이루는 key들 \( k^-\) 가 있으면 다음과 같은 loss를 최소화하면서 학습하게 된다. 참고로 negative key는 first-in-first-out queue에서 가져온다 (새로운 batch가 들어오면 계속 queue에 있는 key들을 업데이트해준다). 

  • MLP head & temperature: MoCo-v1에서는 단순히 neural net backbone에 fully connected layer을 다는 반면, SimCLR-v1에서는 2-layer MLP head를 사용한다. Unsupervised training을 할 때 이 head를 달아주면 (supervised training할 때는 이 head를 제거한다) 성능이 좋아졌다고 한다. 또한 optimal한 temperature parameter도 서치를 한다 (MoCo-v1에서는 위에 loss function을 제시한 논문에서 설정한 temperature 그대로 사용했다). MoCo 로 학습한 feature을 기반으로 ImageNet에 linear classification을 학습한 결과이다: MLP를 사용하고 temperature hyperparameter을 잘 서치하면 더 좋은 결과를 얻을 수 있는 것을 확인할 수 있다 (60.6 -> 66.2)

  • Augmentation: MoCo-v1에서는 color jittering, horizontal flip, and grayscale conversion을 사용했다. 여기에 SimCLR에서 사용했던 blur augmentation을 추가하면 MoCo-v1의 60.6 accuracy에서 63.4로 좋아진다. 
  • LR scheduler: SimCLR 비슷하게 cosine learning rate (half-period)를 사용하면 성능이 좋아진다
  • Training duration: 200 epoch 대신 800 epoch동안 학습하면 성능이 더 좋아진다.

다음 테이블에 결과가 정리되어있다:



MoCo-v2와 SimCLR을 비교했을 때 성능이 더 좋게 나왔다:

MoCo는 batch size가 클 필요가 없다는 추가적인 장점이 있다.

728x90
728x90