subinium/Deep-Papers

A Simple Framework for Contrastive Learning of Visual Representations

subinium opened this issue · 3 comments

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 라구욧!!)

ETC

  • data augmentation tool이 좀 더 high level 도구로 있으면 좋겠다는 생각.
  • 구글이기에 가능한 모든 가능성 실험이기도 했지만 잘 쓴 논문이라는 생각.
    • 방법론 자체만 있으면 설득력이 부족할 수도 있는데, 실험 설계가 체계적이고 결과를 잘 보여준듯
    • 요새는 논문을 읽을 때 모든 상황이 똑같이 주어졌을 때, 재현할 수 있을까(랩 세미나에서 교수님이 종종 하시는 질문)를 생각해보는데 그런 부분에서 디테일한 부분이 잘 설명되어 있다고 느낌.
    • 물론 이런 대규모 실험을 설계할 자신은 아직 없다ㅠㅠ 그릇 열심히 키우는 중..
  • Geoffrey Hinton이 1저자로 있는 논문이었다.