개요

26편에서 CLIP이 이미지와 문장을 같은 좌표계에 올린다는 것까지 봤다. 그러면 남는 질문은 이거다.

같은 좌표계에 올려놓은 다음, 그걸로 뭘 하나?

이번 글은 그 답 두 갈래를 따라간다. 하나는 CLIP의 유사도를 손실 함수로 재활용하는 길이고, 다른 하나는 CLIP의 인코더를 언어모델의 눈으로 붙이는 길이다. 앞쪽이 이미지 생성·편집 계열의 뿌리가 되고, 뒤쪽이 요즘 말하는 VLM(시각언어모델)이 된다.

중간에 CLIP의 손실 함수를 손본 SigLIP도 짚는다. 요즘 VLM들이 이미지 인코더로 CLIP 대신 SigLIP을 쓰는 경우가 많은데, 그 이유가 여기 있다.

20편에서 멀티모달 파운데이션 모델을 응용 사례로 한 번 훑었다. 그때는 “언어모델이 이미지도 받는다” 정도로 정리하고 넘어갔는데, 이번 글은 그 문장 안쪽이다. 이미지가 어떤 모양으로 언어모델에 들어가는지, 그 다리를 누가 어떻게 학습하는지를 본다.

교육 자료는 대외비라 슬라이드 이미지나 예제 데이터는 싣지 않는다.


1. SigLIP — softmax를 sigmoid로 바꿨더니

CLIP의 대조 학습에는 한계가 하나 있다. 강의에서 던진 질문이 이거였다.

이미 충분히 멀어진 오답 쌍에 대해서도, 계속 거리를 벌리려고 학습이 진행된다.

softmax는 한 행의 점수를 전부 모아 합이 1이 되게 나눈다. 그래서 오답 하나의 점수가 아무리 낮아도 정답이 100%를 못 가져가는 한 계속 손실이 남는다. 이미 “이건 확실히 아니다”라고 판정된 쌍에까지 계산과 기울기를 계속 쓰는 셈이다.

SigLIP(2023)은 손실 함수를 sigmoid 기반으로 갈아끼웠다. 채점 방식 자체가 바뀐다.

softmax 손실과 sigmoid 손실

  CLIP (softmax) SigLIP (sigmoid)
채점 단위 한 행 전체를 놓고 1등 뽑기 쌍 하나하나를 O/X로 판정
확률 행 합이 1 (자리 뺏기) 각 쌍이 독립
이미 잘 맞힌 쌍 손실이 계속 남는다 손실이 거의 0이 된다
배치 의존 배치 전체를 모아야 계산 쌍 단위로 계산 가능

라벨을 이렇게 둔다고 보면 이해가 쉽다. 짝이면 +1, 아니면 -1. 그 부호대로 sigmoid 안의 값이 커지도록만 밀면 된다.

$$ \mathcal{L} = -\frac{1}{N} \sum_{i} \sum_{j} \log \sigma \left( y_{ij} (a \cdot s_{ij} + b) \right) $$

여기서 $y_{ij}$는 짝이면 +1, 아니면 -1이고 $s_{ij}$는 26편에서 본 코사인 유사도다. $a$와 $b$는 학습되는 스케일·편향 값이다.

강의에서 보여준 실험 결과가 인상적이었다. 학습 데이터에 노이즈를 점점 섞어가며 두 손실을 비교했는데, 이미지에 노이즈를 주든 텍스트에 주든 배치를 흔들든 모든 조건에서 sigmoid 쪽이 위에 있었다. 노이즈가 심해질수록 격차가 벌어졌다.

웹에서 긁은 4억 쌍짜리 데이터에 잘못된 캡션이 섞이지 않았을 리 없다. 그러니 이 결과는 실전 조건에서의 결과에 가깝다. 그래서 요즘 VLM들이 이미지 인코더로 SigLIP을 많이 쓴다.

softmax는 “이 중에 뭐가 정답이냐”, sigmoid는 “이건 맞냐 아니냐”. 후자가 잘못된 라벨 하나에 덜 휘둘린다.


2. 멀티모달 정합 — 이미지와 텍스트만 있는 게 아니다

CLIP이 한 일을 한 문장으로 다시 쓰면 멀티모달 정합(Multi-modal Alignment)이다.

서로 다른 두 가지 이상의 데이터 종류를 하나의 공통 임베딩 공간에 올려서, 종류가 달라도 유사도를 비교할 수 있게 만드는 것.

