[21’ ICML] CLIP: Learning Transferable Visual Models From Natural Language Supervision

Date:     Updated:

카테고리:

태그:

image


🔍 Abstract

CLIP(Contrastive Language-Image Pre-training)은 LLM의 성공을 vision 분야로 확장하기 위해 natural language supervision을 적용한 방법이다. OpenAI의 저자들은 기존의 image-label pair는 확장이 제한적이기에 image-text pair를 대량으로 얻어 훈련시키는 것을 제안한다. 이때 contrastive learning 방식을 사용하였다. 결과로 많은 데이터셋에 대해 아주 높은 zero-shot transfer 성능을 보여주었다.


1. Introduction

CLIP은 최근 multimodal model의 근간이 되는 모델이기에 논문 자체를 읽어보지는 않았지만 컨셉은 이해하고 있었다. 하지만 이번에 멀티모달 공부를 시작하며 반드시 한 번쯤은 읽어보아야겠다는 생각이 들어 논문 리뷰를 시작했다. 하지만 문제는 너무 길다는 것. Appendix를 제외해도 본 페이지만 27페이지가 넘는다. 따라서 각 섹션의 핵심만을 요약하고자 한다.

들어가기에 앞서 CLIP의 구조는 다음과 같다. Text와 image를 encoder에 넣어 embedding space에서의 유사도를 측정하는 방식이다. 이때 text와 image는 contrastive learning을 통해 학습된다. 이는 text와 image가 같은 클래스에 속할 때는 가깝게, 다른 클래스에 속할 때는 멀리 배치하는 방식이다. 이러한 방식의 학습 방법은 다른 말로 image와 text를 “align”한다고 한다. Label을 맞추는 task를 수행할 때는 label text를 생성한 뒤 가장 유사도가 높은 것을 label로 선택하는 방식으로 zero-shot prediction을 수행한다. Image encoder는 ResNet-50, ViT 구조 두 가지에 대해 실험하였고 text encoder는 Transformer 구조를 사용하였다.

image


2. Approach

2.1. Natural Language Supervision

NLP 분야에서는 여러 task에 대해 범용적으로 적용할 수 있는 autoregressive modeling, masked modeling 등 task-agnostic objective를 사용하여 훈련하여 왔다. 이러한 방법으로 LLM은 여러 데이터셋의 정보를 함께 학습하여 높은 일반화 성능을 보일 수 있었다. 게다가 NLP 분야에서는 직접 라벨링한 데이터셋이 아닌 web-scale로 수집한 text 데이터를 사용하여 학습시킬 수 있어 거대한 데이터셋을 쉽게 확보할 수 있었다.

반면 vision 분야에서는 그런 objective가 없고, labelling을 반드시 필요로 하기에 데이터셋도 제한적이었다. 따라서 저자들은 web-scale에서 수집할 수 있는 image-text pair를 사용하여 학습하는 contrastive learning 방식을 제안한 것이다. 이를 정확한 label이 아닌 natural language를 사용하여 학습하는 것이기에 natural language supervision이라고 부른다. 저자들은 인터넷으로부터 데이터를 수집하였고 이를 WIT(WebImageText)라고 부른다.


2.2. Efficient Pre-training Method

저자들은 효과적인 학습 방법이 무엇일지 고민한 결과 3가지 방법을 제안하였다.

image

  1. Transformer Language Model: CNN + Transformer를 사용하여 image가 caption을 정확히 맞추도록 학습한다. 위 사진(VirTex)과 유사한 방법이다.
  2. Bag of Words Prediction: CNN + Transformer를 사용하여 image가 caption의 BoW encoding을 맞추도록 학습한다. 조금 더 쉬워진 방법이다.
  3. Bag of Words Contrastive (CLIP): CLIP에서 사용되는 contrastive learning을 사용한다.

image

결과는 위와 같다. 1번과 2번 방법은 정확한 text를 맞추려고 시도했다는 것이 문제였다. 하나의 이미지로 다양한 상황에 맞춰 여러가지 caption이 가능하기 때문에, 이를 정확히 맞추는 것은 불가능에 가깝다. 이러한 predictive objective 대신 contrastive objective가 더 좋은 representation을 학습하는 데 효과적이었다고 한다.


3. Zero-shot Transfer

저자들은 zero-shot transferunseen dataset에 대한 일반화 성능을 확인하기 위해 사용하였으며, 이를 통해 CLIP의 task-learning 능력을 측정하였다. 흔히 사용되는 classification dataset에 대해 zero-shot transfer를 진행하기 위해 Figure 1과 같이 각 label에 대한 text와 image 사이 유사도를 비교하고 가장 높은 유사도를 가진 label을 선택하는 방식을 사용하였다. 이때 image encoder는 feature representation을 계산하고, text encoder는 linear classifier의 weight을 생성하는 hypernetwork로 사용되었다고 해석할 수 있다. 하위 실험들이 정말 많은데, 차근차근 알아보자.


