본문 바로가기
논문리뷰

[논문리뷰] CoCa 논문 리뷰

by 단깅수 2024. 8. 6.
728x90

오늘은 CoCa 논문 리뷰를 가져왔습니다.

해당 논문은 2022년에 CVPR에서 발표된 논문입니다.

CoCa: Contrastive Captioners are Image-Text Foundation Models

저자 : Jiahui Yu, Zirui Wang, Vijay Vasudevan, Legg Yeung, Mojtaba Seyedhosseini, Yonghui Wu

[1] Background

1) Vision & Vision-Language Foundation Model

Vision or Vision Language Task를 위한 모델은 모델 구조에 따라 3가지 유형이 존재합니다.

  1. Single - Encoder Model
    •  ImageNet, Instagram 등 Image Classification Dataset을 통해 단일 Image Encoder를 사전학습
    •  Image Classification, Segmentation 등 학습된 Image Encoder로 Vision Recognition Task에 적용
    •  대표적으로 CoAtNet, R-CNN 등의 CV Model 이 포함됨
    •  Loss Function : 정답 y의 분포와 모델의 예측 분포 q(x) 간의 차이를 비교 ( Cross - Entropy Loss )
    •  이미지 라벨에 매우 의존하고 Vision과 Language를 모두 포함하는 Multimodal Task에는 적합하지 않음 !
  2. Dual - Encoder Model
    •   Web에서 수집한 Image Text Pair 데이터셋을 통해 2개의 Encoder를 사전학습
    •   각 Encoder에서 Visiul / Textual Representation을 학습해 Cross - Modal Alignment Task에 적용
      •   Zero Shot Image Classification, Image - Text Retrieval (탐색) 등
    •   대표적으로 CLIP, ALIGN, Florence 등의 모델이 있음
    •   Loss Function : 샘플링된 Batch 내에서 Image와 Text의 표현에서 정답 샘플들 간 거리를 최소화하고 나머지 샘플들과는 거리를 최대화하는 방향으로 학습 ( Contrastive Loss )
    •   하지만, Image와 Text의 융합된 표현을 학습하지 못해 Joint Vision Language Understanding Task에 직접적인 적용 불가능 !
      •  각 모달리티의 특징을 별도로 인코딩하고 학습하기 때문에 두 정보를 하나의 통합된 표현으로 만들어 내지는 못한다는 의미로 이해하시면 되겠습니다 !
  3. Encoder - Decoder Model
    •   생성 Task에서의 Vision과 Multimodal Representation을 학습하기 위해 Generative 사전학습
    •   Encoder에서 Image와 Text 간 표현을 학습하고 Decoder에서 LM loss나 PrefixLM 등을 적용
    •   VQA, Image Captioning 등 Vision Language Understanding Task에서 사용가능한 표현을 생성
    •   대표적으로 SimVLM, OFA 등의 모델이 있음
    •   Loss Function : 생성 Task Loss 와 비슷하게 표현을 생성하는 조건부 확률 Likelihood를 최대화하도록 학습
    •   하지만, 텍스트만을 가지고 이미지를 생성하거나 이미지만을 가지고 텍스트 특징을 정렬하는 데는 특화되어 있지 않음 !

이렇듯 CoCa에서는 3가지 Foundation Model의 각각의 문제점을 해결하고자 각 모델들의 특징을 모두 결합한 새로운 모델 구조를 소개하였습니다.


[2] Method

 

1) Encoder

