N'log

Contrastive Learning #1 - Vision 본문

Machine Learning

Contrastive Learning #1 - Vision

Juhyeon Nam 2021. 6. 24. 19:23
반응형

Contrastive Learning이란? 

비슷한 데이터 샘플끼리의 representation은 가깝게, 비슷하지 않은 데이터 샘플끼리의 representation은 멀게!

# Vision에서의 활용

SimCLR: Self-Supervised Contrastive Loss (ICML 2020)

 제목 그대로 self-supervised learning이 가능한 contrastive loss를 소개하는 논문이다. 아래 움짤이 논문의 내용을 잘 축약한다.

출처: https://ai.googleblog.com/2020/04/advancing-self-supervised-and-semi.html

두 데이터 샘플(개와 의자) 각각 data augmentation을 거쳤다. 개 사진의 경우, 왼쪽 augmentation은 사진에서 개의 머리를 크로핑한 후 흑백으로 변환한 결과이고 오른쪽은 다리를 크로핑 한 후 색 augmentation을 적용한 결과이다. 이 때, 같은 사진에서 나온 두 augmentation 이미지들은 representation들이 비슷해지도록 학습이 되고, 나머지 augmentation 이미지들의 쌍은 representation이 최대한 멀어지는 방향으로 학습이 진행된다.

 

 이 논문의 Key idea는 Positives/Negatives from Augmentation으로, positives란 하나의 이미지에서 augmentation된 두 개의 이미지들의 쌍을 의미한다. 위의 예제에서 보면, 개의 흑백 머리 사진과 색이 바뀐 다리 사진이 하나의 positives 쌍을 이루게 된다. 그리고 서로 다른 이미지에서 augmentation된 이미지의 쌍을 negatives라고 지칭한다. 위의 예제에서는, 개의 흑백 머리 사진과 흑백 의자 사진이 negative 쌍을 이룰 수 있다. 

 본 논문에서는 아래와 같이 positives에 대한 loss term을 제시함으로써 self-supervised contrastive learning을 가능하게 한다.

$$l_{i,j} = - \log{\frac{exp(sim(z_i, z_j)/\tau)}{\sum_{k=1}^{2N}\mathbb{1}_{[i \neq j]} exp(sim(z_i, z_k)/\tau)}}$$

  • \( sim(z_i, z_j) \) : 같은 이미지에서 얻은 augmentation 이미지 \( i, j \)의 similarity(유사도) 값
  • \( sim(z_i, z_k) \) : 다른 이미지에서 얻은 augmentation 이미지 쌍의 similarity(유사도) 값
  • 하나의 Batch에 대한 loss로, 한 개의 배치는 총 N개의 이미지를 담고 있음

위 식의 구조를 보면 softmax와 유사함을 알 수 있다.

$$Softmax: \sigma(z)_i = \frac{exp(z_i)}{\sum_{j=1}^{K}exp(z_j)}, \ for \ i = 1, ..., K \ and \ \textbf{z}=(z_1, ..., z_K) \in \mathbb{R}^K$$

결국 이 loss term을 이용하면, 같은 이미지에서 augmentation된 이미지들의 representation이 유사하도록, 다른 이미지에서 이 된 이미지들은 representation이 더 멀어지도록(less similar) 학습이 된다.

출처: A Simple Framework for Contrastive Learning of Visual Representation 논문

 위 그림은 랜덤하게 선택된 10개의 클래스에 해당하는 이미지들의 hidden vector, 즉 학습된 representation들을 t-SNE로 시각화하여 나타낸 것이다. 실제로 이미지의 representation들이 각 class 별로 클러스터링되도록 학습된 것을 확인할 수 있다.

 

이 SimCLR은, 마찬가지로 unsupervised learning에서 contrastive learning을 이용한 MoCo보다도 월등하게 좋은 성능을 냈다. 

 


그렇다면, Contrastive learning을 Language 도메인에서도 사용할 수 있을까?

 

 


References

반응형
Comments