土法炼钢兴趣小组的算法知识备份

【Transformer 与注意力机制】46|多模态融合:CLIP、Flamingo、LLaVA、SAM

文章导航

分类入口
transformer
标签入口
#transformer#multimodal#clip#flamingo#llava#sam

Transformer系列导航

按系列顺序继续阅读,而不是停在单篇。

系列目录上一篇:【Transformer 与注意力机制】45|ViT:patch size 和分辨率如何锁死序列长度,归纳偏置去哪了下一篇:【Transformer 与注意力机制】47|Diffusion + Transformer:DiT 与 Sora 为什么用 Transformer

目录

45|ViT 说明图像可以被切成 patch token。下一步的问题是:图像 token 和文本 token 放进同一个系统里之后,谁对齐谁、怎么对齐、代价是什么?

“多模态”这个词经常被简化成”给图片配一句 caption 再喂给语言模型”。这个简化会漏掉三件真正决定模型能力和失败模式的事:CLIP 的对比学习为什么依赖 batch 大小和温度、视觉信息接入语言模型的三种主流方式各自在哪里出问题、以及”分割”和”聊天”为什么至今是两条没有合并的产品线。本文只讲透 CLIP、Flamingo、LLaVA、SAM 这四条代表线,不逐年追每次刷榜的多模态 SOTA。

本篇能让你学会四件事:

  1. CLIP 的对比学习损失里,batch 负样本和温度分别在优化什么,图文数据本身的错配会带来什么系统性噪声;
  2. projector、cross-attention(Flamingo)、指令微调(LLaVA)三种视觉-语言连接方式各自的失败模式:幻觉从哪来、OCR 为什么弱、分辨率瓶颈卡在哪;
  3. SAM 的 promptable segmentation 为什么和”看图聊天”是两条不同产品线,不是同一条线的两个版本;
  4. early / late / hybrid fusion 在训练和部署上的真实成本差异,以及”统一 token 接口”这个方向目前的争论和开放问题。

一、CLIP:对比学习到底在优化什么

CLIP(Radford et al., ICML 2021)训练两个独立 encoder:图像 encoder \(f_I\) 和文本 encoder \(f_T\)。对一个 batch 里的 \(N\) 个图文对 \((I_i, T_i)\),先各自归一化成单位向量:

\[u_i = \frac{f_I(I_i)}{\|f_I(I_i)\|}, \qquad v_i = \frac{f_T(T_i)}{\|f_T(T_i)\|}\]

再算出一个 \(N \times N\) 的相似度矩阵 \(S_{ij} = u_i \cdot v_j\)。训练目标不是”生成 caption”,而是让对角线上的正确配对 \(S_{ii}\) 在这一整行、这一整列里都是最大值。损失是双向的 InfoNCE:

\[\mathcal{L} = \frac{1}{2N}\sum_{i=1}^{N}\left[-\log\frac{\exp(S_{ii}/\tau)}{\sum_{j=1}^{N}\exp(S_{ij}/\tau)} \;-\; \log\frac{\exp(S_{ii}/\tau)}{\sum_{j=1}^{N}\exp(S_{ji}/\tau)}\right]\]

前一项是”给定图像找文本”(image-to-text),后一项是”给定文本找图像”(text-to-image)。两个方向都算,是因为图像 encoder 和文本 encoder 是独立训练的两套参数,只优化一个方向会让另一个方向的检索质量掉下去。

温度 \(\tau\) 不是可以随手设的超参。 CLIP 把 \(1/\tau\)(论文里叫 logit scale)设成一个可学习的标量,训练中不断更新,并裁剪上限使其不超过 100(即 \(\tau\) 不小于 0.01),避免训练早期梯度爆炸。从损失形式上可以直接看出温度的作用:\(\tau\) 越小,softmax 越尖锐,梯度集中在少数”最容易混淆的负样本”上,模型被迫把最像的负例推得更远;\(\tau\) 越大,损失对所有负样本一视同仁,训练更稳但区分度更弱。这是从上面 softmax 公式直接推出的性质,不依赖额外实验。

