卷3 · 多模态理解 VLM
3.4 视觉 Tokenizer:VQ-VAE 与 VQGAN——离散化是生成路线的地基
展开本章目录与同卷章节
1. 为什么要把图像离散化2. VQ-VAE:编码 → 查表 → 解码3. Codebook 坍塌与两个工程解法4. VQGAN:把”糊”治好——感知损失 + 对抗训练5. Tokenizer 是生成质量的天花板(本卷最重要的洞察)6. 自测题7. 动手作业8. 延伸资源同卷章节3.1 多模态总览:把视觉接进语言模型的三条路线3.2 LLaVA 范式精读与复现:两阶段训练全流程3.3 Connector 设计空间:Flamingo、BLIP-2 与开源双雄的答案3.4 视觉 Tokenizer:VQ-VAE 与 VQGAN——离散化是生成路线的地基3.5 开源双雄精读:Qwen-VL 与 InternVL 系列技术报告3.6 文档理解与 OCR-free:让 VLM 读懂 PDF3.7 多模态评测体系与陷阱3.8 数据为中心的 VLM:具体案例研读本章目标:理解”把图像变成离散 token”的全套技术——它是自回归生成图像(卷4.8 统一模型)和离散扩散的前提。学完标准:能手推 VQ-VAE 的 loss 和直通估计器,能解释 codebook 坍塌及现代解法,明白”tokenizer 质量封顶生成质量”这句话。
1. 为什么要把图像离散化
LLM 的成功配方是”离散 token 上的 next-token 预测”。想让同一个 Transformer 直接生成图像(统一模型的核心梦想,卷4.8),最顺的路是:先学一个”图像的 tokenizer”,把 256×256 图变成 256 个离散 token,图像就成了一种”外语”——和文本用同一词表、同一训练目标。这就是 Chameleon/Emu3 路线的前置条件。连续生成路线(扩散)不需要它,但离散路线离不开它。
2. VQ-VAE:编码 → 查表 → 解码
三段式(van den Oord et al., 2017):
- 编码器 :图像 → 连续特征图(如 256×256×3 → 32×32×d 的网格);
- 量化:网格上每个位置在码本(codebook,K 个可学习向量,如 8192 个)里找最近邻,用码本向量替换——图像从此变成 32×32=1024 个码本索引(离散 token!);
- 解码器 :量化后的特征 → 重建图像。
Loss 三件套:
- sg 是 stop-gradient:码本项只训码本,commitment 项只训编码器——两边互相靠近但各管各的( 常取 0.25);
- 直通估计器(straight-through estimator):最近邻查表不可导,前向用 、反向时把梯度原样抄给 ()。这是量化层可训练的唯一魔法——和 0.3 章手写的 backward 分摊是同一个思想的应用:梯度走不通就修一条近似的路。
3. Codebook 坍塌与两个工程解法
问题:K 个码本向量只有少数被用到(编码器只偏爱几个近邻),其余”饿死”——词表利用率低,等效词表缩水。解法:
- EMA 更新码本(VQ-VAE-2 标准):码本不参与梯度,直接向被分配到的编码器输出做指数滑动平均(0.4 章 EMA 的又一处出现);
- 死码重启:长期没被使用的码本向量重新随机初始化到当前 batch 的编码输出附近。
另外先验学习的分工要清楚:VQ-VAE 本身只学”重建”,token 的先验分布(哪种 token 序列像真图)交给下游模型学——原版用 PixelCNN,现代统一模型直接用大 Transformer(这正是”tokenizer + LM”解耦的架构意义:tokenizer 换得,LM 不用动)。
4. VQGAN:把”糊”治好——感知损失 + 对抗训练
VQ-VAE 重建偏糊(MSE 倾向平均脸)。VQGAN(2021)加两味药:
- 感知损失(perceptual/LPIPS):在 VGG 特征空间算距离——惩罚”像素对但看起来不对”;
- Patch 判别器:GAN 的判别器只看局部 patch,逼重建具备真实纹理。
结果:重建从”模糊蒙版”变”照片级”,离散 token 才有资格承载生成任务。此后谱系:ViT-VQGAN(Transformer 化 + 因子化码)、FSQ/LFQ(2023 后的现代简化:FSQ 干脆取消码本最近邻,用少量维度的低精度量化组合出码——没有坍塌问题、无需 EMA、训练稳,Magvit-v2 的 LFQ 让视频 token 化质量大涨——“删掉复杂机制反而更好”的又一案例)。
5. Tokenizer 是生成质量的天花板(本卷最重要的洞察)
下游 LM 生成的 token 序列,最终都要过 tokenizer 的解码器还原成图——它没见过的细节、重建不了的纹理,任何强大的 LM 都补不回来。“tokenizer 的重建上限 = 离散生成路线的上限”。这解释了 2023–2026 的持续投入:视频 token 化(MAGVIT-v2、Cosmos tokenizer)、高压缩比大码本、以及”为什么 Janus(卷4.8)干脆给理解和生成各配一套视觉编码”——理解要语义、生成要细节,一套 tokenizer 难两全。
6. 自测题
- VQ-VAE 三段式分别输出什么?(连续特征图 / 码本索引序列 / 重建图)
- 三项 loss 各自训练谁?sg 挡住了什么?(重建:全体;码本项:只码本;commitment:只编码器;防止 argmin 的梯度乱流)
- 直通估计器解决什么?(查表不可导——前向量化、反向抄送梯度)
- 码本坍塌是什么?两种解法?(少数码被垄断;EMA + 死码重启;FSQ 干脆取消码本)
- 为什么 MSE 重建偏糊、感知损失怎么治?(MSE 收敛到条件均值;VGG 特征空间惩罚”像素对但感知错”)
- “tokenizer 天花板”对统一模型研究意味着什么?(换更强 tokenizer 常比换更大 LM 收益更高;重建质量决定上限)
- VQ-VAE 和卷3.1 说的”原生融合”如何接上?(VQ token 与文本同表同目标——Transformer 一套 autoregressive 吃两模态)
7. 动手作业
- 在 MNIST 上实现迷你 VQ-VAE(编码器 2 层 CNN、码本 64、commitment 0.25),记录码本利用率(被用到的码占比)——亲眼看坍塌;
- 给它加 EMA 更新与死码重启,对比利用率曲线;
- 加载一个工业级图像/视频 tokenizer 的开源实现(如 MAGVIT-v2 或 Cosmos tokenizer),对比你的迷你版:码本规模、利用率、重建质量差距各有多大;
- 算账:8192 码本 × 32×32 网格的”图像序列”的信息上限 vs 一张 PNG 同尺寸的体积——体会”离散 token 是有损压缩”。
8. 延伸资源
- VQ-VAE 论文(Neural Discrete Representation Learning)——sg 与 commitment 的出处
- VQGAN 论文(Taming Transformers)——taming 之名即”驯服 Transformer 生成图像”
- “Language Model Beats Diffusion — Tokenizer is Key”(2024)——tokenizer 决定论的证据文
