해당 포스팅은 CLIP 논문 (Learning Transferable Visual Models From Natural Language Supervision)을 읽고 논문의 순서에 따라서 최대한 자세하게 정리한 포스팅입니다. 궁금한 점이나 피드백 있으시면 댓글 남겨주세요! 감사합니다:)
Reference
- https://openai.com/blog/clip/ (openai 블로그)
- https://arxiv.org/abs/2103.00020 (clip paper)
Flamingo, DALL-E 2, Stable Diffusion 심지어 어제(22/09/29) Meta에서 발표한 Image to Video model인 DALL-E for video 까지 대부분의 최신 multimodal model paper에서는 대부분 reference paper로 CLIP가 등장한다. 심지어 DALL-E 2의 논문 제목은 Hierarchical Text-Conditional Image Generation with CLIP Latents인데 제목에서부터 CLIP이 등장한 것을 보면 multimodal(visual-language)에서 CLIP은 굉장히 중요한 아키텍쳐임을 알 수 있다.
그렇다면 CLIP이 뭐길래 이렇게 많은 visual language model paper에서 언급되는 것일까?
자세한 사항은 천천히 알아보도록 하자.
0. Abstract
Computer Vision 분야에서 기존의 SOTA(State-of-the-art) 모델들은 고정된 크기의 카테고리에 대해서 예측 할 수 있도록 학습되었다.
그러나 이러한 방식은 새로운 카테고리가 생기는 경우 이에 해당하는 새로운 labeled data를 필요로 하기 때문에, 보편성(generality)와 유용성(usability) 측면에서 제한적이다.
따라서 위와 같이 text로 부터 image의 정보를 직접 학습하는 방식으로 발전하는 추세이고, 이를 통해 더 넓고 다양한 supervision task를 수행할 수 있다.
이 논문에서는 인터넷에서 수집한 4억개의 (image, text) 쌍 데이터셋을 활용하여 간단한 task(어떤 캡션이 어떤 이미지와 어울리는지를 예측하는 task)로 pre-training한 모델을 소개한다.
Pre-training 이후에는, natural language가 reference로 사용되어 visual concepts를 학습하는데, 이를 통해 zero-shot learning까지 가능한 것이다.
💡 Zero-shot의 의미는 fine-tuning을 통한 파라미터의 업데이트 없이 pre-trained 된 모델만으로 down-stream task에 적용하는 것을 말한다.
예를 들어 아래 예시에서 사용자가 pre-trained 된 모델에 [television studio,podium indoor, conference room, lecture room, control room] 의 natural language를 추가로 주면 a photo of a { 각 단어 } 형식으로 label이 정해지고, 해당 label에 대한 classification을 수행하는 것이다.
💡 그냥 단어로 labeling하지 않고, a photo of a { 각 단어 } 형식으로 labeling 하는것은 a photo of a 를 붙이면 해당 text가 image의 특정 content라는 것을 조금 더 구체적으로 알 수 있어 성능이 올라가기 때문이라고 한다. 또한 예를 들어, boxer(운동선수 boxer, 강아지 종류 boxer)의 경우 a photo of a boxer, a type of pet과 같이 그 의미 구분을 할 수 있게 해주는 prompt로서의 역할도 있다.
논문에서는 이러한 단순 classification뿐만 아니라 OCR, action recognition in videos, geo-localization 등의 task를 수행하는 30개 이상의 computer vision datasets을 벤치마킹하여 이 접근 방식의 성능을 연구하였다고 한다.
이러한 접근방식의 pre-training만으로도(추가적인 fine-tuning 없이) 대부분의 task에서 결과는 나쁘지 않았고, 심지어 일부 task에서는 fully supervised baseline model과 비교하여도 성능이 나쁘지 않았다.
1. Introduction and Motivating Work
Autoregressive modeling(자동회귀)이나 masked language modeling같은 task-agnostic objective는 컴퓨팅, 모델 용량 및 데이터에서 수십 배 규모로 확장되어 기능을 꾸준히 향상시켰다.
💡 task-agnostic objective란 구체적인 task가 정해지지 않은 objective를 의미
GPT-3와 같은 모델은 specific한 training data가 거의 또는 전혀 필요하지 않으면서 많은 task에서 경쟁력이 있다.
이러한 결과는 비교적 적은 수의 고품질 crowd-labeled dataset보다 web 규모의 text collection을 사용했을때 성능이 훨씬 더 좋을 수 있다는 것을 시사한다. (즉, 10만개, 20만개의 task-specific한 data보다 몇 억개의 web scaled dataset을 활용하여 pretraining 한 zero-shot model이 성능이 더 좋을 수 있다는 것이다.)
그러나, computer vision 분야에서는 여전히 ImageNet과 같은 crowd-labeled dataset을 활용하여 pretraining하는 연구가 진행중이다.
과연 web규모의 text로 부터 직접 학습하는 pretraining method가 computer vision에서도 효과가 있을까?
해당 논문(CLIP) 이전에도 이러한 질문에 대한 연구가 활발히 또 매우 고무적으로 진행되어 왔다.
(아래는 간단히 이러한 연구의 흐름을 정리한 것이다. 각 연구에 대해 조금 더 자세한 사항를 알고싶다면 링크로 걸어놓은 논문을 참고하면 좋을 것 같다.)
- 1999년
- 이미지와 쌍을 이루는 텍스트 문서의 명사와 형용사를 예측하는 모델을 훈련시켜 content 기반의 image 검색 개선 연구
- 2007년
- 이미지와 관련된 caption word를 예측하도록 훈련된 classifiers의 weight space에서 manifold learning을 통해 더 효율적인 이미지 데이터 representation을 학습할 수 있음을 입증
- 2012년
- Low level 이미지 및 텍스트 tag features 위에 멀티모달 Deep Boltzmann Machines를 훈련시켜 심층 표현 학습을 탐구
- 2016년
- 이미지 캡션에서 단어를 예측하도록 훈련된 CNN이 유용한 이미지 representation을 학습한다는 것을 입증
- YFCC100M dataset에 있는 이미지의 제목, 설명 및 해시태그를 bag-of-words 기반 multi label classification task으로 변환하고, 이러한 multi label을 predict하기 위해 pre-training된 AlexNet을 활용 (ImageNet 기반 pre-training과 유사한 방식으로 representation 학습)
- 2017년
- 이러한 접근 방식(2016)을 개별 단어 외에도 구문 n-grams을 예측하는 것으로 확장시킴
- 학습된 visual n-gram 사전을 기반으로 target class를 scoring하고 가장 높은 점수를 받은 class를 예측하여 다른 image classification dataset에 zero-shot을 수행하는 system의 능력 입증
- 2020년 (VirTex, ICMLM, Con-VIRT)
- 보다 최신 architectures와 pre-training approaches 활용
- transformer 기반 language modeling, masked language modeling 및 text에서 image representation을 학습하는 contrastive objectives의 잠재력을 입증
이러한 연구에도, image representation 학습을 위해 natural language supervision을 사용하는 것은 여전히 흔치않다.
Natural language supervision을 사용했을 때의 현재 benchmark 성능이 사용하지 않았을 때 보다 훨씬 낮기 때문이다.
💡 뒤에서 자세히 설명하겠지만, natural language supervision은 CLIP 논문에서 처음 나온 용어로 natural language를 training signal로서 이해하여 image의 representation을 학습하는 방식을 의미한다.
예를 들어, 2017년에 발표된 visual n-grams 예측 방식은 ImageNet에서 11.5%의 정확도를 달성했다.(zero-shot setting))
현재 SOTA인 88.4%의 정확도에 비교하면 훨씬 못 미치는 수준이다.
심지어 11.5%는 고전적인 classic computer vision 접근법의 50% 정확도에도 미치지 못한다.
2018년, Instagram image에서 ImageNet 관련 hashtag를 예측하는 것이 효과적인 pre-training 작업임이 입증되었다.(paper)
ImageNet에서 fine-tuning을 시켰을때 이러한 pre-training model이 5% 이상의 성능 향상이 있었고, 이는 SOTA 모델들의 전반적인 성능을 향상시켰다.
BiT(2019), ViT(2020)는 "noisy label" JFT-300M dataset의 class를 예측하기 위한 pre-training model을 통해 광범위한 transfer benchmarks set에서 큰 이점을 입증했다.
💡 참고로 gold label data는 사람이 수작업으로 label을 지정한 data로 그 정확도가 매우 높지만, 많은 데이터를 확보하긴 어렵다는 단점이 있다. 반대로 noisy label data는 크롤링이나 기타 자동화된 방법으로 label data를 확보한 것으로 정확도는 낮아도 많은 양의 데이터를 얻을 수 있다.
아래 사진을 noisy label data의 예시로 자세히 보면 cat이라고 label되어있지만, 실제로는 cat(clean cat)이 아닌 jasmine이나 전혀 다른 noise도 껴있다.
결국 제한된 개수의 supervised "gold-labels"로 부터의 학습과 실질적으로 무제한의 raw text "noisy-labels"로 부터의 학습에서 중간지점을 잘 찾아야 할 것이다.
"gold-label"을 이용한 방식은 1000개의 클래스에 대해서, "noisy-labels(raw text)"를 이용한 방식은 18291개의 class에 대해 supervision을 수행한다.
Natural language는 그 generality를 통해 훨씬 더 광범위한 visual concepts을 표현할 수 있고, 그러므로 supervised learning을 더 잘 할 수 있다. 두 접근 방식 모두 softmax classifiers를 사용하여 예측을 수행하며 dynamic output을 위한 메커니즘이 없다. 이로 인해 유연성이 크게 저하되고 "zero shot" 기능이 제한된다.
Weakly supervised models 과 natural language에서 직접 image representation을 학습하는 최근 연구의 가장 큰 차이점은 규모다. 2018,19에 연구된 모델은 수백만에서 수십억개의 이미지에 대해 몇 년 동안 accelerator moeld을 학습한 반면, VirTex, ICMLM 및 ConVIRT는 1 ~ 20만 개의 image에 대해 몇 일간 accelerator model을 학습시켰다.
CLIP은 ConVIRT와 마찬가지로 natural language에서 직접 image representation을 학습하는 방식을 채택하였다. 다만 그 규모를 엄청나게 키웠는데, 40억개의 (image, text) pairs dataset을 이용하였다.
(인터넷으로 부터 새로 만든 데이터셋, 참고로 ConVIRT는 medical image로 학습)
CLIP은 GPT 계열과 유사하게 다양한 dataset의 여러 task(OCR, action recognition, geo-localization 등)를 수행할 수 있게 학습된다.
실제로 30개 이상의 datasets에 대해서 zero-shot transfer performance를 측정했을때, 이전의 task-specific supervised models과 비교하여도 경쟁력이 있었다.
CLIP은 공개된 최고 성능의 ImageNet 모델을 능가하였고, 동시에 계산 효율성 역시 더 좋다.
우리는 또한 제로샷 CLIP 모델이 동등한 정확도의 supervised ImageNet 모델보다 훨씬 더 강력하다는 것을 발견했는데, 이는 task-agnostic 모델의 zero-shot 평가가 모델의 기능을 훨씬 더 대표한다는 것을 시사한다.
2. Approach
CLIP는 Image Encoder와 Text Encoder를 공동으로 훈련시켜 (image, text) 훈련 예제의 정확한 쌍을 예측한다. 테스트 시간에 학습된 text encoder는 target data의 class name 또는 description을 포함함으로써 zero shot linear classifier를 합성한다.
2-1. Natural Language Supervision
CLIP의 핵심 접근 방식은 text의 supervision으로부터 image의 perception을 학습하는 것이다.
앞서 말했듯, 이러한 학습 방식은 새로운 아이디어는 아니지만 연구에 따라서 그 용어가 서로 다르게 불렸다.
text,image 쌍의 데이터로부터 이미지의 visual representations을 학습하는 방식이 소개된 다양한 논문에서 이를 unsupervised, self-supervised, weakly supervised 그리고 supervised라고 불린다. (supervised와 unsupervised는 심지어 모순되기까지 한다.)
이러한 학습 방식은 결국 natural language를 training signal로서 이해하는 것이 핵심이기 때문에 CLIP에서는 이를 "natural language supervision"으로 부른다.
선행 연구들은 topic modeling과 n-gram 표현을 사용할 때 natural language의 복잡성 때문에 어려움이 있었지만, deep contextual representation learning은 이 풍부한 supervision source를 효과적으로 활용할 수 있는 도구가 있음을 제시한다.
자연어로부터의 학습(natural language supervision)은 다른 훈련 방법보다 몇 가지 장점이 있다.
1. 일반적으로 image classification을 위한 crowd-sourced labeling보다 natural language supervision을 scaling하는것이 훨씬 쉽다. 이는 "gold label" N개 중 하나를 투표하는 것과 같은 기존의 "machine learning compatible format"으로 특별한 annotation을 필요로 하지 않기 때문이다. 대신, 자연어에 작용하는 방법은 인터넷상의 방대한 양의 텍스트에 포함된 supervision으로 부터 수동적으로 배울 수 있다.
2. 자연어로부터의 학습은 representation을 "단순히 학습"하는 것이 아니라 representation을 다른 language와 연결한다는 점(word2vec)에서 zero-shot transfer 역시 가능하게 한다. 이는 대부분의 unsupervised 혹은 semi-supervised learning 방식보다 훨씬 더 중요한 이점이 있다. 이에 대해서는 뒷부분에서 더 자세하게 다룰 것이다.
2-2. Creating a Sufficiently Large Dataset
기존의 연구들은 주로 세 가지의 데이터셋을 사용하였다.
- MS-COCO : 높은 품질의 crowd-labeled dataset이지만 10만개 정도의 이미지
- Visual Genome : 높은 품질의 crowd-labeled dataset이지만 10만개 정도의 이미지
- YFCC100M : 다양한 품질의 1억장의 이미지 → (쓸만 한 것을) 필터링하면 600 ~ 1500만개 정도 (ImageNet과 비슷)
다른 Computer Vision system은 최대 35억 개의 인스타그램 사진(paper)에 대해 훈련되는 것을 고려하였을때, 위의 데이터셋들은 그 크기가 너무 작다.
Natural language supervision의 힘은 인터넷에서 공개적으로 사용할 수 있는 수많은 양의 데이터로부터 온다. 기존의 데이터셋은 이러한 가능성을 적절하게 반영하지 못하기 때문에, CLIP에서는 인터넷의 다양한 소스에서 수집된 4억개의 (image, text) 쌍 데이터셋을 구성했다.
가능한 한 광범위한 visual concept을 다루려고 시도하기 위해, 우리는 텍스트에 500,000개의 쿼리 세트 중 하나가 포함된 구성 프로세스의 일부로 (이미지, 텍스트) 쌍을 검색한다. 1 쿼리당 최대 20,000개(이미지, 텍스트) 쌍을 포함하여 대략적으로 결과를 class- balancing한다.
이때, 기본 쿼리 목록은 영어 버전의 Wikipedia에서 100번 이상 나오는 모든 단어다.
결과적으로 최종 dataset은 GPT-2를 학습하는 데 사용되는 WebText 데이터 세트와 유사한 총 단어 수를 가지고 있다. 우리는 이 데이터 세트를 WIT (WebImageText)라고 부른다.
2-3. Selecting an Efficient Pre-Training Method
Computer vision systems의 SOTA 모델들은 매우 큰 연산을 필요로 한다.
ResNeXt101-32x48d는 19개의 GPU로 몇 년동안 학습시켰고, Noisy Student EfficientNet-L2는 33개의 TPU로 몇 년동안 학습시켰다. 이 두 모델 모두 ImageNet 데이터의 1000개 class만을 예측하도록 train되었다는 점을 고려할때, natural language에서 visual concept을 학습하는 것은 힘들어보인다. 따라서 natural language supervision을 성공적으로 확장하기 위해서는 training efficiency가 핵심이다.
VirTex와 유사한 CLIP의 초기 접근 방식은 이미지의 caption을 예측하기 위해 image - CNN과 text - transformer를 처음부터 공동으로 훈련시켰다. 그러나 이 방법을 효율적으로 확장하는 데 어려움이 있었다. 아래 그래프를 보면 transformer language model이 동일한 text의 훨씬 간단한 baseline인 bag-of-words 인코딩보다 3배 더 느리게 ImageNet 클래스를 인식하는 것을 학습한다는 것을 보여준다.
Transformer base보다 Bag of Words를 활용한 prediction이 zero-shot ImageNet Accuracy에서는 3배 더, Bag of words + contrastive objective(CLIP)를 사용했을때는 4배 더 효과적이다.
VirTex와 CLIP 둘 다 각 이미지에 해당하는 text의 정확한 단어를 예측하는 것이 목표다. 그러나 하나의 이미지에 대해 주어지는 다양한 설명, 주석 등으로 인해 정확한 text를 맞추는 것은 굉장히 어려운 일이다.
또한 image에 대한 contrastive representation learning의 최근 연구에서 contrastive objectives를 사용하는것이 predictvie objectives를 사용하는 것 보다 representation을 더 잘 학습한다고 한다.
다른 연구에서는 이미지 생성 모델이 고품질 이미지 representation을 학습할 수 있지만 동일한 성능을 가진 contrastive 모델보다 10배 이상 많은 컴퓨팅이 필요하다는 것을 발견했다.
이에 동일한 bag-of-words encoding을 사용하면서, objective만 contrastive objective로 바꿨더니 위 그림에서 볼 수 있듯 ImageNet으로의 zero shot transfer 속도가 4배 더 향상되는 것을 볼 수 있다.
N개의 (image, text) 쌍이 주어진 경우 CLIP은 N개의 image와 N개의 text 전체 조합 중 실제로 발생 가능한 쌍을 예측하도록 pre-train된다. 조금 더 쉽게 말하면, image encoder과 text encoder를 공동으로 training시켜 N^2 - N 개의(N개는 실제 pair이므로 빼준다) 서로 다른 임베딩 쌍의 cosine similarity를 최소화한다는 것이다. 또 동시에 N개의 실제 pair에 해당하는(위 그림에서 파란색 부분) 임베딩 쌍의 cosine similarity는 최대화하는데, 이러한 방식으로 multi-modal embedding space를 학습한다.
이렇게 구한 cosine similarity score에 대해 symmetric cross entropy loss를 optimize한다.
코드로 이해하면 아래와 같다.
multi-class N-pair loss을 활용한 deep metric learning에서 이렇게 batch를 구성하는 technique과 objective는 2016년 처음 도입되었고, contrastive representation learning에 InfoNCE를 loss function으로 사용한 것은 2018년 이후 대중화 되었다. 2020년에는 medical image의 representation learning을 위한 contrastive (text, image) representation 학습에 적용되었다.
CLIP은 당연하게도 pre-training dataset이 굉장히 크기 때문에(4억개) overfitting은 큰 문제가 아니다. 또한 아키텍쳐 역시 이전 contrastive representation learning(2020)에 비해 많이 단순화되었다. CLIP ImageNet weights로 image encoder를, 혹은 pre-trained weights로 text encoder를 초기화하지 않고 scratch로 처음부터 training한다.
기존에 사용되던 contrastive embedding space와 representation 사이의 non-linear projection을 사용하지 않는다.
대신, linear projection을 사용하여 각 encoder의 representation을 multi-modal embedding space로 연결한다.
non-linear projection 대신 linear projection를 사용하는 것은 효율성에서는 차이가 없는 것으로 보이나, non-linear projection는 self-supervised representation learning methods로서만 사용할 수 있는것으로 추측한다.
CLIP의 pre-training dataset의 많은(image,text) pair는 single sentence에 불과하기 때문에 text에서 single sentence를 균일하게 sampling하는 text 변환 함수 tu를 제거(2020에서 소개됨)한다.
또한 image 변환 기능 tv는 단순화시키는데, CLIP의 training에서 사용된 유일한 data augmentation은 크기가 조정된 이미지에서 무작위로 정사각형 크기로 crop하는 것이 전부다.
2-4. Choosing and Scaling a Model
- Image Encoder로서는 RseNet-50과 ViT를 사용한다.
- 둘 다 아주 약간의 수정 외에는 기존 모델을 거의 그대로 사용하였다.
- Text Encoder로는 transformer를 사용했는데, 8개의 헤드와 12개의 layer를 사용하였고 max sequence length는 76으로 제한하였다.
- CLIP는 text encoder의 용량에 덜 민감하기 때문에, RseNet의 계산된 너비 증가에 비례하도록 모델의 너비를 스케일링할 뿐 모델의 깊이는 스케일링하지 않는다.
2-5. Training
- CLIP에서는 5 종류의 ResNets과 3 종류의 ViT를 훈련시킨다.
- 각각의 모델은 32 epoch로 훈련시키고, Adam Oprimizer(with decoupled weight decay regularization)를 사용한다.
- Cosine schedule을 사용하여 학습률을 감소시킨다.
- 초기 하이퍼파라미터는 1epoch마다의 grid search와 random search의 조합을 사용하도록 설정되었다.
- mini batch의 크기는 32,768을 사용하였다.
- 훈련을 가속화하고, 메모리를 절약하기 위해 Mixed-precision을 사용하였다.
- 추가 메모리 절약을 위해 gradient checking point, half-precision Adam statistic 등이 사용되었다.
가장 큰 ResNet 모델인 RN50x64는 592개의 V100 GPU로 18일이 걸렸고, 가장 큰 ViT는 256개의 V100 GPU로 12일이 걸렸다.
댓글