batch 大小决定负样本数量,而负样本数量决定这套方法能不能学到细粒度区分。 对每个正样本 \((I_i, T_i)\),batch 内剩下的 \(N-1\) 个都是负样本。CLIP 用的 batch size 是 32768,相当于每一步给每个正样本配了 32767 个负样本去对比——这个规模的负样本池,才能让模型在”金毛”和”拉布拉多”这种细分类别之间学出区分,而不只是学会”狗”和”车”的粗糙区分。这也是对比学习(contrastive learning)从 SimCLR、MoCo 一路延续下来的共同结论:负样本越多、越难,学到的表示越精细。

但大 batch 负样本会引入图文错配(false negative)。 如果一个 batch 里恰好有两张不同的金毛犬照片 \(I_i\)\(I_j\),它们的文本描述 \(T_i\)\(T_j\) 可能都是”a golden retriever running on grass”这类高度相似的句子。损失函数会强行把 \(I_i\)\(T_j\)(本来语义上也匹配)当作负样本推远,因为 InfoNCE 假设 batch 内除对角线外都是负样本,不检查语义重叠。这不是实现 bug,而是 batch 内负样本采样这个方法本身自带的系统性噪声:batch 越大,越容易采到这种”看起来是负样本、语义上其实是正样本”的组合。

这个问题促成了后续工作的分叉。SigLIP(Zhai et al., ICCV 2023)把 softmax 换成 sigmoid:每个 \((I_i, T_j)\) 对被当成独立的二分类问题(是/不是一对),不再要求”batch 内所有其他样本都必须被推远”这种全局归一化约束。这样做的直接后果是损失不再依赖整个 batch 的归一化项,训练对 batch size 的敏感度显著降低,小 batch 也能训得动——这是对 CLIP 大 batch依赖的直接工程反驳,而不是另一种无关的改进。

零样本分类的机制也值得说清楚:CLIP 并不”知道”标签叫什么,而是把类别名套进模板(例如”a photo of a {label}“)变成文本,算出文本向量后和图像向量比 cosine 相似度,取最大值。这意味着零样本效果对模板措辞敏感——本质原因是训练数据的文本分布是网页 alt text 和 caption 风格的短句,如果目标任务的文本形式(比如纯类别词、专业术语缩写)离这个分布太远,模型看到的”文本”就和训练时见过的分布不匹配,需要靠 prompt engineering 把查询文本拉回训练分布附近。


二、三种接法,三种失败模式:projector、cross-attention、指令微调

把视觉 encoder 接到语言模型上,不是一个”接口”问题,而是至少三种结构不同的设计,各自的失败模式也不同。

2.1 projector:线性/MLP 适配器(LLaVA 第一代的做法)

LLaVA(Liu et al., NeurIPS 2023)用冻结的 CLIP ViT-L/14(224px)提取 patch 特征,再用一层线性投影 \(W\) 把视觉特征映射到语言模型的 word embedding 空间,拼接成语言模型输入序列最前面的一段”视觉 token”。训练分两阶段:第一阶段冻结 CLIP 和 LLM,只训练 \(W\),做特征空间对齐;第二阶段解冻 LLM,用图文指令数据端到端微调。

失败模式很具体:

2.2 cross-attention:Flamingo 的 gated cross-attention

Flamingo(Alayrac et al., NeurIPS 2022)走的是完全不同的路径:不把视觉 token 拼进输入序列,而是让冻结的语言模型在每隔几层的位置插入新的 GATED XATTN-DENSE 层,用语言模型当前的 hidden state 去 query 视觉信息。新插入层的门控用 \(\tanh\) 初始化到接近 0,训练一开始新层近似恒等映射,不破坏冻结语言模型原本的生成能力。

视觉侧的关键设计是 Perceiver Resampler(借用 Perceiver 架构,Jaegle et al., ICML 2021):不管输入是一张图还是一段视频的多帧,都被压缩成固定数量(论文里是 64 个)的视觉 token。这个设计的好处是视觉 token 数量不随分辨率或帧数增长,处理视频时不会让上下文长度失控;训练成本也比整段微调 LLM 便宜,因为语言模型主体保持冻结,只训练新增的 cross-attention 层和 resampler。

