본문 바로가기

Machine Learning Tasks/Self-Supervised Learning

Self-Supervised Learning - MoCo v2

반응형

이전 포스트

[Machine Learning/Unsupervised Learning] - Self-Supervised Learning - MoCo (1)

[Machine Learning/Unsupervised Learning] - Self-Supervised Learning - MoCo (2)


이번 포스트에서는 SimCLR에서 사용된 요소를 MoCo에 적용하여 MoCo의 성능을 향상시킨 방법에 대해 살펴보려 합니다. 특히 SimCLR 에서의 MLP projection head와 더 강한 augmentation 방법을 사용해서 성능을 향상시켰다고 합니다.

먼저 지난 MoCo 포스트에서도 살펴보았듯이 SimCLR은 대표적인 end-to-end constrastive learning 메커니즘으로 negative 샘플이 같은 배치 안에서 샘플링되고 key encoder/query encoder 모두 end-to-end 방식으로 훈련됩니다. 이에 반해 MoCo는 큐로 dictionary를 구현함으로써 매우 많고 다양한 negative 샘플을 활용할 수 있으며 momentum moving average 방법으로 representation의 일관성을 유지합니다. 

SimCLR 에서의 성능 향상 주요 방법은 1) 매우 큰 배치 사이즈를 사용하고, 2) MLP projection head를 사용하며, 3) 강한 data augmentation 기법을 사용한 것이었습니다. MoCo는 이미 큰 dictionary를 사용하고 있으므로 MoCo v2는 MLP projectino head와 강한 augmentation을 추가적으로 사용하여 성능을 향상시킵니다.

Experiments

각 디자인 별 요소 추가에 따른 성능 향상은 Table 1과 같습니다. aug+ 는 추가적인 blur augmentation 이며 초기 learning rate를 증가시킨 이후에 감소시키는 cosine learning rate scheduling 에 따른 성능 추이도 실험합니다.

SimCLR 에서와 마찬가지로 MoCo encoder에 2층으로 이루어진 MLP head를 추가하고 (2048 차원) 최종 representaion 으로는 사용하지 않습니다. 단순히 MLP head를 추가함으로써 성능이 기존 60.6%에서 66.2%로 증가했습니다. (이것은 다음과 같이 temperature 파라미터 $\tau$를 최적으로 조절한 결과입니다.) 하지만 VOC detection 에서의 성능 향상은 딱히 크지 않습니다.

Blur augmentation 을 추가한 Table 1 (b) 결과는 기존 linear evaluation에 비해 성능을 2.8% 증가시킵니다. 주목할 점은 MLP head를 단독으로 썻을 때에 비해 linear evaluation 성능은 낮으나 detection 성능은 더 좋다는 것입니다. 이를 보면 linear evaluation 결과가 다른 downstream task에 대한 transferability에 무조건적인 양의 상관관계를 가지지는 않다는 것을 알 수 있습니다.

Table 2는 SimCLR과 MoCo v2의 성능을 비교합니다. 주목할 점은 SimCLR의 배치 사이즈가 작을수록 성능이 급격히 하락하지만 MoCo v2는 256의 작은 배치 사이즈를 사용하더라도 8192 배치 사이즈를 사용하는 SimCLR의 성능보다 좋다는 점입니다. 또한, 훈련 기간을 늘렸을 경우 성능 차이가 더욱 커집니다.

마지막으로 Table 3은 메모리 사용량과 훈련에 소요되는 시간입니다. SimCLR의 end-to-end 방식은 배치 사이즈가 크면 GPU 메모리 상의 제약이 존재하고 배치 사이즈가 동일하더라도 key/query encoder를 동시에 업데이트시키기 때문에 훈련 시간과 메모리 소요량이 더 큽니다.

 

참조

반응형