오늘은 CLIP 논문 리뷰를 가져왔습니다.
해당 논문은 2021년에 OpenAI에서 발표한 논문입니다.
Learning Transferable Visual Models From Natural Language Supervision
저자 : Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, Sandhini Agarwal, Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, Gretchen Krueger, Ilya Sutskever
[1] Introduction & Background
1) Image Classification
컴퓨터 비전 (CV) 분야의 Task 중 하나인 Image Classification이란 입력 이미지를 사전에 정의한 클래스 Label 중 하나로 분류하는 문제를 얘기합니다. 일반적으로 Input을 이미지로 받고 Output을 클래스 Label로 하는 지도학습을 적용하는 편이구요. 바로 아래 이미지처럼 말이죠.
2) Traditional Supervised Image Classifiers
전통적인 Image Classifier 모델들은 대규모 데이터셋을 기반으로 Pre-training 시킨 후에 학습된 모델을 수행할 도메인의 이미지로 Fine-tuning 시켜서 활용할 수 있습니다. 바로 아래 이미지처럼 말이죠.
이러한 경우에 Down Stream Task에 활용할 때마다 우리가 원하는 도메인 이미지와 Label 쌍의 데이터셋을 구축해서 Fine-tuning 시켜줘야 하는 번거로움이 있습니다. 일반적으로 사용되지 못하고 강건하지 않다는 단점이 존재한다고 할 수가 있겠네요. 그리고 새로운 데이터셋을 구축하기 위해서 상당히 많은 인력과 비용이 요구된다는 문제점 또한 존재합니다. OpenAI에 따르면 ImageNet Dataset (14M Images, 22,000 Object Categories)을 구축할 때 약 25,000명 이상의 인력 자원이 필요했다고 합니다. CLIP에서 사용된 이미지는 약 4억개의 이미지 데이터셋을 사용하였는데 얼마나 큰 인력 자원이 필요할지..
따라서 OpenAI에서 Fine-tuning이 필요 없는 일반화 성능이 높고, 이미지 수집 및 정답 레이블 생성 등 데이터셋 구축에 적은 노력이 들며, 벤치마크 데이터셋 외에 여러 현실 데이터셋에서도 좋은 성능을 보이는 강건한 모델을 구축하려고 하였고 이 모델이 CLIP (Contrastive Language-Image Pre-training)입니다. 이제 CLIP에 대해 씹고 뜯고 맛보고 즐겨보도록 하죠.
[2] Approach
1) Using Image - Text Pair
기존 Image Classification 모델은 이미지의 라벨 정보만 학습하고 의미론적 정보를 학습하지 못한다는 단점이 있습니다. 이미지와 라벨을 쌍으로 모델에 입력하기 때문에 당연한 결과라고 할 수 있겠죠. 반면에, CLIP은 이미지와 이미지를 설명하는 텍스트까지 결합해 Image-text Pair를 입력으로 사용합니다. 아래 이미지처럼 말이죠. 따라서 이미지와 언어에 대한 Representation을 함께 학습해 일반화된 특징을 학습할 수 있게 됩니다.
2) Creating a Sufficiently Large Dataset
그래서 CLIP 저자들은 인터넷으로부터 레이블링 작업이 필요없는 약 4억 개의 Image-Text Pair 데이터를 수집하였습니다. 구체적으로는 검색창에 'Cat Image'를 검색하고 나오는 이미지 중에 약 2만 개 정도 사용했다고 하네요. 다양한 분야의 텍스트 및 이미지 정보를 수집하기 위해 총 50만 건의 검색을 수행했다고 합니다. 위에서 얘기했던 내용이기도 한데 ImageNet dataset, 약 1,400만개의 Image dataset을 구축하기 위해서 약 25,000명의 인력이 필요했는데 이렇게 데이터를 수집하면 라벨링을 할 필요도 없고 데이터셋을 일일이 구축할 필요도 없고 인력도 필요 없으니 정말 혁신적이지 않나요? 정말 세상엔 천재들이 참 많은 것 같습니다.
3) Selecting an Efficient Pre-training Method
Image-Text Pair를 사용한 Pre-training 기법은 이전부터 존재했습니다. 예를 들어 Image Captioning같은 Task에서 말이죠. OpenAI에서도 Transformer-based 방법과 BOW(Bag of Words)-based 방법을 사용했었는데 이러한 경우에 모델 사이즈가 크며 학습 및 예측 시간이 길어 비효율적이라는 문제점이 존재합니다. 그래서 CLIP에서는 기존의 방식보다 효율적인 Contrastive Learning을 적용해 Pre-training을 진행하였습니다.
Contrastive Learning이란 데이터 내의 Positive & Negative Samples 간의 관계를 학습하는 작업을 얘기합니다.
샘플을 각각 Embedding하여 Positive Sample 간 유사도는 크게, Negative 간 유사도는 작게 설정해 학습을 진행합니다. 이는 Zero-Shot Prediction에서도 상대적으로 가장 우수한 성능을 보였다고 합니다.
# Zero-Shot Prediction : 한 번도 본 적 없는 특정 Down-Stream Task의 데이터셋에 대해 예측 수행
[3] Method
1) Contrastive Pre-training
지금까지 어떤 식으로 CLIP이 데이터셋을 구축하고 어떻게 Pre-training 시켰는지 간단히 알아보았는데요. 이제 방법론을 살펴보면서 좀 더 구체적으로 알아보도록 하겠습니다. 그 중 첫째는 Contrastive Pre-training입니다. 이 단계에서는 배치 단위로 이루어진 이미지와 텍스트 데이터셋을 각각 인코더에 통과시켜 임베딩 벡터를 산출합니다. Image Encoder로는 Modified ResNet과 Vision Transformer를 사용하였고 Text Encoder로는 Transformer를 사용하였다고 합니다. 각각의 이미지 혹은 텍스트를 인코더에 입력하고 가중치 행렬과 행렬곱을 수행한 뒤 L2 정규화 과정을 수행합니다. 텍스트 인코더는 마지막에 EOS 토큰을 사용하였는데 EOS 토큰에 모든 텍스트 정보로 학습시킨다고 합니다. 결과적으로 인코더에서 각각 이미지와 텍스트의 특징 벡터를 추출한다고 볼 수 있겠습니다.
학습시키기 위해서는 정답이 필요합니다. 따라서 아래 이미지처럼 이미지와 텍스트 벡터간의 내적을 통해 코사인 유사도를 계산하고 Pair에 해당하지 않는 이미지 혹은 텍스트는 서로 다르다는 전제 하에 cross-entropy loss를 계산합니다. 총 N^2의 벡터 행렬이 생성될테고 N개는 positive pair, (N^2 - N)개는 negative pair이 될 것이며 이미지 기준으로 본다면 각 행에 대해서, 텍스트 기준으로 본다면 각 열에 대해서 loss를 계산합니다. 이러한 방식으로 각 이미지, 텍스트는 n개의 이미지, 텍스트의 loss 값을 알게 되고 이 두개의 loss를 평균내어 최종 loss를 계산하는 방식으로 유사도를 계산합니다.
2) Create Dataset Classifier from Label Text
두 번째로 텍스트에 대한 데이터셋을 구성할 때 단순 단어가 아닌 'a photo of a (object)' 에 해당하는 구로 변환해서 사용했다고 합니다. 단어에서 구로 변환하여 인코더를 입력했을 때 정확도가 1.3 정도 향상되었다는 실험 결과를 내었습니다. 아마 텍스트 라벨 중에 그냥 단어보다 문장이나 구의 비율이 많아서 그렇지 않을까 생각하고 있습니다. 이후 학습된 텍스트 인코더에 통과시켜 텍스트에 대한 Embedding Vector값을 산출합니다.
3) Use for a Zero-Shot Prediction
세 번째로 예측하고자 하는 이미지를 학습된 이미지 Encoder에 통과시켜 이미지 Embedding Vector값을 산출합니다. 텍스트 임베딩 벡터와 코사인 유사도를 계산해 상대적으로 높은 값을 갖는 텍스트를 선택하는 느낌이죠. 이 과정으로 별도의 Fine-tuning 없이도 처음 보는 이미지에 대해 예측이 가능합니다.
[4] Experiments
1) Zero-shot CLIP vs Zero-shot Image Captioning Model
CLIP 모델은 적은 데이터셋으로도 가장 높은 예측 정확도를 보였습니다. 그리고 Zero-shot Inference가 가능하기 때문에 일반화 성능이 높다고도 할 수 있겠네요.
2) Analysis of Zero-shot CLIP Performance
본 논문에서는 아래 이미지에 나와있는 이상의 Dataset에 대해 예측 정확도를 측정하였습니다. 27개의 데이터셋 중에 16개의 데이터셋에서 성능 향상을 이뤄냈고 StansfordCars와 같은 이미지 분류가 힘든 데이터셋에 대해서도 예측 정확도가 크게 향상된 것이 인상적이네요. 반면에, MNIST와 같은 이미지 데이터셋에서는 예측 정확도가 Logistic Regression보다도 낮았다고 합니다. 아마 CLIP 논문에서 MNIST와 같은 이미지 데이터셋 활용량, 빈도가 적어서 그렇지 않을까 생각하고 있습니다.
3) Robust on Natural Distribution Shift
아래 이미지는 CLIP의 강건함에 대한 자료입니다. ImageNet과 비교해서 왼쪽 그래프로 성능을 따져봐도 확실히 높은 정확도를 보이고 있습니다. 오른쪽 자료는 각각의 바나나 사진을 현실 이미지와 스케치 등 다양한 느낌의 이미지를 CLIP은 잘 인식하고 ImageNet은 잘 인식하지 못한다는 것을 알려주는 자료입니다. 이미지의 설명이 필요한 보통의 경우에는 ImageNet 데이터셋처럼 분명한 이미지만 있는 게 아니기 때문에 딥러닝 이미지 탐지 모델은 강건함을 필요로 합니다. 이러한 측면에서 CLIP은 아주 우수한 강건함을 가졌다고 할 수 있겠습니다.
[5] Conclusion
- 별도의 Fine-tuning이 필요 없는 일반화 모델
- 기존의 Image Classification 모델들은 Down Stream Task에 따라 Fine-tuning을 시켜주어 학습해야 했음
- 이러한 경우에 특정 도메인의 데이터셋을 새로 구축하고 다시 학습을 시켜야 하는 번거로움이 있음
- 이미지 수집 및 정답 Label 생성에 적은 노력이 드는 모델
- 검색을 통해 데이터셋을 구축했기 때문에 인적 노력이 많이 필요로 하지 않음
- 대량의 레이블링이 필요없는 데이터셋을 기반으로 구축해서 다양한 분야에 대해 학습이 가능
- 반면에, ImageNet 데이터셋은 14M의 이미지인데 25,000명 정도 인력이 쓰였음 (물론 이정도도 굉장히 큰 데이터)
- 벤치마크 데이터셋 외 여러 현실 데이터셋에서도 준수한 성능을 보이는 강건한 모델
- 기존 ImageNet은 사전학습에 사용된 이미지 데이터셋 말고 현실에 정말 있을 법한 아리까리한 이미지를 잘 분류하지 못하는 단점이 존재
- CLIP은 이미지의 느낌이 달라져도 준수한 예측 정확도를 보임
- Contrastive Learning 기반 사전학습을 통해 효율적으로 학습하였음
[6] Reference
https://arxiv.org/pdf/2103.00020
CLIP 논문 리뷰 포스팅은 특히 아래 유튜브를 참고하였습니다.
이해가 쏙쏙 잘 되도록 정리가 완벽한 영상이어서 감명받았습니다.
꼭 소개하고 싶었습니다.
https://youtu.be/dELmmuKBUtI?si=X3dIZseqTL6AAyII
'논문리뷰' 카테고리의 다른 글
[논문리뷰] ALBEF 논문 리뷰 (2) | 2024.07.17 |
---|---|
[논문리뷰] T5 (0) | 2024.07.15 |
[논문리뷰] XL-Net (0) | 2024.07.03 |
[논문리뷰] Transformer (0) | 2024.06.26 |
[논문리뷰] MT-DNN (0) | 2024.05.23 |