DeepLearning/Multi-Modal

[Paper Review] BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation (ICML'22)

yooj_lee 2023. 5. 3. 21:09
300x250

 

 

오늘 리뷰할 논문은 22년도 ICML에서 발표된 BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation 입니다. 기존의 VLP 연구의 한계를 모델, 데이터 두 가지 관점에서 설명하며 이를 보완한 unified VLP framework를 제안합니다. 실험 결과가 매우 강력했지만, dataset bootstrapping으로 얻은 효과 이외에도 구조 자체의 이점 또한 있었던 것 같습니다. Training cost (time)에 대한 이야기가 있었다면 bootstrapping에 대한 정당성이 조금 더 높아지지 않았을까 합니다. 후속 연구인 BLIP2에서는 end-to-end pre-training scheme에서 벗어나 frozen image encoder와 LLM을 활용함으로써 training cost에 대한 문제를 해결한 것 같습니다. 하기한 내용에 오류나 질문이 있으시면 답글 부탁드립니다!


Abstract

  • VLP: understanding-based tasks or generation-based tasks 둘 중 하나만 잘함
  • 최근 VLP 기조가 noisy web data를 이용해서 dataset scale을 끌어올림 → 성능 향상
  • BLIP은 이러한 noisy web data를 잘 이용해서 understanding & generation 둘 다 잘함. → 어떻게 잘 이용?
  • captioner로 caption을 synthesize하고 그 다음에 filter로 data noise를 제거함.

이를 바탕으로, BLIP은 다양한 vision-language tasks에서 SOTA 결과를 보여주었고, video-language tasks에서 높은 zero-shot performance를 보여주며 high generality를 보여줌.


Introduction

기존의 VLP를 두 가지 perspective로 나누면 다음과 같다.

  1. model
    : encoder-based model (e.g., CLIP), encoder-decoder model (e.g. simvlm) 로 구성. 하지만, encoder-based model은 text generation task에 바로 적용하기에는 straightforward하지 못하다는 한계가 있고, encoder-decoder model의 경우에는 image-text retrieval tasks에는 잘 adopt되지 못함.
  2. data
    : image-text pairs collected from the web을 이용하여 pre-train. web에서 수집된 데이터를 활용하여 데이터셋 크기를 키움으로써 성능 향상을 이끌어냈지만, 논문에서는 이러한 _noisy web text 데이터가 vision-language learning에 suboptimal_하다는 것을 보여주고자 함.

Contribution

Literature에서 위 두 가지 perspective 상에서의 한계를 극복하기 위해 BLIP을 제안함. BLIP은 understanding과 generation 관련 task를 모두 수행할 수 있으며, 기존보다 더 많은 downstream tasks에 효과적으로 적용됨.

위의 두 가지 perspective에서 contribution을 설명하면,

  1. model: a multimodal mixture of Encoder-Decoder (MED)
    → effective multi-task pre-training and flexible transfer learning. MED의 경우에는 unimodal encoder로도 활용될 수 있고, image-grounded text encoder, image-grounded text decoder로도 활용 가능. image-text contrastive learning, image-text matching, image-conditioned language modeling의 3가지 objective를 바탕으로 jointly trained됨.
  2. data: Captioning and Filtering (CapFilt)
    → dataset bootstrapping method for learning from noisy image-text pairs. pre-training을 거친 후에 captioner와 filter를 이용해서 fine-tuning을 거침. captioner는 web image에 대한 caption을 synthesize한 후에 filter가 synthesized caption과 실제 web text를 이용하여 noisy한 web data를 제거함.

추가적으로 실험을 진행하면서 captioner와 filter를 동시에 활용하는 것이 substantial improvement in performance를 가져온다고 말하고 있음. 또한, video-language task에 높은 zero-shot transfer 성능이 매우 뛰어났음.

 


Method

Architecture 및 pre-training objectives


encoder-decoder 구조 (MED)로 구성됨. 3가지 pre-training objective(Image-Text Contrastive Loss, Image-Text Matching Loss, Language Modeling Loss)를 통해서 jointly training됨. Image-Text Contrastive Loss를 통해 unimodal encoder를 activate할 수 있고, Image-Text Matching Loss를 통해 image-grounded text encoder(understanding-based task 대응)를 activate, Language Modeling Loss를 통해 image-grounded text decoder(generation-based task 대응)를 activate할 수 있음. 이러한 MED 구조를 통해서 여러 downstream task에 flexible하게 대응이 가능하게 됨.

여기서 text encoder와 image-grounded text encoder는 동일한 instance임에 유의. uni-modal text encoder는 image-grounded text encoder에서 cross-attention을 끄는 방식으로 training과 inference가 구성되는 듯.

Weight sharing 전략

self-attention 부분을 제외하고는 weight sharing을 통해서 어느 정도 학습 과정에서의 efficiency를 가져감. self-attention 부분을 제외하는 이유는 encoding과 decoding의 task gap이 가장 잘 담겨있는 부분이 self-attention 부분이기 때문.

bi-directional self-attention vs. causal self-attention
다음 맥락을 참조할 수 있도록 masking이 되어 있는지 없는지 constraints가 주어져있는지에 대한 여부로 결정됨. constraint가 없다면 bi-directional self-attention, 있다면 causal self-attention.
BERT의 경우에는 그러한 constraint가 존재하지 않는 transformer의 encoder만 활용하고, GPT 같은 경우는 그러한 constraint가 존재하는 (next token을 예측하는) 태스크로, transformer decoder만 활용하기 때문에 LM loss를 활용하는 decoder는 causal self-attention, encoder만을 활용하는 text-encoder 부분은 bidirectional self-attention이라고 부르는 듯함.

CapFilt (Dataset Bootstrapping)

일종의 denoising 작업으로 noise-free dataset에서 fine-tune을 거치게 됨. fine-tune된 decoder의 경우 captioner가 되고, fine-tune된 encoder의 경우에는 filter의 역할을 수행. 실제로 captioner의 경우에는 web에서 수집된 image-text pair 중 image인 $I_w$에 대한 captioning 작업을 통해서 synthesized text $T_s$를 만들어냄. 또한, 반대로 filter 같은 경우에는 web에서 수집된 image-text pair $(I_w, T_w)$를 받아서 해당 pair가 서로 잘 matching되는지를 판단하고 이를 통해 noisy한 pair를 reject하는 방식으로 필터링을 거치게 됨. 리젝되지 않은 데이터에 대해서는 최종적으로 ${(I_w, T_w) + (I_w, T_s)}$를 출력하며 이는 일종의 augmented된 데이터로 볼 수 있음 (정확히는, 원래 web data text와 synthesized text를 모두 reject하거나 둘 중 하나만 reject하거나 할 수 있는 듯). 이를 다시 human annotated dataset (noise-free dataset)과 합쳐 pre-training dataset을 구축함으로써 dataset bootstrapping을 수행하는 것. bootstrapped dataset에서 모델을 새로 학습시킬 경우에 모델의 성능이 향상됨을 실험적으로 보여줌.

 


Experiments and Discussions

Effect of CapFilt

 

capturing과 filtering 중 하나만 거쳐 새로 pretrain시키더라도 성능 향상이 있었음. 그러나, 두 개를 모두 거친다면 substantial improvement가 관찰됨. 추가적으로, 데이터셋 사이즈와 모델 사이즈를 증가시켰을 때 증가 추세를 보임. 즉, BLIP이 model과 dataset 크기 측면에서 scalable함을 보여줌.

Diversity of synthesized text


Beam Search는 확정적인 결과를 내놓는 경향이 있으나, Nucleus sampling의 경우에는 output의 diversity가 beam search보다 더 높음. 이 경우, 조금 더 다양한 output을 내뱉는 nucleus sampling이 더 좋은 성능을 보였음. (training set이 갖는 information의 양이 증가한다고 볼 수 있을 듯)

Parameter Sharing and Decoupling


다양한 parameter sharing 전략에 대해 실험. 앞서 밝혔듯이, SA를 제외한 모든 레이어의 weight sharing을 통해서 성능 향상을 이룰 뿐 아니라 training efficiency도 가져갈 수 있음.


반대로 CapFilt 같은 경우에는 decoupling시키는 쪽이 성능 향상을 가져옴. 논문에서는 이를 confirmation bias 때문이라고 밝히고 있음. 즉, parameter sharing을 하게 되면, captioner가 noisy caption을 만들어낼 때 filter가 이를 잘 reject하지 못하게 되는 경우가 발생할 가능성이 커지기 때문. 이는 Noise ratio가 parameter sharing을 할 때에 더 낮게 나온다는 점에서 어느 정도 설명됨.

Comparison with State-Of-The-Arts

  • Understanding-based task (e.g., image-text retrieval)

비교군 대비 높은 성능. 비슷한 크기의 데이터셋에서 사전학습되는 경우뿐 아니라 더 큰 데이터셋에서 사전학습된 모델보다 더 좋은 성능을 보임. zero-shot 성능도 매우 좋음.

  • Generation-based tasks (e.g., image captioning, VQA, Natural Language Visual Reasoning, Visual Dialog...)

모두 비교군 대비 좋은 성능을 보여주고 있음. (회색처리된 부분은 unfair한 비교이기 때문에 무시)

  • zero-shot transfer to video-language tasks

video-language task에 zero-shot으로 매우 잘 transfer됨. 특히, text-to-video retrieval 같은 경우에는 심지어 같은 zero-shot 비교군을 넘어서 full fine-tuning한 모델보다도 성능 면에서 매우 큰 차이로 앞지름. 역시, video question answering에서도 동일 zero-shot 비교군 대비 뛰어난 성능을 보여주었으며, fine-tuning한 모델에도 견줄 만한 성능을 보여줌. (temporal 정보를 전혀 고려하지 않았다는 점을 염두에 두면 이는 매우 괄목할 만한 성과임)

Additional ablations

bootstrapping을 거친 모델이 성능이 좋았던 점이 longer training (bootstrapping을 하게 되면 데이터셋 크기가 늘어나므로 전체적인 training time이 길어지게 됨)으로부터 기인할 수 있다는 의문 제기 가능. 따라서, original data를 replicate해서 bootstrapped dataset과 크기를 맞춰주어 실험을 진행. 하지만, 오히려 replicate하기 전보다 성능이 떨어지기 때문에 실제로 CapFilt가 성능 향상에 기여했음을 알 수 있음.

dataset bootstrapping 이후 재학습 시, 아예 처음부터 재학습하는 것이 더 성능이 좋았음을 알 수 있음. 이는 distillation 관점에서 본다면, distillation 시에 student의 가중치 초기화를 teacher의 weight으로 수행할 수 없는 것과 동일하다고 볼 수 있음.

 


Conclusion

vision-language task 중 understanding-based tasks 혹은 generation-based tasks 중 하나만 수행하는 방향으로 방법론들이 개발되어 옴. 또한, 기존 VLP 방법론이 데이터셋을 web에서 가져와 scale up함에 따라 vision language task 성능을 향상시켰지만, 해당 데이터셋에 존재하는 noise를 고려하지 못함. 이에 BLIP은 3가지 vision-language pretraining objective를 encoder-decoder 구조로 동시에 학습시켜서 multi-task pre-training을 효과적으로 수행하고, transfer가 굉장히 유연한 VLP framework을 제안. 추가적으로, 이후 학습된 encoder를 captioner로, decoder를 filter로 두어서 데이터셋 내 noise를 제거함으로써 dataset bootstrapping을 수행하여 다양한 downstream task에서의 성능 향상을 보여줌.

Strengths

  • understanding and generation-based vision language tasks를 모두 잘 다룬다.
  • 데이터셋에 대한 noise를 핸들링하는 방법을 통해 성능 향상을 끌어냈다는 점.
  • 적은 데이터셋으로 좋은 성능을 냈다는 점.
  • video-language tasks에서 zero-shot 방식으로 매우 좋은 성능을 보였다는 점이 눈에 띔.

Weaknesses

  • bootstrapping하게 되면 결국 pre-train 과정이 2번 이상이 되는 거라 training cost가 어느 정도로 발생하는지가 중요하게 작용하지 않을까 함. 이에 pre-train 과정이 어느 정도의 시간이 소요되는지에 대한 언급이 없어서 아쉬웠음.
  • 개인적으로 ITC를 ITM과 통합시키는 방법은 어려웠을지에 대한 궁금증이 들었음. ITC에 대한 ablation 실험이 있었으면 더 좋지 않았을까? 하는 아쉬움. contrastive loss 부분은 clip에서 사전학습된 weight로 대체가 가능하지 않았을까..? 하는 생각이 들었음.
300x250