Post

[Paper]CLIP

OpenAI에서 2021년에 “Learning Transferable Visual Models From Natural Language Supervision”라는 이름으로 발표한 논문에서 CLIP이라는 모델을 소개합니다.

1 Figure 1 : Overall CLIP Arcitectures

기존의 CV 시스템들은 추가적인 데이터의 레이블이 필요한 지도학습의 제한을 가져 다른 특정한 시각적인 개념(객체, 형태 등의 정보)이 필요했습니다. 이미지를 설명하는 텍스트를 활용하는 방법이 이러한 지도 학습 방법의 대안이 됩니다.

따라서, 해당 논문에서 이미지와 함께 caption(설명)을 효과적이고 확장가능한 방법으로 이미지 표현을 학습하는 사전학습을 소개합니다. 사전학습 이후에 자연어는 학습된 시각적 개념을 참조해 다운스트림 작업에 zero-shot 전이를 가능하게 합니다.

Ⅰ. Introdcution

MLM이나 autoregressive같은 작업에 무관한\(_{task-agnostic}\) 목적은 많은 분야에 영향을 미쳤습니다.

text-to-text의 발전은 작업에 무관한 아키텍처를 다운스트림 데이터셋에서 제로샷 전이가 가능하게함으로써 전문화된 출력 헤드나 특화된 커스텀의 필요성을 제거하였습니다. 즉, GPT3같이 특정화된 학습 데이터가 필요하지 않게 되었습니다.

그러나 이미지분야에서는 아직도 라벨링된 데이터셋으로 모델을 사전학습하는 방법이 일반적입니다. 최근의 트랜스포머 기반의 언어 모델링, MLM, contrastive objecite로 텍스트에서 이미지 표현을 학습하는 잠재력이 있다는 것을 보였지만 여전히 드뭅니다.

이러한 접근은 현재의 실용적인 중간 지점으로 제한된 양의 “Gold-label”과 현실적으로 제한이 없는 양의 “Raw text”사이에서 학습하는 것 사이의 지점을 대표합니다.

또한, 자연어에서 바로 이미지 표현을 학습하는 연구와 약하게 감독된 모델들 사이의 중요한 차이는 규모\(_{scale}\) 입니다. 따라서 이러한 격차를 줄이기위해 대규모의 데이터셋에서 연구를 진행했습니다.

2 Figure 2 : CLIP이 zero-shot transfer에서 다른 이미지 캡션 baseline보다 더 효율적인 것을 보임.

CLIP은 GPT와 유사하게 사전학습동안 OCR, geo-localization, 동작 인식 등 다양한 작업을 학습하는 능력을 보였으며 특히 제로샷 CLIP은 ImageNet 보다 훨씬 더 견고한 것을 보였습니다.

Ⅱ. Apporach

ⅰ. Natural Language Supervision

해당 접근법의 핵심은 자연어에 포함된 인식을 학습한다는 아이디어입니다.

이러한 자연어에서 학습하는 방법은 몇가지 강점이 있습니다.

자연어 감독을 통해 쉽게 확장 가능하여 기존의 crowd-sourced 라벨링과 비교하기 용이합니다. 기본적인 ML 형식에서 “Gold label”의 1-of-N 주석이 필요하지 않고 인터넷에서 방대한 양의 텍스트로 수동적으로 학습할 수 있습니다.

또한, 비지도나 자기지도 학습 방법에서 단지 표현을 학습하는 것 뿐만아니라 표현을 언어와 연결해 유연한 zero-shot 전이가 가능하게 하는 것입니다.

ⅱ. Creating a Sufficiently Large Dataset

기존 연구는 MS-COCO, Visual Genome, YFCC100M 을 사용하여 데이터셋을 구성하였지만 대량의 데이터를 충분히 반영하지 못해 인터넷상에서 이미지,텍스트 쌍을 추출해 WebImageText(WIT) 데이터셋을 구성하였습니다.

ⅲ. Selecting an Effieient Pre-Training Method

아래는 전반적인 CLIP모델의 psuedo code입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# image_encoder - ResNet or Vision Transformer
# text_encoder  - CBOW or Text Transformer
# I[n,h,w,c]    - minibatch of aligned images
# T[n,l]        - minibatch of aligned texts
# W_i[d_i, d_e] - learned proj of image to embed
# W_t[d_t, d_e] - learned proj of text to embed
# t             - learned temperature parameter

I_f = image_encoder(I) # [n, d_i]
T_f = text_encoder(T) # [n, d_t]

# joint multimodal embedding [n, d_e]
I_e = l2_normalize(np.dot(I_f, W_i), axis=1)
T_e = l2_normalize(np.dot(T_f, W_t), axis=1)

# scaled pairwise cosine similarites [n,n]
logits = np.dot(I_e, T_e.T) * np.exp(t)

# symmetric loss function
labels = np.arange(n)
loss_i = cross_entropy_loss(logits, labels, axis=0)
loss_T = cross_entropy_loss(logits, labels, axis=1)
loss = (loss_i + loss_t)/2

