논문 링크: https://arxiv.org/abs/2103.00020
코드 링크: https://github.com/OpenAI/CLIP
CLIP이라는 모델이 소개된 유명한 논문이다. 논문 페이지가 꽤 길었다(48p). 수학적인 부분은 생각보다 적었다.
0. abstract
-기존 컴퓨터 비전 모델들은 category가 한정되어있었지만, clip 모델은 text와 image pair를 같이 학습함으로써 주어진 이미지가 어떤 text와 제일 유사한지 측정할 수 있다. zero shot 에서 resnet-50와 맞먹는 accuracy를 가진다.
1. introduction and motivating work
- NLP는 task-agnostic한 모델이 많다. 특정한 dataset없이 상용 가능하다.
- 그러나 CV에서는 standard한 dataset이 있다. NLP의 idea를 빌릴 수 있을까? 자연어를 이용해서 이미지 인식을 잘 할 수 있을까?
- 우리는 400m의 text-img pair를 만들었다.
- CLIP 모델은 bag-of-word 에서 최고의 모델보다 4배나 더 잘했다.
2. Approach
2.1 Natural Language Supervision
- 비슷한 다른 연구들이 없었던건 아니다. 다른 모델들은 자연어 지도였다.
- 자연어 지도는 dataset을 구하는게 쉽다. (scalable). representation을 언어와 연관시키면 zero-shot에도 더 잘 대응.
2.2 Creating a Sufficiently Large Dataset
- 여태까지의 dataset은 MS-COCO, Visual Genome, YFCC100M등이 있었다.
- CV의 dataset등이 3.5B임을 감안하면 작고, data의 질이 좋지 않다.
- 인터넷에는 img-text pair가 넘쳐난다.
- 우리가 새로 dataset을 만들었다 이름은 WIT(WebImage Text).
- 인터넷에서 img 긁어옴.
- wiki에서 100번 이상 나온 단어 500k가 들어가는 img-text 쌍만 추림
- 20k의 img-text쌍을 추가해서 class-balance를 맞춤.
2.3 Selecting an Efficient Pre- Training Method
- 1000개의 이미지 클래스를 위한 CV 모델이 19GPU year가 걸렸다.
- 그렇기 때문에 우리의 모델은 효율적인 훈련이 중요하다.
- 처음의 모델은 CNN + Transformer였지만 bag of word에서 너무 느렸다.
- 단 하나의 정답을 예측하지 않고 contrastive 한 훈련을 생각함. text전체에 대해서 예측해보았다.
- batch에 N개의 img-text쌍이 있으면 가능한 N*N 중에서 정답인 N개의 cos similarity를 증가, N*N-N의 오답에 대해서는 감소.
2.4 Choosing and Scaling a Model
- 이미지 인코더에 resnet-50 혹은 Vision Transformer를 응용해서 사
- 텍스트 인코더는 Transformer(12 layers, 512 wide, 8 attention heads ... )
- Tan & Le 의 방법으로 CV scaled(?)
2.5 Training
- hyperparameter 설명
3. Experiments
3.1 Zero-Shot Transfer
- CLIP 은 img와 text가 어느정도 적합한 pair인지를 측정하지, 생성하는 모델은 아니다.
- 모든 text에 대해서 제일 확률이 높은걸 고르게 함으로써 zero-shot 측
- CLIP과 Visual-N-Gram 비교(Q: what is exactly Visual N-Grams)
3.1.4 Prompt Engineering and Ensembling
- 대부분의 이미지 분류의 클래스는 단순한 일련번호로 취급된다.
- 이는 이름이 가지고 있는 정보를 무시하는것이며, 다의어에 취약하고, 한 이미지가 여러 class를 가질 수 있음을 무시한다.
- 그러므로 우리는 "a photo of {label}" 으로 프롬프트 엔지니어링을 했다.
- 그랬더니 결과가 좋아졌다. (Imgnet +1.3%)
- 앙상블 학습도 시도해보았다. 다른 context 프롬프트를 시도해보았다.
- 80종류의 프롬프트로 앙상블 시도 => (ImgNet + 3.5%)
3.1.5 Analysis of Zero-Shot CLIP Performance
- CLIP과 ResNet-50을 여러 Dataset을 통해서 비교해본다.
- CLIP이 general한 dataset에서는 근소우위다. 그러나 특정한, 추상적인, 복잡한 dataset에는 약하다.
- Zero shot과 Few shots를 비교해보았다.
- CLIP의 zero shot이 4shots와 거의 유사한 성능을 보인다.
- 왜냐하면 zero shot은 img와 text가 소통할 수 있지만, few-shots은 예시에서 직접 추론 해야하기 때문이란다.
- 이를 해소하기 위해서 CLIP의 zero-shot 분류를 few-shot의 weight으로 쓸 수 있다. (zero shot transfer)
- CLIP의 효율성을 체크해보았다. (zero-shot의 성능을 내기 위해서 few shot logistic regression이 필요했던 클래스 당 예시의 수)
- Zero-shot CLIP vs Linear Probe CLIP
- zero shot이 전반적으로 10-25p 정도 낮다.
- Deep Learning은 계산 사이즈와 dataset 사이즈가 클수록 성능이 좋아진다. CLIP에 대해서도 실험해보았다.
- 컴퓨팅 성능이 올라갈수록 에러가 줄어들더라...
3.2 Representation Learning
- Fitting a linear classifier vs end-to-end classifier를 비교해봤다. 우리는 linear classifier만 fit 했다.
- end-to-end tuning을 하면 robust하지 않게 된다.
- CLIP 모델을 쓰면 computer efficiency 가 올라간다.
3.3 Robustness to Natural Distribution Shift
- DeepLearning은 ImageNet dataset에서 인간보다 뛰어난 성능을 보였지만, 아직 실수를 많이 한다.
- 거짓 상관관계를 믿는 경우가 많다.
- CLIP 모델은 자연어를 사용하고, zero shot 성능이 뛰어나므로 이에 대한 새 관점을 제공할 수 있다.
- Taori et al.(2020)은 natural distribution shift와 synthetic distribution shift를 구분했다.
- natural distribution shift: 자연적인 데이터셋 내의 shift. 예를 들어 동물 데이터셋이면 고양이 안에 검정 고양이, 흰 고양이 데이터가 real world에서 뽑힐 수 있다.
- synthetic distribusion shift: 인위적으로 조작한 이미지. robustness를 위해서 고양이 사진을 조작한 것.
- Effiective Robustness : dataset 내의 분포에 Robust함
- Relative Robustness: dataset 바깥에 위치한 data에 대해서 Robust함
- 각 dataset에 customized한 zero-shot CLIP은 Robustness에서 이점이 있었다.
- 그러나 완전 지도학습에서는 이점이 없었다. 적당한 few를 찾아야 하지만 그것은 또 다른 labor다.
4. Comparision to Human Performance
- 실제 인간 5명을 데리고 애완동물 dataset으로 비교해보았다. 처음 보는 37개의 개의 품종을 맞추어야 했다.
- 인간은 zero shot : 54% => one shot: 76%로 대폭 상승.
- CLIP의 one shot은 그정도의 향상이 없다. 어딘가 발전할 부분이 있을 것이다.
5. Data Overlap Analysis
- 여러 Dataset을 다룰 때, 겹치는 data가 있는지 걱정될 때가 있다.
- 최악의 경우, test dataset이 그대로 training dataset에 흘러들어갈 수 있다.
- 데이터를 처리하기 전에 한번 더 중복이 있는지 체크하는 방법이 있지만, 그것 역시 비용이다.
- 그러므로 오버랩 비율에 따른 모델 성능의 하락을 측정해보았다.
6. Limitations
- CLIP은 몇몇 복잡한 이미지들을 다루기 어려워한다.
- CLIP은 새로운 과제(사진 속 차의 거리 측정)나 추상적 과제(물건 갯수 세기)에 약하다.
- CLIP 내부의 classifier에 한정된 분류만 가능
- CLIP이 훈련받은 img-text쌍은 필터링되지 않아서 사회적 편견이 반영되었을 수 있다.
7. Broader Impacts
- CLIP은 무작위적 이미지 분류 작업에 능하다.
- 사용자가 원하면 학습 없이 새로운 classification을 만들수 있다
- 이미지 서치에 사용될 수 있다
- FairFace dataset을 이용한 CLIP의 편향 검증.
- surveliance 관련해서 coarse classification과 fine classification을 진행
- coarse classification: 이미지 전체가 무엇인지 분류하는 것
- fine classification : 이미지의 국소적인 부분에서 해당 feature가 있는지 없는지 분류하는것(주차장 사진 구석에 사람이 있는지 없는지 분류)
- 유의미한 결과는 없었다.
- 유명인이 찍힌 dataset으로도 실험해보았다. GCR(Google Celebrity Recognition)보다는 덜 하지만, task-specific한 data없이 zero-shot만으로도 59.2%(100 class), 43.3%(1k class) 의 정확도를 보여줬다.
- 이미 존재하는 감시 AI와 비교했을때 CLIP은 경쟁력이 낮다.특히 다수의 사람을 분류할때는 더욱 낮다.
8. Related Works
- 관련 논문들 설명...
9. Conclusion
- NLP의 task-agonistic, web-scale, pre-training한 속성을 다른 domain에서 적용시켜보았다.
* Questions:
- SOTA : State Of The Art
- OCR: Optical Character Recognition (광학 문자 인식)
- task-agonistic: task와 무관한 (agonistic: 불가지론의)
- auto regressive : 자가회귀, 자기 자신의 출력을 입력 데이터로 해서 다음 출력 계산
- masked language model : 언어모델 중에서 입력의 일부를 mask하고 이를 추측하는 훈련 모델
- Proof of Concept(개념증명): 기존에 없던 신기술/개념을 도입하기 위한 실행 가능성/유효성 입증 과정
- false positive rate : 또다른 수학 개념 정리가 필요할듯 하다...
- Clopper-Pearson confidence interval: 구간 (PL, PU)는 p의 양측 100(1 – α)% 신뢰 구간이라는데...
* 이 둘은 따로 통계 용어로서 정리할 필요가 있다.