多模态大模型架构

多模态大模型(MLLM/VLM)的核心目标是:让模型能够在“看(视觉/视频/语音)+ 读(文本)”的联合条件下进行理解与生成。工程上你会反复遇到三个问题:

  1. 表示:不同模态如何编码成可用的 token/向量?

  2. 对齐:视觉与语言语义如何对齐(数据、目标函数、训练策略)?

  3. 融合:在哪里、以什么机制让模态交互(early/late/cross-attn)?

单塔 vs 双塔结构

这是最常见的架构分岔点。

双塔(Two-tower / Dual-encoder)

典型代表:CLIP。

  • 图像 encoder:(z_v = f_v(\text{image}))

  • 文本 encoder:(z_t = f_t(\text{text}))

  • 用相似度(cosine/dot-product)做对比学习

优点:

  • 检索任务非常强(图搜文/文搜图)

  • 编码可离线缓存,在线成本低

缺点:

  • 交互弱,不擅长复杂推理与逐步生成

单塔(Single-tower / Unified)

典型代表:把视觉 token 作为条件输入喂给 LLM(BLIP-2、Flamingo、许多现代 MLLM)。

优点:

  • 交互强,适合 VQA、对话、生成式任务

  • 可以复用 LLM 的推理与生成能力

缺点:

  • 推理成本更高(cross-attn/长序列)

  • 更依赖高质量对齐数据与训练配方

融合策略

Cross-Attention

Cross-Attention 是“一个模态 attend 另一个模态”的通用机制。最常见的是:

  • 语言 token 作为 query

  • 视觉 token 作为 key/value

形式上:

[ \mathrm{Attn}(Q_t, K_v, V_v)=\mathrm{softmax}\left(\frac{Q_t K_v^\top}{\sqrt{d}}+M\right)V_v ]

直觉:语言在生成/推理过程中“按需从视觉记忆里检索信息”。

工程要点:

  • 视觉 token 数量(patch 数)直接影响计算量与延迟

  • 视觉 encoder 是否冻结、视觉特征是否缓存会显著影响训练与推理成本

Co-Attention

Co-Attention 常指双向交互:视觉 attend 文本、文本 attend 视觉,或在中间层做更对称的融合。

优点是信息流更充分,缺点是实现更复杂、成本更高。在很多工程系统里,会优先选择更“单向可控”的 cross-attn,再通过层数与 token 数来调节能力/成本。

多模态预训练任务

Masked Language Modeling

在多模态中,MLM 常用于:

  • 让语言端学习更稳健的上下文表示

  • 配合视觉条件进行“有条件的补全”

但现代 MLLM 更常把主目标统一成“条件自回归生成”(因为最终产品形态往往是对话/生成)。

Image-Text Contrastive Learning

这是 CLIP 系的核心。最常见的 loss 是 InfoNCE:

[ \mathcal{L}=-\log \frac{\exp(\mathrm{sim}(z_v, z_t)/\tau)}{\sum_{t’} \exp(\mathrm{sim}(z_v, z_{t’})/\tau)} ]

其中 (\tau) 是温度系数。

工程要点:

  • batch 越大,对比学习的负样本越多,通常越有效

  • 数据噪声与“伪对齐”会显著伤害表示质量(caption 模板化、错配等)

Vision-Language Generation

把任务统一成条件生成(image + text prompt → answer/caption),通常用序列交叉熵训练:

[ \mathcal{L}(\theta) = -\sum_t \log p_\theta(y_t \mid y_{<t}, \text{image}, \text{prompt}) ]

这条路线的关键在于:视觉信息如何注入 LLM(视觉 token、cross-attn、prefix 等)以及对齐数据与指令数据如何组织。


多模态理解 vs 多模态生成:目标、训练与评测的差异

在工程落地时,“理解(understanding)”和“生成(generation)”经常被混在一起讨论,但它们对模型与系统的要求不同:

多模态理解(Understanding):更强调“可验证的正确性”

典型问题:

  • 这张图里有什么?(分类/检测/识别/OCR)

  • 问题的答案是什么?(VQA、视频问答)

  • 这段视频发生了什么?(事件、动作、时序关系)

常见训练信号:

  • 对比学习(图文检索)

  • 结构化监督(label/box/span)

  • 指令微调(把理解任务转成可控输出格式)

评测与落地要点:

  • 可验证性:尽量把输出做成结构化(标签/坐标/引用区域/证据句)而不是一段自然语言

  • 鲁棒性:对分辨率、裁剪、压缩噪声、OCR 错误的稳定性

  • 幻觉风险:理解任务中“看图胡说”通常是致命问题,必须引入校验与拒答策略

多模态生成(Generation):更强调“表达能力与一致性”

典型问题:

  • 图像描述/视频字幕(captioning)

  • 视觉条件对话(image/video grounded chat)

  • 文本→图像/视频生成(生成式模型分支,或统一成 token 生成)

常见训练信号:

  • 条件自回归生成(cross-entropy)

  • 偏好对齐(DPO/RLHF/GRPO:更像“输出质量/安全/风格”的约束)

评测与落地要点:

  • 事实一致性(groundedness):生成内容必须能回到输入模态证据上

  • 多样性 vs 确定性:温度/采样策略会显著影响“好看但不准/很准但啰嗦”

  • 长上下文与多轮对话:需要缓存视觉特征与 KV cache,且要有上下文整理策略

一个工程结论:理解优先“结构化 + 可验证”,生成优先“证据化 + 可控”

如果目标是“严谨可用”,推荐的系统化做法是:

  • 先做理解:提取结构化事实与证据(区域/文本引用/时间片段)

  • 再做生成:基于证据组织语言(并显式引用证据来源)

这样能显著降低多模态幻觉,并让后续评测与迭代更可控。

典型模型案例

CLIP / BLIP / Flamingo

你可以把它们看成三条代表路线:

  • CLIP:双塔 + 对比学习 → 强检索/表征

  • BLIP/BLIP-2:更关注对齐与生成,常见做法是用桥接模块把视觉特征接入 LLM

  • Flamingo:用 cross-attn 把视觉 token 注入语言层,并强调 few-shot 多图多轮能力

Qwen-VL 系列

工程上常见特点:

  • 强指令化与对话式接口

  • 视觉编码器 + 语言主干的系统化设计

  • 对中文/多语言支持更友好(取决于词表与数据)

InterVL 系列

通常更强调:

  • 多模态对齐与评测体系

  • 在多个 VQA/检索/生成基准上的均衡性能

(后续可以在这里补“训练配方、数据构成、结构差异”的对比表。)

DeepSeek 系列

这里建议把重点放在“训练与对齐方法论”对多模态的迁移:例如 reward 设计、数据闭环、推理系统工程等。


本章小结

  • 双塔强检索,单塔强交互与生成;选择取决于任务与成本约束。

  • 融合的关键是 cross-attn 的 token 数与层数,以及数据对齐质量。

  • 预训练任务从对比学习到条件生成各有侧重,工程系统常混合使用。