논문 읽기/Self-Supervised

[논문 읽기] MOCO(2019), Momentum Contrast for Unsupervised Visual Representation Learning

AI 꿈나무 2021. 7. 7. 12:21
반응형

 안녕하세요, 오늘 읽은 논문은 MoCo, Momentum Contrast for Unsupervised Visual Representation Learning 입니다.

 

 MoCo는 contrastive loss를 사용하는 self-supervised model 입니다. MoCo 이전의 contrastive loss mechanism은 end-to-end, memory bank 방식이 존재했습니다. 

 

 

 Contrastive loss를 최대한 활용하려면 많은 수의 negative sample가 필요하고 negative sample의 encoder는 query encoder과 consistent 해야 합니다.

 

 end-to-end 방법은 mini-batch내에 존재하는 sample들을 negative sample로 활용하는데, 많은 negative sample을 사용하려면 computational limit가 발생합니다. memoty bank 방식은 많은 양의 negative sample을 활용할 수 있지만 encoder가 update 됨에 따라 encoded된 negetive sample은 갱신이 되지 않습니다.

 

 end-to-end와 memory bank 방식의 단점을 개선한 것이 MoCo 입니다.

 

Method

 

 MoCo의 핵심아이디어는 (1) negative representation을 저장하는 queue, (2) key encoder의 mementum update 입니다.

 

 MoCo는 하나의 이미지에 두 개의 augmentation을 적용합니다. 그리고 이 이미지들은 similar로 정의합니다. queue 내에 존재하는 representation은 disimiar로 사용합니다. queue 내는 과거 batch내 augmentation이 적용된 image가 encode된 representation들로 이루어져 있습니다.정의된 similar와 dissimilar를 사용하여 contrastive loss를 계산합니다. encoder을 갱신하고, decoder는 momentume update 합니다.

 

 현재 batch에서 augmentation된 이미지는 queue에 enqueue 합니다. queue내에 존재하는 과거의 representation은 deque 합니다. encoder가 갱신됨에따라 과거의 representation은 consistent하지 않기 때문입니다. query encoder는 학습이 진행되면서 갱신이 되고, key encoder는 momentum 기법을 사용하여 서서히 갱신합니다. 

 

(1) Contrastive Learning as Dictionary Look-up

 MoCo에서 사용하는 loss function 입니다. InfoNCE Loss를 사용합니다.

 

 

(2) Momentum update

 key encoder는 서서히 update 합니다.

 

 

(3) algorithm

 

Expriment

 end-to-end, memory bank 방식과의 성능 비교

 

 momentum value에 따른 성능 실험

 

 self-sup 기법들과의 성능 비교

 

 object detection에서 성능비교

 

 여러 task에 transfer 결과


참고자료

[1] https://arxiv.org/abs/1911.05722 

 

반응형