여기서 “두 가지”라는 제한을 풀면 어떻게 될까. Meta의 ImageBind가 그걸 했다. 이미지·비디오·텍스트·오디오·열화상·깊이맵 등 여섯 가지를 같은 공간에 묶었다.

재밌는 건 학습 방식이다. 모든 조합을 다 짝지어 학습한 게 아니라, 이미지를 가운데 두고 각 모달리티를 이미지에 정합시켰다. 그러면 소리와 텍스트는 직접 학습하지 않았는데도 서로 비교가 된다. 사자 사진을 가운데 두고 사자 울음소리와 “사자”라는 단어가 각각 그 근처로 끌려오니, 결과적으로 셋이 다 모여 있게 된다.

공통 공간 하나만 잘 만들어두면, 직접 학습하지 않은 조합도 덤으로 딸려온다. 26편에서 본 정합의 가치가 여기서 한 번 더 확인된다.


3. CLIP을 자로 쓰기 — 학습되는 건 모델이 아니다

여기가 이번 강의에서 제일 재밌었던 대목이다. 질문은 이랬다.

이 연관성을 거꾸로 활용하는 방법은 없을까?

CLIP은 이미지와 문장이 얼마나 잘 맞는지를 숫자 하나로 뱉는다. 그 숫자는 곧 “정합 정도”다. 그런데 정합 정도를 재는 함수가 있으면, 그건 그대로 손실 함수로 쓸 수 있다.

발상 뒤집기

보통의 학습은 이렇다.

  • 입력은 고정 → 모델 가중치를 업데이트

CLIP을 자로 쓰는 방식은 반대다.

  • 모델(CLIP)은 고정 → 입력 쪽을 업데이트

CLIP을 손실 함수로 쓰는 구조

강의 표현으로는 “단일 데이터에 대해서만 학습 = 최적화(학습X)” 였다. 데이터셋으로 일반적인 능력을 배우는 게 아니라, 지금 만들려는 결과물 하나를 CLIP 점수가 높아지는 쪽으로 깎아 나가는 일이다.

무엇이 만들어지나

응용 학습되는 대상 목표
이미지 캡셔닝 문장(텍스트 임베딩) 이 사진과 가장 잘 맞는 문장 찾기
이미지 스타일 변환 이미지 편집 값 “웃는 얼굴”이라는 문장과 가까워지게 사진 수정
Text-to-3D 3D 물체의 형태·색 여러 각도에서 렌더링해도 문장과 맞게
Text-to-motion 관절 움직임 값 “점프한다”는 문장과 맞는 동작

Text-to-3D 쪽에서는 CLIP 대신 사전학습된 text-to-image diffusion 모델을 자로 쓰는 SDS(Score Distillation Sampling) loss도 나왔다. 원리는 같다. 이미 잘 학습된 모델을 채점자로 세우고, 채점 점수가 좋아지도록 결과물을 고친다.

이 CLIP loss 논문이 4년 동안 4만 번 넘게 인용됐다고 한다. 인용 수가 많은 이유가 성능 때문만은 아닌 것 같다. “채점자를 빌려 쓴다”는 틀이 도메인을 안 가려서 그렇다는 쪽에 가깝다.

더 쉬운 비유로

보통의 학습 — 시험을 많이 봐서 학생 실력을 올린다.
CLIP을 자로 쓰기 — 학생은 그대로 두고, 답안지(객관식 번호)를 보면서 문제지 한 장만 계속 고친다.

내가 만든 결과물을 채점해주는 사람이 옆에 있으면, 실력이 없어도 그 한 장은 그럴싸하게 만들 수 있다. 데이터셋을 새로 모을 필요가 없다는 게 이 방식의 진짜 이득이다.

파운데이션 모델은 가져다 쓰는 것만이 아니라 기준으로 세워두는 것으로도 쓸 수 있다.


4. VLM — 이미지 토큰을 언어모델에 밀어 넣는다

두 번째 갈래다. CLIP의 이미지 인코더를 언어모델의 눈으로 붙이면 시각언어모델이 된다.

구조는 생각보다 단순하다. 26편에서 잠깐 본 그 흐름이다.

VLM 구조와 2단계 학습

  1. 이미지 → 이미지 인코더(CLIP/SigLIP ViT) → 특징맵
  2. 특징맵 → 투영 레이어(Projection) → 언어모델이 읽을 수 있는 토큰
  3. 이미지 토큰 + 텍스트 토큰 → 언어모델 → 답변 문장