3.1. Prompt Engineering and Ensembling

Prompt engineering은 일종의 context를 제공하는 것이 핵심이다. CLIP에서는 단순히 label text {label}만을 사용하는 것이 아니라, A photo of a {label}.을 프롬프트로 사용하였다. 그리고 일부 더 자세한 classification이 필요한 경우 category를 추가하여 A photo of a {label}, a type of pet.과 같이 사용하였다. 이러한 prompt engineering은 zero-shot transfer 성능을 향상시키는 데 큰 역할을 하였다. Ensemble은 여러 모델의 결과를 종합하여 성능을 향상시키는 것인데, CLIP에서는 일반적으로 probability space에서 ensemble을 진행하는 것과 달리 embedding space에서 ensemble을 진행하였다. 예를 들어 서로 다른 context를 가진 두 프롬프트 A photo of big {label}.A photo of small {label}.을 사용하고, 각각의 text embedding을 계산하여 평균을 낸 뒤 이를 실제 label의 text embedding으로 사용하는 방식이다. 이런 방식을 사용하면 두 프롬프트에 대한 확률값을 따로 계산할 필요 없이, 단 한 번의 유사도 계산 과정으로 ensemble을 진행할 수 있어 계산적인 이점이 있다. 이러한 간단한 방식으로 CLIP의 성능은 아래와 같이 향상되었다.

image


3.2. Zero-shot Performance

이제 본격적으로 CLIP의 zero-shot 성능을 확인할 차례다. 먼저 개괄적으로 zero-shot의 성능을 확인하기 위해 pretrained ResNet-50의 feature를 사용한 supervised classifier와 CLIP의 결과를 비교하였다. 참고로 ResNet-50의 feature를 사용해 classifier를 학습하는 방법은 fine-tuning의 일종으로 linear probe라고 불린다. 결과적으로 비슷한 결과를 보였고, 이는 CLIP의 zero-shot 성능이 supervised linear probe와 비슷하다는 것을 의미한다. 주의할 점은 dataset-specific supervised learning이 아니라, frozen ResNet-50 feature에 대해 supervised fine-tuning을 진행한 것과 비교했다는 것이다. 그림을 분석해보면 특히 복잡하고 구체적이거나, 추상적인 task에서는 CLIP의 성능이 더 떨어지는 것을 볼 수 있다.

image

다음으로는 zero-shotfew-shot의 성능을 비교하였다. 이제 few-shot을 설계하기 위해 CLIP에서 훈련된 image encoder를 사용해 얻은 feature를 사용하여 few-shot classifier를 학습하였다. 앞 실험은 pretrained ResNet-50을 사용한 일반적인 모델인 반면, 여기서는 CLIP image encoder를 사용하여 동일한 feature space에서 비교가 이루어지도록 했다. 결과적으로 zero-shot과 4-shot의 성능이 비슷하다는 것을 확인할 수 있었다. 이처럼 few-shot의 성능이 썩 좋지 않은 것은, zero-shot classifier는 visual concepts에 대한 정보가 text에 잘 담겨져 있지만 few-shot classifier는 label 정보만으로 학습하기 때문이다. 즉, context-less example-based learning의 문제라고 할 수 있다. 저자들은 이를 해결하기 위해 CLIP의 zero-shot classifier를 prior weight으로 한 few-shot classifier를 학습하는 것을 제안하기도 했다.

image

마지막으로 zero-shotfully supervised의 성능을 비교하였다. Few-shot이 아닌 fully supervised를 사용하여 supervised learning의 최대 성능과 비교하고자 한 것이다. 만약 supervised learning과 zero-shot의 성능이 같다면 $y=x$ 위에 점이 있어야 하고, supervised learning이 더 뛰어나다면 $y=x$ 아래에 점이 있어야 한다. 결과는 아래와 같이 모두 sub-optimal한 것을 알 수 있고, 따라서 아직 CLIP의 성능을 개선시키기 위한 연구가 많이 필요하다는 것을 알 수 있다.

image

추가로 저자들은 CLIP의 scalability에 대해서도 실험했고 sub-task에 따라 high variance를 가지지만 평균은 꽤나 scalable한 trend를 따르는 것을 확인했다.

image


4. Representation Learning

Representation learning을 평가하는 방법은 다양한데, CLIP은 3가지 방법을 제시하고 있다.

  1. 정해둔 ideal representation과의 차이를 측정하는 방법
  2. Linear probe를 사용한 fine-tuning의 성능을 측정하는 방법
  3. End-to-end fine-tuning의 성능을 측정하는 방법

