# 多模态大模型架构 多模态大模型(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_{