개요
논문 링크: 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에서는 momentum encoder을 사용하지 않으면 collapse했지만 SimSiam은 안 그런지 잘 이해가 안 된다. https://arxiv.org/abs/2102.06810, https://arxiv.org/abs/2209.15007가 관련 있어 보이는데 나중에 시간이 있으면 리뷰를 해보겠다.
학습 디테일
- 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)이랑 연관을 짓는 섹션도 흥미롭지만 중요하지는 않다.
'논문 리뷰 > 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 |