논문 리뷰/self-supervised learning

[논문 리뷰] SimSiam

curious_cat 2023. 3. 13. 23:50
728x90
728x90

개요

논문 링크: https://arxiv.org/abs/2011.10566

참고하면 좋은 이전 글: 2023.03.01 - [paper review] - [논문 리뷰] BYOL (Bootstrap Your Own Latent)

 

SimSiam은 Siemese network를 활용해서 self-supervised learning을 하는 방식이다. BYOL을 이해하고 있다면, BYOL에서 momemtum encoder (모델의 exponential moving average )을 제거한 것이라고 생각하면 된다. 다음 그림이 잘 요약해 준다. 우선 이미지를 다른 방식으로 augmentation해서 같은 network에 통과시킨다. 한쪽에서는 predictor h를 사용해서 다른 쪽 feature을 예측하는 방식으로 학습한다. 이때 predictor을 사용하지 않는 쪽의 network에 대해서는 gradient를 계산하지 않는다. 재미있게도 BYOL에서 exponential moving average를 취하지 않으면 collapse하는 현상을 보였는데 여기서는 그렇지 않았다 (참고: BYOL에서도 appendix I를 보면 predictor에 대한 learning rate를 증가시키면 collapse현상이 사라졌다).

방식

Network

  • f = ResNet + MLP
  • h: prediction MLP head

Loss

  • \( \mathcal{L}  = \frac{1}{2} \mathcal{D}(p_1,z_2) + \frac{1}{2} \mathcal{D}(p_2,z_1)\)
    • \(  \mathcal{D}(p_1,z_2)  = -\frac{p_1}{|| p_1 ||_2} \cdot \frac{z_2}{|| z_2 ||_2}\) (\( || \cdot||_2\) 는 L2 norm)
    • \( x_1,x_2\): 같은 이미지의 다른 augmentation
    • \( p_i = h(f(x_i))\)
    • \( z_i = f(x_i)\)
  • \(  \mathcal{D}(p_1,z_2)\)에서 \( z_2\)를 계산하는 neural net에 대해서는 gradient를 계산하지 않는다.
  • 정리하면 다음과 같은 알고리즘을 얻을 수 있다. BYOL에서 momentum encoder을 제외하면 알고리즘은 같다; 중간중간 implementation detail이 다를 뿐. 

학습 디테일

  • BYOL과 다르게 SGD + weight decay + momentum 사용
  • Cosine decay schedule 사용
  • f에 있는 projection MLP에 Batch Normalization 사용 (output fc 포함; output fc는 ReLU 사용 안 함), hidden fc 2048-d, 3 layers
  • h: MLP, Batch Norm 사용, output fc에는 Batch Norm  & ReLU 사용 안 함, 2 layers, feature dimension은 2048 -> 512 -> 2048 구조.
  • f의 backbone: ResNet-50

실험

ImageNet에 SimSiam으로 학습 후 linear classification하는 다양한 실험

  • Stop-gradient가 없으면 collapsed solution으로 수렴한다
  • Predictor (h)를 제거하면 collapse한다. 
    • \( \mathcal{L}  = \frac{1}{2} \mathcal{D}(z_1,\textrm{stopgrad}(z_2)) + \frac{1}{2} \mathcal{D}(z_2,\textrm{stopgrad}(z_1)) \)의 gradient는 \( \mathcal{D}(z_1,z_2)\) 의 gradient와 비례해서 stop-gradient가 없는 것과 마찬가지.
    • gradient가 비례하는 내용은 symmetric loss에만 적용되지만 asymmetric loss를 사용해도 h를 제거하면 collapse한다.
  • h에 대해서는 constant learning rate를 사용하면 결과가 조금 더 좋아진다고 한다 (cosine learning rate decay 를 h에 적용 x).
  • Batch size에 robust하다 (batch size가 바뀌면 learning rate도 batch size에 비례하도록 바꾼다; batch size가 2배 되면 learning rate도 2배로 키운다는 뜻)

  • MLP에 batch norm을 제거하면 collapse하지는 않지만 linear classification accuracy가 많이 훼손된다고 한다
  • h의 output에 batch norm을 사용하면 학습이 unstable 하다고 한다
  • Loss function에 cosine similarity 대신 cross-entropy를 사용해도 잘 학습되지만 성능 저하가 있다.
  • Symmetrize 해주지 않아도 잘 학습되지만 성능 저하가 있다.

스킵한 내용

SimSiam이 일종의 Expectation-Maximization 알고리즘인 것 같다고 설명을 한다 (논문 section 5). 흥미롭지만 크게 중요하지는 않다.

다른 방법들 (SimCLR, SwAV, BYOL)이랑 연관을 짓는 섹션도 흥미롭지만 중요하지는 않다.

728x90
728x90

'논문 리뷰 > self-supervised learning' 카테고리의 다른 글

[논문 리뷰] NNCLR  (0) 2023.03.30
[논문 리뷰] Barlow Twins  (0) 2023.03.17
[논문 리뷰] SwAV  (0) 2023.03.11
[논문 리뷰] SeLa  (0) 2023.03.04
[논문 리뷰] BYOL  (0) 2023.03.01