失败模式同样来自这个设计本身:固定 64 个 token 是一个信息瓶颈。空间位置、细粒度边界、精确计数所需要的信息,在压缩成 64 个 token 这一步已经被大幅丢弃。Flamingo 在少样本视觉语言任务(few-shot in-context learning)上表现强,但对需要精确 grounding(指出图中具体在哪个位置)和精确计数的任务天生弱——这不是训练数据不够,是压缩瓶颈的结构性代价。

2.3 指令微调:LLaVA 把对齐问题转成指令跟随问题

LLaVA 的第二阶段本质上是把”多模态对齐”重新表述成”指令跟随”:给模型图像 + 自然语言指令,让它生成自然语言回答,用指令数据端到端训练。这里的关键、也是幻觉问题的一个结构性来源,在于指令数据是怎么来的:LLaVA 用纯文本的 GPT-4,只喂给它已有的图像 caption 和物体检测框坐标(不给真实图片),让 GPT-4 “凭文字想象”生成对话、详细描述、复杂推理问答,一共 15.8 万条。

标注模型自己没看过图片,只看过图片的文字化摘要。它生成的内容天然带有”合理但未必在图里”的倾向——用常识把 caption 没提到的细节补全。用这种数据训练出来的模型,继承了同样的补全倾向:描述图片时容易用语言先验去”猜”没有视觉证据支撑的细节。这不是训练轮数不够能解决的问题,而是监督信号本身部分脱离视觉输入。

另一个失败模式:指令数据的问题分布偏向”自然对话”风格,模型对分布外的指令格式(比如只要求输出坐标、JSON 结构化结果)遵循度差;当视觉证据模糊或缺失时,模型倾向于让语言先验压过图像内容给答案,而不是承认”看不清”或拒答。

2.4 三种接法对比

接法 视觉 token 特点 训练成本 典型失败模式 代表工作
projector(线性/MLP 拼接) 数量随分辨率线性增长 中:可分阶段只训投影层 分辨率瓶颈、OCR 弱、token 暴涨 LLaVA、LLaVA-1.5
cross-attention 数量固定(如 64),不随分辨率/帧数增长 低:LM 主体冻结,只训新增层 压缩瓶颈,grounding/计数弱 Flamingo
指令微调(端到端解冻 LLM) 依赖前置视觉 encoder 的输出 高:需解冻 LLM 部分参数 语言先验主导的幻觉、OOD 指令格式差 LLaVA 第二阶段

三种接法不是互斥的——LLaVA 本身就是”projector + 指令微调”的组合,Flamingo 之后的很多工作也在 cross-attention 之外叠加指令数据。表里列的是三种机制各自贡献的失败模式,实际系统里的问题往往是叠加的。


三、SAM:promptable segmentation 为什么不是聊天 VLM 的另一版本

SAM(Kirillov et al., ICCV 2023)解决的问题和前两节完全不同:给一张图和一个提示(点、框、粗略 mask,实验性地也可以是文本),输出这个提示对应的分割 mask。它不生成语言,输出是结构化的像素级掩码。

歧义是这个任务设计里明确要处理的东西,不是缺陷。 如果提示是图上的一个点,落在一个人的衬衫上,这个点可能指”衬衫”也可能指”整个人”。SAM 的做法是对每个提示同时输出三个不同粒度的候选 mask 和对应置信度,训练时对多个候选取 loss 最小的那个回传梯度(ambiguity-aware training)。这是任务定义层面就承认”一个 prompt 可能对应多个合理答案”,而不是训练一个模型去猜”用户到底想要哪个”。

延迟设计目标决定了架构拆分方式:图像 encoder(ViT-H,用 MAE 预训练)是整套流程里最重的部分,但对每张图只需要跑一次,把图像编码缓存下来;prompt encoder 和 mask decoder 都很轻量,缓存了图像 embedding 之后,每次换一个新提示只需要重新跑这个轻量部分。这个拆分是为交互式标注工具设计的——用户在界面上点一下、拖一个框,系统要能近乎实时地重新生成 mask,而不是每次都重新跑一遍最重的图像 encoder。

