본문 바로가기

학부/논문 리뷰

Learning Transferable Visual Models From Natural Language Supervision (CLIP 논문 리뷰)

728x90
반응형

 

CLIP 모델을 제시한 논문으로 유명한 "Learning Transferable Visual Models From Natural Language Supervision" 논문을 읽어보고자 한다. 이미 예전에 읽었었고, 최근에는 다른 모델들도 많이 나오고 있지만 기본부터 하나씩 다시 다지자는 의미에서 리뷰한 내용들을 공유하고자 한다.

 

Keyword는 가볍게 참고만 해보자!

Keyword : CLIP architecture, CLIP training loss, CLIP training dataset

 

[논문 링크]

https://arxiv.org/pdf/2103.00020.pdf


 


Pre-liminary


  • meta data : data 안에서 원하는 정보를 효율적으로 찾을 수 있도록, 구조화된 데이터를 의미한다.
    • 이 논문에서는 사진의 제목이 가지고 있는 데이터의 특성을 반영하는 의미에서 meta data를 언급하는 것 같다.
  • Meta learning : 다른 task를 위해 학습된 모델을 이용해서, 적은 Dataset을 가지는 다른 Task도 잘 수행할 수 있도록 학습시키는 방식
    • transfer learning은 pre-trained model에 조금 더 초점을 맞춘 형식 + 더 많은 데이터가 필요
    • meta learning은 그보다 적은 데이터로 targeting하여 성능 향상

 


Abstract


  • 기존 Computer vision 분야에서 새로운 task를 위해서는 새로운 label과 그에 맞는 data가 필요
    • 너무 비효율적이며 모델의 범용성을 제한
  • 그럼 인터넷에서 얻은 image에 대한 raw text들을 그대로 학습시키면 어떨까?
    • 이에 대한 efficient, scalable한 방법으로 pre-training
  • pre-training이 끝난 모델은 downstream task에 대한 zero-shot transfer가 가능
    • 30개의 다른 computer vision dataset으로 성능 판단
    • 이는 특정한 dataset에 대한 training이 없어도 model transfer가 가능
      • 별도의 tuning 없이 다양한 task에서 범용적으로 사용이 가능하겠군 !

 


1. Introduction and Motivating Work


  • raw text로 직접 학습하는 pre-training 기법은 NLP 분야에서 많이 사용되었으며, 실제로 성능 향상에도 효과를 보임
    • 따라서 최근 GPT 모델들은 specific dataset이 필요가 없어졌으며 task-agnostic architecture를 가지게 됨.
    • 이제 고품질의 labeled data보다 web-scale의 text collection이 훨씬 성능 향상에 도움이 됨.
  • 하지만 NLP 분야에서만 그럴 뿐, 아직 다른 분야에서는 해당 학습 방법이 잘 실현되고 있지 않음.
    • 이전에 web text에서 직접 학습하는 방법과 관련된 여러 연구가 진행됨
    • 결과 자체는 좋지 않았지만 가능성은 보임
  • 이전 연구들로 보아, ‘gold label’ (내가 이해한 바로는 고품질의 labeled data를 의미하는 듯)로 모델을 학습 하는 방법과 무한한 raw text 학습 방법 사이에서 실용적인 측면으로 봤을 때, 중간 단계쯤 되는 것 같음.

우리가 supervised learning으로 image representation을 학습하는 것과, 자연어로부터 image representation을 직접 학습 하는 것 사이에는 ‘규모가 다르다’ 라는 가장 큰 차이점이 존재한다.

  • 기존 CV 분야에서 사용되는 모델은 million ~ billion 수의 image 학습
  • 최근에 사용되는 모델은 1-2 millions의 이미지에 대해서 학습

따라서, 이런 격차를 줄이기 위해 web text로부터 national language를 기반으로 image를 학습할 수 있는 방법에 대해 제시

  • simplified version인 ConVIRT를 4억 개의 image-text pair로 사전 학습한 모델 → CLIP (Contrastive Language-Image Pre-training)
  • 이는 GPT와 유사하게 pre-training 중에 다양한 task를 수행할 수 있음을 확인


2. Approach


2.1 Natural Language Supervision

