📑 本页目录(点开跳转)
10 · 多模态:视觉、语音与生成
⏱ 54 分钟 | ⭐⭐ 独立性最强的一块,可以单独成套
🎯 一句话
多模态的核心思路只有一个:把图像、语音、视频都变成「token」,然后交给同一个 Transformer 处理。理解了这句话,整个领域的结构就清楚了。
🖼️ 一、视觉理解(VLM)
架构:三段式
💡 核心洞察:图片被翻译成了「视觉单词」,和文字并排放进同一个上下文。 所以做文本应用时的那一整套(上下文管理、提示词、工具,本站《智能体工程教程》讲的就是这些)全部适用。
📌 这张图有名字:这套「ViT → 投影层 → LLM」的结构就是 LLaVA,也是目前开源多模态模型的默认长相。 另一条路线(BLIP-2 的 Q-Former)改的只有中间那一层——两者的差别在本章后面单独讲。
⚠️ 实用推论:一张高分辨率图可能消耗 1000+ token。多图对话烧 token 极快——上下文预算意识(智能体第 4 章)在这里更重要。
💰 图片的 token 账(做视觉应用前先算这笔)
图片 token 数 ≈ (宽/patch) × (高/patch),patch 通常 14~16 像素
512×512 → 约 1,000 token
1024×1024 → 约 4,000 token ⭐ 翻倍分辨率 = 4 倍 token
一段 10 张图的对话 → 轻松几万 token
💡 所以主流做法是【先缩放到模型的最优分辨率】再传
盲目传原图 = 白烧几倍的钱
⚠️ VLM 的三个常见误判(知道了能省很多调试时间)
| 场景 | 表现 | 原因 |
|---|---|---|
| 密集小字 / 表格 | 读错数字、串行 | 分辨率被压缩后细节丢失 → 切图分块传 ⭐ |
| 需要精确空间关系 | "左边第三个"经常说错 | ViT 的 patch 化削弱了精确位置感 |
| 需要计数 | 超过 5~6 个就不准 | 和文本模型数字母是同类问题——给工具,别让它数 |
🔑 一条通用建议:VLM 擅长"理解这张图在说什么",不擅长"精确读出图里的每个数"。 需要精确的场景(发票、表格、图纸),用 OCR + VLM 组合,别只靠 VLM。
CLIP:图文对齐的地基
训练:几亿对(图片,描述文字)
目标:让匹配的图文向量靠近,不匹配的远离(对比学习)
结果:图片和文字进入**同一个向量空间**
→ 可以用文字搜图、用图搜图、零样本分类
🔗 这就是推荐算法第 10 章向量检索的多模态版本——同一套 ANN 基础设施。
训练目标 InfoNCE:说白了是一道 batch 内的多选题
拿一个 batch 的 N 对(图片,描述)。把 N 张图和 N 段文字各自编码、L2 归一化,得到一个 N×N 的相似度矩阵,然后要求对角线最大:
$$\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N} \log \frac{\exp(\text{sim}(I_i, T_i)/\tau)}{\sum_{j=1}^{N} \exp(\text{sim}(I_i, T_j)/\tau)}$$
💡 人话:对角线是正确答案,同一个 batch 里其他所有文字都是干扰项。 这个式子就是"N 选 1 选对"的交叉熵;训练时图找文、文找图各算一次取平均(所以是对称的)。
⭐ 关键在于负样本是白捡的:不用专门去采负样本——同一批次里别人的正样本,就是我的负样本(in-batch 负采样)。这是对比学习最省事的地方,也正是它对 batch size 极度敏感的原因。
温度系数 τ 到底在干什么
$\tau$ 就是第 6 章解码策略里那个 temperature,只不过用在了训练的 loss 上:
| τ | 分布 | 后果 |
|---|---|---|
| 小(如 0.01) | 尖锐 | 把最难的那个负样本的梯度放到极大 → 学得"锋利",但对错标极敏感、容易训崩 |
| 大(如 0.5) | 平坦 | 所有负样本一视同仁 → 训练稳,但区分度不够,向量都挤在一起 |
⭐ CLIP 的做法是把 τ 当成可学习参数(存它的对数,并夹住上限防止训练时自己跑飞)——它重要到值得让模型自己学。
为什么 batch size 对对比学习特别重要
batch = 256 → 每张图面对 255 个干扰项
batch = 32768 → 每张图面对 32767 个干扰项 ⭐ CLIP 用的就是这个量级
干扰项越多 → 这道多选题越难 → 学到的向量必须分得越开
→ 这是对比学习【最直接的效果杠杆】,比改网络结构管用
⚠️ 代价是显存:N×N 相似度矩阵 + N 份激活,batch 一大就必须多卡
(把各卡的特征 all-gather 到一起再算 loss,通信量还不小)
⚠️ SigLIP 就是冲着这一条来的:它把 softmax 对比损失换成逐对的 sigmoid 二分类损失——每一对图文自己判断"配不配",不再需要对整行做归一化。于是不必凑齐全局负样本,小 batch 也能训、多卡通信也省了。现在很多新模型的视觉编码器用的是 SigLIP 而不是 CLIP。
⭐⭐ 一条跨板块的连线(这一章最值钱的一句)
CLIP 的训练方式,和推荐系统的双塔召回是同一个东西。
CLIP 推荐算法的双塔 图片编码器 / 文本编码器 用户塔 / 物品塔 in-batch 负采样(别人的正样本当我的负样本) 一模一样 温度系数 τ 一模一样(那边建议从 0.05 开始调) 图文进同一空间 → 用文字搜图 用户物品进同一空间 → ANN 召回 连坑都一样:热门样本会被过度当成负样本(推荐那边用 LogQ 校正 修)、负样本选错会训废、batch 越大越好。
🔗 推荐算法第 8 章有一段可跑的「双塔 + In-batch 负采样」代码—— 把"用户"换成"图片"、"物品"换成"文字",那就是 CLIP 的训练循环。 想动手复现对比学习,去那一节抄。
🔌 LLaVA vs Q-Former:投影层的两条路线
三段式里中间那一层有两种主流实现,差别在于视觉 token 有没有被压过:
| 路线 | 代表 | 投影层是什么 | 视觉 token 数 | 取舍 |
|---|---|---|---|---|
| 直接投影 | LLaVA | 一个 MLP(最早的版本就是一层线性) | 等于 ViT 的 patch 数(几百个) | ✅ 简单、训得快、细节不丢 ❌ 吃 token |
| 查询压缩 | BLIP-2 的 Q-Former | 一个小 Transformer,带一组可学习的 query 向量,用交叉注意力去"问"视觉特征 | 等于 query 个数(比如固定 32 个) | ✅ token 少、多图/长上下文友好 ❌ 结构复杂、压缩必然丢细节(OCR 和小字场景最明显) |
LLaVA 的两阶段训练("多模态模型怎么训"这道题的标准答案):
阶段一:只训投影层 ← 视觉编码器和 LLM 全部冻住
数据:大量【图片 → 简短描述】
目标:把视觉向量对齐到 LLM 的词空间
⭐ 这一阶段本质上就是在训一个「翻译器」
阶段二:训投影层 + LLM ← 视觉编码器仍然冻住
数据:【图片 + 多轮指令问答】
→ 从"能描述图片"变成"能按指令回答关于图片的问题"
⚠️ 视觉编码器(CLIP / SigLIP 的那个 ViT)通常全程不解冻,
或只在最后小幅解冻 —— 它的表征是几亿图文对训出来的,
随便动会把好不容易对齐的空间破坏掉
🔑 为什么 LLaVA 这条"看起来太简单"的路线赢了:Q-Former 那一坨结构要单独预训练,而 MLP 投影层几乎没有超参、几个小时就训完,效果还不差。 ⭐ 现在的主流做法是「LLaVA 式直接投影 + 想省 token 时在 ViT 输出上做池化或切图」——把复杂度留在数据和分辨率策略上,而不是留在结构上。
🎨 二、图像生成(扩散模型)
和 LLM 完全不同的范式:
LLM:一个词一个词地「写」出来(自回归)。
扩散模型:从纯噪声开始,一步步「擦」出图像 ——
训练:给干净图片加噪声,让模型学会「预测加了什么噪声」。
生成:反过来,一步步去噪。
关键组件:
| 组件 | 作用 |
|---|---|
| U-Net / DiT | 去噪的主干网络(DiT = 用 Transformer 做去噪,现在的主流) |
| VAE | 把图压缩到低维「潜空间」再扩散,省算力(Latent Diffusion) |
| 文本编码器 | 把提示词变成条件,引导生成方向 |
| CFG | 分类器自由引导,控制「多听话 vs 多自由」 |
| ControlNet / LoRA | 精确控制构图 / 注入特定风格(LoRA 和第 5 章同源!) |
💡 为什么扩散比自回归更适合图像
自回归生成图像:像素/patch 一个一个生成
→ 一张 1024×1024 的图有 400 万像素,生成得等到天荒地老
→ 而且【左上角决定右下角】这个假设对图像很别扭
扩散:所有像素【同时】一点点变清晰
→ 全局一致性天然更好(不会左边画完右边对不上)
→ 步数可控(20 步快、50 步精细)⭐
⭐ 根本原因:语言【天然有顺序】,图像【天然没有】
🔗 和第 2 章对照着看: 自回归适合语言是因为语言本来就是线性的; 图像没有"下一个像素"这个概念,所以强行自回归是在给它加一个不存在的约束。
⚠️ 但两者正在互相靠拢:
图像生成开始用 Transformer 做去噪主干(DiT), 而语言模型也在探索扩散式生成。"哪种范式适合哪种数据"还没有定论。
🔊 三、语音
ASR 语音识别(听)
├─ Whisper 类:音频 → 梅尔频谱图 → Encoder-Decoder → 文字
└─ 实际上把音频当"图"处理,再用序列模型转文字
TTS 语音合成(说)
├─ 文本 → 声学特征 → 声码器 → 波形
└─ 现在流行:直接把音频离散化成 token,用 LLM 的方式生成 ⭐
端到端语音对话(2024+)
└─ 不再走 语音→文字→LLM→文字→语音 的链路
而是音频 token 直接进 LLM
✅ 延迟低、能保留语气情绪、可打断
💡 注意那个趋势:语音也被「token 化」了——又回到了第一句话:万物皆 token。
🎬 四、视频
理解:把视频当"一串图片 + 时间维度"
挑战是 token 爆炸(1 分钟视频可能上万 token)
→ 关键技术是时空压缩、关键帧抽取
生成:扩散模型 + 时间维度一致性
挑战是"物体在帧间不能乱变"
→ 时空注意力、3D VAE
视频是当前算力消耗最大、进展最快的方向之一。
🔗 和你已知的关系
左列有的来自日常用 LLM 的经验,有的在站内别的板块讲过——碰上过哪几条就从哪几条接进来,一条没碰过也不影响读这一章。
| 你可能已经知道的 | 这一章的对应 |
|---|---|
| 上下文预算(智能体第 4 章) | 图像吃 token 极凶,预算意识更重要 |
| 向量检索 ANN(推荐第 10 章) | CLIP 让图文进同一空间,同一套检索设施 |
| LoRA(第 5 章) | 图像生成里的风格 LoRA,同源技术 |
| 多模态 Embedding 做冷启动(推荐第 13 章) | 就是用 CLIP/ViT 提取的特征 |
| 计算机使用(智能体第 9 章) | 那是 VLM 的一个具体应用 |
| 双塔 + in-batch 负采样 + 温度系数(推荐第 8 章) | ⭐⭐ CLIP 的训练方式和它是同一个东西,连坑都一样 |
temperature 怎么改变分布(第 6 章) |
CLIP 的 τ 是同一个式子,只是用在 loss 上 |
想接着深挖,去这几处:
| 去哪 | 为什么 |
|---|---|
| ML基础 12 | 视觉编码器的前身:卷积在看什么、为什么后来被 ViT 取代 |
| ML基础 14 | ⭐ ViT 的关键一步:把图切成 patch 当 token —— 三段式架构的中间那段 |
| 推荐算法 08 | ⭐⭐ 想动手复现 CLIP 的对比学习,就去那一节抄代码——它有一段可跑的「双塔 + In-batch 负采样」,把"用户"换成"图片"、"物品"换成"文字"就是 CLIP 的训练循环;温度系数怎么调、LogQ 校正怎么修热门样本,也都在那里 |
| 推荐算法 10 | CLIP 对齐出来的图文向量,最终要落进向量库才有用 |
| 第 6 章 推理优化 | τ 和你调 API 的 temperature 是同一个东西;那一章讲它落在采样上是什么样 |
📦 深挖的话要学什么
📍 每条后面标了它在哪: 📗 本库有 = 站内已经讲透,点进去就行;📙 半有 = 站内讲了一半,另一半得外找; 📕 要外找 = 站内没有,得去论文或别处。 ⚠️ 先说结论:这一章是全导论「要外找」比例最高的一章。 本库是一套以语言模型为主干的教程,图像生成、语音、视频这三块站内几乎是空白—— 与其让你按图索骥扑空,不如在这里说清楚。
视觉理解(✅ = 本章正文已讲):ViT 原理 | ✅ CLIP 的 InfoNCE 与温度系数 | ✅ 投影层两条路线(LLaVA 的 MLP vs BLIP-2 的 Q-Former)| 高分辨率处理(切图 / AnyRes 策略)、SigLIP 之后的编码器演进、多模态对齐的数据配方、视频理解、OCR 与文档理解、多模态 RAG
→ 📙 半有(只有 ViT 这一项):ML基础 14 · 通往Transformer 讲了 ViT 最该先知道的那件事——归纳偏置强弱和数据量的关系:ImageNet(1.3M) 上 ResNet 赢、拐点在 ImageNet-21k(14M) 附近、300M 时 ViT 赢,"苦涩的教训"的但书是「数据和算力足够」。Kaggle 09 · 任务类型与模型架构 的表里有 ViT 的参数量和「Patch Embedding」一行,以及数据量 >50K 才考虑 ViT/Swin 的选型判据。但 ViT 的完整架构(patch 怎么切、cls token、位置编码怎么加)站内没有。
→ 📕 其余全部要外找:AnyRes 切图、SigLIP、多模态对齐数据配方、OCR 与文档理解、多模态 RAG,站内一个字都没有。⚠️ 其中「OCR 与文档理解 + 多模态 RAG」值得单独提醒——08 · RAG深水区 的深挖清单里「文档解析(PDF/表格/扫描件)」同样是 📕,这两章在这一点上是同一个空洞,做文档问答的话要有心理准备。
图像生成:扩散过程的数学(前向加噪/反向去噪)、DDPM→DDIM 采样加速、Latent Diffusion、DiT、ControlNet、风格 LoRA 训练、图生图/局部重绘、评估(FID/CLIP Score)
→ 📕 整块要外找。全站搜 DDPM / DDIM / Latent Diffusion / ControlNet,唯一的命中就是上面这一行清单本身。站内能帮你的只有前置数学:数学原理 01b · KL散度(扩散的变分下界整个建在 KL 上,而 KL 在全站被引用过六次却直到那一章才被定义)、数学原理 13 · EM与高斯混合(变分推断的同一套思路)。15 · 数学地基 也明说了「马尔可夫链 / 变分推断——只有挖图像生成才需要」。把这两章当地基,然后去 DDPM 和 DDIM 两篇原论文。
语音:梅尔频谱、Whisper 架构、音频 token 化(残差量化——和推荐算法第 14 章的 Semantic ID 是同一个技术!)、TTS 声码器、端到端语音对话、实时流式处理
→ 📙 半有(只有残差量化这一项,但它讲得很透):推荐算法 14 · 生成式推荐 的「Semantic ID」一节讲的就是 RQ-VAE 残差量化——把连续向量逐层逼近、每层挑一个码字,得到 <c₁=42, c₂=17, c₃=203, c₄=88> 这样从粗到细的离散码。音频 token 化用的是同一套机制,只是被量化的向量来自音频编码器而不是物品编码器。 ⭐ 这是全站跨度最大的一条同构,值得专门去一趟。
→ 📕 其余要外找:梅尔频谱、Whisper 架构、TTS 声码器、端到端语音对话,站内没有。
视频:时空注意力、3D VAE、关键帧策略、视频生成的一致性
→ 📕 整块要外找:站内没有任何一章涉及视频。这是本库最外侧的边界。
需要的前置:第 2 章 Transformer。图像生成部分需要一点概率论(扩散过程),是本导论里数学要求最高的一块。
⚖️ 要不要深挖
| 你的情况 | 建议 |
|---|---|
| 只做文本应用 | ⛔ 知道 VLM 怎么工作、图片吃 token 就够 |
| 要做图像/设计/创意工具 | ✅ 深挖扩散模型 |
| 要做语音助手/客服/播客工具 | ✅ 深挖 ASR/TTS + 端到端语音 |
| 要做文档处理(PDF/表格/图表) | ✅ 深挖 VLM + 多模态 RAG(和第 8 章配合) |
| 想全面了解 AI | ✅ 至少把视觉理解那部分学了 |
🔑 我的判断:这块独立性最强——它和你现有的两套教程几乎不重叠,可以完全独立成一套。
⭐ 但有一个重要的例外:CLIP 的对比学习你其实已经会了——它就是推荐算法第 8 章的双塔 in-batch 负采样 + 温度系数。 所以「视觉理解」这半边的入门成本比它看起来低得多;真正陌生的是「图像生成」那半边。
但也正因为独立,它的优先级取决于你的业务方向,而不是技术逻辑: - 做文本应用 → 优先级最低 - 做内容/设计/语音产品 → 优先级最高
另外它内部还能再拆:视觉理解(偏应用,容易)和图像生成(偏原理,需要概率论)是两个不同难度的东西。
✅ 检查点
- VLM 的三段式架构是什么?投影层的作用?
- 图片在语言模型看来是什么?分辨率翻倍,token 变几倍?
- VLM 的三个常见误判是什么?需要精确读取时该怎么做?
- 扩散模型和 LLM 的生成范式有什么根本不同?为什么图像更适合扩散?
- CLIP 训练出来的是什么?能用来做什么?
- 语音领域「token 化」的趋势体现了什么共同思想?
- CLIP 的 InfoNCE 在优化什么?它的负样本从哪里来?
- 温度系数 τ 调小、调大分别有什么后果?CLIP 是怎么处理 τ 的?
- 为什么 batch size 对对比学习特别重要?SigLIP 改了什么来绕开这个限制?
- ⭐ CLIP 的训练方式和推荐系统的哪个模型是同一套?列出至少三条对应关系。
- LLaVA 和 BLIP-2 的 Q-Former 在投影层上有什么区别?各自的取舍是什么?
- LLaVA 的两个训练阶段分别训什么、冻什么?为什么视觉编码器通常不解冻?
👀 答案
- 视觉编码器(ViT,把图切 patch 当词)→ 投影层 → 语言模型。投影层把视觉向量翻译成 LLM 能理解的 token 空间。
- 就是一串"视觉单词",和文字并排放在同一个上下文里。分辨率翻倍 → token 变 4 倍(512×512 约 1000,1024×1024 约 4000)。所以要先缩放到模型最优分辨率再传,盲目传原图是白烧钱。
- ①密集小字/表格读错(分辨率压缩后细节丢失 → 切图分块传)②精确空间关系说不准(patch 化削弱位置感)③计数超过 5~6 个就不准。需要精确时用 OCR + VLM 组合——VLM 擅长"理解图在说什么",不擅长"精确读出每个数"。
- LLM 是自回归(一个一个生成);扩散是从纯噪声开始迭代去噪,所有像素同时变清晰。图像更适合扩散是因为语言天然有顺序,图像天然没有——强行自回归是给它加一个不存在的约束;而且扩散的全局一致性天然更好、步数可控。
- 让图片和文字进入同一个向量空间。可以用文字搜图、图搜图、零样本分类,且能复用同一套向量检索基础设施。
- 万物皆 token——把不同模态离散化成 token 后,都能交给同一个 Transformer 处理。(音频的残差量化和推荐算法 Semantic ID 是同一技术。)
- 一个 batch 的 N 对图文编码后得到 N×N 相似度矩阵,InfoNCE 要求对角线最大——本质是"N 选 1 选对"的交叉熵(图找文、文找图各算一次取平均)。负样本是白捡的:同一批次里别人的正样本就是我的负样本(in-batch 负采样)。
- τ 小(0.01)→ 分布尖锐,最难的负样本梯度极大,学得锋利但对错标极敏感、容易训崩;τ 大(0.5)→ 分布平坦,所有负样本一视同仁,训得稳但区分度不够、向量挤在一起。CLIP 把它做成可学习参数(存对数值并夹住上限),说明它重要到值得让模型自己学。
- 因为负样本就是 batch 里的其他样本:batch=256 只有 255 个干扰项,batch=32768 有 32767 个(CLIP 用的量级)。干扰项越多多选题越难,向量必须分得越开——这是对比学习最直接的效果杠杆。代价是显存(N×N 矩阵,得多卡 all-gather)。SigLIP 把 softmax 对比损失换成逐对的 sigmoid 二分类,每对自己判"配不配",不再需要对整行归一化,于是小 batch 也能训。
- 推荐算法第 8 章的双塔召回。 对应关系:图片/文本编码器 ↔ 用户塔/物品塔;in-batch 负采样一模一样;温度系数 τ 一模一样(那边从 0.05 开始调);图文进同一空间用文字搜图 ↔ 用户物品进同一空间做 ANN 召回。连坑都一样(热门样本被过度当负样本 → LogQ 校正、负样本选错会训废、batch 越大越好)。
- LLaVA 是一个 MLP 直接投影,视觉 token 数 = ViT 的 patch 数(几百个)——简单、训得快、细节不丢,但吃 token;Q-Former 是一个带可学习 query 的小 Transformer,用交叉注意力把视觉特征压成固定个数(比如 32 个)——省 token、多图友好,但结构复杂且压缩必然丢细节,OCR 和小字场景最明显。主流赢家是 LLaVA 这条:MLP 几乎没有超参、几小时训完。
- 阶段一只训投影层(视觉编码器和 LLM 全冻),用【图片 → 简短描述】把视觉向量对齐到 LLM 的词空间,本质是训一个"翻译器";阶段二训投影层 + LLM(视觉编码器仍冻),用【图片 + 多轮指令问答】做指令微调。视觉编码器不解冻是因为它的表征是几亿图文对训出来的,随便动会破坏好不容易对齐的空间。
🛑 可以停在这里
⚡ 走神救援
核心:万物皆token,图/音/视频都变成token交给同一个Transformer。①VLM三段式:ViT(图切patch当词)→投影层(翻译到LLM空间)→LLM,图片=视觉单词并排放上下文;⭐分辨率翻倍token变4倍(1024×1024≈4000token),先缩放到最优分辨率再传,别盲目传原图;⚠️三个误判:密集小字表格读错(要切图分块)、精确空间关系说不准、计数超5~6个就不准——VLM擅长"理解图在说什么"不擅长"精确读出每个数",要精确就 OCR+VLM 组合。②CLIP对比学习让图文进同一向量空间→可复用ANN检索;训练目标InfoNCE=一个batch的N×N相似度矩阵要求对角线最大,负样本是白捡的(别人的正样本就是我的负样本,in-batch负采样);温度系数τ小(0.01)分布尖、最难负样本梯度极大但易训崩,τ大(0.5)训得稳但向量挤一起,⭐CLIP把τ做成可学习参数;⭐batch越大越好——256只有255个干扰项,CLIP用32768,这是对比学习最直接的效果杠杆,代价是显存要多卡all-gather;SigLIP把softmax换成逐对sigmoid,不用全局归一化所以小batch也能训。⭐⭐最值钱的一句:CLIP的训练方式和推荐算法第8章的双塔召回是同一个东西——编码器↔用户/物品塔、in-batch负采样一样、τ一样(那边从0.05开始调)、连坑都一样(热门被过度当负样本→LogQ校正),想复现对比学习直接去那节抄代码,把"用户"换成"图片"就行。投影层两条路线:LLaVA=一个MLP直接投影(视觉token数=patch数,几百个,简单训得快细节不丢但吃token,主流赢家)vsBLIP-2的Q-Former(带可学习query的小Transformer压成固定32个,省token但压缩必然丢细节,OCR小字最明显);LLaVA两阶段:①只训投影层(编码器和LLM全冻)把视觉向量翻译进LLM词空间 ②训投影层+LLM做指令微调,⚠️视觉编码器全程不解冻——它的表征是几亿图文对训出来的,动了会破坏对齐。③图像生成=扩散(从噪声迭代去噪,所有像素同时变清晰)——⭐为什么图像适合扩散:语言天然有顺序,图像天然没有,强行自回归是加一个不存在的约束;DiT/VAE/ControlNet/风格LoRA。④语音:Whisper把音频当图,趋势是音频token化直接进LLM(端到端对话)。独立性最强可单独成套,优先级看业务方向。
下一节 👉 11-评测体系.md