핵심은 2번이다. 이미지 인코더가 뱉은 벡터는 언어모델의 토큰 임베딩과 차원도 다르고 좌표계도 다르다. 그 사이를 이어주는 게 투영 레이어이고, 이 결과를 soft prompt라고 부른다. 언어모델 입장에서는 글자로 적히지 않은 프롬프트가 앞에 붙어 있는 셈이다.

LLaVA — 두 단계로 나눠 학습한다

LLaVA(2023)는 이 구조의 교과서 같은 모델이다. 학습을 두 단계로 쪼갠다.

단계 학습하는 부분 고정하는 부분 목적
Step 1. 사전학습 투영 레이어만 이미지 인코더, 언어모델 이미지 특징을 언어 토큰으로 옮기는 번역기 만들기
Step 2. 미세조정 투영 레이어 + 언어모델 이미지 인코더 지시를 따르고 대화하는 능력 붙이기

1단계에서 학습 대상이 투영 레이어 하나뿐이다. 전체 모델을 다시 훈련하지 않으니 자원과 시간이 크게 절약된다. 25편에서 본 전이학습의 Linear Probing과 발상이 똑같다. 무거운 부분은 남의 것을 그대로 쓰고, 얇은 층 하나만 내가 학습한다.

2단계는 Instruction tuning이다. 이미지, 명령(Instruction), 답변 세 쌍으로 짜인 데이터셋으로 학습해서 “이 사진에서 뭐가 이상해?” 같은 요청에 답하게 만든다.

16편에서 본 그 지시 학습이다. 그때는 텍스트만 있었다. 데이터 한 건이 [지시, 답변] 이었는데, 여기서는 [이미지, 지시, 답변]으로 칸이 하나 늘었을 뿐 방법은 같다. 사람의 지시를 따르게 만드는 데는 사전학습만으로 부족하다는 그 결론이, 이미지가 붙어도 그대로 반복된다.

학습 데이터를 GPT로 만들었다

LLaVA가 영리했던 지점은 데이터 쪽이다. 시각 지시 데이터를 사람이 만들지 않았다.

  1. 기존 COCO 데이터셋에는 이미지, 이미지 설명, 물체 좌표(bounding box)가 이미 있다
  2. 텍스트 정보만 ChatGPT에 넣어서 질문과 답변을 자동 생성한다
  3. 생성 타입은 세 가지 — 대화, 자세한 설명, 복잡한 추론

이미지를 보여주지 않고 좌표와 캡션이라는 텍스트만으로 질의응답을 만들어낸 것이다. 20편에서 합성 데이터를 “언어모델이 학습 데이터를 만든다”로 정리했는데, 여기가 그 방식이 시각 데이터셋을 만드는 데 쓰인 실제 사례다. 29편에서 이 이야기를 이어받아 위험까지 같이 본다.

VLM은 새로운 거대 모델이 아니라 잘 만들어진 눈과 잘 만들어진 입을 짧은 다리로 이어붙인 것에 가깝다.


5. 요즘 공개 VLM들 — 어디까지 왔나

강의에서 훑은 최신 모델들을 정리해둔다. 흐름만 봐도 이 분야가 어느 방향으로 가는지 보인다.

Qwen-VL 계열 (Alibaba)

버전 특징
Qwen-VL 사전학습 2단계 + 명령어 파인튜닝 1단계, 총 3단계 학습. 다국어, 위치 지정, 텍스트 읽기 지원
Qwen2-VL 다국어 텍스트와 이미지 내 텍스트 이해, 에이전트 기능, 영상 분석. M-RoPE 도입
Qwen2.5-VL 문서 파싱 강화(다국어 OCR, 표·차트·수식·악보·필기), 정밀 객체 그라운딩, 장시간 비디오 이해
Qwen2.5-Omni 텍스트·이미지·오디오·비디오를 전부 받는 통합 모델
Qwen3-VL 2025년 9월 공개. 3D 그라운딩, 컴퓨터·모바일 조작 에이전트, 차트 코딩

여기서 눈에 띄는 게 M-RoPE(Multimodal Rotary Position Embedding)다. 기존 위치 임베딩은 1차원(문장에서 몇 번째 토큰)만 표현했는데, 이미지는 2차원이고 비디오는 시간까지 붙어 3차원이다. M-RoPE는 1D 텍스트, 2D 이미지, 3D 비디오의 위치 정보를 한 방식으로 표현한다.

24편에서 ViT가 이미지에 위치 임베딩을 학습시켜 붙였던 걸 생각하면, 같은 문제를 시간축까지 늘려 푼 셈이다.

InternVL (2024, OpenGVLab)