训练数据是 SA-1B,约 11 亿个 mask,来自 1100 万张图像,主要通过”模型在环”(model-in-the-loop)自动生成再人工修正得到,这些 mask 基本没有语义类别标签,只标了边界。

为什么和聊天式 VLM 是两条不同产品线,不是同一条线的两个版本:


四、融合时机决定部署成本:early / late / hybrid fusion

多模态融合按信息交互发生的位置,经典上分成三类(Baltrušaitis et al., TPAMI 2019 的分类法):early fusion(输入层就合并)、late fusion(只在输出层合并)、hybrid fusion(中间某一层交互)。这三种在训练和部署上的成本差异,比”效果好不好”更能解释为什么工业界同时存在这么多条路线。

late fusion(CLIP 式双塔)成本最低。 图像 encoder 和文本 encoder 各自独立,只在最后比较向量。这意味着两个 encoder 可以独立训练,图像库的向量可以离线批量算好存进向量索引,线上检索时只需要现算一次文本向量再做点积——这正是 CLIP 被大量用于图文检索、zero-shot 分类的原因:可预计算、可缓存。代价是模型内部两个模态从没有交互过,回答”图中红色杯子左边是什么”这类需要空间/关系推理的问题时无能为力,因为这类问题需要 token 级别的跨模态对齐,而双塔结构在网络内部根本没有提供这个通道。

hybrid fusion(Flamingo 式 cross-attention)成本居中。 视觉信息和语言模型在中间层交互,不能像 late fusion 那样把图像向量提前算好给任意后续文本复用——因为不同的文本 query 会产生不同的 attention 模式,必须每次重新走一遍前向。但因为语言模型主体保持冻结,训练成本比端到端微调整个 LLM 低,是”效果”和”训练成本”之间的一个中间点,也是为什么 Flamingo 能在冻结的大语言模型上做少样本视觉任务而不需要重新预训练整个语言模型。

early fusion(统一 token 接口)训练成本最高。 把图像也变成和文本共享同一套词表的离散 token,从输入层就混在一起,用同一个 transformer、同一个 next-token 预测目标联合训练。这条路线几乎不能复用现成的单模态冻结权重做适配——因为图像 token 和文本 token 要共享同一套 embedding 矩阵和 transformer 参数,等于要从头联合预训练。好处是推理时是单一次前向,没有额外的 cross-attention 模块,架构最简单,理论上”扩展新模态只需要加一个 tokenizer”。

融合时机 能否复用现成单模态模型 训练成本 推理时能否预计算缓存 典型例子
late fusion 能,两侧独立训练 能,图像向量可离线批量算好 CLIP
hybrid fusion(cross-attention) 能,LM 主体冻结 不能,每次 query 要重新前向 Flamingo
early fusion(统一 token) 基本不能,需联合预训练 不能 Chameleon 类工作

五、争论:统一 token 接口是否掩盖模态特有噪声

这里存在一个目前没有定论的架构分歧。

支持统一接口的一方:Chameleon(Meta AI, arXiv 2024,尚未经过同行评审,以下结论按预印本对待)提出”mixed-modal early-fusion”,图像用离散 token(类似 VQ 量化)表示,和文本 token 混在同一个序列里,用同一个 transformer、同一个 next-token 预测目标训练到底。论点是:架构统一之后,语言模型那一套 scaling law、训练 infra、跨模态推理能力可以直接沿用,不需要为每个模态单独设计融合模块——第四节里 early fusion 的训练成本劣势,被换算成”长期架构简洁性”的收益。

反对方:图像离散化(VQ 量化)本身是有损压缩,把连续像素强行映射到有限 codebook,会丢掉重建高频细节(文字笔画、UI 上的小图标)所需要的信息。Adept AI 在 Fuyu-8B 的技术博客(2023,官方博客,B 级来源)里明确给出相反方案:不做图像 tokenizer 量化,直接把不同分辨率的图像 patch 线性映射后送进 decoder-only transformer,理由是文档、图表、UI 截图这类任务需要保留像素级细节,量化会在模型看到数据之前就先把这些细节丢了,后面模型再大也补不回来。