저자들은 이 중에서 linear probe 방법을 사용했다. 1번 방법은 ideal representation을 정의하기 어렵다는 문제가 있고, 3번 방법은 representation이 task-specific한지 general한지 알 수 없다는 문제가 있기 때문이다. 즉 robust representation을 pre-training 단계에서 학습하지 못했어도 end-to-end fine-tuning 단계에서 dataset-specific representation을 학습하여 성능이 높게 측정될 수 있기 때문이다. 반면 linear probe 방식은 그 flexibility가 제한적이기에 representation의 quality를 측정하는 데 적합하다.

따라서 다른 주요 vision classification model의 feature representation과 CLIP feature representation을 linear probe 방식으로 비교하였다. 데이터셋은 representation learning에서 많이 사용되는 12개의 데이터셋(Kornblith et al., 2019)을 사용하였는데, 저자들은 이것이 다양한 task를 모두 포함하지 못한다고 주장하며 임의로 데이터셋을 추가해 27개의 데이터셋에 대해서도 성능을 비교했다. 결과는 다른 모델보다 월등하게 좋았고, ResNet encoder보다 ViT encoder가 좋았다.

image


5. Robustness to Natural Distribution Shift

일반적으로 딥러닝 모델의 robustness가 떨어지는 이유를 다음과 같이 설명한다. 딥러닝 모델은 training dataset 내부의 상관관계와 패턴을 학습하여 in-distribution performance를 높인다. 그러나 그 중 다수의 관계와 패턴은 실제로는 다른 distribution에 적용되지 않으며 따라서 out-of-distribution performance가 떨어지는 것이다. 이러한 문제가 CLIP에도 있는지 확인해야 하는데, robustness에는 크게 두 가지가 있다. 첫 번째는 effective robustness로, in-distribution과 out-of-distribution 사이의 관계로부터 예측할 수 있는 정확도보다 얼마나 향상되었는지를 측정하는 것이다. 두 번째는 relative robustness로 out-of-distribution에서의 정확도의 향상 정도를 측정하는 것이다. 두 가지 모두 향상되어야 한다.

저자들은 robustness를 측정하기 위해 ImageNet에 대해 natural distribution shift를 적용한 데이터셋을 사용하였다. 기존에 이러한 데이터셋에 대해 robustness를 향상시키는 방법들과 CLIP의 성능을 비교한 결과, CLIP은 다른 방법들보다 훨씬 뛰어나다는 것을 확인할 수 있었다.

image

이 실험으로 zero-shot model이 robustness를 향상시키는 데 효과적이라는 것을 확인할 수는 있었으나, 그렇다고 특정 데이터셋에 대한 supervised learning이 robustness gap에 영향을 끼치는지에 대한 여부는 확인할 수 없다. 따라서 저자들은 CLIP에 linear probe 방법을 이용하여 ImageNet에 대한 fine-tuning을 진행하였고, 기존 CLIP과 비교하였다. 일종의 distribution shift가 생긴 셈인데, 결과적으로 ImageNet에 대한 정확도는 크게 향상되었으나 다른 데이터셋에 대한 정확도는 약간 떨어졌다. 즉, CLIP의 robustness는 fully supervised setting을 통해 훼손된다는 결론을 얻을 수 있다.

image

따라서 이러한 CLIP의 robustness는 distribution-specific training data을 최소화하여 학습했기 때문에 얻어진 것이라고 해석할 수 있다. 대신, dataset-specific performance는 다소 희생될 수 있다. 따라서 domain-specific knowledge가 필요한 분야 등 일부 분야에서는 fine-tuning이 더 효과적일 수 있다.

image


6. Other Experiments

6.1. Comparision to Human Performance

image

CLIP의 성능을 사람과 비교해보았다. 예전부터 사람보다 classification model의 성능이 좋았으니 CLIP의 성능이 월등히 높다는 것이 놀라운 결과는 아니다. 다만 여기서 주목할 점은, 사람은 zero-shot에서 one-shot으로 정확도가 크게 향상되는데 반해, CLIP은 그렇지 않다는 것이다. 그리고 실험 결과, zero-shot에서 one-shot으로 정확도가 향상되는 것에 기여한 대부분은 zero-shot에서 사람들이 “모른다”고 답한 것이었다. 즉, 사람들은 본인들이 무엇을 모르는지 알고 (know what they don’t know) 이를 통해 one-shot에서 정확도를 향상시킨다. 따라서 이러한 방식을 어떻게든 모델에 적용하고자 하는 방법론이 필요하다고 제안한다.


