Flamingo
大语言模型(如 GPT-3、Chinchilla)在纯文本任务上展现了惊人的 few-shot 能力——只需在 prompt 中给出几个示例,模型就能适应新任务。但它们有一个根本性的局限:看不见图像。
如果能让 LLM 也具备 few-shot 视觉理解能力,应用前景巨大——用户只需给模型看几张示例图片,就能完成新的视觉任务,无需微调。但挑战在于:LLM 的参数是冻结的,如何在不动 LLM 权重的前提下,把视觉信息"注入"进去?
Flamingo 给出了三个精巧的工程解法。
1. Perceiver Resampler:压缩视觉信息
冻结的视觉编码器(NFNet-F6)输出的是可变大小的 2D 空间特征网格。LLM 能处理的输入序列长度有限,不能直接把这些特征灌进去。
Perceiver Resampler 的解决方案:用 64 个可学习 latent queries 通过 cross-attention 从视觉特征中提取关键信息,输出固定长度的 64 个视觉 token。与 DETR 的思路类似——learned queries cross-attend to spatial features,只保留最关键的信息。
2. Gated XATTN-DENSE:安全的视觉注入
在冻结 LM 层之间插入新初始化的 cross-attention 层,让文本能够"看到"视觉 token。但直接插入新层有一个风险:训练初期,这些随机初始化的层会输出噪声,破坏 LLM 原有的语言能力。
Flamingo 的解决方案是 tanh gating:cross-attention 的输出乘以 \(\tanh(\alpha)\),其中 \(\alpha\) 初始化为 0。这意味着训练初期模型输出等价于原始 LLM(视觉注入为零),随着训练进行 \(\alpha\) 逐渐增大,视觉信息慢慢"渗入"。
3. Image-Causal Masking:交错多图理解
Flamingo 需要处理图像和文本交错出现的输入序列。关键设计:每个 text token 只 cross-attend 到紧邻其前的图像,通过 LM 的 self-attention 间接依赖之前所有图像。这保证了因果性——模型不会"偷看"未来的图像。
训练时最多处理 5 张图/序列,推理时可泛化到 32 张。
Flamingo 的 few-shot 能力不只来自架构设计,更来自训练数据。核心数据集是 M3W(MultiModal MassiveWeb):43M 网页中的交错图文序列。不同于 CLIP 使用的图文配对数据,M3W 保留了图片在文本中的原始位置关系——这对 few-shot prompting 至关重要。
| 数据集 | 规模 | 类型 |
|---|---|---|
| M3W | 43M 网页 | 交错图文(核心) |
| ALIGN | 1.8B 图文对 | 图文配对 |
| LTIP | 312M | 长文本-图像对 |
| VTP | 27M | 视频-文本对 |
消融实验证实:去掉 M3W 交错数据后,few-shot 性能大幅下降。这说明 few-shot 能力不是"免费的"——模型需要在训练时就见过"图文交错出现"的模式,才能在推理时理解 few-shot prompt。
关键 few-shot 结果(32-shot)
| 任务 | Flamingo-80B | Few-shot SOTA | Fine-tuned SOTA |
|---|---|---|---|
| VQAv2 | 82.0 (32-shot) | 56.3 (16-shot OFA) | 89.0 |
| COCO Caption | 113.8 CIDEr | 32.2 (0-shot) | 143.3 |
| OK-VQA | 57.8 | 43.3 (16-shot) | - |
| MSVD-QA | 52.3 | 35.2 (0-shot) | 47.9 |
在 6/16 任务上,Flamingo-80B 的 few-shot 性能超越了对应任务的 fine-tuned SOTA。这意味着仅用 32 个示例的 prompting 就能逼近需要完整训练数据集的微调方法。
消融实验关键发现
- Perceiver Resampler > 普通 Transformer > MLP(作为连接器)。Perceiver 的 learned query 设计在信息压缩上更有效。
- tanh gating 至关重要。去掉 gating 机制后训练不稳定,性能显著下降。
- M3W 交错数据不可替代。换成纯图文配对数据训练,few-shot 能力几乎消失。
- 单图像 cross-attention > 全历史图像 cross-attention。只关注最近的图像比关注所有历史图像效果更好。
Flamingo 和 BLIP-2 都采用了"冻结 LLM + 视觉桥接"的思路,但设计哲学截然不同:
| 维度 | Flamingo | BLIP-2 |
|---|---|---|
| 连接器 | Perceiver Resampler (64 token) | Q-Former (32 token) |
| 注入方式 | LM 层间插入 cross-attn | Q-Former 输出投影为 soft prompt |
| 训练策略 | 单阶段 (LM only) | 两阶段 (ITC+ITG+ITM → LM) |
| 可训练参数 | 1.4-10.2B | 108M |
| 核心优势 | 大规模 LLM 带来的知识 | 极致的参数效率 |
Flamingo 的 Perceiver Resampler 和 Gated XAttn 直接影响了 BLIP-2 的 Q-Former 设计。但 Q-Former 更轻量(32 vs 64 queries)且用两阶段训练替代单阶段,效率更高。在 VQAv2 zero-shot 上,BLIP-2 用 1/54 的可训练参数反超了 Flamingo。
Flamingo 首次证明了冻结 LLM + 视觉注入的 few-shot 学习范式可以在多种任务上逼近甚至超越 fine-tuned 模型。这个范式与 BLIP-2 的"冻结 + 轻量桥接"范式是同一年的平行创新,但侧重点不同:Flamingo 追求 few-shot 通用性,BLIP-2 追求参数效率。
Flamingo 也确立了"交错多模态数据训练"的重要性——后来的 LLaVA 等工作虽然用了不同的连接器设计,但都沿用了 Flamingo 对"图文交错输入"的处理方式。
局限:80B 模型不开源,限制了社区使用;视频理解仅为帧级编码,缺乏精细时序建模。
Flamingo 的出发点是复用强大的冻结 LLM,而不是重新训练一个多模态模型。视觉编码器给出的特征是空间网格或时空网格,长度不固定;LLM 需要的是稳定的 token 序列。Perceiver Resampler 因此用 64 个 latent queries 把视觉特征压缩为固定数量 visual tokens。真正保护 LLM 语言能力的是 Gated XATTN-DENSE。新插入的 cross-attention 层如果一开始就强行影响 LLM,随机初始化会破坏语言分布。Flamingo 把 cross-attention 输出乘以 tanh gate,并把 gate 参数初始化为 0,使模型训练初期几乎等价于原始 LLM。M3W 是 Flamingo 的灵魂之一。Few-shot prompt 本身就是图像和文本交错的结构,如果模型训练时只见过单图单文本对,推理时很难自然理解“示例图像 + 示例问答 + 新图像 + 新问题”的格式。消融实验也显示,M3W 对 few-shot 性能非常关键。Flamingo 的代价是巨大模型和不开源限制。它证明了方向,但不容易复现。BLIP-2 后来用 Q-Former 和两阶段训练把这条路线大幅压缩;LLaVA 则进一步用 MLP 和指令数据简化连接器。
graph LR A[输入] --> B[核心模块] B --> C[对齐 / 压缩 / 训练] C --> D[下游能力] D --> E[实验验证]
Flamingo 的 few-shot 能力不是偶然出现的。纯图文对只能教会模型“这张图对应这段文本”,但 few-shot prompt 的真实形态是多张图、多段文字、多个问答示例交错出现。模型要学会的不只是图文语义对齐,还要学会在上下文中识别“这是示例”“这是新问题”“这是应该回答的目标”。
M3W 的价值就在这里。网页天然包含图片与段落交错出现的结构,比单图 caption 更接近多模态上下文学习。Image-causal masking 进一步规定了信息流方向:文本只能看见之前相关的图像,不能偷看未来图像。这让 Flamingo 的训练目标与推理时的 few-shot prompt 更一致。
它的局限同样来自规模路线。80B 模型和私有数据让社区很难复现。BLIP-2 后来用更小的 Q-Former 做参数高效桥接,LLaVA 则用开源 LLM 和合成指令数据降低门槛。Flamingo 更像是一个大型原型,证明视觉语言 few-shot 这条路是可行的。


MiniMax 对图 A 的理解确认:蓝色模块表示冻结参数,紫色模块表示从头训练参数;视觉路径通过 Vision Encoder 与 Perceiver Resampler 形成 visual tokens,文本路径进入冻结 LM,并通过 Gated XATTN-DENSE 层注入视觉信息。该图支撑正文中“冻结大模型 + 可训练桥接层”的解释。
参考来源
- Alayrac, J-B. et al. "Flamingo: a Visual Language Model for Few-Shot Learning." NeurIPS 2022. arXiv:2204.14198