*Simsiam 논문 리뷰를 코드와 같이 분석한 글입니다! SSL 입문하시는 분들께 도움이 되길 원하며 궁금한 점은 댓글로 남겨주세요.
*Simsiam는 Non-contrastive learning입니다.
Simsiam paper: https://arxiv.org/abs/2011.10566
Simsiam github: https://github.com/a5chin/simsiam
Contents
Simple Introduction
기존의 SSL과의 구조를 비교한 것이다.
Simsiam은 같은 encoder 구조를 가지고 있기 때문에 모델 관리가 매우 편하다. (같은 weights의 encoder를 이용하기 때문이다.)
또한 단방향의 backpropagation과 momentum encoder 없이 positive sample만을 이용한다는 점에서 매우 의미가 있는 논문이다.
어떻게 momentum encoder가 영향력이 없다는 것을 알아내었는지 살펴보자!
Background Knowledge: BYOL
BYOL 논문 리뷰: https://kyujinpy.tistory.com/44
MoCo와 BYOL에서 사용하던 Momentum encoder의 영향력이 거의 없다는 것을 알려준 논문이기 때문에, 살펴보면 좋을 것 같다!
특히 BYOL와의 구조가 매우 유사하기 때문에 읽으면 도움이 될 것이다.
*해당 논문 리뷰는 BYOL의 개념을 알고 있다는 가정 하에 진행됩니다!
Method
구조는 BYOL과 거의 같다.
다만 다른점이라고 한다면 target network에서 이용되는 encoder가 momentum encoder로 update 되는 방식이 아닌 그냥 online network에서 이용되는 encoder와 같다는 점이다!
그리고 공통점은, stop gradient를 그대로 target network에 이용한다는 점이다.
왜 이러한 생각을 하게 되었을까?
BYOL에서 쉽게 생각해본다면,
target network의 projection layer에서 나온 embedding 값의 평균과 prediction layer에서 나온 embedding 값이 가까워 질수록 loss function이 최소화된다. (자세한건, 논문 리뷰 글에 언급)
이때, 굳이 augmentation에 대한 값을 projection layer에서 매핑시키는 과정을 momentum layer로 update시켜서 값이 consistent하게 변화하게 하는 것이 의미가 있는지에 대한 의문점이 생긴 것이다.
1. Stop gradient
Stop gradient를 이용했는지에 대한 유무에 따른 성능평가 그래프이다.
파란색이 이용한것이고, 빨간색이 이용을 하지 않은 것인데,
그래프를 보면, training에서 Stop-gradient를 이용하지 않았을 때는 loss function의 최솟값인 -1에 바로 도달하는 것을 볼 수 있다.
그러나 맨 오른쪽의 validation acc graph를 보면 성능이 안 좋은 것을 확인할 수 있는데, 이것은 바로 모델이 stop gradient를 이용하지 않으면 shortcut을 한다는 의미이다.
따라서 stop gradient가 Collapsing problem을 해결하는 주요 key라는 것을 증명했다.
2. Loss function
Simsiam 논문에서는 BYOL과 다르게 negative-cosine-similarity loss만을 이용한다.
그리고 BYOL과 동일하게 symmetric loss를 이용한다.
Experiment
Simsiam은 Batch size에 따라 성능이 크게 변하지 않아서, default는 256이다.
Simsiam에 따른 Transfer learning을 보면 대부분 SOTA를 기록한 것을 알 수 있다.
- 2023.01.01 Kyujinpy 작성.