6.2. Data Overlap Analysis

저자들의 데이터셋인 WIT(WebImageText)과 평가 데이터셋들 간에 겹치는 부분이 있는 경우 data leakage가 발생할 수 있다. 따라서 데이터셋 간의 overlap을 확인하고자 했는데, 이를 위해 계산된 nearest neighbors에 대해 실제로 겹치는 이미지인지 일일히 확인했다고 한다. 그래서 각 평가 데이터셋 전체(All)를 겹치는 Overlap과 나머지 Clean으로 나눈 뒤 성능을 비교했다. 그 결과는 아래와 같았다.

image

먼저 왼쪽 그림은 OverlapClean의 CLIP 성능 차이를 비교한 것인데 통계적으로 유의할 정도로 차이가 나는 것은 5개뿐이었으며 심지어 2개는 성능이 오히려 Overlap에서 감소했다. 오른쪽 그림은 Clean에 비해 All에서 얼마나 성능이 향상되냐는 것인데 6개에 대해서만 유의한 차이가 났고, 그 차이도 0.6% 이하로 미미했다. 따라서 data leakage가 CLIP의 성능에 큰 영향을 미치지 않는다는 결론을 내릴 수 있다. 애초에 Overlap의 비율도 그렇게 높지 않았다.


7. Limitations

이 부분이 하이라이트인데 보통 읽다 보면 지쳐서 이 부분을 대충 읽게 된다. 하지만 이 부분이 가장 중요하다고 생각한다. 저자들은 CLIP의 한계점을 굉장히 강한 어투로 제시하고 있다.

  • 아직 CLIP의 성능은 ResNet Feature를 사용한 supervised linear probe와 비슷한 수준이다. 아직 CLIP의 성능을 supervised model과 비교할 만큼 높이지 못했다.
  • 꽃의 이름을 맞추는 것과 같은 fine-grained classification이나, 물체의 개수를 세는 abstract and systematic tasks에서는 CLIP의 성능이 떨어진다. 그 외에도 pre-training dataset에 포함되지 않은 task에 대해서는 거의 random chance 수준이다.
  • True OOD(out-of-distribution) 데이터셋에 대해서는 robustness가 떨어진다. 그 예시로 CLIP은 OCR 데이터를 학습하였고 OCR 데이터셋에 대해서는 좋은 성능을 보인다. 그러나 MNIST 데이터셋에서 정확도는 88%로 아주 간단한 CNN 모델보다 못한 성능을 보인다. 따라서 아직 CLIP은 generalization 문제를 해결했다고 볼 수는 없다.
  • CLIP이 classification을 수행하기 위해서는 주어진 text 중 가장 유사한 것을 선택하는 방식을 사용한다. 자유로운 text output을 생성하는 image captioning에 비해 굉장히 제한적이다. (실제로 최근 연구들은 text generation 중심으로 이루어지고 있다.)
  • 학습 과정에서도 데이터를 효율적으로 사용하였다고 보기 어렵다. NLP처럼 self-supervision이나 self-training 방법을 사용할 수 있을지 고민해야 한다.
  • 인터넷으로부터 학습했기에 social bias가 있다. (이후 논문에 이를 자세히 분석해두었으나, 관련 내용은 생략한다.)
  • 각종 task와 visual concepts를 text로만 설명하기 어렵다. 결국 multimodal이 필요하다.


💡 Summary

긴 논문이기 때문에 take-home message를 정리하는 것이 중요하다. 다음과 같이 정리하였다.

  1. 데이터셋을 효율적으로 구축하고 사용하기 위해 natural language supervision을 사용한 contrastive learning 방식을 제안했다.
  2. Predictive objective 대신 contrastive objective가 더 좋은 representation을 학습하는 데 효과적이었다.
  3. Zero-shot transfer 성능은 일반적인 ResNet-50 feature를 사용한 supervised linear probe와 비슷하다. Feature의 representation learning 및 robustness 측면에서는 우월하다. 그러나 아직 supervised model에 비해서는 훨씬 sub-optimal한 성능을 보인다.
  4. Few-shot의 성능은 썩 좋지 않은데, 이는 context-less example-based learning의 문제라고 할 수 있다. Shot을 늘리면 성능이 향상되나, 여기서 더 나아가 supervised learningrobustness를 훼손시키는 문제가 있다. 따라서 supervised setting은 robustness와 data-specific performance 사이의 trade-off를 고려해야 한다.
  5. 아직 CLIP의 성능, 학습 방법, 접근법 등 여러 부분에서 개선해야 할 사항이 많다.


📃 Reference


Vision 카테고리 내 다른 글 보러가기

댓글 남기기