논문 리뷰

[논문 리뷰] Learning Transferable Visual Models From Natural Language Supervision : CLIP

오리좋아 2024. 9. 17. 17:43

CLIP에 대한 논문이다!

 

논문 링크

Learning Transferable Visual Models From Natural Language Supervision

 

세줄 요약

많은 양의 image, text pair dataset 학습을 통해 만들어낸 CLIP 모델이다.

Contrastive learning을 통해 효율적인 학습을 하였다.

 

0. Abstract

지도학습(supervised learning)는 고정된 데이터를 필요로 한다. 그리고 추가적인 labeled data가 있어야지 특정한 task를 수행할 수 있다. 더 넓은 영역의 task를 수행하기 위해 image와 image를 설명하는 raw text를 사용하여 학습하여 이 문제를 해결하고자 한다.

인터넷에서 image와 text pair data를 가지고 image를 가지고 image representation를 학습하는 pretrained model를 학습하였다.

이렇게 학습한 모델은 zero shot transfer를 통해 downstream task에도 적용해보았다. 

 

1. Introduction and Motivatiing Work

NLP에서 대량의 Web text가 정제된 dataset보다 좋은 성능을 보였다. 

그렇기 때문에 자연어분야처럼, computer vision 분야에서도 대량의 Web text를 사전 학습하는 방법으로 성능향상을 이루어낼 수 있을 까? 가 주된 질문이다.

Could scalable pre-training methods which learn directly from web text result in a similar breakthrough in computer vision?

Image representation을 학습하는 방법으로 기존에는 transformer-based language modeling, masked language modeling, contrastive objective learning을 사용하였다.

weakly supervised 하게 학습하는 것과 최근의 접근 방법의 가장 큰 차이점은 scale이다. 즉 대량의 데이터를 사용하는 지의 여부이다. CLIP는 이러한 대량의 데이터를 활용하여 사전학습하고자 한다.

CLIP는 Contrastive Language Image Pretraining로 Natural language supervision 학습의 효율적인 방법이다. 

여러 benchmark를 통해 zero shot transfer performance를 평가하였고, linear probe representation 학습의 효율성을 검증하였다. 추가로 zero shot CLIP model의 robustness 또한 평가하였다.

 

2. Approach

2.1 Natural Language Supervision

Natural language supervision 학습 방법은 기존에도 실행되었다. 하지만 각자 말하는 방법들이 달랐다. Natural language supervision이란 Natural language(자연어)가 label의 역할을 하여 학습시키는 것이다. CLIP에서는 image와 이에 해당하는 text를 pair로 같이 학습하게 되는데, image를 설명하는 text 그 자체, 자연어 설명을 통해 학습하는 것이다.

자연어 기반으로 설명하는 것은 Scaling에 유리하다는 장점이 있다. 인터넷의 text를 사용할 수 있다는 장점이 있다.

또한 자연어 기반으로 학습하면 단순히 image representation을 학습하는 것이 아니라 더 깊은 의미를 학습해서 zero shot transfer를 가능하게 한다.

 

2.2 Creating a Sufficiently Large Dataset

Natural language supervision에 장점은 인터넷의 많은 양의 데이터를 사용할 수 있다는 것이다.

본 연구에서는 새로운 데이터셋을 만들었는데, image text pair dataset를 4억개 만들어서 사용하였다. 50만개의 text queries를 사용해서 다양한 데이터셋을 만들 수 있도록 하였다. 이렇게 만든 dataset는 WIT(WebImageText)라고 한다. 이 데이터의 양은 GPT-2를 학습할 때 정도의 양이다.

 

2.3 Selecting an Efficient Pre-Training Method

Scaling natural language supervision에서 중요한 것은 효율적인 학습이었다. 기존에는 image에 해당한 특정한 text를 예측하려고 하였다. 이러한 학습 방법은 매우 비효율적으로 다가왔다.  그래서 우리는 다음과 같은 학습 방법을 채택하였다.

