[Physical AI 강의] Part 4-1. VLM(Vision-Language Models)

본 정리는 포항공과대학교 Physical AI 수업을 듣고 정리한 리뷰입니다. 틀린 내용이 있으면 댓글로 편안하게 말씀 부탁드립니다.
Part4에서는 VLM(Vision-Language Models)에 대해서 정리해보고자 합니다.

 

VLM 개요

VLM의 목표는 성질이 다른 두 신호, 이미지와 언어를 한 모델에서 같이 다루는 modality 기반 학습이다.

modality는 원래 통계에서 분포의 봉우리(peak)를 가리키는 용어다. 봉우리가 하나면 unimodal, 둘이면 bimodal, 여럿이면 multimodal. AI에서 multimodal은 sight, sound, touch처럼 서로 다른 감각 신호를 함께 다루는 상황을 가리킨다.

여러 modality를 함께 처리하려면 두 가지를 풀어야 한다.

  • Representation: 여러 modal을 서로의 연결까지 살려서 하나로 요약하는 방법
  • Alignment: modal 사이의 연결과 상호작용을 찾아내는 방법

합칠 때 생기는 문제

modality는 늘릴수록 좋아지는 게 아니다. 함께 다룰 때 생기는 문제가 네 가지 있다.

  • 한 modality가 다른 modality를 압도한다.
  • modality를 늘리면 정보와 함께 noise도 들어온다.
  • 모든 modality를 항상 확보할 수 있다는 보장이 없다.
  • modality 사이의 관계가 단순하지 않다.

대표적인 충돌 상황이 표정과 말 내용이 어긋나는 경우다. 고객이 나쁜 경험을 이야기하면서 밝게 웃고 있으면, vision과 language가 정반대를 가리킨다. 한쪽만 신뢰하면 mood 판단이 뒤집힌다. touch를 추가한다고 반드시 개선된다는 보장도 없고, vision·language·audio·haptic·smell·taste를 늘 전부 받을 수 있는 것도 아니다.

VLM 학습의 기본 구조

학습 흐름은 세 단계다.

  1. image encoder와 text encoder에서 각각 feature를 뽑는다.
  2. 어떤 pre-training objective로 vision-language correlation을 학습한다.
  3. 학습된 correlation으로 임의의 이미지·텍스트 embedding을 matching해 zero-shot으로 쓴다.

2번의 objective가 핵심 분기점이고, 종류는 다음 네 가지다.

방식 메커니즘 장점 단점
Contrastive (CLIP, SigLIP) 맞는 짝은 당기고 틀린 짝은 민다 zero-shot retrieval에 강함 생성 불가, batch size 크게 필요
Masking (FLAVA, MaskVLM) 가린 patch/word를 복원 negative pair 불필요 decoder가 병목
Generative (CoCa, CM3leon) pixel/token을 autoregressive하게 생성 versatility, shape bias compute 비용 최대
Pretrained Backbones (MiniGPT, Frozen) frozen vision을 frozen LLM에 연결 compute 효율 극대 LLM hallucination 상속

Contrastive (맞는 짝만 끌어당기다고 생각)

CLIP이 대표다. image embedding I들과 text embedding T들을 N×N 행렬에 놓고 내적을 구한 뒤, 대각선의 positive pair(I_i·T_i)는 점수를 올리고 나머지는 내린다.

학습이 끝나면 별도 분류기 없이 zero-shot 분류가 된다. 클래스 이름을 "A photo of a {object}." 형태 문장에 넣어 text encoder를 통과시키고, 새 이미지 embedding과 비교해 점수가 가장 높은 문장을 답으로 고른다. 클래스 이름을 그냥 쓰지 않고 문장에 넣는 이유는, pre-training 때 이미지가 항상 자연어 문장과 짝지어졌기 때문이다. inference도 같은 형식으로 맞춰야 한다.

InfoNCE

contrastive의 손실은 InfoNCE다. 정답 짝을 분자, 후보 전체를 분모에 두는 형태라서, 분모에 모든 negative가 들어간다. 정답 점수를 키우면 나머지 후보 점수는 자동으로 눌린다. push와 pull이 한 식 안에 들어 있다.

CLIP loss vs SigLIP loss

CLIP의 loss는 InfoNCE를 image→text, text→image 양방향으로 만든 형태다. 한 항은 한 이미지에 대해 여러 텍스트 중 정답을 고르고, 다른 항은 한 텍스트에 대해 여러 이미지 중 정답을 고른다. 한 positive pair가 batch 안 모든 pair로 정규화되므로, batch가 작으면 비교 대상이 부족하다. 이게 batch size를 크게 요구하는 이유다.

SigLIP은 softmax를 sigmoid로 바꿔 이 약점을 없앤다. CLIP은 한 짝을 다른 모든 짝과 묶어 정규화하지만, SigLIP은 각 (i, j) 짝을 따로 떼어 positive(+1)냐 negative(−1)냐만 이진 판단한다. 분모에 batch 전체가 들어가는 합이 사라진다.

  • CLIP: 분모에 Σ가 있어 짝끼리 엮임 (softmax)
  • SigLIP: 짝마다 독립된 sigmoid