초기에는 VirTex와 유사한 방식으로 이미지 CNN과 텍스트 트랜스포머를 결합하여 이미지 캡션을 예측하도록 학습했습니다. 그러나 효과적으로 확장하는 것에는 어려움이 있었습니다.

위의 두 접근방식은 각 이지미에 동반하는 텍스트의 단어를 “정확하게” 예측하는 것으로 이미지에서 발생하는 설명과 코멘트, 관련된 텍스트들이 넓고 다양하기 떄문에 어려운 것이었습니다.

최근 이미지의 Contrastive 표현 학습에 대한 연구에서 해당 목적이 다른 동등한 예측 목적보다 더 잘 학습한다고 합니다. 즉, 학습 시스템을 텍스트의 단어를 "예측"하는 것이 아닌 각 이미지와 짝을 이루는 텍스트를 예측하는 것으로 변경하였습니다.

이렇게 예측을 대조의 방법으로 변경하고나서 ImageNet의 zero-shot 전이 속도가 4배는 효율적으로 향상되었습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def forward(self, image, text):
    image_features = self.encode_image(image)
    text_features = self.encode_text(text)

    # normalized features
    image_features = image_features / image_features.norm(dim=1, keepdim=True)
    text_features = text_features / text_features.norm(dim=1, keepdim=True)

    # cosine similarity as logits
    logit_scale = self.logit_scale.exp()
    logits_per_image = logit_scale * image_features @ text_features.t()
    logits_per_text = logits_per_image.t()

    # shape = [global_batch_size, global_batch_size]
    return logits_per_image, logits_per_text

Ⅲ. Experiments

ⅰ. Zero-Shot Transfer

3 Figure 3 : Zero-shot CLIP은 few-shot linear probes보다 성능이 좋았다.

Figure 3에서 zero-shot 성능이 4-shot 성능과 같은 것을 확인할 수 있습니다. 이러한 이유는 제로샷과 퓨샷의 접근법이 다르다는 것을 시사합니다.

처음으로 제로샷 분류기는 자연어를 통해 생성되는데 이는 시각적인 컨셉이 명시적으로 표현되어 소통한다는 것을 의미합니다. 반면에 일반적인 지도 학습은 이러한 개념을 간접적으로 언급합니다.

둘째로 맥락이 없는 데이터에서 학습하는 것은 데이터에 많은 가정이 가능합니다. 특히, one-shot의 경우 단일 이미지는 많은 다른 시각적인 컨셉을 포함합니다.

결과적으로 제로샷 학습이 시각적 개념의 표현을 자연어를 통해 직접적으로 학습해 효과적인 결과를 얻을 수 있었다는 것을 의미합니다.

ⅱ. Representation Learning

4 Figure 4 : Linear probe performance of CLIP models in comparison

CLIP ViT는 ResNet에 비해 3배 더 많은 컴퓨팅 효율성을 갖추고 있으며, 다양한 비교를 통해 표현력을 비교합니다.

ⅲ. Robustness to Natural Distribution Shift

5 Figure 5 : 제로샷 CLIP은 기존의 ImageNet모델보다 분포 변화에 robust합니다. (좌) 제로샷 모델이 더 견고하다는 것을 보여줌 (우) 바나나의 시각적 분포가 변함에 따른 성능 변화

Ⅳ. Comparison to Human Performance

6 Figure 6 : 사람은 제로에서 원샷으로 올라갈때 결과가 높게 올라간다.

Few-shot은 사람처럼 효과적으로 사전 지식을 사용하지 못합니다. 따라서, 사전지식을 few-shot 학습에 적절하게 통합하는 것은 CLIP 알고리즘 성능을 향상시키는 중요한 단계가 될 수 있습니다.

Ⅴ. Conclusion

CLIP 모델은 contrastive learning과 이미지와 텍스트 쌍의 코사인 유사도를 최대화하는 방법으로 학습이 됩니다. CLIP의 이미지 임베딩은 style과 semantic 정보를 포함하지만 zero-shot 분류에서 counting과 같은 추상적이거나 systematic한 작업에서는 낮은 성능을 보였습니다.

해당 논문은 NLP에서 작업에 무관한 사전학습의 성공을 다른 도메인에 적용하는 가능성을 조사했습니다. CLIP은 학습 목적을 최적화하기위해 사전학습동안 넓고 다양한 작업을 학습합니다. 이러한 작업 학습은 자연어 프롬프팅을 통해 zero-shot 전이가 가능해 해당 접근법을 충분한 규모로 학습한 성능은 작업 특화된 지도 모델과 비교해 경쟁력을 갖추며 여전히 큰 성능 향상의 가능성이 있습니다.

Ⅵ. REFERENCES

  1. Multimodal Image-text Classification
  2. Learning Transferable Visual Models From Natural Language Supervision
  3. CLIP in OpenAI github



This post is licensed under CC BY 4.0 by the author.