본문 바로가기
Terminology

[기본 개념] CLIP (Contrastive Language-Image Pre-training)

by xoft 2023. 12. 24.

CLIP. 너무나도 유명한 연구죠. OpenAI에서 2021년에 발표한 논문입니다.

Learning Transferable Visual Models From Natural Language Supervision, Alec Radford, ICML2021, OpenAI

 

CLIP은 Text와 Image간의 관계성을 모델링한 연구입니다.

 

제 연구분야에서 CLIP이 많이 언급되어 별도로 정리해보았습니다. 먼저 Contrastive Learning부터 살펴보겠습니다.

 

 

 

Contrastive Learning

Contrastive Learning은 레이블링 없이 학습하는 Self-supervised Learning 방법론 중에 한가지 방법입니다. 특정 입력을 Embedding Network를 통해 임베딩 공간으로 이동시키고, 같은 class라면 임베딩 값의 거리를 최소화(d+)하고, 다른 class라면 임베딩 값의 거리를 최대화 (d-) 되도록 embedding network를 학습하는 방법입니다. 아래는 레이블링 없이 학습 데이터셋을 구성하는 예시입니다.

 

 

 

 

CLIP (Contrastive Language-Image Pre-training)

인터넷에서 4억개 이미지와 해당 이미지에 대한 설명 Text를 pair로 두고 학습데이터셋으로 구성한 후, 각각을 인코더로 임베딩하여 같은 pair에 대해 거리를 가깝게하고 다른 pair에 대해 거리가 멀어지도록 텍스트/이미지 인코더를 학습시킵니다.

이렇게 학습된 인코더로 Test 이미지와 Test 텍스트 간의 유사도를 계산 할 수 있습니다. 이미지와 Text의 관계를 사용하는 다양한 Task에 적용이 가능한데, Image Classification을 할 경우, 단어 보다 문장 형태인 a photo of {object}로 입력값으로 주면 더 성능이 좋다고 합니다. 

학습시에는 이미지와 텍스트간의 cosine similiary를 계산하고, 같은 Pair간에는 유사도를 최대화하고 다른 Pair간에는 최소화하도록 Cross Entropy Loss를 사용합니다.

 

 

 

 

 

Contrastive Learning Loss

Loss부분은 좀 더 개념을 파악하고 싶은 분들을 위해 적어봤으며, 선택적으로 읽으시면 됩니다. Improved Deep Metric Learning with Multi-class N-pair Loss Objective, 2016 논문을 참고하였습니다.

 

Contrastive Loss

주어진 xi, xj를 encoder(f)로 임베딩된 값간의 거리를 구하여, 같은 class(yi=yj)일 때 그 거리 만큼 loss로 가지고, 다른 class일 경우 가까울수록 loss가 커지도록 Loss가 설계되었습니다. 다른 class이면서 두 임베딩값의 거리가 너무 멀 경우(=margin m보다 클경우) Loss가 너무 커지지 않도록 Loss가 0이 되는게 특징입니다.

 

Triplet Loss

위의 Loss는 2개 입력에 대한 관계로 Loss를 구했습니다. Triplet Loss는 3개 입력에 대한 관계로 나타내어집니다. 기준 입력 Anchor(x)가 있고, Anchor와 같은 class입력 Positive(x+), 다른 Class입력 Negavie(x-)이 있을 때, 'x와x+의 거리'가 'x와x-의 거리'보다 상대적으로 가까워지도록 만들어줍니다.

 

(N+1)-Tuplet Loss

Triplet Loss에서는 Anchor(x), Positive(x+), Negative(x-) 3가지 입력으로 구성되었다면,
(N+1)-Tuplet Loss에서는 Anchor(x)1개, Positive(x+) 1개, Negative(x-)가 N개 있는 입력으로 Loss를 구하게 됩니다. f+는 x+를 인베딩한 값, fi는 x-를 임베딩한 값입니다.

 

 

 

출처

Contrastive Learning : link1, link2, link3

CLIP : link1, link2, link3, link4

댓글