이 논문의 approach의 핵심은 **“자연어에 포함된 supervision으로부터 perception을 배우는 것”**이다.

  • 이 말의 뜻은 **“image와 text pair dataset”으로부터 visual representatino을 학습하는 방법론”**으로 해석할 수 있다.
  • 다른 논문들에서 supervised learning, weakly supervised 등의 다양한 표현으로 사용되고 있다.
  • 결론적으로, 이 모든 의미는 national language를 training signal로 사용한다는 것을 의미한다.

이렇게 하면 장점은?

  • human annotation을 통해 labeling을 진행하는 것은 cost가 너무 크다
    • 하지만 raw text로 학습을 하면 방대한 양의 데이터로 supervised learning이 가능하다
  • 또한, visual representation뿐만 아니라 national language에 대한 representation도 함께 학습한다.
    • 이는 다양한 zero-shot transfer에서 보다 flexbile하게 적용될 수 있도록 만든다.

2.2 Creating a Sufficiently Large Dataset

기존 연구들에서 MS-COCO와 YFCC100M과 같은 데이터 셋 사용

  • MS-COCO : image data의 수가 작다. (10만개)
    • 다른 computer vision model은 최대 35억 장의 instagram 사진을 이용한다는 사실을 감안하면, 상당히 작은 데이터 셋을 사용
  • YFCC100M : 1억 장의 사진을 가지고 있음에도, meta data의 수는 적으며 quality가 다양하다.
    • 많은 이미지들이 “20160716 113957.jpg”와 같은 제목을 사용
      • 이는 카메라의 설정도 데이터의 설명 안에 포함이 된다는 뜻
      • 따라서 자연어로만 설명되어 있는 이미지를 filtering → 1500만 장 (여전히 적은 개수)

따라서, 인터넷 상에서 공개적으로 이용 가능한 대량의 데이터를 반영하기 위해 large dataset을 제작

  • 약 4억 개의 image-text pair data
  • 50만 개의 query → query 당 최대 2만 개의 image-text pair
  • 이렇게 만든 dataset은 GPT-2를 훈련하기 위해 사용된 WebText dataset과 유사한 수의 데이터
    • 따라서, 이 데이터 셋을 WebImage Text (WIT)라고 명명

2.3 Selecting an Efficient Pre-Training Method

image classification을 위해 학습된 모델들이 1년에 33개의 TPU를 사용하거나 19개의 GPU를 사용했다는 점을 감안하면, 자연어로부터 학습이 가능할까?

→ Efficient Pre-training을 통해 극복하고자 시도.

가장 먼저 VirTex와 유사한 pre-training 방법을 선택

 

  • image CNNs와 text transformer를 함께 훈련 → image caption prediction
    • 하지만 scaling에 어려움을 겪음.
      • Figure 2를 통해 transformer 구조는 ResNet-50 image encoder보다 3배 느리며, 이 2개의 구조는 핵심적인 similarity가 존재
        • 각 이미지에 대한 ‘정확한’ text를 예측하고자 함.
      • 따라서 정확한 text가 아니라 text 전체가 어떤 이미지와 pair를 이루는 지만 예측하는 방식으로 접근
        • 같은 성능을 보이더라도 contrastive representation learning을 한 모델이 계산량이 적다는 것을 활용
        • ConViRT training 방법을 활용

그렇다면 어떻게 Contrastive learning을 활용했을까?

N개의 image와 text pair dataset을 보유하고 있다고 가정.

  1. N개의 image와 text를 각각 image encoder, text encoder를 통해 embedding
  2. N개의 image, text embedding에 대해서 dot-product
  3. image-text pair에 해당되는 부분 (파란색 block)은 positive, 그 외에는 모두 negative로 변환
  4. 이 후, $N$개의 diagonal elements들은 cosine-similarity가 최대가 되게 하고 $N^2-N$개의 elements들은 (diagonal이 아닌 모든 요소) cosine similarity를 최소가 되게 만든다.
  5. 이 후, symmetric cross entropy를 활용하여 optimization을 진행
    • 아래 pseudo-code로 살펴보면, W_i, W_t에 해당되는 부분들을 optimization한다는 것
    • 즉, 첫 번째 이미지를 거쳐 W_i, W_t가 update → 차례대로 optimize

  • contrastive learning에 대한 pseudo code → batch 안의 데이터가 얼마나 복잡한 지에 대해서 나중에 활용하는 과정에서 문제가 발생하는 경우가 많음.
    • encoder로 각각 feature representation
    • l2_normalize & np.dot → multimodal embedding 획득, 하나의 matrix 생성
    • logits에서 cosine-similarity 계산
    • 이 후, optimization