CoCa는 기본적으로 Encoder - Decoder 모델 구조를 가지고 있습니다. Encoder 부터 살펴보자면 CoCa 모델의 인코더는 하나의 통합된 형태로 이미지와 텍스트 모두를 처리할 수 있습니다. 이미지는 Vision Transformer를 통해 패치로 분할되고 각 패치는 Transformer 인코더를 거쳐 고차원 특징 벡터로 변환됩니다. 이러한 벡터들은 이미지의 다양한 영역과 관련된 시각적 정보를 포함합니다. 텍스트도 토큰화된 후 각 토큰에 대해 토큰 임베딩이 적용됩니다. 이 임베딩 벡터들은 Transformer 인코더를 거쳐 문맥을 고려한 언어적 특징으로 변환됩니다.

 

 인코더에서 이미지와 텍스트의 특징 ( 임베딩 벡터 ) 을 함께 입력으로 받으면 Cross - Attention 매커니즘으로 한 모달의 특징이 다른 모달리티에 어떤 영향을 미치는지 학습합니다. 좀 더 자세히 보면, 각 이미지 특징 벡터는 텍스트의 각 토큰과 관련성을 평가합니다. 이미지의 어느 특정 부분이 텍스트의 어떤 단어와 관련이 있는지를 알기 위해서 이러한 과정이 필요합니다. 텍스트의 각 토큰또한 어느 이미지 패치와 관련이 있는지 정보를 교환해 양방향으로 이해도를 높입니다.

 

 Encoder에서 Cross - Attention 매커니즘의 결과로 이미지와 텍스트의 특징을 서로 통합한 특징 벡터를 생성합니다. 이러한 특징 벡터는 이미지, 텍스트 간 깊은 의미적 연관성을 포함하고 있으며 이를 바탕으로 Decoder에서 정확하고 자연스러운 캡션을 생성할 수 있도록 합니다.

 

2) Decoder

하지만 기존의 Encoder - Decoder 모델과는 다르게 두 가지 Decoder ( Unimodal, Multimodal ) 를 사용합니다. 이를 논문에서는 Decoupled Text Decoder 구조를 활용했다고 언급합니다. 두 Decoder를 사용하는 만큼 두 가지 Loss Fuction을 결합시켜 계산하는데요. 이미지에 대한 정확한 캡션을 생성하고, 동시에 이미지와 캡션 간 정확한 매칭을 학습하기 위해 두 가지 주요 목표 ( Captioning Loss, Contrastive Loss ) 를 달성하려고 합니다.

  • Captioning Loss : 이미지에 대한 캡션 생성 과정에서 이미지에 대한 정확하고 자연스러운 텍스트를 생성하도록 모델을 최적화하는 역할, Image를 patch로 잘라서 Token Embedding 값 사용
  • Contrastive Loss : 이미지와 관련된 캡션 / 이미지와 관련 없는 캡션을 구분하는 능력을 향상시키기 위해 사용되고 이미지와 캡션 간 정확한 의미적 매칭을 학습하게 하는 역할, 각 이미지마다 Single Embedding ( Token Embedding X )을 사용

이 두 손실 함수는 서로 다른 목표를 가지고 있기 때문에 단일 디코더로 구성하기에는 효과적으로 달성하기 어렵기 때문에 Decoupled Text Decoder 구조를 도입해 각 목표에 최적화된 디코더를 별도로 구성하였습니다. 먼저 Multimodal Decoder부터 보면 이미지와 텍스트 통합 벡터를 입력으로 받아 이에 대한 자연스러운 캡션을 생성하는, 기존의 저희가 알던 Decoder의 일반적인 형태입니다. 예를 들어 인코더가 '고양이가 창가에 앉아 있는' 사진을 전달하면 Multimodal Decoder는 'A cat sitting by the window'와 같은 적절한 캡션을 생성합니다.

 

 반면, Unimodal Decoder는 텍스트 데이터만을 처리하며, Contrastive Loss 를 사용해 이미지와의 의미적 유사성을 강화합니다. 그래서 Zero Shot Image Captioing Task에서 텍스트 간 유사도를 파악해 새로운 단어의 유사한 캡션 문장, 다양한 문장을 생성가능하게 합니다. 예를 들어 인코더가 '고양이가 창가에 앉아 있는' 사진을 전달하면 Unimodal Decoder는 'A cat is enjoying the sun by the window', 'A pet cat sitting beside the window'처럼 다양한, 새로운 텍스트 캡션을 생성하고 이 문장들이 이미지와 얼마나 잘 매칭되는지 평가해 이상적인 텍스트 - 이미지 쌍을 학습, 생성합니다.

 

 

 추가로, CoCa는 Attention Pooler라는 모델이 다양한 Down Stream Task에 효과적으로 대응할 수 있도록 설계된 중요한 요소가 있습니다. Attention Pooler는 먼저 n개의 learnable query ( Attention 매커니즘의 Query와 유사 )를 사용합니다. 이러한 query를 통해 다양한 유형의 정보를 추출할 수 있으며 다양한 길이의 임베딩 벡터를 생성할 수 있도록 합니다. 따라서, Captioning Loss, Contrastive Loss 각각 다른 길이의 임베딩 벡터를 활용해 다양한 Task에 적합시킬 수 있는 모델을 구현한 겁니다. 신기하네용

 

 CoCa 모델은 또한, Decoupled Decoder 구조를 통해 불필요한 계산 오버헤드 없이 효율적인 연산을 수행할 수 있다는 점도 성과 중 하나입니다. 모델이 만약 하나의 디코더만을 사용해 Image Captioning, Contrastive Learning의 두 작업을 동시에 처리한다고 했을 때를 생각해보겠습니다. 이미지, 텍스트 데이터를 한 번에 처리하려면 모델은 매번 전체 데이터셋에 대해 두 Loss를 계산해야 합니다. 이는 Epoch마다 수행해야 하는 계산량을 증가시키고 결과적으로 훈련 시간 또한 길어집니다. 그리고 디코더가 두 Task를 동시에 학습하려고 하면 Task에 최적화된 학습이 어려워질 수 있으며 자원 소모 증가, 과적합 위험 증가 등의 위험 요소가 동반됩니다. 하지만 CoCa는 Unimodal, Multimodal Decoder를 별도로 사용함으로써 각 디코더가 각각의 Task에 집중할 수 있도록 하여 불필요한 계산 오버헤드 없이 효율적으로 연산이 가능하도록 구현했다는 얘기입니다.

 

