LLaVA: Visual Instruction Tuning
Liu et al.
CLIP-ViT + LLaMA + 一个 linear projection——简单但有效的开源 VLM 基线。
arXiv:2304.08485核心贡献
- 01极简架构:CLIP-ViT 编码图像 → 一层 Linear 投影到 LLM 词向量空间 → 拼接文本 token 喂 LLaMA
- 02用 GPT-4 生成的 158K 视觉指令数据做 instruction tuning
- 03两阶段训练:阶段 1 只训 projection(对齐);阶段 2 训 projection + LLM(微调)
- 04开源 + 训练高效——成为多模态研究基线
架构
1Image → [CLIP-ViT-L/14] → [Linear Projection] → image_tokens2Text → [Tokenizer] → text_tokens3→ [LLaMA] → Answer
image_tokens 和 text_tokens 拼在一起,作为 LLaMA 的输入。LLaMA 看来它们是同一种 token,只是前几个是"图像语义 token"。
Linear Projection 的作用
CLIP-ViT 输出维度 1024;LLaMA 词向量维度 4096。中间一层 W ∈ R^(1024×4096)。
- LLaVA-1: 单层 Linear
- LLaVA-1.5: 两层 MLP(小改进)
- LLaVA-NeXT: 动态分辨率 + 更大分辨率
视觉指令数据
论文关键贡献之一——用 GPT-4 生成多模态指令数据:
- 给
GPT-4图片的 caption(文字描述) - 让它生成各种指令格式:描述、多轮对话、复杂推理
- 158K 条数据,人工筛质量
两阶段训练
阶段 1(Pre-training):
- 数据:595K 图像-caption 对
- 只训 Linear projection(
LLaMA和ViT都冻结) - 目标:让视觉 token 落在 LLM 能理解的语义空间
阶段 2(Visual Instruction Tuning):
- 数据:158K
GPT-4生成的多模态指令 - 训练 projection + LLM(
ViT仍冻结) - 目标:学习遵循视觉相关的指令
为什么简单但有效
对比 BLIP-2 的 Q-Former(复杂,需要 pretrain):LLaVA 的 Linear 投影几乎没参数,但凭借
- CLIP-ViT 已经对齐语言
LLaMA本身理解能力强- 高质量指令数据
就能达到 SOTA 级多模态能力。
面试考点
"LLaVA 的核心简化是什么?" 把所有复杂性塞进"大 LLM + 强 vision encoder + 简单桥接"的设计——而不是像 Flamingo 那样用复杂的 cross-attention 模块。
"为什么只用 Linear 就够了?" CLIP-ViT 已经学会了图像的语义向量——这些向量已经在某种"语言对齐"的空间里。LLM 的词向量空间也是语义向量。两者都是语义向量,差一个线性变换合理。
"两阶段训练为什么?" 避免破坏 LLM 预训练能力。阶段 1 只训 projection,让视觉 token 安全落在 LLM 理解的空间;阶段 2 小心地微调整个 LLM(视觉相关能力)。
"LLaVA 和 Flamingo 的关键差异?"
LLaVA: visual token 和 text token 同等喂入——LLM 看来是纯语言任务Flamingo: 用 cross-attention 把视觉信息注入 LLM 的中间层——更精细但更复杂
"LLaVA 的扩展方向?"
- 高分辨率:LLaVA-NeXT 动态切图
- 视频:Video-LLaVA
- 多图:VILA、IXC-2.5
- 更强视觉编码器:
InternVL的 InternViT-6B
"面试常被追问:怎么训练一个 VLM?" 答案框架:
- 选 vision encoder(CLIP-ViT / SigLIP / 更强的 InternViT)
- 选 LLM backbone(
LLaMA/ Qwen / Yi) - 设计桥接模块(Linear / MLP / Q-Former / Perceiver Resampler)
- 两阶段训练(alignment → instruction tuning)
- 可选第三阶段:
RLHF/DPO对齐