1) Contrastive Learning

(1) 개요

Contrastive Learning은 간단하게 말하면 유사도가 높은 것은 가깝게 유사도가 낮은 것은 멀리 가도록 학습을 진행하는 것이다. 주로 self-supervised learning에서 사용된다.

예를 들어, 이미지 x를 augmentation 시킨 $x^*$가 있다고 할 때에 둘은 아무리 augmentation한다고 하더라도(그렇다고 너무 시키면 안 되겠지만) similar할 것이다.

그에 반해, y라는 이미지와는 당연하게도 similarity가 낮을 것이고 object가 다르다면 다르다고 평가하는 것이 맞을 것이다.

이 과정에서 contrastive learning은 $x, x^*$를 가깝게 그리고 y와는 멀게 학습을 진행할 것이다.

이를 이용한다면 data의 representation을 학습할 수 있을 것이고 이에 따라 labeling이 된 데이터에 대해서도 그것의 label에 따라 representation을 학습할 수 있을 것이다.

(2) Similarity Learning이란?

contrastive learning이란 결국에는 similarity라는 기준에 따라 학습이 진행되는데 그렇다면 similarity가 무엇인지부터 정해야 한다.

그리고 학습을 위해서는 이미지간의 유사도를 이미 알고 있어야 한다. 그래야만 학습이 진행될 수 있기 때문이다. 이것 역시 dataset 구축이기에 쉽지 않은 과정이다.

그것이 label, augmentation 여부 등을 통해 정해졌을 때 학습 방법에는 세가지가 있다.

  1. regression
    1. 유사도이기 때문에 유사한 수치가 얼마나 되는지를 정해줄 수 있다.
    2. 하지만 ground truth에 해당하는 유사도 수치를 정하는 것은 매우 어려운 작업이라 쉽지 않다.
  2. classification
    1. positive, negative로 간단하게 분류할 수도 있으며 그렇지 않고 multi label로도 분류를 진행할 수 있다.
    2. 하지만 얼마나 유사한지에 대한 label이 늘어날 수록 데이터 구축이 어려워지고 단순해질 수록 유사한 정도를 정확히 학습하기 어렵다.
  3. ranking similarity learning
    1. 이미지 x와 유사한 이미지 x+, 그리고 유사하지 않은 이미지 x- 세가지를 input으로 제공해 상대적인 거리에 대해 학습한다.
    2. 해당 방식을 사용하면 classification 보다 정확하게 distance를 학습할 수 있다는 장점이 있지만 이 역시 ranking으로 labeling을 수행해야 한다.

이러한 방식으로 학습된 것들을 대상으로 유사한 것은 가깝게 유사하지 않은 것은 멀게 학습한다.

Untitled