3) CoCa Architecture

 

 CoCa 모델은 ALIGN 모델과 동일하게 이미지 크기는 ( 288 x 288 ), 패치 크기는 ( 18 x 18 ) 로 구성해 한 이미지에 대해 총 256개의 Token으로 학습하였습니다. 가장 큰 크기의 모델은 ViT - giant Setup과 동일하고 총 파라미터 개수는 2.1B로 구성하였다고 합니다. 작은 크기의 Base, Large 모델도 구성하였습니다.


[3] Experiments

 학습한 Dataset은 ALIGN과 JFT-3B Dataset으로 Web에서 수집한 Alt-text Data와 라벨링된 이미지에 대해 모든 Label을 text로 간주하고 Scratch부터 ( 처음부터 ) 사전학습시켰습니다. 조금 더 쉽게 얘기하면 CoCa 모델이 이미지와 관련된 캡션 생성 Task를 수행하기 전에 웹에서 쉽한 대규모 이미지와 텍스트 데이터를 사용해 이미지를 어떻게 인식하고 이에 관련된 텍스트를 어떻게 생성하는지 학습한다고 하는데, 사실 저는 모델 학습 전에 모든 가중치를 초기화하고 학습을 수행한다는 의미로 받아들였습니다. ( 근데 모든 모델이 이렇게 학습하지 않나..? )

CoCa는 Unimodal Representation과 Fused Multimodal Representation을 동시에 생성해 3가지 Task group에 최적화 가능합니다.

 

 

1) Visual Recognition

Visual Recognition Benchmark로 ImageNet, Video Recognition Benchmark로 Kinetics - 400, 600, 700을 사용하였습니다. Video data input 없이 Image Data로만 사전학습하였는데도 Image Classification과 Video Recognition 모두 SOTA 성능을 달성하였습니다. Frozen - Feature CoCa Encoder를 이미지와 비디오 데이터셋에 대해 각각 Fine Tuning 수행 후에는 기존 SOTA 성능을 더욱 개선하였으며 다른 Visual Encoder보다 더 적은 파라미터로도 높은 성능을 기록하였습니다.

 

2) Cross Modal Alignment

  • Zero - Shot Image Text Retrieval
    • CLIP Setting을 따라 독립적으로 Test Set의 모든 image, Text 데이터를 각각 Encoder에 입력해 임베딩 벡터를 추출한 후 Cosine Similarity 에 기반해 전체 Test dataset에 대해 Retrieve를 수행
    • CoCa는 Image to Text, Text to Image Retrieval 모두 이전 방법론들보다 개선한 성능을 보임
  • Zero - Shot Image Classification
    • 정렬된 이미지, 텍스트 임베딩 벡터에 대해 Fine Tuning 없이 라벨과 이미지를 매칭
    • 인코더 - 디코더에서 한 번 학습이 진행될 때 Traning Objective와 Dataset을 통합하는 것이 좋은 성능을 보임
      • 이 부분은 웹에서 수집한 이미지와 라벨 텍스트를 학습에 바로 사용했다는 점과 이어서 생각했습니다.
  • Zero - Shot Video Retrieval
    • Full Split을 사용한 MST - VTT에 대해 Text to Video와 Video to Text 모두 높은 점수를 보임

 