이 독립성은 학습 인프라에서 효과가 크다. device를 여러 개로 나눠 loss를 계산할 때, 각 device가 자기 조각으로 일부 loss를 계산하고 텍스트를 device끼리 돌려가며 누적하면, all-gather 없이 전체 loss가 완성된다. 어느 시점에도 메모리에 올라오는 건 작은 블록뿐이다. CLIP처럼 전체를 한 번에 정규화해야 했다면 이 방식 자체가 성립하지 않는다. 손실 함수의 성질 하나가 메모리 사용량을 바꾼다.

Masking 

이미지 patch나 문장 단어 일부를 가리고 복원하게 만드는 방식이다. negative pair가 필요 없다는 게 contrastive와의 가장 큰 차이다. self-supervision이라 비교 상대를 따로 만들 필요가 없다. 대신 복원용 decoder가 있어야 하고 거기가 병목이다.

MaskVLM의 구조에서 두 modality를 잇는 지점은 cross-modal input(점선)이다. 이미지를 복원할 때 가려지지 않은 텍스트 정보를, 텍스트를 복원할 때 가려지지 않은 이미지 정보를 끌어다 attention을 만든다. 한쪽의 빈자리를 반대편 modality로 채우는 이 연결이 cross-modal gap을 메운다.

FLAVA는 한 방식만 쓰지 않는다. global contrastive, MIM(masked image modeling), MLM(masked language modeling), MMM(masked multimodal modeling), ITM(image-text matching)을 함께 건다. image encoder · text encoder 위에 multimodal encoder를 두고 vision task head와 NLP task head를 따로 붙여서, image-text pair뿐 아니라 짝 없는 이미지와 텍스트까지 학습에 쓴다.

MLM은 BERT에서 온 개념이다. 토큰의 15%를 무작위로 가리고, 가린 위치의 출력으로 그 단어를 예측한다. VLM의 masking은 이 발상을 이미지로 확장한 것이다.

Generative

CoCa가 대표다. dual-encoder(CLIP류)는 텍스트를 통째로 embedding 하나로 압축하지만, generative 방식은 텍스트를 토큰 단위로 autoregressive하게 예측한다. 앞 토큰과 이미지를 조건으로 다음 토큰을 맞추므로 더 세밀한 granularity를 본다. 비용은 가장 크다.

CoCa에는 Unimodal과 Multimodal Text Decoder가 둘 다 있는데 역할이 갈린다.

  • Unimodal Text Decoder: cross-attention 없이 텍스트만 인코딩 → contrastive loss
  • Multimodal Text Decoder: 이미지 feature를 cross-attention으로 받아 캡션 생성 → captioning loss

captioning loss는 y_t를 이전 토큰 y_{<t}와 이미지 x 조건으로 예측하는 형태이고, 학습은 teacher-forcing으로 병렬화한다. contrastive와 generative를 한 모델에 담은 덕분에, pretraining 후 필요한 부분만 떼어 쓸 수 있다.

  • image encoder만 → single-encoder (분류)
  • image encoder + unimodal text decoder → dual-encoder (alignment)
  • 여기에 multimodal text decoder까지 → encoder-decoder (captioning)

Pretrained Backbones 

MiniGPT-4가 대표다. Q-Former·ViT로 된 vision도 frozen, Vicuna 같은 LLM도 frozen으로 두고, 그 사이 Linear Layer 하나만 학습한다. encoder부터 통째로 학습하는 앞의 세 방식과 달리 compute가 극단적으로 적게 든다.

대가는 hallucination 상속이다. frozen LLM을 그대로 쓰므로 그 LLM의 오류가 그대로 나온다. 식당 이미지에 없는 흰 식탁보를 있다고 답하거나 창문 위치를 틀리는 식이다.

LLaVA — projection 하나로 시각을 LLM에 연결

구조는 단순하다. 이미지가 vision encoder를 거쳐 Z_v가 되고, projection W가 이를 H_v로 바꾸며, H_v가 언어 지시 H_q와 함께 LLM에 들어가 응답을 만든다. W의 역할은 시각 feature를 LLM의 단어 embedding 공간으로 옮기는 통역이다.

학습 데이터 구성의 핵심은 이미지를 첫 turn의 지시문에만 붙이고 나머지 turn은 질문만 넣는다는 점이다. 이미지를 매번 다시 넣지 않고 대화 전체가 한 이미지에 묶인다. 손실은 assistant 응답 토큰에만 걸고 Human 발화는 제외한다. 입력 형식은 Vicuna를 따라 Human/Assistant를 번갈아 두고 사이에 <STOP>(###)을 넣으며, system message가 persona와 행동 방식을 정하고 일반 prompt보다 영향력이 크다.

학습은 두 단계로 나뉜다.

  • Stage 1 (Feature Alignment): vision encoder와 LLM을 모두 frozen, projection W만 학습. CC3M을 595K 짝으로 추려 "이미지를 설명하라" 형태 지시로 변환하고, H_v를 LLM 단어 embedding 공간에 정렬한다. frozen LLM용 visual tokenizer를 학습하는 단계다.
  • Stage 2 (Fine-tuning): vision encoder는 frozen 유지, projection W와 LLM을 함께 학습. 158K instruction-following 데이터로 multimodal chatbot을, ScienceQA로 멀티모달 추론을 학습한다.

두 단계의 차이는 LLM을 여느냐다. Stage 1은 통역기만 맞추고, Stage 2는 통역기와 LLM을 같이 다듬는다. vision encoder는 두 단계 내내 건드리지 않는다.

 

여기까지가 이미지와 언어를 한 모델에 묶는 네 가지 방법이다.

 

출처: 포항공과대학교 Physical AI 강의