Vision-Language Pre-training
人类感知世界的方式是天然的"多模态"——我们同时用眼睛看、用耳朵听、用语言表达。但在 AI 的世界里,视觉和语言长期是两个独立王国:计算机视觉模型处理像素,NLP 模型处理 token,两者互不相通。
Vision-Language Pre-training(VLP)的目标就是打通这两个王国。通过大规模图文配对数据的预训练,让模型学会一个视觉和语言共享的表征空间——图像和文本在这个空间里可以"对话"。
为什么这件事重要?因为一旦视觉和语言被统一到同一空间,模型就能做到很多之前做不到的事:给你一张图,它能检索相关文本;给你一段描述,它能找到对应图片;甚至能像人一样"看图说话"、"看图推理"、"看图回答问题"。
2021 年 CLIP 的出现标志着一个新起点。此后五年,这个领域经历了五次范式跃迁,每一次都在解决上一次留下的结构性瓶颈。
为什么对比学习是起点?
VLP 的第一步是建立视觉和语言之间的基本"对齐"。最直觉的方法就是对比学习:给模型一批图文对,让它学会判断哪些图片和哪些文本是匹配的。匹配的对在嵌入空间中拉近,不匹配的推远。
这就像教一个小孩认识世界:指着猫的图片说"这是一只猫",指着狗的图片说"这是一条狗"。通过大量正反例的对比,模型自然学会视觉和语言的对应关系。
CLIP:证明"规模就是一切"
CLIP(OpenAI, 2021)用双塔架构(ViT 图像编码器 + Transformer 文本编码器)在 4 亿网络爬取的图文对上做 softmax 对比训练。核心损失函数是 InfoNCE:
\(\mathcal{L}_{i2t} = -\frac{1}{N} \sum_{i=1}^N \log \frac{\exp(S_{ii}/\tau)}{\sum_{j=1}^N \exp(S_{ij}/\tau)}\)
其中 \(S_{ij}\) 是第 \(i\) 张图和第 \(j\) 段文本的余弦相似度,\(\tau\) 是温度参数,\(N\) 是 batch size。分母中的全局归一化是关键——模型需要在整个 batch 中"找到"正确的配对。
CLIP 的核心贡献不在算法创新(对比学习不是新东西),而在规模:4 亿图文对 + 大 batch size(32768)证明了"足够多的噪声数据 + 简单的对比目标"足以学到强大的视觉-语言表征。零样本 ImageNet 分类 76.2% top-1,与监督训练的 ResNet 相当。
但 CLIP 留下两个问题:1)只有编码能力,没有生成能力;2)softmax 对比损失对 batch size 的巨大依赖(32768 是硬件门槛)。
SigLIP:解耦 batch size 与损失函数
SigLIP(Google DeepMind, 2023)针对第二个问题提出了一个优雅的解法:把 softmax 多分类换成 sigmoid 二元分类。每个图文对独立判断"是否匹配",不依赖 batch 内其他样本:
\(\mathcal{L} = -\frac{1}{n} \sum_{i=1}^{n} \log \frac{1}{1 + e^{z_{ij}(-t) + b}}\)
内存开销从 batch size 的平方增长降为线性增长。在 WebLI(10B 图文对)上训练,零样本 ImageNet 约 88% top-1。
反直觉的是,sigmoid loss 在小 batch size 下的性能远好于 softmax 在小 batch size 下的性能。这意味着:资源有限的研究者也能训练出有竞争力的对比学习模型。
CLIP 的根本局限
CLIP 的双塔架构天生只能做"编码"——它能把图像和文本映射到同一空间并比较相似度,但不能生成文本。这意味着 CLIP 做不了 image captioning(看图说话),也做不了 VQA(看图回答问题)。在 VLP 的版图上,只覆盖了"理解"这一半。
当时的方案是各做各的:encoder-only 模型(CLIP)做检索,encoder-decoder 模型(SimVLM)做生成。但 BLIP 问了一个更好的问题:能不能用一个模型同时做好两件事?
MED:三种模式共享参数
BLIP(Salesforce, ICML 2022)提出 MED(Multimodal Mixture of Encoder-Decoder)。一个模型通过切换 self-attention mask 实现三种功能模式:
- Unimodal Encoder:标准 BERT 式编码器,用 ITC(Image-Text Contrastive)损失对齐视觉-语言表征
- Image-Grounded Text Encoder:插入 cross-attention 注入视觉信息,用 ITM(Image-Text Matching)损失做细粒度图文匹配
- Image-Grounded Text Decoder:因果 self-attention 做自回归生成,用 LM(Language Modeling)损失
三种模式共享 embedding、cross-attention 和 FFN 参数,仅 self-attention 层分叉。这迫使模型学习"通用的视觉-语言交互方式",而非针对单一任务的特化表示。
CapFilt:从噪声中提炼信号
BLIP 解决的另一个问题是数据质量。Web 爬取的图文对噪声严重。CapFilt(Captioning and Filtering)用预训练模型来改进训练数据:
- Captioner:为 web 图像生成合成 caption
- Filter:过滤噪声 caption
关键工程发现:Captioner 和 Filter 必须独立训练。共享参数会导致 confirmation bias——Filter 倾向认可自己生成的 caption,即使它是噪声。
定量突破
BLIP 在相同 14M 数据量下比 ALBEF 在 COCO 检索上提升 +3.0% TR@1。更惊人的是数据效率:BLIP 用 14M 数据在 Flickr30K 零样本检索达到 94.8% TR@1,远超 CLIP 用 400M 数据的 88.0%。CapFilt 的数据质量提升比堆数据量有效得多。
BLIP 的局限:仍然需要端到端训练整个模型。当视觉编码器和语言模型都越来越大时,计算成本不可接受。这就是 BLIP-2 要解决的问题。
端到端训练为什么越来越不可行?
BLIP 的 MED 证明了统一理解和生成的可行性,但有一个隐含前提:整个模型端到端训练。当 ViT 从 ViT-B 涨到 ViT-g、LLM 从 BERT-base 涨到 175B 时,端到端训练的成本变为天文数字。
一个自然的思路:冻结已有的视觉编码器和语言模型,只训练一个轻量"桥接模块"连接它们。但这带来三个挑战:模态鸿沟(冻结 ViT 和冻结 LLM 之间的语义差距)、灾难性遗忘(解冻 LLM 会破坏语言能力)、信息瓶颈(ViT 输出维度远大于 LLM 能处理的长度)。
Q-Former:学会"问对问题"的信息漏斗
Q-Former(Querying Transformer, 188M 参数)的核心比喻是信息漏斗:32 个可学习 query embeddings 通过 cross-attention 从冻结 ViT 的海量输出中,只提取与语言最相关的视觉信息。输出仅为 32×768,远小于 ViT-L 的 257×1024。
为什么是 32 个 queries?这是一个刻意的信息瓶颈——迫使模型做出选择,只保留最重要的视觉信息。如果 queries 太多,模型会偷懒直接搬运视觉特征。
两阶段训练:为什么跳过 Stage 1 会崩?
Stage 1: Vision-Language Representation Learning。Q-Former 连接冻结 ViT,联合优化 ITC + ITG + ITM 三个目标。ITG 是关键创新:迫使 queries 提取"对生成文本有用的视觉信息"。
Stage 2: Generative Learning。Q-Former 连接冻结 LLM(OPT/FlanT5),输出经 FC 层投影为 soft visual prompts 前置于 LLM 输入。
消融实验证明:跳过 Stage 1 直接做 Stage 2,OPT 会发生严重的灾难性遗忘。原因在于,未经预训练的 Q-Former 输出对 LLM 来说是纯噪声,LLM 为适应噪声会大幅调整权重,破坏语言能力。Stage 1 的价值在于:先让 Q-Former 学会输出"LLM 能理解的东西"。
54 倍的效率超越
| 模型 | 可训练参数 | VQAv2 zero-shot |
|---|---|---|
| Flamingo-80B | 10.2B | 56.3% |
| BLIP-2 (ViT-g + FlanT5-XXL) | 108M | 65.0% (+8.7) |
54× 更少可训练参数,性能反超 Flamingo-80B。这证明了"冻结大模型 + 精心设计的轻量桥接"范式的巨大效率优势。
BLIP-2 的局限:在 OK-VQA(依赖外部知识)上不如 Flamingo-80B,说明更大的 LLM 在需要开放世界知识的任务上仍有优势。两阶段训练也增加了工程复杂度。
与 BLIP-2 的根本区别
Flamingo(DeepMind, NeurIPS 2022)和 BLIP-2 都采用"冻结 LLM + 视觉桥接"思路,但设计哲学截然不同。BLIP-2 追求参数效率(用最少的可训练参数达到最强性能),Flamingo 追求规模最大化(用最大的 LLM 获得最强的 few-shot 能力)。
三大架构创新
Perceiver Resampler:64 个可学习 latent queries 通过 cross-attention 从冻结 NFNet 视觉编码器提取特征,输出固定 64 个视觉 token。与 Q-Former 的 32 queries 类似,但规模更大。
Gated XATTN-DENSE:在冻结 LM 层间插入 cross-attention 层,让文本能"看到"视觉 token。关键创新是 tanh gating:输出乘以 \(\tanh(\alpha)\),\(\alpha\) 初始化为 0。训练初期等价于原始 LLM(视觉注入为零),随训练进行 \(\alpha\) 逐渐增大。这保证了训练稳定性。
Image-causal masking:每个 text token 只 cross-attend 到紧邻其前的图像,通过 LM self-attention 间接依赖之前所有图像。训练时最多 5 张图,推理时泛化到 32 张。
交错数据:Few-shot 能力的秘密
Flamingo 的 few-shot 能力不只来自架构,更来自训练数据。核心数据集 M3W(43M 网页的交错图文序列)保留了图片在文本中的原始位置关系。消融实验证实:去掉 M3W 后 few-shot 性能大幅下降。
在 6/16 任务上,Flamingo-80B 的 32-shot 性能超越了对应任务的 fine-tuned SOTA。这意味着仅用 32 个示例的 prompting 就逼近了需要完整训练集的微调方法。
Flamingo vs BLIP-2:两种哲学的碰撞
| 维度 | Flamingo | BLIP-2 |
|---|---|---|
| 连接器 | Perceiver Resampler (64 token) | Q-Former (32 token) |
| 注入方式 | LM 层间 cross-attn | Soft visual prompt |
| 训练 | 单阶段 (LM only) | 两阶段 (对齐 → 生成) |
| 可训练参数 | 1.4–10.2B | 108M |
| 核心优势 | 大规模 LLM 的知识 | 极致参数效率 |
两者不是谁替代谁的关系。Flamingo 的 Perceiver Resampler 和 Gated XAttn 直接启发了 BLIP-2 的 Q-Former 设计;BLIP-2 用更少的参数在 VQAv2 上反超 Flamingo,但在需要更多外部知识的 OK-VQA 上 Flamingo 仍有优势。
从"任务特异"到"通用对话"
BLIP-2 和 Flamingo 解决了"如何让 LLM 理解图像",但交互方式仍是任务特异的——VQA 就回答问题,captioning 就生成描述。NLP 领域的 instruction tuning 已经证明了:用多样化的指令数据微调 LLM,可以让模型学会按人的意图行动。LLaVA 问了一个简单的问题:能不能把 instruction tuning 扩展到多模态?
极简到令人惊讶的架构
CLIP ViT-L/14(冻结)→ 简单 MLP(可训练)→ Vicuna LLM(可训练)
没有 Q-Former 的信息瓶颈,没有 Perceiver Resampler 的 learned queries,没有 Gated XAttn 的复杂注入。就是一个 MLP。
为什么这么简单还能工作?因为数据质量和LLM 能力才是瓶颈,不是连接器复杂度。当 LLM 足够强(Vicuna)、数据足够好(GPT-4 生成),MLP 就足以把 CLIP 视觉特征投影到 LLM 的语义空间。
GPT-4 当老师
LLaVA 用纯语言的 GPT-4 将 COCO 的 image-text pairs 转化为 158K 多模态指令数据:
| 类型 | 数量 | 描述 |
|---|---|---|
| Conversation | 58K | 多轮对话,关于图像内容 |
| Detail Description | 23K | 详细描述图像内容 |
| Complex Reasoning | 77K | 需要逻辑推理的问题 |
这个范式——用强 LLM 生成训练数据来训练多模态模型——成为后续几乎所有 MLLM 的标准操作。LLaVA-NeXT、InstructBLIP、Qwen-VL 都沿用了这条路线。
LLaVA-13B 在 ScienceQA 上达到 92.53% 准确率,首次超越人类的 88.48%。
CLIP 只看"全局",细节怎么办?
CLIP 做的是图像级对齐:整张图和整段文本的相似度。当你需要定位图片中的具体对象时("图中的狗在哪里?"),CLIP 就无能为力了。
GLIP(Microsoft, CVPR 2022)的核心洞察:目标检测本质上就是一种定位(grounding)任务。如果把"检测"和"定位"统一,就能利用大规模图文对数据训练检测器。
检测 = 定位
GLIP 将检测器的分类头替换为 region-word 对齐得分:
\(S = O \cdot P^{T}\)
当输入"dog"时做检测,输入"the brown dog sitting on the left"时做定位。同一个模型、同一个损失函数。
通过 deep fusion(图像-语言编码器间的 cross-attention)使视觉表征具有语言感知能力,再加上 self-training(为 24M web 数据生成 78.1M 伪标注 grounding box),GLIP 实现了 zero-shot COCO 检测 49.8 AP,超越监督 Faster R-CNN 7.8 个点。
GLIP 的贡献从粒度维度补充了 VLP:CLIP 做图像级对齐,BLIP 做图像级 + 细粒度匹配,GLIP 直接推进到对象级/区域级。
连接器架构对比
| 方法 | 连接器 | 可训练参数 | 训练策略 | 核心思想 |
|---|---|---|---|---|
| Flamingo (2022) | Perceiver Resampler + Gated XAttn | 1.4–10.2B | 单阶段 (LM) | 64 queries + tanh gating |
| BLIP-2 (2023) | Q-Former (信息瓶颈) | 188M | 两阶段 (对齐→生成) | 32 queries + 瓶颈压缩 |
| LLaVA (2023) | MLP / Linear | 极少 | 两阶段 (对齐→指令微调) | 最简单的线性投影 |
训练目标对比
| 目标 | 使用者 | 作用 |
|---|---|---|
| ITC (Image-Text Contrastive) | CLIP, BLIP, BLIP-2, SigLIP | 对齐视觉-语言表征空间 |
| ITM (Image-Text Matching) | BLIP, BLIP-2 | 细粒度图文匹配 |
| LM (Language Modeling) | BLIP, Flamingo, LLaVA | 生成能力 |
| ITG (Image-grounded Text Gen) | BLIP-2 | 视觉条件文本生成 |
| Grounding Loss | GLIP | 区域-词对齐 |
关键定量结果(零样本)
| 模型 | VQAv2 | COCO Caption CIDEr | Flickr30K TR@1 | 特殊指标 |
|---|---|---|---|---|
| CLIP ViT-L | — | — | 88.0 | ImageNet 76.2% |
| BLIP ViT-L | 77.54 (ft) | 105.1 | 96.7 | 数据效率: 14M > 400M |
| Flamingo-80B | 82.0 (32-shot) | 113.8 | — | 6/16 超越 fine-tuned |
| BLIP-2 (ViT-g) | 65.0 | 121.6 | 97.6 | 108M 参数 |
| GLIP-L | — | — | — | COCO det 49.8 AP |
| SigLIP | — | — | — | ImageNet ≈88% |
graph LR
subgraph 2021
CLIP["CLIP
对比学习
双塔编码器"]
end
subgraph 2022
BLIP["BLIP
统一理解+生成
MED 三模式"]
Flamingo["Flamingo
冻结LLM+注入
Few-shot"]
GLIP["GLIP
对象级对齐
检测=定位"]
end
subgraph 2023
BLIP2["BLIP-2
Q-Former
信息瓶颈"]
LLaVA["LLaVA
视觉指令微调
MLP连接"]
SigLIP["SigLIP
Sigmoid Loss
效率优化"]
end
CLIP -->|"只有编码
没有生成"| BLIP
CLIP -->|"batch依赖
效率低"| SigLIP
BLIP -->|"端到端训练
成本高"| BLIP2
Flamingo -->|"Perceiver
启发"| BLIP2
Flamingo -->|"冻结LLM
范式"| LLaVA
BLIP2 -->|"复杂连接器
是否必要?"| LLaVA
CLIP -->|"图像级对齐
不够细"| GLIP
回顾 2021-2026 的演进,可以看到清晰的"问题 → 解法 → 新问题"链式推进:
2021:对比学习范式确立。CLIP 证明了大规模对比学习的可行性。但 CLIP 只能编码不能生成,且训练对 batch size 要求极高。
2022:统一 + Few-shot + 细粒度三线并进。BLIP 统一了理解和生成,Flamingo 证明了冻结 LLM 的 few-shot 学习,GLIP 从图像级推进到对象级。三条线各自独立推进。
2023:收敛与简化。BLIP-2 的 Q-Former 将 Flamingo 的 Perceiver Resampler 简化为更高效的信息瓶颈;LLaVA 的 MLP 进一步将 Q-Former 简化为最简单的投影层。SigLIP 从训练效率角度优化了对比学习。四条线开始收敛。
2024-2026:开源追平 + 新前沿。InternVL、Cambrian-1 等开源模型达到 GPT-4V 级性能。多模态 Agent 能力、视频理解、统一 tokenizer 的理解+生成成为新方向。
- 连接器的最优设计:Q-Former vs MLP vs Perceiver?LLaVA 证明了简单连接器在好数据+好 LLM 下足够,但随着任务复杂度提升(视频理解、多轮推理),是否需要更复杂的连接器?
- 视觉编码器的 scaling:当前 ViT 参数远小于 LLM(ViT-L 300M vs LLaVA 的 Vicuna-13B),视觉侧是否需要 scaling up?视觉编码器能力不足是否是瓶颈?
- 统一理解+生成:当前方案用 LLM 做生成、用 CLIP 做理解,两者的表征空间是否需要统一?BAGEL 等工作正在探索统一 tokenizer 的方案。
- 数据工程的天花板:CapFilt/self-training/合成数据的上限在哪?GPT-4 生成的指令数据引入了 GPT-4 的偏差,如何避免?
- 视频理解:当前方案多为帧级编码,缺乏精细时序建模。视频的时空复杂性需要新的架构设计。
- 多模态 Agent:VLM 如何与工具使用、规划、记忆等 Agent 能力融合?从"看图说话"到"看图行动"的跨越。
本文是 VLP 领域的系统性综述。以下每篇论文都有独立的深度解读博客:
参考来源
- Radford, A. et al. "Learning Transferable Visual Models From Natural Language Supervision." ICML 2021. arXiv:2103.00020 (CLIP)
- Li, J. et al. "BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation." ICML 2022. arXiv:2201.12086
- Li, J. et al. "BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models." CVPR 2023. arXiv:2301.12597
- Alayrac, J-B. et al. "Flamingo: a Visual Language Model for Few-Shot Learning." NeurIPS 2022. arXiv:2204.14198
- Li, L.H. et al. "Grounded Language-Image Pre-training." CVPR 2022. arXiv:2112.03857 (GLIP)
- Zhai, X. et al. "Sigmoid Loss for Language Image Pre-Training." ICCV 2023. arXiv:2303.15343 (SigLIP)
- Liu, H. et al. "Visual Instruction Tuning." NeurIPS 2023. arXiv:2304.08485 (LLaVA)