3) Image Captioning, Multimodal Understanding

  • Image Captioing
    • MSCOCO Dataset에 대해 Captioning Loss를 통한 Fine Tuning을 수행하고 MSCOCO Karpathy - Test Split과 NoCaps Online Evaluation으로 평가
    • MSCOCO에 대해 Cross Entropy Loss를 학습한 강력한 Baseline 모델들보다 좋은 성능을 보임
  • Multimodal Understanding
    • Visual Question Answering, Visual Entailment, Visual Reasoning에서 다른 VLP Baseline 모델들보다 좋은 성능을 보임

[4] Ablation Study

12개의 Decoder Layer와 4096 Batch Size로 구성된 CoCa Base Model을 통해 Ablation Study를 진행했습니다. 주로 Zero Shot Image Classification과 VQA를 통해 평가하였는데 Zero Shot Image Classification을 통해 시각적 표현과 이미지, 텍스트 매칭에 대한 평가가 가능함과 VQA를 통해서는 Multimodal Reasoning에 대한 평가가 가능하기 때문에 이렇게 평가하였다고 합니다.

 

1) Captioning vs Classification

 

 동일한 Image Annotation Dataset인 JFT Dataset에 대해 Captioning Loss를 통해 학습된 Encoder - Decoder 모델이 Cross Entropy Loss를 통해 학습된 Single Encoder 모델과 동등한 성능을 보였습니다. 이는 생성 모델이 분류 모델을 포함한다는 것을 의미하며 만약, Text Vocab이 등장가능한 모든 Class name의 집합일 때 Cross Entropy Loss가 Captioning Loss의 특수한 경우가 됩니다.

 

2) Training Objectives

 앞에서 CoCa는 두 가지 Loss Function을 결합시켜 사용했다고 했습니다. 이 실험에서는 결론적으로 두 Loss를 결합하는 것이 단일 Loss만 사용했을 때보다 좋은 성능을 보이고 새로운 Capabilities를 생성하는데 도움이 되며 저비용으로 학습시킬 수 있었다고 합니다. 또한 Captioning Loss와 Contrastive Loss의 비율을 2 대 1로 설정했을 때 두 Task에서 모두 좋은 성능을 보였다고 합니다.

 

3) Unimodal Decoder Layers

 

 총 Decoder Layer 개수는 동일하게 유지했을 때, Unimodal Text Layer가 적으면 Zero - Shot Classification에서 , Multimodal Text Layer가 적으면 VQA와 같은 Multimodal Inputs에서의 모델 능력이 부족해지는 결과를 보았습니다. 여기서는 Unimodal Decoder와 Multimodal Decoder의 Layer 개수를 동일하게 반으로 나누는 것이 가장 좋은 균형을 보였습니다. 추가적으로 분류를 위해 CLS Token을 학습시킬 때 1개의 CLS Token을 학습하는 것이 가장 좋은 성능을 보였습니다.


[5] Conclusion

  • 기존의 VLP Foundation Model의 각각 문제점을 찾고 이들의 문제점을 보완하기 위한 새로운 CoCa 모델을 제안
  • 웹에서 수집한 이미지, 텍스트 데이터셋을 Single Stage ( 여러 과정을 거치긴 하지만 한 번의 과정으로 필요한 모든 부분 학습 )로 사전학습하고 Contrastive Loss와 Captioning Loss를 결합해 효율적인 Encoder - Decoder 모델 구현 
  • Visual Recognition, Cross Modal Alignment, Multimodal Understanding Task 등 넓은 범위의 VLP Task에서 SOTA 달성

[6] Reference

https://www.youtube.com/watch?v=UwuY2WLE9l8

https://arxiv.org/abs/2205.01917

https://kimjy99.github.io/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0/coca/

ChatGPT

 

728x90

'논문리뷰' 카테고리의 다른 글

[논문리뷰] Flamingo 논문 리뷰  (0) 2024.08.22
[논문리뷰] mPLUG 논문 리뷰  (0) 2024.08.18
[논문리뷰] SimVLM 논문 리뷰  (0) 2024.08.01
[논문리뷰] FILIP 논문 리뷰  (5) 2024.07.23
[논문리뷰] ALBEF 논문 리뷰  (2) 2024.07.17