논문링크 : CLIP: Learning Transferable Visual Models From Natural Language Supervision
Implementation : https://github.com/openai/CLIP
발표된 지는 오래되었지만, vision-language model 관련 연구에 있어서 중요한 초석이 된 CLIP: Learning Transferable Visual Models From Natural Language Supervision
에 대해 리뷰한 포스트입니다. 논문 내용 자체는 어렵지 않기 때문에 중요한 부분만 간단히 소개하도록 하겠습니다. CVPR 2021 accepted paper입니다.
1. Abstract & Introduction
CLIP 이전의 SOTA vision model들은 fixed된 discrete label만을 가지고 학습을 진행하였습니다. 하지만 이러한 학습 방식은 모델의 퍼포먼스를 제한하고, unseen data를 다루기 위해서는 추가적인 훈련을 필요로 한다는 단점이 존재합니다. 이러한 기존 학습 패러다임의 promising한 대안으로, 저자들은 raw text를 사용한 학습 방식을 제안합니다. fixed된 object category를 사용하는 대신, 인터넷에서 수집한 대량의 raw text를 label로 사용함으로써 모델의 robustness를 향상시켰고, zero-shot & few-shot prediction이 가능해졌다고 합니다. 또한, 이러한 학습방식을 사용한 모델은 추가 데이터 훈련 없이 fully-supervised baseline에 비견되는 퍼포먼스를 보였다고 저자들은 소개하고 있습니다.
해당 논문의 contibution을 정리하자면 다음과 같습니다.
-
4억개의 image-text pair를 갖는 대용량 데이터셋 구축
-
Text embedding과 Image embedding을 연결하는 새로운 방법론 제시
-
zero-shot 성능 대폭 향상
2. Method
2-1. Train
CLIP은 크게 Text Encoder와 Image Encoder로 이루어져 있습니다. Text & Image Encoder는 각각 raw text와 image를 input으로 받아, 그에 해당하는 feature vector를 뽑아냅니다. $N$개의 image-text pair가 input으로 들어왔다고 가정했을 때, 이에 해당하는 feature vector도 각각 $N$개씩 만들어지게 되며, 이 $N$개의 pair에 대해 latent space 상에서 cosine-similarity를 계산하게 됩니다. 그럼 위 figure와 같이 $N$개의 positive pair와 나머지 $N^2 - N$개의 negative pair에 대한 similarity가 계산되게 됩니다. 이후, cross-entropy loss를 걸어줌으로써 positive pair에 대한 similarity는 높아지고, negative pair에 대한 similarity는 낮아지도록 학습합니다.
2-2. Prompt engineering
학습이 끝난 모델을 사용하여 classification 문제를 풀 경우, 각 class에 해당하는 text를 적절한 prompt에 삽입하여 text encoder의 input으로 넣어주어야 하는데, 이러한 과정을 prompt engineering이라고 합니다. 이러한 일련의 과정은 모델의 퍼포먼스에 크게 영향을 주는 아주 중요한 과정이지만, 해당 task에 대한 사전 지식을 필요로 하며 많은 시간을 필요로 한다는 문제점이 있습니다. 해당 페이퍼에서는 prompt engineering에 대한 중요성 정도만 언급하고 넘어갔기 때문에, 이번 포스팅에서도 자세히 언급하지는 않겠습니다. 이러한 prompt engineering의 후속 연구에 대해서는 차후 $CoOp$등의 포스팅에서 더 자세히 다루도록 하고, 일단은 적절한 prompt를 사용하는 것이 중요하다 정도로만 이해하고 넘어가도록 하겠습니다.
2-3. zero-shot prediction
prediction은 학습 과정과 거의 유사합니다. text와 image를 각각의 encoder에 input으로 넣어서, feature vector를 뽑아냅니다. 이 때, text feature의 수는 총 class의 개수와 같습니다. 그럼 1개의 input image에 대해 class 개수 만큼의 similarity가 계산되는데, 이 중에서 가장 similarity가 높은 class를 정답으로 predict하게 됩니다.
3. Experiments
CLIP은 실험 내용이 정말 많은데, 그 중 핵심적인 부분만 소개드리도록 하겠습니다. 여기서 소개한 실험들 외에도 다양하고 재밌는 실험들이 페이퍼에 많이 소개되어 있으니, 꼭 페이퍼를 읽어보시길 바랍니다.
먼저, zero-shot transfer관련 선행 연구와 비교한 CLIP의 퍼포먼스 입니다. zero-shot transfer task에서 선행 연구 대비 높은 마진으로 퍼포먼스가 향상된 것을 확인할 수 있습니다.
Distribution shift에도 ResNet101대비 더 robust한 모습을 보이고 있습니다.
Representation learning 시, CLIP으로부터 뽑아낸 feature들이 기존 SOTA 모델의 것들보다 score도 더 높고, robust한 모습입니다.
하지만 인터넷에서 수집된 raw text를 사용하고 있기 때문에, bias가 존재한다는 명확한 한계가 있습니다.
댓글남기기