pre-training dataset이 크기 때문에, overfitting은 주된 문제가 아니며 CLIP의 training detail은 타 모델에 비해 간단하다.

ConVIRT training과 다른 점?

  • CLIP은 pre-trained weight 없이 처음부터 training
  • non-linear projection 사용 X → linear projection으로 multimodal embedding space에 mapping
    • 이 부분은 위의 pseudo-code와 그림을 통해 쉽게 확인 가능
  • ConVIRT와 다르게 $t_u$라는 text transformation fuction을 삭제
  • temperature parameter (softmax에서 logit의 range 정의)에 대한 optimization process

2.4 Choosing and Scaling a Model

Image encoder에서 2가지 architecture 사용

  • image encoder의 base architecture : ResNet-50
    • ResNetD + rect-2의 blur pooling 사용
    • global average pooling → attention pooling
      • attention pooling : single layer of “transformer-style” multi-head QKV attention where the query is conditioned on the global average-pooled representation of the image.
  • ViT architecture
    • patch를 결합하는 부분에서 layer norm 추가 + 약간 다른 initialization 외에 나머지는 ViT 구현을 그대로 사용

Text encoder에서 사용한 architecture

  • transformer 사용 (약간의 modification 추가)
    • base size : 8개의 attention head를 가진 63M params / 12 layer / 512 wide model
      • 최대 sequence의 길이를 76으로 제한 → computational efficiency
    • masked self-attention으로 기존 언어 모델의 weight를 유지하거나 auxiliary objective로 modeling 가능 ⇒ future work
  • text encoder가 CLIP의 성능에 image encoder만큼 영향을 주지 않기 때문에 depth 확장 X

2.5 Training

5개의 ResNet + 3개의 ViT 훈련

  • ResNets
    • ResNet-50
    • ResNet-101
    • EfficientNet-style로 scaling된 model 3개
      • ResNet-50의 4x, 16x, 64x의 계산량을 사용하므로 RN50x4 와 같은 표기법 사용
  • ViT
    • ViT-B/32
    • ViT-B/16 (ViT-Base)
    • ViT-L/14 (ViT-large)

Hyper-parameter tuning에 대한 정보는 paper에서 확인

“CLIP”에 사용되는 모델은 가장 performance가 좋은 모델들로 사용

 

 


3. Experiments


3.1 Zero-Shot Transfer

[3.1.1 Motivation]

CV에서 zero-shot learning이란, 일반적으로 이미지 분류 문제에서 그 전에 보지 못했던 object의 class를 일반화

⇒ 논문에서는 unseen datasets에 대한 것으로 이 의미를 확장

representation learning → task-learning으로 관점, 따라서 데이터 셋은 특정 distribution에서 성능을 평가 (Section 3.3 참조)

Visual N-gram은 image classification에서 zero-shot transfer를 처음 연구

  • 이는 사전 훈련된 모델을 사용하여 다른 데이터셋에 대한 zero-shot transfer를 연구
  • 따라서 CLIP의 reference point가 된다.

Zero-shot transfer를 수행하기 위해 각 class의 이름을 N-gram 표현으로 변환한 후, 모델에 따라 그 확률을 계산하여 가장 score가 높은 것으로 예측

NLP 분야에서 ‘unexpected side-effect’에 대한 언급이 처음 등장하면서 evaluation task로 zero-shot transfer를 사용하는 것에 motivated

 

[3.1.2 Using CLIP for Zero-Shot Transfer]

CLIP은 image와 text가 pair를 이루는 지를 예측하기 위한 pre-training을 수행

  • zero-shot classification에 이를 적용
  • 각 데이터 셋에 대해, 모든 class의 이름을 potential text라고 가정하고 사용해서 CLIP에서 가장 가능성 있는 (Image, text) pair를 예측
    • encoder로 image embedding + 가능한 모든 text embedding
      • image embedding에 대해서는 1개
      • text에 대해서는 여러 개
    • 여기서 embedding의 cosine similarity 계산 → score 가장 높은 걸로 예측
  • 이를 통해 image encoder는 image의 feature representation을 계산 + text encoder는 class가 나타내는 visual concept을 명시하는 text ⇒ linear classifier의 weight를 생성하는 hyper-network