특정 단어를 학습하는 것보다 whole text로 학습하는 것이 더 효율이 좋았다. 다음 표는 Bag of Words 즉 whole text를 학습시키는 것이 더 효율적이었다는 것을 나타낸다.

 

Contrastive Representation learning를 활용하였다. 

N개의 batch로 구성된 image, text data를 만든다. 총 NxN pairing이 존재하게 된다. 이를 통해 CLIP는 정답 쌍 N개와 틀린정답 쌍 N2-N개를 학습하게 된다. 정답 쌍에 대해서는 cosine similarity를 maximize하고 , 틀린정답 쌍에 대해서는 cosine similarity를 minimize하는 방식으로 학습하게 된다. 이는 embedding하는 text encoder와 image encoder를 학습하는 것인데, multi-modal embedding space를 학습한다고 보면 된다.

Similitarity score는 symmetric cross entropy loss를 사용하게 된다.

Dataset이 매우 크기 때문에 overfitting 문제는 고려하지 않는다. 가중치는 초기에 학습하지 않았다.

Multi-modal embedding space를 학습할 때 linear projection만 사용하였다. 

단일문장으로 만들어주는 text transformation function을 사용하지 않았다.

2.4 Choosing and Scaling a Model

Image Encoder: ResNet-50, Vision Transformer

Text Encoder: Transformer

Text Encoder의 경우 byte pair encoding 사용하였다. [EOS] token을 text의 feature representation으로 고려하여 multi-modal embedding space로 사용하였다.

Image Encoder의 경우 width, depth, resolution를 증가시켰다. Text encoder는 width만 증가시켰다.

 

2.5 Training

ResNet-50, a ResNet-101, ViT-B/32, a ViT-B/16, ViT-L/14 를 사용하였다.

학습 과정에서 다음과 같이 학습하였다.

- large minibatch size 32,768

- mixed precision

- gradient checkpointing( to save memory)

- half-precision Adam statistics

- half-precision stochastically rounded text encoder weights

 

3. Experiments

3.1 Zero-Shot Transfer

zero shot learning를 논문에서는 아직 모르는 dataset에 대해서 학습하여 사용할 수 있는지를 말한다.

기존의 성능보다 zero shot 성능이 좋아진 것을 확인할 수 있다.

zero shot learning의 성능을 증가시키기 위해 prompt engineering을 하였다. 기존에는 image에 해당하는 단어를 사용하여 학습시켰다. 단일 단어는 동의어 문제도 있기 때문에 zero shot learning에 한계를 보인다.(text encoder가 학습하기가 어렵다) 그래서 단일 단어를 사용하는 것이 아니라 "A phot of a [label]" 라는 프롬프트를 사용해서 학습하는 것을 통해 zero shot learning의 성능을 증가시켰다.

prompt를 어떻게 커스텀하는 것에 따라 zero shot performance이 달라졌다. 여러가지 프롬프트를 앙상블해서 학습하는 것을 통해서 좋은 성능을 보일 수 있었다.

27개의 dataset중에서 16개의 dataset에 대해서 더 좋은 성능을 보였다. 일반적으로 단순한 형태의 데이터 일수록 더 좋은 성능을 보였다. 이럴 때는 few-shot transfer를 사용하여 더 좋은 성능을 보일 수 있을 것이다.(lymph node tumor classification 같은 어려운 task)

 

3.2 Representation Learning

Linear probe performance에서 좋은 성능을 보였다.

 

3.3 Robustness to Natural Distribution Shift

Robustness를 보인다. 다양한 데이터에 대해서도 좋은 성능을 보임을 의미한다. 즉 견고하다는 뜻이다.

 

4. Comparison to Human Performance

인간은 zero shot일 때는 매우 낮은 결과를 보여준다. 하지만 하나의 예시를 알게 되면, one-shot learning 을 하게 되면 자신이 모르는 것에 대해 인지하게 되어 좋은 결과를 보여주게 된다.

 

그 뒤의 Limitation과 bias는 궁금하면 각자 읽어보자!