直觉:让"猫的图片"和"猫这个词"住进同一个空间
人类看到一只猫的照片、听到"喵"、读到"cat",脑子里激活的是同一个概念。多模态模型想做的事类似:把图像、文本、音频这些异构信号映射到一个共享的语义空间里,让"语义相近"的东西在向量空间里也相近——哪怕它们来自完全不同的模态。
一旦做到这一点,很多任务就统一了:图文检索是"在共享空间里找最近邻",看图说话是"图像向量 → 文本生成",文生图是反过来。所以多模态的核心问题就两个:跨模态对齐(怎么把不同模态拉到同一空间)和统一表示(用什么架构承载这个空间)。
机制一:对比学习与跨模态对齐
最有影响力的对齐范式是对比学习(CLIP 式)。思路极简:准备海量"图像-文本"配对,用一个图像编码器 和一个文本编码器 分别编码,然后训练它们,让配对的图文向量靠近、不配对的远离。
给一个 batch 有 个图文对,算出图像向量 和文本向量 ,构造 的相似度矩阵 ( 是温度系数)。对角线是正样本,其余是负样本。损失是对称的 InfoNCE:
前一项是"给定图像,在 N 个文本里选对的那个",后一项反过来。直觉上这是一个 路分类问题,正确答案在对角线上。
1 | # 一个 batch 的对比损失(伪代码) |
几个关键工程点:
- L2 归一化让相似度退化为余弦相似度,避免向量模长干扰。
- 大 batch 至关重要。负样本数量 = batch size,batch 越大,对比信号越强、表示越有判别力。这也是为什么这类模型训练偏好大显存/多卡——loss 本身要求 batch 内全互相比较。
- 温度 控制分布尖锐度。 太大梯度太平、学不动;太小则对噪声敏感。它通常作为可学习参数。
对齐之后得到的是一个**双塔(dual-encoder)**结构:两个模态各编各的,最后在共享空间比对。它的最大优点是检索高效——文本向量可以离线算好建索引,查询时只编码一次图像做最近邻搜索。
机制二:从"对齐"到"统一生成"
双塔擅长检索,但不能"看图写文章"——它只比较,不生成。要做生成式多模态(看图问答、图文对话),需要让模态真正融合进一个生成模型。主流做法是把视觉接到一个 LLM 上:
- 视觉编码器(通常就是对比学习预训练好的图像塔)把图像变成一组 patch 特征,比如 ( 个图块,每个 维)。
- 一个投影/连接模块(projector,可以是简单的 MLP,也可以是带可学习 query 的注意力模块)把视觉特征映射成若干个"视觉 token",维度对齐到 LLM 的词嵌入维度 。
- 这些视觉 token 和文本 token 拼成一个序列,一起喂给 LLM 的 Transformer:
1 | [<img_1> <img_2> ... <img_P>] [描述 这张 图片] |
于是图像就被"翻译"成了 LLM 能理解的伪词。自注意力让文本 token 能 attend 到视觉 token,模型就能基于图像内容生成回答。这就是统一表示的精髓:不同模态最终都被表达为同一个 Transformer 序列里的 token。
训练上常见两阶段:先冻结视觉塔和 LLM、只训 projector(让视觉特征学会"说 LLM 的语言"),再做指令微调放开部分参数。这样既省算力,又避免破坏 LLM 已有的语言能力。
工程权衡与踩坑
视觉 token 的数量是显存与精度的核心权衡。一张高分辨率图可能产生几百上千个 patch,每个都是一个 token。Transformer 自注意力是序列长度的 ,视觉 token 一多,上下文和算力都暴涨。所以要么降采样(信息损失),要么用 query 压缩(如用 32/64 个可学习 query 把上千 patch 压成几十个 token)。给图越多、越清晰,回答越准,但也越慢越贵——这是部署时必须调的旋钮。
模态鸿沟(modality gap)是个真实现象。即便经过对比对齐,图像向量和文本向量在共享空间里往往各自聚成一团,中间有一条间隙,并非完美混合。这意味着跨模态相似度的绝对值不能直接当概率解读,做阈值判断时要按模态分别校准。
常见误区:
- 以为"多模态 = 把图片 OCR 成文字再喂 LLM"。OCR 只能拿到文字,丢掉了布局、颜色、空间关系、非文字图像信息;真正的视觉 token 保留了像素级语义。
- 以为对齐后任意两模态都能互换。对齐质量高度依赖训练数据的配对覆盖——训练里没见过的概念组合(如冷门专业图表),对齐会很弱。
- 忽视数据噪声。互联网图文对噪声很大(alt 文本经常和图无关),对比学习对错配对相对鲁棒但并非免疫,数据清洗的收益常常大于模型调参。
小结
多模态的两条主线:对齐靠对比学习把异构模态拉进共享空间,用对称 InfoNCE 损失把"配对图文"在向量空间里拉近、非配对推远,产出适合检索的双塔;统一表示则把视觉特征投影成"伪 token"接进 LLM 序列,让自注意力在一个 Transformer 里同时处理图像与文本,从而具备生成能力。落地时最该盯住的,是视觉 token 数量带来的 算力代价、模态鸿沟导致的相似度不可直接比较,以及训练数据配对覆盖决定的对齐边界。