HeYStRanGeR
article thumbnail

(23.01.17)

SSL(self-supervised learning) 논문 리뷰 2탄

 

이번에 정리할 논문은 MoCo라 불리는 논문이다.

- 논문 제목: Momentum Contrast for Unsupervised Visual Representation Learning (CVPR 2020)

- https://arxiv.org/pdf/1911.05722.pdf


 

Abstract

저자는 Momentum Contrast for unsupervised visual representation learning, 즉 MoCo 를 제안한다.

contrastive learning의 관점에서 dynamic dictionary를 queue로 구현하고, moving-average encoder를 사용한다.

 

 

 

 

Method

 

간단 정리: MoCo는 충분히 큰 dictionary를 queue형태로 두어 negative pair를 dictionary에서 추출한다. 하나의 이미지에 대해 augmentation을 적용하여 key를 생성한다. 입력이미지 x_query에 대해서 같은 이미지에서 나온 key는 positive pair를 이루며, 다른 이미지에서 생성한 key는 negative pair를 이룬다. key encoder는 gradient update하지 않으며, query encoder만 gradient update한다. query encoder로부터 momentum update된다.

 

 

 

MoCo의 핵심은 3가지다.

1. dictionary를 queue로 구현하는 것 -> batch size 보다 큰 사이즈 가능

2. momentum encoder -> 일관성 있게 parameter update

3. infoNCE loss 

 

 

momentum parameter update
infoNCE loss

 

 

또한, 저자는 contrastive learning을 dictionary look-up이라고 표현하기도 했는데, 아래는 MoCo 이전의 방법들과 비교한 그림이다.

 

(a) end-to-end는 SimCLR이라고 생각하면 될 것 같다. 그림 상 encoder가 서로 다른 것처럼 보이지만, 하나의 encoder이다. 이때는 mini-batch가 dictionary처럼 쓰인다고 보면 될 것 같다. 

(b) memory bank 방식은 memory bank에 모든 data의 representations를 전부 보관한다. 여기서도 각 mini-batch가 dictionary처럼 쓰이는데, memory bank에서 random하게 골라 mini-batch를 꾸린다. 이때, memory bank에서 뽑은 key쪽은 back-propagation이 없다. 여기서도 momentum update가 쓰이는데, 이때는 MoCo에서 쓰이는 것과 다르게 encoder가 아니고 representation(key)에 쓰인다.

 

 

 

Experiments

dictionary look-up 3가지 비교하는 실험결과

 

 

image classification에서 기존의 방법들과 비교한 실험결과

 

 

detection task에서의 실험 결과들

 

 

Main contributions

- dictionary를 queue로 구현하여, batch size로 설정할 수 있는 최대 학습가능한 사이즈보다 더 크게 잡고 학습시킬 수 있다는 점

- momentum encoder를 통해 일관성을 유지하며 천천히 학습시켰다는 점

 

728x90
profile

HeYStRanGeR

@HeYStRanGeR

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!