[3.1.3 Initial Comparison to Visual N-Grams]

visual N-gram과 비교했을 때, CLIP이 훨씬 더 좋은 성능을 보여줌

→ 이를 통해 zero-shot setting에서 strong, fully supervised baselines의 성능과 일치하는 것은 CLIP이 flexible하고 practical한 zero-shot computer vision classifier로 가는 단계임을 증명

 

[3.1.4 Prompt Engineering and Ensembling]

  • 기존 image classification에서는 image에 대응되는 ID를 주고, ID에 대응되는 text 파일을 따로 제공하는 방식
    • 하지만 실제로는 그렇게 label이 주어지지 않는 경우들이 많다.
    • 많은 데이터셋에서, label이 무작위로 선택되는 경우가 많으며 (unseen object이므로) 이 때문에 zero-shot과 관련된 문제들이 발생
  • 일반적으로 polysemy 문제가 발생
    • class 이름이 text encoder에 제공되는 유일한 정보라면, context 파악이 안됨
      • crane = ‘건설용 크레인’ or 날아다니는 ‘학’
  • 일반적으로 text는 이미지를 설명하는 full sentence인 경우가 많다.
    • dog → ‘My little cuty puppy’
  • 따라서 ‘A photo of a {label}’ 이라는 prompt를 제시 → 1.3%의 정확도 향상

  • Ensemble
    • A photo of big {} + A photo of small {} ⇒ 각각의 prompt에 대한 결과를 ensemble
    • embedding space에서 ensemble을 한다. 즉, score를 계산하기 전 embedding space에서 모두 ensemble한 뒤에 score를 계산하므로 computational 문제도 없애면서 더 높은 성과를 얻을 수 있다.
    • 80개 정도의 context prompt를 ensemble

[3.1.5 Anaylsis of Zero-Shot CLIP Performance]

CLIP의 zero-shot classifier에 대한 property

  1. zero-shot classifier의 performance
    • Standard ResNet-50과 27개의 dataset에 대한 비교 → CLIP이 ResNet과 약 16개의 데이터 셋에서 우수한 성능을 보여준다.
    • 비디오나 ‘general (일반적인)’ 객체 분류에 더 좋은 성능을 보여줌
      • 이는 자연어가 시각적 개념에 대해 ‘동사’를 포함하고 있으므로 ‘명사’ 중심의 ImageNet에서 보다 더 넓은 범위를 cover할 수 있으므로, 그리고 video와 관련된 데이터 셋에서도 동일한 이유로 조금 더 좋은 성능을 보여주는 것으로 보임.
      • 하지만 web text의 한계로 전문적인 medical 분야와 같은 dataset에서는 조금 더 낮은 성능을 보임
        • EuroSAT (위성 사진) / Patchcamelyon (림프 노드 tumor) / CLEVRcounts (synthetic data)

CLIP은 few-shot과 함께 비교하는 것이 조금 더 직접적인 비교

Figure 6은 few-shot과 zero-shot을 비교한 실험 결과

  • ResNet / SimCLRv2보다 좋은 성능을 가지고 있음.
  • one-shot이 왜 zero-shot보다 낮을까?
    • CLIP의 zero-shot classifier는 visual concept을 ‘directly specified’ 할 수 있다. 하지만 one-shot은 training sample로부터 concept을 ‘indirectly’하게 추론해야 한다.
    • 따라서 1개의 sample만 주어졌을 때는 직접적으로 전달하는 zero-shot보다 성능이 낮다.
    • 이를 embedding space 측면에서 살펴보면, 새로운 linear layer가 하나 더 추가되는 것이며 그 layer는 하나의 sample로만 학습이 되었기 때문에 오히려 더 안 좋은 성능을 보인다는 것이다.

3.2 Representation Learning

Zero-shot prediction의 성능으로 해당 모델이 좋은 표현을 학습 했는지 검증하는 방법은 기존의 평가 방법과 다르기 때문에 학습한 representation이 무엇인 지를 통해 더 정확한 평가를 진행

 

다양한 모델들의 linear probing 성능을 비교한 그래프

CLIP 방식으로 학습한 linear probing의 성능이 가장 좋은 모습을 확인할 수 있다. (ViT / ResNet)

  • Linear probing이란, feature extractor를 고정해둔 채로 classifier 부분만 재 학습하여 테스트 하는 방식

 

CLIP 모델 간의 데이터 셋별 성능 차이를 시각화한 figure

3.3 Robustness to Natural DIstribution Shift

  • 인간의 performance를 능가한 모델들도 새로운 dataset에 대해서는 성능이 좋지 않는 discrepancy 문제가 발생
  • 이는 기존 학습한 데이터와 다를 경우에, 성능이 낮아진다는 관점에서 robustness가 낮음을 의미
    • 즉, 이미지에 noise가 추가되면 모델이 성능을 충분히 내지 못한다는 단점이 발생
  • 따라서, 어느 상황에서도 일반화를 할 수 있는 robustness까지 갖추어야 범용적으로 사용할 수 있는 모델
    • CLIP을 이러한 관점에서 분석

  • ImageNet
  • ImageNetV2 : ImageNet으로 학습하고 이를 활용하는 모델들이 많아서 이미 ImageNet의 test set은 test set이 아님.
    • 따라서, ImageNet과 조금 다른 dataset인 ImageNetV2에서도 급격한 성능 하락을 보이는 모델들이 존재
  • ImageNet-R
  • ObjectNet
  • ImageNet Sketch
  • ImageNet-A : Adversarial attack이 추가된 imagenet 데이터셋

⇒ 이렇게 다양한 이미지와 texture를 가진 dataset으로 CLIP을 평가

왼쪽 figure를 통해 CLIP이 꾸준히 성능이 좋은 모습을 확인할 수 있다.

이를 통해, 단순하게 성능이 좋다는 점뿐만 아니라 기존 vision 모델이 겪고 있던 문제들을 해결할 수 있는 가능성을 제시한다는 점에서 혁신적으로 평가 받는다.


5. Data Overlap Analysis


web-scale의 데이터로 학습할 때, test set에 포함된 데이터가 실제로 training data에도 포함되어 일반화 성능을 객관적으로 측정하지 못할 수도 있다.

따라서 다음 step들을 통해 data overlap을 처리하고자 한다.

  1. 각 evaluation dataset에서 duplicate detector를 사용한다.
  2. CLIP RN50x64의 zero-shot 정확도를 3개의 split에서 계산
  3. Null hypothesis로써 clean에 대한 정확도를 사용하여 test

예상되는 문제점

  • detector가 완벽하지 않다.
  • overlap과 clean subsets 사이에서 underlying data distribution이 바뀔 수 있다.

이 2가지 문제점을 인지하고 다루고자 시도


6. Limitations


  • CLIP은 zero-shot learning을 지원하지만 모든 task에서 성공적인 모습을 보이진 않는다.
  • 대규모 데이터에 의존한다.
  • 계산 비용과 자원이 굉장히 크다. (데이터 효율성이 낮다.)
    • 대신에 수백만 개의 예제로 expand할 수 있는 정보를 사용함으로써 어느 정도 이에 대한 보상을 제공
  • 특정 분야에서 일반화하기 어렵다.
    • 다양한 데이터셋에 대해 학습 되었지만, CLIP에서 완전히 벗어난 데이터에 대해서는 일반화가 부족하다.
    • 예를 들면, medical 분야
  • CLIP이 image-text paired dataset을 사용하며 많은 양의 데이터를 다루기 때문에 필터링 되지 않고 정제 되지 않은 데이터를 사용한다.
    • 따라서 여러 사회적 bias를 학습한다.


Discussion


 

이제 거의 웬만한 VLM에서 기본 baseline이 되는 CLIP 모델에 대해서 살펴보았다.

다 제시된 아이디어를 읽는 것은 어렵지 않았으나, 직접 이런 아이디어를 구현해보는 과정 자체는 조금 어려웠을 것 같다. 하지만 이 논문의 핵심은 crawling data를 사용하여 대규모의 image-text pair dataset으로 학습해보았더니, 좋은 모델이 탄생했다라는 점에서 VLM 또한 LLM의 scaling law 안에 포함되고 있는 것은 아닌가 생각이 든다.

빠르게 발전하고 있는 AI의 시대에서 CLIP 모델은 가볍게 지나가는 모델일 수도 있겠다,, 라는 짧은 의견을 말하고 싶다.


안녕하세요



안녕하세요



안녕하세요



안녕하세요



안녕하세요



안녕하세요



안녕하세요



안녕하세요



안녕하세요



안녕하세요


 

728x90
반응형