[논문 리뷰]CLIP - Learning Transferable Visual Models From Natural Language Supervision
CLIP
이번에는 21년에 발표한 CLIP논문을 리뷰해 보겠다. CLIP은 인풋으로 텍스트와 이미지쌍을 넣어주는데, 이렇게 다른 형태의 인풋을 함께 다루는 문제를 멀티모달(Multi-modal)이라고 한다.
CLIP은 openAI에서 나온 논문인데, GPT-3를 공개한 후 조금뒤에 이 논문이 공개되었다.
기존의 분류모델의 한계를 NLP를 이용해 돌파하려는 시도를 담은 논문이다.
Abstract
최신의 CV 시스템들은 미리 정의된 카테고리의 데이터셋들을 예측하기 위해 학습되어 왔다.
이러한 경직된 상태의 supervision방식은 그들의 generality와 usability를 제한했는데, 이는 다른 visual concept을 구체화하기 위해서는 추가적인 라벨링된 데이터가 필요하기 때문이다.
이러한 문제를 해결하기 위해, 이미지에 대한 Raw text로부터 바로 학습하는 방법이 영향력을 키워나가고 있다.
이 논문에서는 어떠한 caption이 어떤 이미지에 붙여지는 지를 예측하는 간단한 pre-training task가 SOTA image representation을 학습하는데 효과적이고 확장한 방법임을 설명한다. (인터넷에서 가져온 4억개의 (image, text) 데이터 쌍을 이용함)
pre-training이 끝난 후, 자연어는 학습된 visual concept을 참고하여 downstream task에 대해 zero-sho transfer하는 것을 가능하게 한다.
우리는 이 논문에서 이러한 접근법의 성능을 검증하기 위해 30개의 다른 dataset을 이용해 벤치마킹을 했다. 또한, 이러한 접근법은 OCR, action recognization 등 다른 object classifcation분야로 확장 가능했다.
이 모델은 대부분의 task에 괜찮게 transfer가 가능했고, 때때로 fully supervised 된 기존의 모델과 비등할 정도의 성능을 보였다. 예를들어, 이 모델은 ImageNet에 대한 데이터 학습없이 이미 ImageNet에 대해 학습한 ResNet-50과 비슷한 성능을 보였다.
1. Introduction & Motivating Work
NLP분야에서는 raw text(웹 상에서 모을 수 있는 대규모 텍스트를 이용한) 사전학습 모델이 기존의 라벨링된 높은 품질의 NLP 데이터셋을 학습시킨 모델보다 좋은 모습을 보여주었다. 특히, GPT-3은 specific한 training data에 대한 학습 없이도 task에 맞춤되어 제작된 model들과 비등한 성능을 보여주고 있다.
하지만, NLP와 달리 CV분야에서는 ImageNet등 라벨링된 데이터셋에서 사전학습을 하는 것이 지금까지의 표준 방식이였다. 그렇다면, 웹 텍스트로 사전학습하는 방식이 CV에서도 좋은 결과를 보여줄 수 있을까? 이것이 이 논문의 motivation이다.
많은 시도에도 불구하고, 아직 자연어를 image representation learning에 사용하는 것은 여전히 드물다.
cf)Representation learning이란?
현재까지는 zero-shot setting은 처참한 성능을 보이고 있다. 대신, weak supervision(라벨링데이터 비율이 낮은 세팅)은 성능을 발전시켜왔다. 2018년 논문에서는 인스타그램 이미지에서 ImageNet과 관련된 해쉬태그를 예측하는 것이 효과적인 pre-training task라는 것을 밝혔다.
우리는 이러한 논문에서 CLIP이라는 모델을 이용해 두 방법의 차이(weak supervision과 zero shot learning using raw text)의 차이를 줄였다. 또한, 대규모 자연어 supervision을 학습한 image classifier(=CLIP)의 행동양상을 관찰했다.
CLIP(=Contrastive Language-Image Pre-training)
2. Approach
2.1 Natural Language Supervision
어째서 Natural language supervision을 사용했는가?
Natural language supervision이란 이미지와 짝지어진 visual representation으로부터 정보를 학습하는 것이다. 이것은 과거로부터 계속 발전되어 왔으나, unsupervised, self-supervised, weakly supervised, supervised 등으로 불려왔다.
자연어를 통해 학습하는 것은 다른 학습 방법들보다 가능성을 보여주는데, 이는 다음과 같다.
- 기존의 crowd-sourced labeling 방법보다 scaling이 쉽다.
- 기존의 방법들은 일일이 사람이 라벨링하는 과정이 필요했던 반면, 자연어를 통해 학습하는 경우 인터넷에 있는 방대한 양의 텍스트로부터 수동적으로 정보를 학습하기 때문에, scaling이 쉬워지는 것이다.
- 이미지에 대한 representation을 학습하는 것 뿐 아니라, 언어에 대한 representation을 학습하게 된다. 이는, 유연한 zero-shot transfer가 가능하게 된다.
2.2 Creating a Sufficiently Large Dataset
어떠한 데이터셋을 학습에 사용하였는가?
기존 연구들은 MS-COCO, Visual Genome, YFCC100M 이 세 가지를 주로 사용해왔다. 하지만, MS-COCO와 Visual Genome는 높은 품질의 라벨링에도 불구하고 데이터셋의 크기가 너무 작아 부족하고, YFCC100M은 데이터셋의 크기는 크지만 이미지에 대한 metadata(다른 데이터를 설명해 주는 데이터)가 sparse하고 품질이 고르지 않다는 문제를 가지고 있다.
이러한 문제를 해결하기 위해, 저자들은 인터넷에 공개된 데이터 셋을 이용해 4억개의 (image, text)쌍을 만들어 학습을 진행했다.(WIT: WebImage Text라고 부른다)
2.3 Selecting an Efficient Pre-Training Method
어떠한 사전학습 방법을 사용하였는가?
처음에는 VirTex와 비슷한 방법으로, image CNN과 text transformer를 이용해 이미지 캡션을 예측하는 식으로 학습하였다. 하지만 이는 아래 그림과 같이 효과적으로 scaling하는데 어려움을 겪었다.
transformer language Model이 다른 간단한 baseline보다 훨씬 더 느린 것을 볼 수 있다. 이러한 문제점은 이미지에서 ‘정확한’단어를 예측하려고 하는 것에서 온다. 이미지는 다양하게 묘사되고 코멘트 되기 때문에, 정확한 단어를 예측하려고 하면 문제가 생기는 것이다.
이러한 접근법의 문제점을 확인했으므로, 논문에서는 정확한 단어가 아닌 텍스트 전체로 매칭되도록 학습을 진행했다. 즉, Bag-of-word 인코딩 방식을 사용했다. 이렇게 접근하자 4배정도 효율이 상승되었다.
N개의 (image, Text)쌍의 배치가 주어졌을때, CLIP은 NxN개의 (image, text) 쌍을 예측할 수 있도록 학습한다. 이를 위해 N개의 실제 이미지 임베딩과 텍스트 임베딩 쌍(위 그림에서 파란색 부분)의 코사인 유사도록 최대화 하고, 잘못된 쌍(흰색부분)인 N^2 - N개의 코사인 유사도는 최소화하도록 이미지 인코더와 텍스트 인코더를 학습한다.
위의 학습법을 pseudocode로 구현하면 다음과 같다.
2.4 Choosing and Scaling a Model
이 논문의 핵심은 스케일링에 있다. 어떻게 모델을 선택하고 스케일링 했을까?
### **Image Encdoer**
총 두 개의 모델을 고려하였다.
- ResNet-50
기존의 ResNet에 수정을 가해 사용했다. global average pooling을 attention pooling으로 바꾸어 사용하였다.
- ViT(Vision Transformer)
layer normalization을 추가하는 것 외에는 거의 수정하지 않고 사용하였다.
### Text Encoder
텍스트 인코더로는 transformer를 사용하였다. max sqeuence length는 76으로 제한하였다(계산의 효율성 위함)
2.5 Training
총 5개의 ResNet과 3개의 ViT를 학습시켰다.
- ResNet은 ResNet-50, ResNet-101, 그리고 EfficientNet-style의 모델 3개를 더 학습하였고 이들은 4배, 16배, 64배의 계산을 사용하였다.(각각 RN50x4, RN50x16, RN50x64로 칭한다)
- ViT는 ViT-B/32, ViT-B/16, ViT-B/14를 학습하였다.
- 모든 모델은 각각 32 epoch씩 학습시켰다.
3. Experiments
3.1 Zero-shot Transfer
기존의 CV에서의 zero-shot이란 학습되지않은 물체에 대한 분류를 예측하는 방식을 의미한다. 하지만 이 논문에서는 좀 더 넓은 의미로 한 번도 보지 못한 데이터셋을 예측하는 것으로 정의했다.
3.1.2 Using CLIP For Zero-Shot Transfer
CLIP은 이미지와 텍스트가 짝지어진 데이터로 사전학습이 이루어진다. 논문에서는 이러한 capability를 zero-shot 분류를 위해 사용하였다.
각 데이터셋에 대해 모든 클래스의 이름들을 potential한 text-pairing으로서 사용하고 가장 그럴듯한(probable) 이미지, 텍스트 쌍을 예측한 것이다. 이러한 과정을 논문의 있는 예시로 보면 다음과 같다.
- 각 데이터셋에 대해 모든 클래스의 이름들을 potential한 text-pairing으로서 사용
→ 각 class name을 "A photo of a {class}.” 형식의 문장으로 바꾼다. (그러면 T1= A photo of a {plane}, T2=A photo of a {car}, T3=A photo of a {dog}..)가 될 것이다.
- 가장 그럴듯한(probable) 이미지, 텍스트 쌍을 예측
→ 개 사진을 Image Encoder에 넣었으므로, 가장 유사한 이미지,텍스트 쌍은 A photo of a {dog}이 될 것이다.
3.1.3 INITIAL COMPARISON TO VISUAL N-GRAMS
3개의 dataset모두에서 visual N-Grams보다 CLIP이 훨씬 뛰어난 성능을 보여주고 있다.
3.1.4 Prompt engineering and ensembling
- 다수의 이미지 데이터셋은 그저 숫자로된 id로만 라벨링이 되어있다. 몇몇의 데이터는 이러한 ID조차 라벨링이 되어 있지 않은 경우도 있다.
- 또한, 다의성 문제(polysemy)도 가지고 있는데, class name 외에 context같은 추가적인 정보가 없는 경우 다른 class로 인식해 버릴 수도 있다. (예를 들면, boxer라는 단어는 문맥을 고려했을 때 개의 품종으로 사용되었는데 text encoder가 복싱하는 사람으로 나타낸 경우)
- 또다른 문제는 image에 짝지어진 text들은 대부분 single word가 아닌 문장인 경우가 많았다는 것이다.(우리의 class name은 대부분 single word이다!). 이러한 차이를 줄이기 위해, 3.1.2에서 설명한 것처럼 "A photo of a {class}.”의 형태로 만들어서 유사도를 측정하였다.
GPT-3에서 논의된 prompt engineering과 비슷하게, 각자의 task에 맞게 prompt text를 적절하게 선택해 준다면 분류하는 것에 더 도움이 될 수 있다고한다. 앞선 예시인 "A photo of a {class}.”를 예시로 들어보자
- “A photo of a {label}, a type of pet.”
- “a satellite photo of a {label}.”
- ‘A photo of a big {label}” and “A photo of a small {label}”
등 추가적인 정보를 넣어지는 식으로 진행한다면 아래와 같이 향상된 성능을 보여준다.
3.1.5. Analysis of zero-shot CLIP performance
zero-shot에 대한 CLIP의 퍼포먼스를 다양한 image classification 데이터셋에 적용시켜 판단해보자.
27개의 데이터셋 중 16개의 데이터셋에서 ResNet-50 baseline보다 더 좋은 성능을 보였다. 세부적으로 살펴보면 다음과 같다.
- Fine-Grained classification (Stanford Cars, Food101)(개 품종, 조류 종, 비행기 종류 등과 같은 작은 범주를 구별하는 분야)에서는 성능이 매우 뛰어나다.
- OxfordPets, Birdsnap에서는 성능이 대동소이하다. 이는 WIT와 ImageNet사이의 per-task supervision의 양 차이 때문에 생기는 것이라 예측된다.
- “general”한 classification 데이터셋인 ImageNet, CIFAR10/100, STL10에서는 근소하게 CLIP이 앞서는 모습을 보여줬다.
- video에서의 action recognition도 근소하게 앞서는 모습이다.
- 하지만 CLIP은 satelite image classification, counting objects in synthetic scenes, self-driving related tasks, recognizing distance to the nearest car 등에서는 좋지 않은 모습을 보여주었다**. 이는, CLIP이 specialized, complex, abstract한 task들에서는 큰 약점을 나타낸다는 것을 보여준다.**
재밌는 것은 CLIP의 zero-shot이 다른 모델의 few-shot보다는 나은 성능을 보여준다는 것이다.
3.2 Representation Learning
representation learning이 무엇인지는 1에서 설명했다. 간략하게 설명하자면 image의 특징을 잘 설명하는 feature(=representation)을 잘 요약해서 다른 downstream task에 이용할 수 있도록 하는 것이다.
모델의 representation learning 성능은 모델을 통해 뽑은 representation을 선형모델에 넣은 성능으로 평가하며, 기존의 SOTA들과 성능을 비교해보면 아래와 같다.
작은 모델들은 SOTA모델들과 비슷하거나 낮은 성능을 보이지만 RN50x64, L/14등은 다른 모델에 비해 성능이 높게 나오는 것을 확인할 수 있다.
3.3 Robustness to Natural Distribution Shift
distribution shift란?
ML의 경우 overfitting이나 일반화 성능이 낮아질 가능성이 항상 존재하다. 이 원인들 중 하나는 training set과 test set의 distribution이 동일할 것이라는 가정에 기초해있다. training set과 test set의 distribution차이를 distribution shift라고 한다.
CLIP은 텍스트간의 연관성 또한 학습하여 transfer score가 높다.(=distribution shift에 robustness하다) 그 그래프는 아래와 같다.
바나나 분류로 구체적으로 예를 들어보자. 아래 사진을 보자.
총 6가지의 dataset을 비교하며 zero-shot CLIP의 robust를 standard ImagNet Model과의 성능차이를 보여주고 있다.
- ImageNet은 통상적인 바나나 사진이다.
- ImageNet2는 다양한(초록색 바나나, 다른 과일과 섞여있는 등) 바나나 사진,
- ImageNet-R은 실제 바나나 사진 뿐 아니라 그림, 캐릭터 등도 포함된 사진들.
- ObjectNet은 갈변되거나 다양한 상황에서의 바나나 사진들,
- ImageNet Sketch는 이름과 같이 바나나 스케치를,
- ImageNet-A은 다양한 구도의 바나나 사진들을
가지고 있는 데이터 셋들이다. 당연하게도, 이 6개의 data distribution은 차이가 날 것이다. 기존의 standard ImagNet Model과 비교했을때 CLIP이 훨씬 더 성능이 높음을 알 수 있다. 즉, distribution shift에 robust하다라고 표현할 수 있다.
참고로 논문에서는 Robustness를 2가지로 정의한다.
- Effective robustness: distribution shift에서의 정확도 개선
- Relative robustness: out-of-distribution에서의 정확도 개선
아래 그림을 보자.
CLIP에 few-shot 학습을 시키면 해당 task의 정확도는 올라가게 된다(= Increase effective robustness). 하지만, zero-shot CLIP보다 robust는 줄어드게 된다(=Decrease Relative robustness) 즉, Effective robustness와 Relative robustness 사이에는 일종의 trade-off가 있는 것이다.
4. Comparison to Human Performance
CLIP을 사람이 내는 퍼포먼스와 사람이 학습하는 것과 비교해보면 어떠할까?
실험조건은 다음과 같다.
- 5명의 사람에게 3669개의 이미지를 주고 37종류의 개/고양이 중 어떤 것인지 고르게 하였다(‘모르겠다’ 고를 수 있음)
- zero-shot의 경우 인터넷 검색없이, 예시를 제공하지 않고 분류하게 한다.
- one-shot과 few-shot의 경우 각각 1개,2개의 예시를 보여준 다음 분류하게 한다.
결과는 다음과 같다.
모든 방면에서 사람보다 훨씬 더 뛰어나다. (근데 나도 개/고양이 종류 구별할 자신이 없는걸..)
그리고 아래 그림처럼 사람이 어려워 하는건 CLIP도 어려워한다.
5. Data Overlap Analysis
zeor-shot에 대해 대규모 데이터셋을 구성할 때 염려되는 것은 이후 사용할 downstream task에도 이미 학습한 데이터가 존재할 수 있다는 것이다. 이렇게 되면 이미 해당 데이터를 학습하였으므로 downstream task에 대한 zero-shot 성능을 제대로 측정할 수 없게 된다.
이를 방지하는 직관적인 방법은 데이터셋에서 downstream task에 존재하는 중복된 데이터를 모두 제거하는 것이나, 이것은 현실적으로 어렵다.
대신, CLIP은 데이터가 얼마나 겹치는지, 그리고 이것이 얼마나 성능에 영향을 미치는지 평가한다. 결과는 아래와 같다.
왼쪽을 먼저 보면, 35개 중 5개의 데이터셋에서만 신뢰구간 99.5%를 벗어난다. 3개의 데이터셋은 중복에 의해 성능이 더 좋게 나왔으나 2개의 데이터셋은 중복에도 불구하고 성능이 더 나쁘게 나왔다(?)
오른쪽을 보면 중복에 의한 test정확도 향상이 6개 정도만 유의미한 차이가 있음을 보여주고 있다.
6. Limitations
CLIP은 여전히 많은 한계점을 가지고 있다. 한계점은 다음과 같다.
- 간단한 linear classifier(ResNet-50등)보다는 성능이 좋긴하지만, SOTA 모델들과 비교하면 성능이 많이 떨어진다. CLIP이 SOTA모델들과 비슷한 성능을 보이려면 현재 계산량의 1000배정도는 더 해야하는데, 이는 하드웨어적으로 불가능하다.
- 3.1.5에서 언급한 것 처럼, specialized, complex, abstract한 task들에서는 큰 약점을 나타낸다
- CLIP은 고품질의 OCR representation에 대해서 학습을 하지만, MINIST에서는 88%의 정확도 밖에 보이지 못한다. 이는 CLIP이 딥러닝 모델의 취약한 부분인 일반화에 실패했다는 것을 보여준다.
- 또한 CLIP은 딥러닝의 poor data efficiency를 해결하지도 못하였다.
- zero-shot transfer에 초점을 맞추고 연구를 진행했음에도, vlidation set을 여러번 물어보는 식으로 접근했다. 이는 진짜 zero-shot 시나리오에서는 있을 수 없는 일이다.
- 인터넷에서 가져온 image와 text 쌍을 학습시키기 때문에 이들이 가지고 있는 사회적 편견을 그대로 가지고 있다.
- 논문에서는 자연어를 통해 이미지 분류를 진행하는 것이 flexible하고 general하다고 강조하였으나, 사실 복잡한 task등은 텍스트로 표현하기 어렵다. 이러한 이유로 직관적인 생각과는 달리 zero-shot일 때 보다 one-shot이나 few-shot 등에서 더 많은 성능저하가 일어난다.
7. Broader Impacts
7.1Bias
6.limitation에서 언급한 것과 같이, CLIP은 인터넷에서 image와 text쌍을 가져와 학습시켰기 때문에 인터넷 데이터에 있는 편견을 그대로 학습하게 된다.
FairFace에 있는 7개의 클래스+ 사람이 아닌 클래스 4개(동물,고릴라,침팬지,오랑우탄) + 범죄와 관련된 클래스 3개(도둑, 범죄자, 수상한 사람) 이렇게 클래스를 구성했다.
전체 이미지의 4.9%는 사람임에도 사람이 아닌 클래스로 잘못 분류되었으며, 이중 흑인이 14%로 가장 높은 비율을 보였으며 나머지 인종은 8%이하로 나타났다.
남성은 16.5%가 범죄 관련 클래스에 분류되었으나 여성은 오직 9.8%만이 범죄자 관련 class로 분류되었다. 남성과 여성의 편견에 대한 것은 아래 사진에 나와있다.
위 결과는 class design이 매우 중요함을 나타내며, class name을 어떻게 정하고 추가하느냐에 따라 결과가 달라질 수 있음을 나타낸다.
9. Conclusion
NLP에 적용되던 task-agnostic web-scale의 사전학습을 다른분야(=CV)에 적용하였다. 사전학습 단계에서 다양한 task를 어떻게 수행할지 학습하고, 이는 자연어 prompting을 통해 여러가지 데이터셋에 대해 zero-shot transfer을 진행하여 좋은 결과를 얻었다.
text-to-image 프로젝트를 수행해야해서 굉장히 꼼꼼하게 읽은 논문이다.