Contrastive Learning은 간단하게 말하면 유사도가 높은 것은 가깝게 유사도가 낮은 것은 멀리 가도록 학습을 진행하는 것이다. 주로 self-supervised learning에서 사용된다.
예를 들어, 이미지 x를 augmentation 시킨 $x^*$가 있다고 할 때에 둘은 아무리 augmentation한다고 하더라도(그렇다고 너무 시키면 안 되겠지만) similar할 것이다.
그에 반해, y라는 이미지와는 당연하게도 similarity가 낮을 것이고 object가 다르다면 다르다고 평가하는 것이 맞을 것이다.
이 과정에서 contrastive learning은 $x, x^*$를 가깝게 그리고 y와는 멀게 학습을 진행할 것이다.
이를 이용한다면 data의 representation을 학습할 수 있을 것이고 이에 따라 labeling이 된 데이터에 대해서도 그것의 label에 따라 representation을 학습할 수 있을 것이다.
contrastive learning이란 결국에는 similarity라는 기준에 따라 학습이 진행되는데 그렇다면 similarity가 무엇인지부터 정해야 한다.
그리고 학습을 위해서는 이미지간의 유사도를 이미 알고 있어야 한다. 그래야만 학습이 진행될 수 있기 때문이다. 이것 역시 dataset 구축이기에 쉽지 않은 과정이다.
그것이 label, augmentation 여부 등을 통해 정해졌을 때 학습 방법에는 세가지가 있다.
이러한 방식으로 학습된 것들을 대상으로 유사한 것은 가깝게 유사하지 않은 것은 멀게 학습한다.