일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 논문구현
- cnn
- Python
- 알고리즘
- Segmentation
- optimizer
- 논문
- Convolution
- 코딩테스트
- 코드구현
- opencv
- Self-supervised
- transformer
- ViT
- pytorch
- 딥러닝
- 인공지능
- Paper Review
- Computer Vision
- programmers
- Ai
- 논문 리뷰
- 논문리뷰
- Semantic Segmentation
- 파이썬
- 옵티마이저
- 머신러닝
- 프로그래머스
- object detection
- 파이토치
- Today
- Total
Attention please
[논문 리뷰] SimSiam: Exploring Simple Siamese Representation Learning(2021) 본문
[논문 리뷰] SimSiam: Exploring Simple Siamese Representation Learning(2021)
Seongmin.C 2023. 8. 7. 05:31이번에 리뷰할 논문은 Exploring Simple Siamese Representation Learning 입니다.
https://paperswithcode.com/paper/exploring-simple-siamese-representation
Intoduction
siamese network는 2개 이상의 input에 적용되는 가중치 공유 신경망입니다. 해당 network는 각 entity를 비교하기 위해 사용되기도 하며, image representation을 추출하기 위해 self-supervised learning를 수행하는데 사용되기도 합니다.
하지만 siamese network는 모든 output 이 상수화되는 collapsing 문제를 가지고 있으며, 지금까지 collapse를 막기 위한 여러 시도들이 존재했습니다. 대표적으로 다음 4가지 기법들이 제안되었습니다.
- simCLR
- Clustering
- SwAV
- MoCo
하지만 본 논문에서 제안하는 SimSiam 은 collapse를 막기 위한 위 기법들을 사용하지 않고도 잘 작동한다고 합니다.
- negative pairs 나 momentum encoder 없이 한 image의 2가지 view의 similarity를 직접 극대화함.
- large batch 의존 없이 일반적인 size의 batch로 작동함.
위와 같이 특정 조건 없이 collapse를 예방할 수 있기 때문에 SimSiam 을 다음과 같이 생각할 수 있습니다.
- momentum encoder 없는 BYOL 로 생각할 수 있음.
- 2개의 branch간 가중치를 직접 공유하기 때문에 negative pairs없는 simCLR 와 online clustering 없는 SwAV 로 생각할 수 있음.
위와 같이 기존에 존재하던 기법들에서 한가지 조건 씩 제거되었음에도 SimSiam 은 collapse를 일으키지 않는다는 특징이 있습니다.
본 논문에서는 SimSiam이 collapse를 방지하는 가장 중요한 solution은 stop-gradient operation 이라고 합니다. 또한 해당 기법은 암묵적으로 2 set의 변수가 있으며, SimSiam은 각 set을 optimize 하는 것 사이에서 교대로 작동하는 것처럼 행동한다고 가설을 세웁니다. 이 가설에 대해서는 밑에서 자세하게 다루도록 하겠습니다.
Method
SimSiam 의 architecture는 다음과 같습니다.
image $ x $ 에서 무작위로 augmentation 된 2개의 view인 $ x_{1} $ 와 $ x_{2} $ 를 input으로 받습니다. 이렇게 생성된 2개의 view인 $ x_{1}, x_{2} $ 는 backbone(ResNet) 과 projection(MLP head) 로 이루어진 encoder $ f $ 에 적용합니다.
- encoder $ f $ 는 2개의 view 간의 가중치를 공유합니다.
encoder를 통과한 2개의 view 중 1개의 view에 대해서만 prediction MLP head(h) 를 통과하며, 다른 1개의 view와 일치하게 예측하도록 수행됩니다.
위와 같이 구한 $ p_{1} $ 과 $ z_{2} $ 에 대해 negative cosine similarity 를 minimize 하도록 수행됩니다.
위와 같이 정의된 negative cosine similarity 는 $ l_{2} $-normalization vectors 의 MSE 와 동일합니다. 왜 동일한지에 대해 다음과 같이 유도해볼 수 있습니다.
[vector a 와 b 가 존재한다고 가정]
$$ MSE(a,b) = \frac {1} {n} \sum_{i=1}^{n}(a_{i}-b_{i})^{2} $$
[두 vector가 $ l_{2} $ - normalization 으로 정규화되었다고 가정]
$$ \left\| a \right\|_{2} = \left\| b \right\|_{2} = 1 $$
[두 vector에 대해 dot product 수행]
$$ a \cdot b = \sum_{i=1}^{n}a_{i}b_{i} $$
[두 vector의 차이에 대해 차이 제곱 계산]
$$ \left\| a-b \right\|^{2}_{2} = \sum_{i=1}^{n}(a_{i}-b_{i})^{2} $$
$$ = \left\| a \right\|^{2}_{2} - 2(a \cdot b) + \left\| b \right\|^{2}_{2} $$
$$ = 1 - 2(a \cdot b) + 1 $$
$$ = 2 - 2(a \cdot b) $$
위의 유도 과정에서 알 수 있듯이 2개의 vector가 $ l_{2} $-normalization 으로 정규화된 경우에만 dot product 와 두 vector 간의 거리 제곱과 관련이 있습니다.
위에서 정의했던 $ D(p_{1}, z_{2}) $ 를 symmetrized loss 로 다음과 같이 정의합니다.
위 loss function 은 각 image에 대해 정의되며, total loss는 모든 image들의 loss값의 평균값으로 적용됩니다. 또한 loss의 최소값은 -1 로 설정됩니다. 여기에서 중요한 점은 negative cosine similarity 를 구할 때 한 view에 대해서 stop-gradient operation 을 적용한다는 점입니다.
$ z_{2} $ 에 대해서 stop-gradient를 적용하기 때문에 결국 $ z_{2} $를 상수로 취급한다는 것을 의미합니다. (상수의 gradient = 0) 위 stop-gradient operation을 적용하여 loss function을 다음과 같이 다시 정의합니다.
위 식의 첫 번째 term에서는 $ x_{2} $ 가 $ z_{2} $ 로부터 gradient를 받지 못하지만, 두 번째 term에서는 $ p_{2} $ 로부터 gradient를 받습니다.
다음은 SimSiam의 알고리즘을 Pseudocode로 나타낸 것입니다.
Empirical Study
Stop-gradient
다음은 SimSiam의 stop-gradient를 사용하였을 때와 사용하지 않았을 때에 대한 비교 결과를 보여줍니다.
stop-gradient를 사용하지 않았을 때 degenerated solution을 찾아 빠르게 최적화되는 모습을 보여줍니다. 즉, collapse가 일어난다는 것을 의미하죠.
위 figure는 $ l_{2} $-normalized output 인 $ z/\left\| z \right\|_{2} $ 의 standard deviation(std) 를 stop-gradient를 사용할 때와 사용하지 않을 때에 대해 비교하여 보여줍니다. 만약 collapse가 발생한다면 output의 std가 일정하게 유지됩니다. 즉, std가 상수처리 되었는지 std를 출력하여 collapse 여부를 확인합니다.
stop-gradient를 사용하지 않을 때 output std가 0으로 유지되는 것을 확인할 수 있습니다. 즉, collapse 되었다는 것을 알 수 있죠. 반대로 stop-gradient를 사용하였을 때 output std가 $ \frac {1} {\sqrt{d}} $ 에 가까운 값으로 유지되는 것을 확인할 수 있습니다.
output 의 mean 값이 0인 isotropic Gaussian distribution를 따른다면 std가 $ \frac {1} {\sqrt{d}} $ 에 가까워집니다. 즉, output std가 $ \frac {1} {\sqrt{d}} $ 에 가까워진다는 것은 output이 collapse 되지 않고, 공간에 고르게 분포되어있음을 의미합니다. 즉, 다양한 feature가 포착된다는 것을 의미하죠.
위 figure는 k-nearest-neightbor (kNN) classifier 에 대한 validation accuracy에 대해 비교하여 보여줍니다. stop-gradient를 사용하지 않았을 때는 accuracy가 상승되지 않고 일정하게 유지되는 모습을 보여주었지만, stop-gradient를 사용했을 때는 accuracy가 상승되는 모습을 보여줍니다.
실제로 linear evaluation 의 결과를 보면 stop-gradient를 사용했을 때가 사용하지 않았을 때에 비해 accuracy가 더 높은 수치를 보여주는 것을 확인할 수 있습니다.
Predictor
다음은 predictor MLP의 효과에 대해 연구 결과를 보여줍니다.
[ Table 1 a ]
predictor h를 제거했을 때, 대칭 손실은 결국 $ D(z_{1}, z_{2}) $ 의 gradient와 동일한 방향을 가지며, 이는 stop-gradient를 제거하고 손실함수 크기를 $ \frac {1} {2} $ 로 줄인 것과 동일합니다. 이에 대해 collapse가 관찰되어 accuracy가 0.1로 낮은 값이 나오는 것을 확인할 수 있습니다. 결과적으로 predictor h 가 모델 학습이 도움이 된다는 것을 알 수가 있죠.
[ Table 1 b ]
h 가 random initialization 으로 고정되면 모델이 잘 작동하지 않는다. 하지만 이는 collapse와는 관련이 없으며, 학습이 수렴되지 않고, 손실이 높게 유지되는 것을 확인할 수 있습니다.
[ Table 1 c ]
learning rate 감소 없이 일정하게 유지해도 h가 잘 작동되며, 오히려 더 나은 결과를 생성하는 것을 확인할 수 있습니다. 이를 통해 reducing learning rate가 필요 없음을 알 수 있습니다.
Batch size
본 논문에서는 batch size를 64 ~ 4096 에 대해 설정해놓고 실험을 진행합니다.
위 결과를 통해 넓은 범위의 batch size에서 잘 작동하는 것을 확인할 수 있습니다. 이 결과는 SimSiam 이 SimCLR이나 SwAV와 같은 다른 모델들과는 다른 모습을 보여줍니다. 앞의 3 모델의 경우 모두 직접 가중치를 공유하는 siamese network 이지만, SimSLR 과 SwAV 는 큰 batch size 에 대해서만 잘 작동한다는 한계가 존재합니다.
또한 보통 큰 batch size에서는 learning rate에 변화를 주는 LARS 와 같은 특수 optimizer 사용이 필요하지만, SimSiam의 경우 collapse를 막기 위해 특수 optimizer 필요 없다는 특징이 존재합니다.
Batch Normalization
다음은 MLP head의 BN 구성을 비교하여 실험을 진행합니다.
[ Table 3 a ]
모델에 존재하는 MLP-head의 모든 Batch Normalization을 제거한 결과입니다. 정확도가 약 34.6% 정도로 collapse를 일으키지는 않지만 정확도가 낮은 것을 확인할 수 있습니다. 이를 통해 BN을 사용하지 않으면 최적화가 어렵다는 결과가 도출됩니다.
[ Table 3 b ]
projection MLP와 predictor MLP의 hidden layer에 있는 BN 만을 추가하여 실험한 결과 정확도가 67.4% 로 (a) 결과에 비해 정확도가 증가하는 모습을 확인할 수 있습니다.
[ Table 3 c ]
projection MLP 의 hidden, output layer 와 predictor MLP 의 hidden layer 에 있는 BN 만을 추가하여 실험한 결과 정확도가 68.1% 로 (b) 에 비해 약간 상승한 모습을 확인할 수 있습니다. 이는 본 논문의 default 구성이며, 가장 좋은 결과를 보여줍니다.
[ Table 3 d ]
모델에 존재하는 MLP-head의 모든 Batch Normalization을 추가한 결과입니다. 오히려 잘 작동하지 않고 unstable한 모습을 보여줍니다.
위 결과를 통해 Batch Normalization이 적절히 사용될 때 최적화에 도움된다는 사실을 알 수 있습니다.
Similarity Function
위에서 두 벡터의 유사도를 구하기 위해 cosine similarity function 을 사용했었는데, cross-entropy similarity 로도 작동하며, 다음과 같이 $ D(p_{1}, z_{2}) $ 를 정의할 수 있습니다.
다음은 cosine 과 cross-entropy 유사도를 적용하였을 때 결과를 보여줍니다.
위 결과를 보면 알 수 있듯이 두 유사도의 accuracy 수치가 비슷한 것을 알 수 있습니다. 이를 통해 collapsing 예방 기법에 cosine similarity 만 있는 것이 아님을 알 수 있습니다.
Symmetrization
다음은 대칭화에 대해 실험을 진행한 결과입니다.
위 결과를 통해 대칭화는 accuracy를 높이는 데에는 도움이 되지만 collapse 예방과는 관련이 없음을 알 수 있습니다.
Hypothesis
위에서 언급한 대로 본 논문의 저자는 SimSiam에 대해 "SimSiam은 EM과 유사한 알고리즘 구현체이다." 라는 가설을 세웠습니다. 이는 두 변수 집합을 포함하고, 두 하위 문제를 해결하는 방향으로 진행됨을 의미하죠. SimSiam의 경우 stop-gradient의 존재로 추가 변수 집합을 도입하여 진행되며, 다음과 같이 loss function을 생각해볼 수 있습니다.
- F : network parameterized by $ \theta $
- T : augmentation
- $ x $ : an image
- expectation E[$ \cdot $] : distribution of images and augmentations
- MSE : $ \left\| \cdot \right\|^{2}_{2} $ (equivalent) cosine similarity if the vector are $ l_{2} $-normalized
위 loss function 의 경우 SimSiam 의 predictor를 고려하지 않습니다. 또한 위 식의 $ \eta_{x} $ 는 꼭 network의 output이지 않으며, 최적화 문제의 인수입니다. 제안된 모델의 경우 이미지 $ x $ 의 stop-gradient가 적용된 output representation가 최적화 문제의 인수가 되죠.
이 가설에 대해 다음 식을 solving 하는 문제로 고려될 수 있습니다.
위 식의 문제에 대해 하나의 변수 집합을 고정하고, 다른 집합에 대해 해결함으로써 교대로 해결하는 것이 가능합니다. 이에 대해 다음과 같이 식으로 표현할 수 있습니다.
첫 번째 식의 $ \eta^{t-1} $ 경우 기울기가 상수이기 때문에 back propagation이 수행되지 않습니다. 이렇게 stop-gradient가 적용된 상태로 $ \theta $에 대해 minimize를 하여 $ \theta^{t} $ 를 구합니다.
두 번째 식의 경우 $ \theta^{t} $ 에 대해 stop-gradient가 적용된 상태로 $ \eta $ 에 대해 minimize를 하여 $ \eta^{t} $ 를 구합니다.
$ \theta $를 구할 때에는 SGD를 사용하여 sub-problem을 해결할 수 있습니다. stop-gradient 작업은 이 sub-problem에서 상수인 $ \eta^{t-1} $ 로 역전파되지 않기 때문에 자연스러운 결과로 보여줄 수 있습니다.
$ \eta $를 구할 때에는 각 $ \eta_{x} $ 에 대해 독립적으로 해결할 수 있습니다. 결국 다음 식을 최소화하는 문제로 정의할 수 있죠.
위 식을 보면 각 image $ x $에 대해 augmentation T의 분포 expectation을 정의합니다. 또한 다음과 같은 식으로 solving 하기에 더 쉽게 표현할 수 있습니다.
위 식의 경우 $ \theta^{t} $가 고정되어있으며, image $ x $의 모든 가능한 augmentation에 대한 평균 representation을 $ \eta_{x} $ 로 할당합니다.
One-step alternation
만약 augmentation을 한번만 sampling 하여 위 식에 근사화를 하면 $ E_{T} $ 가 무시됩니다. augmentation이 한 번만 수행되기 때문이죠.
그 후에는 다음 식에 대해 교대 수행되어 알고리즘이 진행됩니다.
Predictor
지금까지의 위 분석은 predictor h를 포함하지 않았습니다. 정의에 따라 predictor h 는 다음을 최소화하려고 합니다.
이때 h 의 최적 해는 다음을 만족해야합니다.
위와 같이 예측기 h를 사용하는 경우 기댓값 $ E_{T} $ 를 계산에서 제외시키는 것이 가능합니다. 실제로 모든 $ T $에 대해 기댓값을 구하는 것은 사실상 불가능하기 때문에 예측기를 사용하여 이를 제외합니다. 또한 기댓값이 제외되었기 때문에 해당 정보의 결여를 보완해주기 위해 예측기 h는 이를 직접 계산하지 않고 예측하려는 방향으로 기댓값의 역할을 대체합니다.
결론적으로, 예측기 h 가 기댓값의 복잡한 계산을 회피하면서도, 여러 epochs 에 걸친 학습을 통해 해당 기댓값을 근사하게 학습할 수 있으며, 이로 인해 계산 효율이 향상되고 복잡한 변환에 대한 기댓값도 학습하는 것이 가능해집니다.