两派共识是”接口越统一、系统越简单”,分歧在”统一到什么程度会丢掉模态特有的信息”。这不是一个已经有共识的问题:Chameleon 这类工作还只是 2024 年的预印本,没有经过长期的同行评审检验;Fuyu 的说法目前也停留在工程博客层面,没有对照实验发表在同行评审会议上。二、三节里讨论的 projector 分辨率瓶颈、resampler 压缩瓶颈,本质上都是这同一个矛盾的不同表现形式:任何把连续、高维、模态特有的信号压缩进固定长度 token 序列的设计,都要在”接口简洁”和”信息保真”之间做取舍,目前没有一种方案同时拿到两头。


六、开放问题:评测与幻觉

幻觉和训练数据的共现统计强相关,不只是”看错了”。 POPE(Li et al., EMNLP 2023)用是否类问题(“图里有没有 X”)测试 VLM 的物体幻觉,发现模型倾向于”看到”那些经常和图中已有物体共同出现在训练数据里的物体——比如厨房场景图里模型更容易”报告”看到叉子,即使图里没有,因为叉子和厨房场景在训练数据中高度共现。这说明幻觉里有一部分是语言先验/共现统计压制视觉证据的结果,和第二节里指令数据本身携带的语言主导偏差是同一类问题的不同侧面。

分辨率/tokenizer 设计决定 OCR 类任务的上限,纯指令微调改不动这个上限。 第二节里的 projector 分辨率瓶颈、第五节里的量化信息损失,最终都体现在 DocVQA、TextVQA 这类需要读图中文字的评测集上:如果视觉 encoder 在预处理阶段就没有保留足够的像素细节,后面无论用多少指令数据去微调语言模型,都补不回已经丢失的信息。

具体的、可检验的开放问题:

  1. 统一 token 接口能不能不靠专门的空间 loss 就达到专用分割模型的边界精度? 目前没有公开发表的工作证明”一个统一 token 序列 + 单一 next-token 目标”能在不引入额外几何监督的情况下,达到 SAM 这类专用模型的 mask 边界精度。这直接关系到第三节的判断是否会随时间推移被打破——如果某天真的做到了,SAM 和聊天 VLM 分成两条产品线的理由就会削弱。
  2. 现有幻觉评测覆盖的是”物体是否存在”,还没有同样成熟、被广泛采纳的 benchmark 去衡量”关系/因果幻觉”(模型编造图中不存在的时间顺序、因果关系、空间关系)。POPE 这类工作解决了”存在性幻觉”的可测量问题,但”关系幻觉”的评测设计本身还在发展,读者可以关注每年 CVPR / NeurIPS 多模态评测相关的 workshop 论文了解最新进展,而不是假设这个问题已经被解决。

七、关键概念回顾


八、常见误解

8.1 “多模态就是先给图片写 caption 再喂给语言模型”

caption 只是一种数据形式。CLIP 靠的是对比学习而不是生成 caption;Flamingo 靠 cross-attention 让语言模型直接查询视觉特征;SAM 完全不生成语言,输出是分割掩码。

8.2 “图像接进 LLM 之后幻觉问题就解决了”

不会。LLaVA 类模型的幻觉有一部分是训练数据本身造成的:用于生成指令数据的标注模型(纯文本 GPT-4)没有看过真实图片,只看过文字化摘要,它生成的监督信号天然带有”合理但不在图里”的偏差。这是数据层面的结构性问题,不是训练轮数或模型规模能单独解决的。

8.3 “SAM 加一个语言 head 就能变成聊天 VLM”

SAM 的训练信号里没有语义标签,只有边界;聊天 VLM 的训练信号是图文对应和对话,边界精度停留在 patch 级别。两者是从不同监督信号、不同延迟目标出发设计的系统,接语言 head 解决不了 SAM 本来就不具备的语义理解能力,也解决不了 VLM 本来就不具备的像素级边界精度。

