本系列将 UMM(Unified Multimodal Model,理解与生成统一模型)学习路径中涉及的每一篇论文,逐一读取原文、提炼核心思想、标注关键贡献。第一篇聚焦 2017-2023 年间七篇奠基性工作,它们不是统一模型本身,却共同构成了今天所有统一模型的知识底座。

系列导航
- 01 基础奠基篇(本文):Transformer → CLIP → LLaVA → DDPM → DiT → VQ-VAE → VQGAN
- 02 早期统一模型篇:Chameleon、Emu3、Transfusion、Show-o
- 03 主流模型篇:Janus-Pro、BAGEL、SenseNova U1
- 04 VCoT 篇:CoVT、Gen-VCoT、Visual Sketchpad、Visual-Aware CoT、CoT-VLA
- 05 视频与世界模型篇:UniVideo、Emu3.5、Lance
- 06 终章:从统一表征到 AGI 终局之战
为什么要先读这七篇
统一理解与生成模型,本质上是在回答一个问题:能不能用同一套架构、同一个目标函数,既"看懂"图像又"画出"图像?
要回答它,你需要先掌握三组语言:
- 序列建模语言:Transformer 怎么把任意模态变成 token 序列,注意力机制如何在序列中传递信息。
- 视觉表征语言:CLIP 如何用文本监督图像表征,LLaVA 如何把视觉编码器接到 LLM,VQ-VAE/VQGAN 如何把连续像素压缩成离散 token。
- 生成建模语言:DDPM 如何用加噪-去噪过程生成图像,DiT 如何把 Transformer 嫁接到扩散模型上。
七篇论文按时间线排列,恰好覆盖这三组语言。下面逐篇解读。
1. Attention Is All You Need(2017)
论文:Attention Is All You Need 作者:Ashish Vaswani, Noam Shazeer, Niki Parmar 等(Google Brain / Google Research / 多伦多大学) 链接:https://arxiv.org/abs/1706.03762 发表:NeurIPS 2017
解决什么问题
2017 年之前,序列建模的主流是 RNN/LSTM 加注意力。RNN 必须按时间步串行计算,无法并行,长距离依赖也容易衰减。这篇论文提出一个激进的问题:能不能把循环和卷积全部丢掉,只用注意力?
核心方法
Transformer 是一个纯注意力的 encoder-decoder 架构,数据流向如下:
输入 Token 序列
│
▼
┌──────────────────────────────────┐
│ Positional Encoding(注入位置) │
└──────────────┬───────────────────┘
│
▼
┌──────────────────────────────────┐
│ Multi-Head Self-Attention │ ← Q/K/V 投影到 h 个子空间
│ ┌────┬────┬────┬────┐ │ 并行计算注意力后拼接
│ │Head│Head│Head│... │ 各看各的 │
│ └────┴────┴────┴────┘ │
└──────────────┬───────────────────┘
│ + Residual + LayerNorm
▼
┌──────────────────────────────────┐
│ Feed-Forward Network (FFN) │
└──────────────┬───────────────────┘
│ + Residual + LayerNorm
▼
输出概率
- Scaled Dot-Product Attention:核心公式只有一行——
公式拆成三步理解:
| 步骤 | 数学操作 | 含义 |
|---|---|---|
| ① 计算相关性 | Query 和 Key 做点积,衡量"谁和谁相关" | |
| ② 缩放 | 防止点积过大导致 softmax 饱和、梯度消失 | |
| ③ 加权求和 | 相关性归一化为权重,对 Value 加权聚合 |
- Multi-Head Attention:把 Q/K/V 投影到 h 个子空间并行计算注意力,再拼接。每个头可以关注不同位置的不同表征子空间(比如一个头看语法、另一个头看指代)。
- Positional Encoding:因为没有循环/卷积,模型本身对位置无感。论文用正弦/余弦位置编码注入位置信息,后续工作大多改成可学习位置编码或 RoPE(旋转位置编码)。
🧭 RoPE 与 3D-RoPE:多模态位置编码的事实标准
原论文的正弦位置编码是"加"在 token 嵌入上的,而现代 LLM/MM 模型几乎都改用 RoPE(Rotary Position Embedding):它不"加"位置,而是通过旋转矩阵把相对位置信息"乘"进 Q/K,天然携带相对位置且能外推到更长序列。公式上,RoPE 把位置 m、n 的注意力写成 ,内积只依赖相对位置 。
到了视觉/视频领域,一维 RoPE 不够用了:图像有 (h, w) 两个空间维,视频还有时间维 t。于是发展出 3D-RoPE(也叫 Pos3D),分别在时间、高度、宽度三个轴上施加旋转,让注意力同时感知"第几帧、第几行、第几列"。后文 Part 5 的 Lance 正是在 3D-RoPE 基础上提出 MaPE(Modality-Aware RoPE)——只在时间维给 ViT/clean VAE/noisy VAE 等不同视觉 token 组加不同常量偏移,用位置显式区分"这组 token 是干什么的",同时不破坏空间布局。读到 MaPE 时回到这里:它的底座就是 3D-RoPE。
- Encoder-Decoder 结构:Encoder 用自注意力加前馈网络;Decoder 多一层 cross-attention 关注 Encoder 输出,并带因果掩码防止偷看未来。
关键结果
- WMT 2014 英德翻译:28.4 BLEU,比当时最佳集成模型高出 2 BLEU 以上。
- WMT 2014 英法翻译:41.8 BLEU,单模型新 SOTA。
- 训练成本:8 GPU 训练 3.5 天,远低于当时的 SOTA 模型。
- 泛化到英语成分句法分析同样成功。
为什么是 UMM 的基石
所有 UMM 都是 Transformer。Chameleon、Emu3、Transfusion、Janus-Pro、BAGEL、SenseNova U1——无一例外。原因很简单:Transformer 把"模态"这个概念消解掉了。不管你是文字、图像 patch、还是视频帧,只要能变成一串 token,Transformer 就能用同一套机制处理。
更重要的是 Multi-Head Attention 给后来的 MoT(Mixture-of-Transformers)埋下了伏笔:BAGEL 用不同的注意力头分别处理理解和生成任务,本质上是 Multi-Head 思路的工程化延伸。
你应该记住的
- 自注意力的计算公式和缩放原因。
- 为什么位置编码是必需的。
- Transformer 为什么能并行(对比 RNN 的串行)。
2. CLIP:Learning Transferable Visual Models From Natural Language Supervision(2021)
论文:Learning Transferable Visual Models From Natural Language Supervision 作者:Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh 等(OpenAI) 链接:https://arxiv.org/abs/2103.00020 发表:ICML 2021
解决什么问题
传统视觉模型在固定类别集合上做监督训练(ImageNet 的 1000 类),每加一个新概念就要重新标注数据、重新训练。CLIP 问的是:能不能直接从互联网的图文对中学习视觉表征,让自然语言成为"可扩展的监督信号"?
核心方法
CLIP(Contrastive Language-Image Pre-training)的方法异常简洁,核心就是"图文配对"游戏:
一个 Batch 中有 N 对图文:
图像 I₁ ──→ Image Encoder ──→ v₁ ─┐
图像 I₂ ──→ Image Encoder ──→ v₂ ─┤
图像 I₃ ──→ Image Encoder ──→ v₃ ─┤ 相似度矩阵
... ├──→ (v_i · t_j)
文本 T₁ ──→ Text Encoder ──→ t₁ ─┤ 对角线✅ 配对成功
文本 T₂ ──→ Text Encoder ──→ t₂ ─┤ 非对角线❌ 拉开距离
文本 T₃ ──→ Text Encoder ──→ t₃ ─┘
...
- 数据:从互联网收集 4 亿个(图像,文本)对。
- 模型:图像编码器(ResNet 或 ViT)+ 文本编码器(Transformer),各自把输入映射到同一维度的嵌入空间。
- 训练目标:对比学习。一个 batch 中有 N 个图文对,计算 N×N 个余弦相似度,对角线(图 i 配文 i)是正样本,其余是负样本。让正样本相似度高、负样本相似度低(对称的 image→text 和 text→image 两个方向)。
- 零样本迁移:推理时,把任务类别名拼成文本提示(如 "a photo of a {dog}"),用图像嵌入与所有文本嵌入做相似度匹配,无需任何任务特定训练。
关键结果
- 在 30+ 个视觉数据集上做零样本迁移,经常与全监督基线持平。
- ImageNet 零样本准确率匹配原始 ResNet-50(不需要那 128 万张训练图)。
- 表征泛化到 OCR、动作识别、细粒度分类、地理定位等多种任务。
为什么是 UMM 的基石
CLIP 对 UMM 的影响有三层:
- 证明了图文共享嵌入空间可行。后来的 LLaVA、Janus-Pro 直接用 CLIP/SigLIP 作为理解侧视觉编码器。
- 对比学习成为视觉预训练范式。理解和生成的"视觉接口"长期由 CLIP 类编码器提供。
- 它的局限恰恰催生了 UMM。CLIP 只能"对齐"不能"生成",它把图文映射到同一空间却无法从该空间解码回像素。SenseNova U1 的 NEO-unify 干脆去掉 CLIP 类编码器,正是对这一局限的激进回应。
你应该记住的
- 对比学习的 batch 内负样本构造。
- 零样本迁移的提示工程(prompt template)。
- CLIP 的两个局限:细粒度空间关系弱、不能生成。
3. LLaVA:Visual Instruction Tuning(2023)
论文:Visual Instruction Tuning 作者:Haotian Liu, Chunyuan Li, Qingyang Wu, Yong Jae Lee(威斯康星麦迪逊 / 微软) 链接:https://arxiv.org/abs/2304.08485 发表:NeurIPS 2023 Oral
解决什么问题
GPT-4 的指令微调在纯文本领域已经证明有效,但多模态领域还没有人系统地做过"视觉指令微调"。LLaVA 要回答:能不能用 GPT-4 生成图文指令跟随数据,然后把视觉编码器接到 LLM 上做端到端微调?
核心方法
LLaVA 的架构是后来几乎所有 MLLM 的模板——"CLIP 编码器 + 投影层 + LLM"三件套:
图像 ──→ CLIP ViT ──→ 视觉特征 ──→ 投影层(MLP) ──┐
├──→ LLM (LLaMA) ──→ 文本回答
文本 ─────────────────────────────────Tokenize─────┘
- 视觉编码器:CLIP ViT-L/14,把图像编码成一串 patch token。
- 投影层:一个简单的线性层(或 MLP),把 CLIP 的视觉特征投影到 LLM 的词嵌入空间——这是"翻译官",把视觉语言翻译成 LLM 听得懂的语言。
- LLM:LLaMA/Vicuna,接收文本 token 和投影后的视觉 token,自回归生成回答。
训练分两阶段:
- Stage 1 预训练对齐:冻结视觉编码器和 LLM,只训练投影层,让视觉特征对齐 LLM 的词空间。用 CC3M 图文对。
- Stage 2 视觉指令微调:冻结视觉编码器,训练投影层和 LLM,用 GPT-4 生成的 158K 多模态指令跟随数据(包含对话、详细描述、复杂推理三类)。
数据生成的关键技巧:不是让 GPT-4 直接看图像(当时 GPT-4V 还没公开),而是把图像的边界框、类别名、字幕等结构化信息编码成文本序列喂给 GPT-4,让它基于这些符号信息生成指令。
关键结果
- 合成的多模态指令跟随数据集上,LLaVA 相对 GPT-4 达到 85.1% 的分数。
- Science QA 微调后达到 92.53% 准确率(当时 SOTA)。
- 偶尔展现出类似多模态 GPT-4 的行为。
为什么是 UMM 的基石
LLaVA 定义了"拼接架构"的标准形态:CLIP 编码器 + 投影层 + LLM。Janus-Pro、BAGEL 的理解侧都直接继承了这个范式。理解 LLaVA 的局限,才能理解 UMM 为什么要"统一":
- 只能理解不能生成。CLIP 编码器是单向的,没有解码回像素的能力。
- 视觉信息有损。CLIP 把图像压缩成语义嵌入,丢失了纹理、文字、空间细节,这也是为什么 U1.5 要强调"近无损视觉接口"。
- 投影层是瓶颈。一个线性/MLP 投影层要把连续视觉特征"翻译"成 LLM 能理解的离散 token,这个翻译过程本身就有信息损耗。
你应该记住的
- "CLIP + 投影 + LLM"三件套。
- 两阶段训练(对齐预训练 → 指令微调)。
- 用纯文本 GPT-4 生成多模态指令数据的技巧。
🧭 关键辨析:理解编码器(ViT) vs 生成编码器(VAE)
前文 LLaVA 用的是 ViT Encoder(CLIP ViT),后文 DDPM/DiT/VQ-VAE/VQGAN 用的是 VAE/VQ 编码器。它们都把图像压成 latent,但设计目标几乎相反——这正是理解与生成"难统一"的一半原因。
维度 ViT Encoder(理解侧) VAE Encoder(生成侧) 架构 纯 Transformer:Patchify → 位置编码 → Self-Attention CNN 残差卷积块逐级下采样(可选 attention) 训练目标 监督分类(ViT)或对比学习(CLIP),追求语义判别 重建损失 + KL 正则化,追求压缩后能解码回像素 输出 每 patch 一个语义 token(如 224 图 → 196 token) 连续 latent 分布的 (μ, logσ²),采样成 feature map(如 512 图 → 64×64×4) latent 性质 语义强、不可解码:为"看懂"服务,无配对 decoder 还原像素 可解码、正则化:latent 落在平滑连续空间,配对 decoder 可重建/生成,扩散模型在其上做去噪 关注点 高层语义:物体、关系、OCR、VQA 低中层细节:纹理、颜色、空间结构,要能"画回去" UMM 中的角色 理解路径:LLaVA 的 CLIP ViT、Janus 的 understanding encoder 生成路径:DiT/SD 的 VAE、Transfusion 的 diffusion head 前端 为什么会冲突? 理解想要"语义抽象"——丢掉无关细节、保留"是什么";生成想要"细节完备"——保留纹理布局、保证"画得像"。同一个视觉编码器很难同时做好两者。这正是 Janus-Pro 要解耦理解 ViT 与生成 VQ tokenizer(VAE 的离散变种)、而 BAGEL/Show-o 等也各自处理表征差异的根本原因。
一句话:ViT 为"看懂"而压缩,VAE 为"画回去"而压缩。后文从 DDPM 开始,全部站在生成编码器这一侧。
4. DDPM:Denoising Diffusion Probabilistic Models(2020)
论文:Denoising Diffusion Probabilistic Models 作者:Jonathan Ho, Ajay Jain, Pieter Abbeel(UC Berkeley) 链接:https://arxiv.org/abs/2006.11239 发表:NeurIPS 2020
解决什么问题
2020 年,GAN 虽然能生成高质量图像,但训练不稳定、模式崩塌问题长期未解。DDPM 从非平衡热力学借来灵感,问了一个朴素的问题:如果我不断给图像加高斯噪声直到变成纯噪声,能不能学一个网络把这个过程反过来,从噪声一步步去噪生成图像?
核心方法
整个过程分两步:前向加噪(把图像一步步破坏成噪声)和反向去噪(学会从噪声恢复图像)。
清晰图像 x₀ 噪声 x_T
│ ▲
│ ① 前向:逐步加高斯噪声 │
▼ │ ② 反向:学一个网络
x₁ → x₂ → x₃ → ... → x_{T-1} → x_T │ 逐步去噪
└───────────────────────────────────────────────┘
训练阶段
① 前向过程:加噪
每一步给数据加一点高斯噪声,让图像逐渐"融化":
💡 直觉理解:新图像 = 上一张图像缩小一点 + 加一点噪声。经过 T 步后, 变成纯高斯噪声。
关键性质:不需要一步步加噪,可以一步直接算出任意时刻 (重参数化技巧):
其中 ,表示"保留了多少原始信号"——随 t 增大, 趋近 0,信号被噪声淹没。
② 反向过程:去噪
训练一个神经网络 预测每一步加入的噪声,损失函数就是一个简单的 MSE:
| 阶段 | 做什么 |
|---|---|
| 训练 | 随机给图像加噪 → 让网络猜加了什么噪声 → 最小化猜测误差 |
| 推理 | 从纯噪声 开始,每一步用预测的噪声估计 ,再采样 ,逐步去噪 → 最终生成清晰图像 |
关键结果
- CIFAR-10 无条件生成:FID 3.17(当时 SOTA),Inception Score 9.46。
- 256×256 LSUN 教堂/塔楼:质量匹敌 ProgressiveGAN。
- 训练比 GAN 稳定得多(就是一个回归损失)。
为什么是 UMM 的基石
DDPM 是今天图像生成模型的重要数学基础之一。Transfusion 把扩散 loss 直接和 AR loss 加在同一个 Transformer 上;Show-o 用离散扩散生成图像 token。需要注意的是,SenseNova U1、BAGEL、Lance 等更晚近的模型生成侧更多采用 Flow Matching(学习速度场的 ODE 框架,与扩散有联系但数学形式不同),详见后文 DiT 章节后的"从扩散到 Flow Matching"专题。
理解 DDPM 的关键不是记住公式,而是理解两个直觉:
- 生成 = 迭代去噪。不是一步出图,而是从粗到细逐步 refine。
- 训练目标 = 预测噪声。这是一个简单的回归任务,稳定且可扩展。
你应该记住的
- 前向加噪的闭式采样(repametrization)。
- 反向过程训练噪声预测网络。
- 简单的 MSE loss 为什么能 work。
5. DiT:Scalable Diffusion Models with Transformers(2022)
论文:Scalable Diffusion Models with Transformers 作者:William Peebles, Saining Xie(UC Berkeley / NYU) 链接:https://arxiv.org/abs/2212.09748 发表:ICCV 2023
解决什么问题
DDPM 及其后续工作(包括 Stable Diffusion)的骨干网络都是 U-Net——一个卷积架构,带跳跃连接。U-Net 在扩散模型上效果好,但可扩展性不如 Transformer。DiT 问:能不能把 U-Net 整个换成 Transformer,而且让扩散模型也享受 Transformer 的 scaling law?
核心方法
DiT 的设计非常直接——把扩散模型的骨干网络从 U-Net 换成 Transformer:
图像 ──→ VAE Encoder ──→ Latent Map ──→ Patchify ──→ Token序列
│
▼
┌──── DiT Block × N ────────────────────────┐
│ ┌──────────┐ ┌──────────────────┐ │
│ │AdaLN-Zero│ │ AdaLN-Zero │ │
时间步 t ──→│ │调制γ,β,α│→MSA→│调制γ,β,α │→FFN│→ 输出(预测噪声)
类别 c ──→│ └──────────┘ └──────────────────┘ │
└──────────────────────────────────────────┘
│
▼
生成图像 ←── VAE Decoder ←── 去噪Latent ←── 迭代去噪 ←──┘
- Latent Space:先用 VAE 把图像压缩到 latent space(和 Stable Diffusion 一样),降低 token 数量。
- Patchify:把 2D latent feature map 切成 patch,每个 patch 线性投影成 token,类似 ViT。
- DiT Block:标准 Transformer block 加条件注入,核心创新是 adaLN-Zero——用时间步 t 和类别 c 通过 MLP 生成 LayerNorm 的缩放(γ)、偏移(β)和残差缩放(α)参数,且 α 初始化为零使训练更稳。
- Scaling:通过调整深度(layers)、宽度(hidden size)、输入 token 数(patch size)来控制 Gflops。
关键结果
- DiT-XL/2 在 ImageNet 256×256 类条件生成上 FID 2.27,刷新 SOTA。
- 高 Gflops 的 DiT consistently 有更低 FID,证明了扩散模型也有 Transformer 的 scaling law。
- 计算量-性能曲线平滑可预测。
为什么是 UMM 的基石
DiT 是把"Transformer 统治扩散模型"这件事坐实的论文。它的影响在 UMM 中随处可见:
- Transfusion 的图像生成侧就是 DiT 架构的 Transformer。
- BAGEL 的 MMDiT、UniVideo 的 MMDiT 直接继承 DiT 设计。
- adaLN-Zero 成为条件注入的标准手法,被 Sora、Flux 等几乎所有现代扩散 Transformer 采用。
更重要的是,DiT 证明了理解侧和生成侧可以共用同一种骨干网络——都是 Transformer。这为统一架构扫清了最后的工程障碍。
你应该记住的
- Patchify + Transformer 替代 U-Net。
- adaLN-Zero 条件注入。
- Gflops 与 FID 的 scaling 关系。
🧭 从扩散到 Flow Matching:BAGEL/U1/Lance 用的生成范式
本系列后文三篇主流模型(BAGEL、SenseNova U1、Lance)以及 SD3、Flux、MiniMax H3 等现代生成模型,生成侧大多已从 DDPM 的噪声预测转向 Flow Matching(流匹配)。它不是"DDPM 的一个版本",而是与扩散模型有深刻联系但数学形式不同的独立框架,值得单独建立直觉。
核心思想:不再学"每一步加了多少噪声"(score/ε),而是直接学从噪声 到数据 的速度场 ,让它逼近真实速度 :
其中插值路径常取直线 。推理时从噪声出发,沿学到的速度场解一个 ODE(欧拉积分即可),一步步"流"向数据:
噪声 x₀ ──v(x,t)──→ ──v(x,t)──→ ──v(x,t)──→ 数据 x₁ (t=0) (t=0.5) (t=1)
维度 DDPM / 扩散 Flow Matching 学什么 噪声 ε 或 score 速度场 v = 数据方向 路径 弯曲的随机/SDE 路径 可设计成近似直线的 ODE 路径 推理 几十~上百步去噪 路径更直,少步(1~8 步)即可生成 数学 分数匹配/SDE 回归 + ODE 积分 为什么 UMM 偏爱它? ① 少步采样显著降低生成延迟,对统一模型里"理解完还要画图"的体验很关键;② 回归速度场的 loss 形式和 Transformer 主干天然契合,Lance 的生成专家就是在 VAE latent 上预测速度场;③ 直线路径让训练更稳定。后文看到"flow matching 预测速度 "时,回到这里理解即可。
奠基论文:Lipman et al., Flow Matching for Generative Modeling(ICLR 2023, https://arxiv.org/abs/2210.02747);Rectified Flow(Liu et al., 2022)是其 closely related 的直线路径版本。
6. VQ-VAE:Neural Discrete Representation Learning(2017)
论文:Neural Discrete Representation Learning 作者:Aaron van den Oord, Oriol Vinyals, Koray Kavukcuoglu(DeepMind) 链接:https://arxiv.org/abs/1711.00937 发表:NeurIPS 2017
解决什么问题
VAE 的连续 latent space 有个臭名昭著的问题叫"后验崩塌"(posterior collapse):当解码器太强时,latent 变量被忽略,模型退化成无条件语言模型。VQ-VAE 问:如果把连续 latent 换成离散的 codebook lookup,能不能避免后验崩塌,还能学到更好的表征?
核心方法
VQ-VAE 做的事情可以用一张图概括:
图像 x
│
▼
┌────────┐ 连续特征 ┌──────────────┐ 离散 token ┌────────┐
│ Encoder│ ──────────→ │ Codebook 查表 │ ────────────→ │ Decoder│ → 重建 x̂
└────────┘ z_e(x) │ 找最近的码字 │ z_q(x)=e_k └────────┘
└──────────────┘
▲
│
Codebook: K 个码字
[e₁, e₂, ..., e_K]
整个流程分三步:
| 步骤 | 组件 | 做什么 |
|---|---|---|
| ① | Encoder | 把输入 编码成连续特征 |
| ② | Codebook 量化 | 在 个码字中找最近邻,把连续特征" snapping"到离散码字 |
| ③ | Decoder | 从离散表征 重建输入 |
量化操作的数学表达:
⚠️ 不可微怎么办? argmin 无法求导。VQ-VAE 使用 straight-through estimator:前向传播用量化结果,反向传播直接把梯度"抄"给 encoder(假装量化不存在)。
损失函数有三项,各自有明确分工:
| 损失项 | 作用 | 通俗理解 |
|---|---|---|
| 重建损失 | 让解码结果接近原图 | "画得要像" |
| Codebook 损失 | 码字向 encoder 输出靠拢 | "码字要跟上" |
| Commitment 损失 | encoder 输出别在码字间乱跳 | "encoder 别晃" |
其中 表示 stop-gradient(截断梯度)。
生成时,VQ-VAE 本身只有编码器/解码器,需要再训练一个自回归先验(PixelCNN)在离散 latent 上生成新的 code 序列。
关键结果
- 图像、视频、语音生成质量高,避免了后验崩塌。
- 学出的离散表征能做说话人转换、无监督音素学习。
- 证明了离散表征在深度生成模型中的有效性。
为什么是 UMM 的基石
VQ-VAE 是"把图像变成离散 token"这条路线的源头。Emu3、Chameleon、Show-o 这些纯自回归或离散扩散的统一模型,视觉 tokenizer 本质上都是 VQ-VAE 的后代。
理解 VQ-VAE 的关键意义:
- 它让图像可以和文本共用同一个 softmax。一旦图像被量化成 K 个码字中的一个索引,它就和文字 token 在数学上完全等价——都可以用 cross-entropy 预测下一个。
- 它的局限也很明显:离散化有信息损失,codebook 可能坍缩(部分码字从不被使用),这些问题后来由 VQGAN、FSQ、LFQ 等改进。
🧭 FSQ:更简单稳定的有限标量量化
VQ-VAE/VQGAN 依赖一个可学习的 codebook 做最近邻查找,工程上容易码本坍塌、死码字、EMA 更新不稳。**FSQ(Finite Scalar Quantization,MAGVIT-v2 提出)**换了个思路:不再学码本,而是让 encoder 输出 D 个标量,每个标量用
round()量化到固定的小整数集合(如 ),隐式定义出 个码字。
- 没有显式码本、没有 EMA、没有 commitment loss——量化只是
round + tanh,训练更稳。- 码字天然均匀利用,几乎不存在坍塌。
FSQ 及后续 LFQ(Lookup-Free Quantization)被 Emu3 等新一代统一/生成模型采用。理解了 VQ-VAE 的码本机制,就能理解 FSQ 为什么是工程上的改进:用固定的标量网格替代可学习的向量码本,换取稳定和简单。
你应该记住的
- 连续 → 离散的最近邻量化。
- Straight-through estimator 如何绕过不可微操作。
- 三个损失项各自的作用。
7. VQGAN:Taming Transformers for High-Resolution Image Synthesis(2020)
论文:Taming Transformers for High-Resolution Image Synthesis 作者:Patrick Esser, Robin Rombach, Björn Ommer(海德堡大学 / CompVis) 链接:https://arxiv.org/abs/2012.09841 发表:CVPR 2021
解决什么问题
VQ-VAE 能学离散视觉 token,但重建质量和感知质量不够好,尤其在高分辨率图像上。直接用 Transformer 在像素级做自回归又太慢。VQGAN 问:能不能结合 CNN 的局部归纳偏置和 Transformer 的长程建模能力,用离散 token 合成高分辨率图像?
核心方法
VQGAN = VQ-VAE 的感知增强版 + Transformer 自回归先验。架构分两阶段:
═══════════════ 第一阶段:Tokenizer(训练) ═══════════════
图像 ──→ CNN Encoder ──→ z_e ──→ Codebook量化 ──→ z_q ──→ CNN Decoder ──→ 重建图像
↑ │
最近邻查找 ┌───┴───┐
│ │
VGG感知损失 PatchGAN
(特征空间) 判别器(对抗)
═══════════════ 第二阶段:Transformer Prior(生成) ═══════════════
条件token ──→ Transformer (GPT架构) ──→ 自回归预测code序列
│
▼
CNN Decoder ──→ 生成图像
- CNN Encoder/Decoder:和 VQ-VAE 类似,但用了带注意力的 CNN,保留局部归纳偏置。
- Codebook:同样的向量量化,但加了两个关键改进:
- 感知损失(Perceptual Loss):重建损失不只看像素级 MSE,还在预训练 VGG 的特征空间算距离,提升感知质量。
- PatchGAN Discriminator:加一个判别器,用对抗训练让重建更逼真。这就是"GAN"后缀的来源。
- Transformer Prior:冻结 VQGAN 的 encoder/decoder,在离散 code 序列上训练一个自回归 Transformer(GPT 架构),学习 code 的长程依赖。条件信息(类别、分割图等)也作为 token 输入。
这个"CNN 学局部 + Transformer 学全局"的分工是论文的核心洞察:CNN 的归纳偏置让它高效处理局部纹理,Transformer 没有归纳偏置但能建模任意长程关系。
关键结果
- 第一个用 Transformer 合成百万像素级语义引导图像的工作。
- ImageNet 类条件生成在自回归模型中达到 SOTA。
- 后续的 Stable Diffusion 第一版就建立在 VQGAN(及其改进 LDM)的 latent space 上。
为什么是 UMM 的基石
VQGAN 是 Chameleon、Emu3、Show-o 视觉 tokenizer 的直接技术源头。它把 VQ-VAE 从"表征学习工具"升级为"高质量图像编解码器",让离散视觉 token 真正能支撑生成任务。
VQGAN 的另一层贡献是方法论:它第一次清晰展示了"压缩 + 自回归"的两阶段范式——先用一个 tokenizer 把像素压缩成离散 token,再在 token 空间用 Transformer 建模。这个范式被 Emu3 推到极致:不需要扩散、不需要 VAE decoder 之外的任何东西,next-token prediction 就够了。
但 VQGAN 也暴露了纯离散化路线的根本张力:codebook 大小与重建质量的矛盾。码本越大,重建越好,但 softmax 开销越大;码本越小,效率越高,但细节损失越多。后来的 SenseNova U1 干脆去掉整个 tokenizer,正是对这一张力的激进回应。
你应该记住的
- VQ-VAE + 感知损失 + 对抗训练 = VQGAN。
- CNN 局部 + Transformer 全局的分工。
- "压缩 + 自回归"两阶段范式。
七篇论文的知识图谱
把七篇论文放在一起,你会发现 UMM 的每一个组件都有出处:
| UMM 组件 | 奠基论文 | 传承关系 |
|---|---|---|
| 骨干架构 | Transformer (2017) | 所有 UMM 的 backbone |
| 理解侧视觉编码 | CLIP (2021) | LLaVA → Janus-Pro 理解侧 |
| MLLM 拼接范式 | LLaVA (2023) | Janus-Pro 的 baseline |
| 生成侧数学框架 | DDPM (2020) | Transfusion/Show-o/U1 的生成 loss |
| 生成侧骨干 | DiT (2022) | Transfusion/MMDiT 的架构 |
| 离散视觉 token | VQ-VAE (2017) | Chameleon/Emu3/Show-o tokenizer |
| 高质量离散 tokenizer | VQGAN (2020) | Chameleon/Emu3 视觉 tokenizer |
三条主线在此交汇:
- 自回归主线:Transformer → VQ-VAE → VQGAN → Emu3(next-token 统一一切)
- 扩散主线:DDPM → DiT → Transfusion(AR + Diffusion 混合)
- 对齐主线:CLIP → LLaVA → Janus-Pro(解耦编码,理解走连续、生成走离散)
读懂这七篇,你就有了理解后续所有 UMM 论文的"词汇表"。下一篇我们进入 2024 年——Chameleon、Emu3、Transfusion、Show-o 四篇论文几乎同时出现,从不同方向回答了"能不能统一"这个问题。
参考链接
- Attention Is All You Need: https://arxiv.org/abs/1706.03762
- CLIP: https://arxiv.org/abs/2103.00020
- LLaVA: https://arxiv.org/abs/2304.08485
- DDPM: https://arxiv.org/abs/2006.11239
- DiT: https://arxiv.org/abs/2212.09748
- VQ-VAE: https://arxiv.org/abs/1711.00937
- VQGAN: https://arxiv.org/abs/2012.09841
- 代码与项目: