Victory in my life

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

ML|DL/논문리뷰

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

tmdrn9 2025. 4. 2. 19:54

논문링크: https://arxiv.org/pdf/2103.00020

 

OpenAI가 2021년에 발표한 CLIP은 이미지와 텍스트를 함께 학습시켜서, 다양한 시각 인식 작업을 사전학습만으로 수행할 수 있는 대표적 멀티모달 모델이다. 

 

최대한 간단하고 깔끔하게 작성해보겠다.

 

🧠 핵심 아이디어

이미지와 텍스트를 함께 학습하는 모델로, 제목 그대로 자연어 지도학습으로 시각모델을 학습시키는 방식을 채틱한다. 이미지와 텍스트가 한 쌍인 웹에서 수집된 대규모 데이터셋 (약 4억 쌍)을 이용해서 학습하였으며, fine-tuning 없이도 다양한 작업에 zero-shot으로 대응할 수 있게 했다.

 

⚙️ CLIP의 학습 방식

- 올바른 쌍은 서로 가깝게, 틀린 쌍은 멀게 임베딩되도록 만드는 대조 학습 (Contrastive Learning) 방식을 사용

- 이미지와 텍스트를 같은 의미 공간으로 매핑 하도록 학습

 

1️⃣ Pre-training: 이미지와 텍스트를 함께 학습

  1. OpenAI는 웹에서 4억 개 이상의 이미지-텍스트 쌍을 수집
  2. 각각의 인코더로 이미지와 텍스트 인코딩 
    - 그림상에서는 배치 단위로 학습을 반영한 것으로, 배치 사이즈가 N이라고 하면 N개의 (image, text) 페어가 있는 것
    - 논문에선 Text Encoder- Transformer 기반 인코더/ Image Encoder-ResNet 또는 ViT
  3. 이미지-텍스트 간 유사도 계산 (Cosine Similarity)
    - 총 N개 쌍이 있을 경우, N×N 유사도 행렬 → 대각 행렬 즉, 페어끼리는 유사도가 높도록, 그 외는 유사도가 낮도록 학습
  4. 대조 손실 함수(InfoNCE) 계산
  5. 두 인코더를 함께 훈련

2️⃣ Zero-shot Inference: 사전학습된 모델로 분류

  1. 텍스트 프롬프트 생성 클래스별로 설명 문장을 작성 (e.g., "a photo of a cat", "a photo of a dog", ...)
  2. 1번에서 만든 Label 텍스트를 Text Encoder로 임베딩 벡터로 변환
  3. 입력 이미지를 Image Encoder를 통해 이미지 임베딩 벡터 추출
  4. 이미지 임베딩과 각 클래스 텍스트 임베딩 간의 유사도 비교
  5. 유사도가 가장 높은 텍스트 = 예측 클래스

 

수도코드는 아래와 같이 아주 간단하다.

📊 CLIP 실험 결과

1️⃣ Zero-Shot Transfer

  • image classification에서 zero-shot tranfer를 처음 사용한 연구인 Visual N-Grams와 비교 실험 진행
  • CLIP은 모든 데이터셋에대해 성능이 높은 것을 볼 수 있음

 

  • zero-shot transfer 성능을 향상을 위해 프롬프트 엔지니어링앙상블 기법을 사용
    1. 여러가지 데이터셋에서 "A photo of a {label}"과 같은 형식의 prompt를 default로 사용
      - GPT-3에서 prompt를 잘 짜는 것만으로도 zero-shot 성능을 상당히 높힐 수 있다고 언급
    2. 하나의 클래스에 대해 여러 문장 템플릿 사용함으로써 앙상블 진행⇒ 여러 문장의 정보가 합쳐진 하나의 텍스트 벡터 사용
      - 예를 들어, 고양이 클래스에 대한 문장을 "a photo of a cat", "a close-up of a cat" 등 여러 문장을 생성 → 각 텍스트 설명을 임베딩한 후 평균을 내서 클래스 대표 벡터를 만듦 이미지 임베딩과 평균 텍스트 임베딩 사이의 유사도 계산

  • Zero-Shot Classifier의 성능을 평가를 위해, Linear Probe 방식을 통해 fine tuning을 시킨 ResNet-50 모델과 여러가지 데이터셋에 대해 성능을 비교
    • Linear Probe: 사전학습된 모델의 파라미터는 freeze하고 마지막 선형 분류기만 추가해 학습시키고 성능 측정하는 방식으로, 사전학습된 표현의 품질을 공정하게 비교

  • 전반적으로 Zero-shot CLIP은 4-shot linear classifier와 비슷한 성능을 보이며, 다른 16-shot linear classifier와 거의 비슷한 성능을 보임

 

2️⃣ Representation Learning

  • CLIP을 포함한 모든 모델에 Linear probe를 이용한 성능을 비교 진행
  • 각각 12개, 27개의 데이터셋에 대한 점수를 평균낸 것으로, 모든 크기에서 CLIP모델이 다른 모델보다 좋은 성능

 

  • CLIP 모델과 EfficientNet L2 NS 모델의 성능 차이 비교
  • 전반적으로, CLIP은 다양한 데이터셋에서 경쟁력 있는 성능을 보이며, 특히 텍스트 기반 작업(예: SST2)에서 강점

3️⃣Robustness to Natural Distribution Shift

 

  • 다양한 모델의 ImageNet 점수와 전이 점수를 비교하여 모델의 성능을 평가, 전이 점수는 다른 데이터셋에서 선형 프로브를 사용하여 평가한 평균 점수를 의미
  • 다른 모델들도 ImageNet에서 높은 정확도를 보이지만, CLIP 모델만큼 다른 작업으로 잘 전이되지는 않음

 

왼쪽 Figure

  • x축은 ImageNet 데이터셋에서의 정확도를 나타내고, y축은 7개의 자연 분포 이동 데이터셋에서의 평균 정확도를 나타냄
  • 점선(y=x)은 이상적인 robust 모델을 나타내며, 이 선에 가까울수록 모델이 분포 이동에 강건함을 의미
  • Zero-Shot CLIP 모델은 ImageNet 모델보다 분포 이동에 훨씬 더 강건하며, 이는 보라색 선이 파란색 선보다 점선에 더 가까움

오른쪽 Figure

  • 다양한 데이터셋의 바나나 클래스에 대해 ImageNet ResNet-101 모델과 Zero-Shot CLIP 모델의 정확도 점수
  • 전반적으로, 이 이미지는 CLIP 모델이 ImageNet 데이터셋에만 특화된 모델보다 자연 분포 이동에 더 robust함을 시사

4️⃣Comparison to Human Performance

  • Zero-shot human: 사람이 아무런 사전 정보 없이 이미지 분류/ Zero-shot CLIP: CLIP 모델이 아무런 훈련 없이 이미지 분류
  • One-shot human: 사람이 각 클래스당 하나의 예시 이미지를 보고 이미지 분류/  Two-shot human: 사람이 각 클래스당 두 개의 예시 이미지를 보고 이미지 분류
  • CLIP 모델은 사전 훈련만으로도 Oxford IIT Pets 데이터셋에서 사람보다 훨씬 높은 정확도를 보임
  • 사람은 예시 이미지를 몇 개만 보더라도 정확도가 크게 향상되지만, CLIP 모델의 제로샷 성능에는 미치지 못 함

 

⚠️ 한계점

  • 웹 데이터 기반이기 때문에 bias가 존재할 수 있음 
  • 텍스트 설명이 부정확하거나 추상적일 경우 성능 저하 
  • 특정 task에선 여전히 fine-tuning이 필요