8.4 “统一 token 接口是多模态的终局方案”

这仍是一个开放的架构分歧。支持统一接口的工作(如 Chameleon)目前还是预印本;反对量化损失的工程实践(如 Fuyu-8B 的博客)指出离散化会丢掉 OCR、文档理解需要的像素细节。两边都有具体论点和取舍,还没有哪一边被证明是唯一正确路线。


九、下一步

多模态让 Transformer 学会理解图文关系,但理解不等于生成。下一篇看生成式视觉:扩散模型为什么开始使用 Transformer backbone,DiT 和视频生成如何把图像/视频表示成 token 序列。


十、参考文献

  1. Radford, A. et al. “Learning Transferable Visual Models From Natural Language Supervision.” ICML 2021.
  2. Zhai, X., Mustafa, B., Kolesnikov, A., Beyer, L. “Sigmoid Loss for Language Image Pre-Training.” ICCV 2023.
  3. Alayrac, J.-B. et al. “Flamingo: a Visual Language Model for Few-Shot Learning.” NeurIPS 2022.
  4. Jaegle, A. et al. “Perceiver: General Perception with Iterative Attention.” ICML 2021.
  5. Liu, H., Li, C., Wu, Q., Lee, Y. J. “Visual Instruction Tuning.” NeurIPS 2023.
  6. Liu, H., Li, C., Li, Y., Lee, Y. J. “Improved Baselines with Visual Instruction Tuning.” CVPR 2024.
  7. Kirillov, A. et al. “Segment Anything.” ICCV 2023.
  8. Li, Y. et al. “Evaluating Object Hallucination in Large Vision-Language Models.” EMNLP 2023.(POPE benchmark)
  9. Baltrušaitis, T., Ahuja, C., Morency, L.-P. “Multimodal Machine Learning: A Survey and Taxonomy.” IEEE TPAMI 2019.
  10. Chameleon Team, Meta AI. “Chameleon: Mixed-Modal Early-Fusion Foundation Models.” arXiv 2024(预印本,未经同行评审).
  11. Adept AI. “Fuyu-8B: A Multimodal Architecture for AI Agents.” 官方技术博客, 2023.

← 上一篇:45|ViT | 下一篇:47|Diffusion + Transformer

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-08-06 · transformer

【Transformer 与注意力机制】39|T5:把所有 NLP 任务塞进 Text-to-Text,代价在哪里

T5 把翻译、分类、摘要、问答都改写成统一的文本到文本任务,但这个接口不是免费的。本文拆开 span corruption 的 corruption rate 和平均 span 长度旋钮、T5 论文的原始消融数字、任务前缀如何变成模型的格式捷径、C4 清洗规则本身携带的归纳偏置,以及 Encoder-Decoder 在推理服务上的结构性代价,并给出 Text-to-Text 是否该覆盖分类与检索这条至今没有定论的争论线。

2026-08-06 · transformer

【Transformer 与注意力机制】40|三大路线之争:为什么大模型几乎都是 Decoder-only

Encoder-only、Encoder-Decoder、Decoder-only 的差异不是谁更聪明,而是谁能看见谁的信息流不变量。本文从可见性图出发,解释这个不变量如何锁死任务接口与训练管线,KV Cache、continuous batching、投机解码为什么默认假设单流 causal Decoder,以及 embedding、rerank、强制双向抽取场景为什么不该硬上生成式大模型。

2026-08-06 · transformer

【Transformer 与注意力机制】41|位置编码演进:从 Sinusoidal 到 RoPE、ALiBi 与长度外推的边界

RoPE 把位置从"加在输入上的向量"焊进了 Q·Kᵀ 本身——本文推导旋转后点积为何只依赖相对位置,核对高频通道在长距离上的绕圈失真、RoPE scaling/YaRN 到底改了哪个假设;再看 ALiBi 的线性 bias 何时帮、何时伤长程依赖;最后用 RULER、Lost in the Middle 说明"跑得动"和"用得好"是两件事,并摆出一条有文献支撑的争论:相对位置编码是否在用归纳偏置换长度。


By .