A Simple Framework for Contrastive Learning of Visual Representations
subinium opened this issue · 3 comments
subinium commented
subinium commented
Concept
- contrastive self-supervised learning
- MoCo와 유사한 방법론. 다양한 실험과 해석이 인상적
The Contrastive Learning Framework
-
Figure 2만 보면 방법론 끝.
- x에서 augmentation function t, t`으로 x_i, x_j
- 각각을 base encoder f를 거쳐 representation h_i, h_j
- 그리고 contrastive loss를 계산하기 위해 projection head g를 한번 더 거쳐 z_i, z_j
- f는 ResNet을 사용(h is the output after average pooling layer)
- g는 MLP(with ReLU) 사용
- g를 써서 한 스텝 더 하는 이유는 section 4에 설명 (결론적으로는 이득.)
-
data augmentation은 3가지 사용함
- 여러 방법을 permutation으로 실험했더니 이게 제일 좋다는 결론 (Section3)
- random cropping with resize
- random color distortion
- random Gaussian blur
-
negative sample을 따로 만들지 않고, batch size N를 키워서 2(N-1) 샘플을 negative로 사용
- 1개의 데이터에서 2개씩 data augmentation하니까.
-
유사도는 코사인유사도로 계산, loss는 NT-Xent loss 사용 (InfoNCE랑 폼 자체는 유사)
- 근데 (i, j)와 (j, i)의 순서에 따라 결과가 달라 둘 다 계산하고 평균 사용함
Training with Large Batch Size
-
batch size를 256~8192개까지 다양하게 실험
- 이러면 positive pair에 따라 negative sample이 16382개 생김
- SGD/Momentum with linear learning rate scaling으로는 불안정한 학습
- LARS optimizer 사용 (link : layer마다 learning rate와 gradient scale을 L2 norm으로 normalizing하여 조정하는 것으로 이해, 유사한 친구로 LAMB가 있음)
-
Global Batch Normalization 사용
- distributed training시에 원래는 local하게 batch 계산
- 이러면 accuracy만 높게 prediction하는 leak 발생
- 그래서 모든 기기의 BN mean, variance 값 수합
- (다른 방법론) MoCo에서는 Shuffle BN, 다른 논문은 layer norm 사용
Data Augmentation for Contrastive Representation Learning
- 여러 종류의 augmentation을 쓰면 task는 어려워지지만 성능이 높아짐 (단일로는 성능 하락)
- 특히 random croping과 color distortion이 성능이 좋은데
- 같은 이미지의 patch는 비슷한 색상 분포를 가져 학습을 안해도 구분 가능
- 그래서 color distortion + random crop을 하면 general한 feature를 학습하는 듯
- supervised에서도 그런지 체크했는데 그건 아님. 오히려 강한 color distortion은 성능하락
- unsupervised task(본 논문)에서는 강한 color distortion이 성능에 도움
- supervised에서 효과가 없다고 꼭 모든 task에 효과가 없는 것은 아니다!! (케바케 시전)
나머지 부분은 다 위에서 사용한 테크닉이 성능에 좋았다는 것을 이야기하는 내용 (S.O.T.A 라구욧!!)
subinium commented
ETC
- data augmentation tool이 좀 더 high level 도구로 있으면 좋겠다는 생각.
- 구글이기에 가능한 모든 가능성 실험이기도 했지만 잘 쓴 논문이라는 생각.
- 방법론 자체만 있으면 설득력이 부족할 수도 있는데, 실험 설계가 체계적이고 결과를 잘 보여준듯
- 요새는 논문을 읽을 때 모든 상황이 똑같이 주어졌을 때, 재현할 수 있을까(랩 세미나에서 교수님이 종종 하시는 질문)를 생각해보는데 그런 부분에서 디테일한 부분이 잘 설명되어 있다고 느낌.
- 물론 이런 대규모 실험을 설계할 자신은 아직 없다ㅠㅠ 그릇 열심히 키우는 중..
- Geoffrey Hinton이 1저자로 있는 논문이었다.
subinium commented
도움되는 자료
- PR12-이진원님 SimCLR발표자료
- Amit Chaudhary: The Illustrated SimCLR Framework