MLLM 多模态大语言模型
本篇集中讨论多模态理解模型的基本概念、结构、训练与推理知识。
1. 多模态模型是什么
多模态模型(Multimodal Model) 指能够处理多种类型信息的模型。这里的"模态"可以理解为信息的表现形式,如文本、图像、视频、音频等。
例如:
- 给模型一张菜品照片,它能判断里面大概有哪些食物;
- 上传一张图表,它能解释图表表达了什么;
- 给它一段视频,它能描述发生了什么;
- 对着它说话,它能听懂语音并用文字或语音回答;
- 让它根据文字生成图片、视频或音乐。
多模态模型的目标,就是让 AI 不再只处理单一文本,而是能综合多种信息来源进行理解、推理或生成。
这里我们讨论的是多模态模型与 LLM 结合的产物,MLLM(Mltimodal Large Language Model) 即 多模态大语言模型。
2. 基本概念
在进行更深入地讨论之前,我们先来了解一些关于多模态模型的基本概念。
2.1 编码:将模态表示为向量
模态是信息存在的形式。
多模态模型的核心问题在于,如何让模型把不同模态的信息放到同一个语义空间里理解。
与文本 LLM 类似,不同模态的信息首先需要被转换成模型能计算的形式,也就是将不同模态的原始数据编码成向量。
比如,将一句文本转换为一串 token 向量,一张图转换为一组图像 patch 向量,一段语音转换为一组音频帧向量,而一段视频则表示为多帧图像 + 时间信息向量。
这部分工作一般由 Encoder 编码器 来完成:把某种模态的输入变成向量表示。
2.2 投影:连接视觉与语言
很多多模态大模型不是从零训练出来的,而是把已有的视觉模型和语言模型连接起来。
现代多模态模型的典型结构如:图片 → 视觉编码器 → 投影层 → 大语言模型 → 文本回答,其中的 Projector/Adapter 投影层 把视觉编码器输出的图像向量转换成语言模型可以接收的向量格式。
投影层可以类比为一个"翻译器":视觉编码器说的是"图像特征语言",大语言模型懂的是"文本 token 语言",投影层负责把图像特征翻译成 LLM 能处理的表示。
很多视觉语言模型,比如 LLaVA 类架构,就有类似思想。
2.3 对齐:让不同模态表达同一个语义
Alignment 对齐 是多模态模型中非常核心的概念。
它指的是:让图片、文字、音频、视频等不同模态中表达相同含义的内容,在模型内部具有相近的表示。
比如,模型需要学会:
- 图片里的物体对应哪些词;
- 图表里的趋势对应哪些描述;
- 语音里的声音对应哪些文本;
- 视频里的动作对应哪些语言表达。
2.4 融合:让不同模态的信息结合
Fusion 模态融合 指的是模型如何把不同模态的信息结合起来。
例如用户问"这张图里的菜适合减脂吗?"
模型要同时理解:
- 文本问题:"适合减脂吗?"
- 图片内容:菜品种类、分量、油脂、主食、蛋白质等;
- 背景知识:减脂饮食通常关注热量、蛋白质、油脂、碳水结构。
实际工作中,实现融合的一类关键机制是跨模态交互,Cross-Attention 就是一种典型方式。
2.5 区别与联系 - 投影、对齐、融合
投影、对齐、融合三者都在处理表示,但它们要解决的核心问题和层面不同:
| 概念 | 核心问题 | 典型作用 | 层面 |
|---|---|---|---|
| 投影 Projection/Adapter | 怎么接入? | 把视觉/音频特征转成 LLM 可处理的向量 | 改变表示的格式 |
| 对齐 Alignment | 怎么对应? | 让图片、文本、语音中的同一语义互相匹配 | 改变表示的语义关系 |
| 融合 Fusion | 怎么一起推理? | 让多模态信息共同参与理解和回答 | 改变表示之间的交互方式 |
用一个具体例子来说明:假设用户上传一张猫的图片,并问:"这张图里是什么动物?"
实际模型的处理过程可以抽象为:
1. 输入:图片 + 文本问题
2. 视觉编码:图片 → 视觉编码器 → 图像特征
3. 投影:图像特征 → 投影层 → LLM 能处理的视觉 token
4. 对齐:某些视觉特征 ≈ “猫”
5. 融合:
文本问题:“这张图里是什么动物?”
图像信息:猫的视觉特征
推理:用户问的是动物类别
5. 输出:这是一只猫
这里为了例子的通俗易懂,将三者拆成了各自独立的部分,但在真实模型里它们经常是交织在一起的。
3. 典型结构
3.1 架构
多模态模型的架构变化丰富,但典型架构的主线是基本相同的:
不同模态输入: 图像 / 音频 / 视频
↓
各自的模态编码器:各自编码成 token / 向量
↓
模态连接层 / 投影层:投影或适配到统一表示空间
↓
进行跨模态融合 / 交互
↓
由语言模型或任务头输出结果:文本回答 / 工具调用 / 多模态输出
也就是 : 编码 → 投影 / 对齐 → 融合 → 推理 / 输出
再详细一些:多模态模型是用专门的模态编码器提取图像、音频、视频等特征,再通过投影或适配模块接入语言模型,在融合机制中完成跨模态推理,最后输出结果。
比如常见的 VLM 视觉语言模型
图片 + 用户问题
↓ ↓
视觉编码器 文本 tokenizer
↓ ↓
视觉 token 文本 token
↓ ↓
投影层 文本 embedding
↓ ↓
拼接 / 交互 / 融合
↓
LLM
↓
回答
3.2 结构
更具体一些的模型结构如下:
| 架构 | 融合程度 | 优点 | 局限 |
|---|---|---|---|
| 双塔结构 | 弱 | 快,适合检索和匹配 | 不擅长复杂推理 |
| 单流 Transformer | 强 | 图文深度交互 | 计算成本高 |
| 双流 Transformer | 中到强 | 保留模态独立性,又能交互 | 结构复杂 |
| Encoder-Decoder | 中到强 | 适合从多模态输入生成文本 | 依赖解码器能力 |
| Vision Encoder + Projector + LLM | 强 | 易接入大语言模型,适合对话 | 视觉细节能力受限 |
| Vision Encoder + Resampler + LLM | 强 | 能压缩大量视觉 token | 中间模块训练复杂 |
实际上,如果讨论"多模态模型的整体系统架构",确实还没有像 LLM 中 decoder-only Transformer 那样高度统一的范式。
多模态领域仍然是双塔、Encoder-Decoder、Encoder + Projector + LLM、扩散模型、自回归生成模型等多条路线并存。
但如果讨论“底层组件”,Transformer 仍然非常主流,并没有退出中心位置。
4. 训练
4.1 视觉-语言对齐预训练
多模态模型通常不会从零同时训练所有能力,而是在已有视觉模型和语言模型基础上进行跨模态对齐。
常见训练阶段是:
视觉-语言对齐预训练 -> 多模态指令微调 -> 偏好优化 / 强化学习 -> 任务专项微调
视觉-语言对齐预训练使用图文对、图片标题、视频字幕等数据,让模型学习视觉特征与语言描述之间的对应关系。目标不是让模型学会所有任务,而是让视觉信息能进入 LLM 的表示空间,并被后续生成过程读取。
4.2 多模态指令微调
多模态指令微调让模型学会按用户任务使用视觉、音频或视频信息,而不只是描述输入内容。
典型数据形式为:
image / video / audio + user instruction -> assistant answer
任务可以包括 OCR、VQA、图表问答、多图对比、视频摘要、空间推理、拒答和安全判断。
高质量指令数据会决定模型是否能“基于证据完成任务”,而不是生成泛泛描述。
4.3 偏好优化与安全对齐
多模态模型同样需要偏好优化或强化学习,尤其是降低视觉幻觉、过度推断和不当识别。
例如,对于模糊图片,可靠回答应该区分:
- 图中能直接观察到的信息。
- 基于上下文可以合理推测的信息。
- 由于分辨率、遮挡或证据不足而无法确认的信息。
- 偏好数据应鼓励模型在证据不足时表达不确定,而不是补全看起来合理但不可验证的细节。涉及人脸、身份、年龄、健康、隐私和敏感场景时,还需要更严格的安全策略。
5. 推理
多模态输入通常会在消息中使用图片占位符,例如:
<image>
请解释这张图中的异常。
也可能使用结构化消息:
[
{"type": "image_url", "image_url": {"url": "..."}},
{"type": "text", "text": "请解释这张图中的异常。"}
]
需要注意的是,<image> 这类占位符本身并不是图像特征,它只是提示模型:当前位置需要插入或关联一段视觉输入。真正的图像内容还需要经过图像预处理和视觉编码。
典型推理流程可以概括为:
结构化消息 / 文本 + 图片
↓
chat template 将消息序列化为模型提示词
↓
tokenizer 将文本部分转换为 input_ids
↓
processor / image processor 将图片转换为 pixel_values 等张量
↓
vision encoder 提取视觉特征
↓
projector / adapter 将视觉特征映射到 LLM 可接收的表示空间
↓
在 <image> 等占位符对应位置接入视觉表示
↓
LLM 结合文本 token 和视觉 token 进行自回归生成
5. 多模态生成模型
上面讨论的主要围绕的是 多模态理解模型 ,即可以接收多种模态的输入而输出的是文字。
而 多模态生成模型 更关注"生成非文本模态内容",即模型不仅理解输入,还能够生成图像、音频、视频等内容。典型任务包括文生图、图生图、文生视频、图生视频、文生语音、语音转换等。
需要注意的是,多模态生成模型不一定要求输入本身也是多模态。例如文生图只有文本输入,但输出是图像,仍属于跨模态生成任务。
更广义地说,只要模型涉及不同模态之间的生成转换,就可以归入多模态生成范畴。
从架构上看,多模态生成模型和以 LLM 为核心的多模态理解模型并不完全相同。
文生图、文生视频等任务中常见的技术路线包括扩散模型、自回归视觉 token 生成、DiT(Diffusion Transformer)以及多阶段生成管线等。它们的核心目标不是预测下一个文本 token,而是生成图像像素、潜空间表示、音频波形、视频帧或对应的离散 token。
总结
多模态理解模型的核心是将图像、视频、音频等非文本信息接入语言模型上下文:
- 多模态理解模型仍然遵循 next token prediction 的自回归生成机制。
- 模型通常由 Encoder、Projector/ Adapter 等连接模块、tokenizer/ processor、special tokens、chat template 和 LLM 共同组成。
- 图像、音频、视频等非文本输入通常需要先经过对应的模态编码器,被转换为视觉特征、音频特征或视频特征。
文生图、文生视频等生成模型可能采用扩散模型、自回归视觉 token 生成或其他架构。