ESC
输入关键词搜索文章
目录

Flamingo

NeurIPS 2022 · DeepMind
冻结 Chinchilla 70B + 视觉注入,32-shot 逼近 fine-tuned SOTA
80B总参数
6/16任务 few-shot 超越 fine-tuned
43MM3W 交错数据
64视觉 token
问题
如何让冻结的 LLM "看懂"图片?

大语言模型(如 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\) 逐渐增大,视觉信息慢慢"渗入"。

为什么是 tanh 而不是 sigmoid? tanh 的输出范围是 [-1, 1],允许视觉注入对 LLM 的中间表征做正向和负向调整。sigmoid 只允许正向调整。这个设计选择对训练稳定性至关重要。

3. Image-Causal Masking:交错多图理解

Flamingo 需要处理图像和文本交错出现的输入序列。关键设计:每个 text token 只 cross-attend 到紧邻其前的图像,通过 LM 的 self-attention 间接依赖之前所有图像。这保证了因果性——模型不会"偷看"未来的图像。

训练时最多处理 5 张图/序列,推理时可泛化到 32 张。

数据
交错数据:Few-shot 能力的秘密

Flamingo 的 few-shot 能力不只来自架构设计,更来自训练数据。核心数据集是 M3W(MultiModal MassiveWeb):43M 网页中的交错图文序列。不同于 CLIP 使用的图文配对数据,M3W 保留了图片在文本中的原始位置关系——这对 few-shot prompting 至关重要。

数据集规模类型
M3W43M 网页交错图文(核心)
ALIGN1.8B 图文对图文配对
LTIP312M长文本-图像对
VTP27M视频-文本对

消融实验证实:去掉 M3W 交错数据后,few-shot 性能大幅下降。这说明 few-shot 能力不是"免费的"——模型需要在训练时就见过"图文交错出现"的模式,才能在推理时理解 few-shot prompt。

实验
Few-shot 逼近甚至超越 Fine-tuned SOTA

关键 few-shot 结果(32-shot)

任务Flamingo-80BFew-shot SOTAFine-tuned SOTA
VQAv282.0 (32-shot)56.3 (16-shot OFA)89.0
COCO Caption113.8 CIDEr32.2 (0-shot)143.3
OK-VQA57.843.3 (16-shot)-
MSVD-QA52.335.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 vs BLIP-2:两种桥接哲学

Flamingo 和 BLIP-2 都采用了"冻结 LLM + 视觉桥接"的思路,但设计哲学截然不同:

维度FlamingoBLIP-2
连接器Perceiver Resampler (64 token)Q-Former (32 token)
注入方式LM 层间插入 cross-attnQ-Former 输出投影为 soft prompt
训练策略单阶段 (LM only)两阶段 (ITC+ITG+ITM → LM)
可训练参数1.4-10.2B108M
核心优势大规模 LLM 带来的知识极致的参数效率

Flamingo 的 Perceiver Resampler 和 Gated XAttn 直接影响了 BLIP-2 的 Q-Former 设计。但 Q-Former 更轻量(32 vs 64 queries)且用两阶段训练替代单阶段,效率更高。在 VQAv2 zero-shot 上,BLIP-2 用 1/54 的可训练参数反超了 Flamingo。

定位
在 VLP 演进中的角色

Flamingo 首次证明了冻结 LLM + 视觉注入的 few-shot 学习范式可以在多种任务上逼近甚至超越 fine-tuned 模型。这个范式与 BLIP-2 的"冻结 + 轻量桥接"范式是同一年的平行创新,但侧重点不同:Flamingo 追求 few-shot 通用性,BLIP-2 追求参数效率。

Flamingo 也确立了"交错多模态数据训练"的重要性——后来的 LLaVA 等工作虽然用了不同的连接器设计,但都沿用了 Flamingo 对"图文交错输入"的处理方式。

局限:80B 模型不开源,限制了社区使用;视频理解仅为帧级编码,缺乏精细时序建模。

补强 · 机制图解
Flamingo 如何把视觉插入冻结语言模型?
图 1:Flamingo 如何把视觉插入冻结语言模型?(代码绘制)
图 1:Flamingo 如何把视觉插入冻结语言模型?(代码绘制)

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 和指令数据简化连接器。

图 2:关键数据或机制展开(代码绘制)
图 2:关键数据或机制展开(代码绘制)
graph LR
  A[输入] --> B[核心模块]
  B --> C[对齐 / 压缩 / 训练]
  C --> D[下游能力]
  D --> E[实验验证]
图 3:关键结果摘要(代码绘制)
图 3:关键结果摘要(代码绘制)
补强 · 读法
Flamingo 为什么强调交错输入?

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 这条路是可行的。

论文原图更新
从 arXiv source 提取 Flamingo 原始图
Flamingo overview 原图
图 A:Flamingo 总体架构原图,展示冻结视觉编码器、Perceiver Resampler、冻结 LM 与 Gated XAttn-Dense 层(来源:Flamingo arXiv source;MiniMax MCP 已辅助理解)
Flamingo Perceiver Resampler 原图
图 B:Perceiver Resampler 原图,展示视觉特征如何压缩为固定数量视觉 token(来源:Flamingo arXiv source)

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