오픈소스 계열의 다른 축이다. 여기서 흥미로운 건 학습 전략이다.

  • (a) 단일 모델 파이프라인 — MLP 워밍업 → (선택) ViT 증분 학습 → 전체 모델 지시 튜닝
  • (b) 점진적 확장(Progressive Scaling) — 작은 LLM으로 정렬을 먼저 배운 뒤, 그 정렬을 더 큰 LLM에 옮겨 학습

(b)가 특히 실용적이다. 비싼 큰 모델로 처음부터 정렬을 배우는 대신, 싼 모델로 배운 정렬을 넘겨준다. 학습 비용을 줄이는 방향이 계속 이런 식이다.

Set of Mark — 모델을 안 건드리고 성능을 올리는 트릭

VLM은 “오른쪽 노트북 왼편에 있는 게 뭐냐” 같은 위치 지정 질문에 약하다. 그럴 때 쓰는 방법이 SoM이다.

Set of Mark 방식

  1. 세그멘테이션 모델(SAM 계열)로 사진 속 물체들을 잘라낸다
  2. 잘라낸 영역마다 번호를 찍어서 이미지 위에 그린다
  3. 그 이미지를 VLM에 넣고 물어본다

그러면 답이 “컵 같은 것”에서 “12번으로 표시된 스탠드”로 바뀐다. 모델은 그대로 두고 입력만 손봤는데 정확도가 올라간다. 화면을 보고 클릭해야 하는 컴퓨터 조작 에이전트에서 특히 유용하다.

도메인 특화 모델들

분야 모델 하는 일
의료 MedCLIP 의료 텍스트와 이미지 임베딩을 정합. 텍스트로 질병 탐지·이미지 검색
의료 LLaVA-Med LLaVA를 의료 데이터로 파인튜닝. 의료 영상 기반 챗봇
제조 AnomalyGPT 정상/불량 판정과 위치 지정. 결함 데이터가 적은 환경을 겨냥
3D 3D 언어모델 point cloud와 자연어의 관계를 학습
로봇 VLA (Vision-Language-Action) 텍스트 명령 + 로봇 시점 영상 → 관절 움직임. PaLM-E, RT 계열

로봇 쪽이 특히 눈에 띈다. 출력이 문장이 아니라 행동이다. VLM 뒤에 Action expert를 붙여서 “위치 변화와 관절 움직임”을 뱉게 한다. Physical AI라는 말이 붙는 영역이다.


정리

  • SigLIP — CLIP의 softmax 손실을 sigmoid로 바꿨다. 쌍마다 독립적으로 O/X를 채점해서 이미 잘 맞힌 쌍에 학습을 낭비하지 않는다. 노이즈가 섞인 데이터에서 CLIP보다 강했다
  • 멀티모달 정합 — 이미지·텍스트를 넘어 오디오·깊이맵까지 한 공간에. ImageBind는 이미지를 중심에 두고 묶어서, 직접 학습 안 한 조합도 비교되게 만들었다
  • CLIP을 손실 함수로 — 모델은 고정하고 결과물 하나를 최적화한다. 캡셔닝·스타일 변환·Text-to-3D·Text-to-motion이 전부 이 틀 위에 있다. 데이터셋 없이 돌아간다는 게 핵심
  • VLM 구조 — 이미지 인코더 → 투영 레이어 → 언어모델. 투영 결과가 soft prompt로 들어간다
  • LLaVA 2단계 학습 — 1단계는 투영 레이어만, 2단계는 투영 + 언어모델. 학습 데이터는 COCO의 캡션·좌표를 ChatGPT에 넣어 자동 생성했다
  • 최신 흐름 — Qwen-VL 계열은 문서 파싱·비디오·에이전트로, InternVL은 작은 모델로 배운 정렬을 큰 모델에 넘기는 점진적 확장으로. 공통점은 학습 비용을 깎는 방향
  • SoM — 세그멘테이션으로 물체에 번호를 찍어 넣으면, 모델을 재학습하지 않고도 위치 관련 답이 정확해진다
  • 도메인 특화 — 의료(MedCLIP, LLaVA-Med), 제조(AnomalyGPT), 3D, 로봇(VLA)까지. 로봇 쪽은 출력이 문장이 아니라 행동이다
  • 겹치는 글 — 지시 학습의 원형은 16편, 멀티모달 응용의 개괄은 20편. 이 글은 그 사이의 연결 부품을 본다

참고 자료

한줄 평

  • 잘 학습된 모델을 채점자로 세워두고 결과물만 고친다는 발상의 전환이 신기했다. 나도 뇌를 반대로 써봐야지..