阶段 4 · 学会创造

生成模型图谱:五条路线
没有一条是全面赢家

这一章不教新东西,只把上一章《视觉 tokenizer》留下的「离散 → 自回归」这一格,连同前面七章摆到同一张桌子上比。 VAE、GAN、扩散、流匹配、自回归——它们不是「谁取代了谁」, 而是五个各自带着明显死穴的方案,每一代都在拿新代价换旧代价。 选错路线的代价,比选错超参数大得多。

1

一句话概括每条路线

先想两个任务:一个要求 1 秒内出图(手机相册的实时滤镜), 一个不计时间、只要出版级画质。同样是「生成一张图」,该选的路线完全不同—— 因为最优路线不是固定的,它是算力预算的函数。下面先摆出五条路线各自的一句话。

路线核心一句话它换来了什么它付出了什么
VAE 压缩到一个连续的潜空间,再从那里采样 训练极稳、采样一步、潜空间可插值 输出天生模糊(MSE 的最优解就是均值)
GAN 造假者 vs 鉴定师,用网络当损失函数 一步出图、图像锐利 训练极不稳定,模式坍塌是结构性的
扩散 DDPM 把生成拆成一千次「去噪」 训练极稳、质量与多样性都顶尖 采样慢(要迭代很多步)
流匹配 Flow 直接学一条从噪声到数据的直线 又快又好、训练目标和扩散一样简单 较新,生态和工具链还在补
自回归 AR 把一切变成 token,预测下一个 目标极简、天然统一多模态、可解释 串行生成,图像 token 太多 → 慢
💡 先记住这张表的读法

注意 「它付出了什么」那一列——每一条路线的缺点,都不是「工程没做好」, 而是它选择的那个核心机制的必然代价(下一节逐条展开)。
所以选路线,本质上是选「你愿意接受哪个代价」。

2

六维对比:摆到同一张雷达图上

选两条路线叠在一起看,差异会非常直观。下面的评分是基于公开文献与社区共识的主观打分 (每条 0~10 分,越高越好),不是跑了某套基准测试(统一题目加统一打分)的结果—— 它的作用是帮你建立直觉,不是替你下结论。「可控性」看能不能指定生成什么, 「理论简洁度」看好不好用一句话说清。

互动 · 六维雷达对比

💡 怎么读这张雷达图

面积越大不代表越好——六个维度不是同等重要的。先确定你最在意哪个轴 (要实时就看「采样速度」),再看哪条路线在这轴上最长,然后接受它在别的轴上的短板。 没有一条路线在六个轴上都长。

3

每条路线的死穴(这一节最该记住)

路线死穴为什么修不了 / 怎么绕
VAE 图像永远模糊 重建损失(MSE)的最优解是条件均值。当模型不确定细节时,输出均值就是统计上的最优策略—— 而均值就是糊的。这不是训练不够,是数学上的必然。 绕法:换感知损失(比两张图在一个预训练网络眼里像不像,而不是逐像素比)或对抗损失。
GAN 模式坍塌 + 训练不稳 目标函数的均衡点是鞍点、不是极小值(p_G 是生成器造出的分布,p_data 是真数据分布, D 是判别器;理论上前两者重合、D = 1/2 时双方谁单方面改变策略都不划算)—— 两边永远在互相追逐,同时用梯度下降只会绕着它打转,收敛不到。 而且「只造一个逼真的样本」在生成器看来就是最优解。 主流做法是改目标函数(WGAN 等);BigGAN 靠调参加架构找到了稳定区,但代价很高。 今天它还留在必须一步出图的场景里:实时预览、超分(把小图放大成清晰大图)。
扩散 采样慢 质量来自「反复微调」,步数少了就必然走偏。但这条是可修的—— 把路径修直(流匹配)或把路走快(一致性模型)都能绕开
流匹配 路径拉直本身有极限 学出来的速度场不是直的(分布形状本身就复杂),所以仍然需要几步迭代。 它的优势是「几步」而不是「零步」
自回归 串行 + token 太多 一张 512×512 图要 1024 个 token(16×16 一块);换成 1024×1024 就是 4096 个, 2048×2048 要 16384 个。而自回归必须一个一个生成。 把 2D 排成 1D 序列丢掉了二维邻接结构,模型得自己把它学回来。
⚠️ 一个反直觉的观察

注意「可修性」这一栏的差别:
扩散的慢是可修的(换路径、蒸馏),所以它赢了;
GAN 的不稳是不太可修的(目标函数性质决定的),所以它让出了主舞台;
VAE 的糊是数学必然,所以它转型去当「潜空间压缩器」而不是生成器。
一条路线的命运,很大程度上取决于「它的缺点是工程问题还是数学问题」。

互动 · 质量天花板:再多预算也换不来

每条路线的天花板(第 4 节的曲线会用到): 扩散 / 流匹配 10,GAN 8,自回归 7,VAE 4。 预算滑块只能让你沿着曲线往上爬,爬不到天花板以上的地方——所以选型先问天花板,再问要几步。 自回归那 7 分是按经验给的:图像被拆成序列后,二维的邻接关系得靠模型自己学回来。

M

数学 · 「几步到位」是一个可以算的数

前面三节翻来覆去只说了一句话:扩散的路径弯,所以要几十步;流匹配的路径直,几步就够。 「弯」和「直」是谁在决定、又怎么变成一个步数的?下面把它真的算一遍——这一节的误差是当场算出来的,不是画出来的。 弯度 k 是一个 0~1 的数:0 是直路,越大越弯。公式里每一个符号,图上都有一块看得见的东西。

互动 · 从噪声走到图像:路径弯不弯,决定要走几步

N8走几步(预算) 弯路终点误差—折线走到终点时离真正终点差多少 直路终点误差0.000折线不漏拐弯,所以是 0 弯度 k0.60路径有多弯

公式卡 · 每一步只做一件事

图解 · 五条路线的采样路径并排看:一个点就是一步

流匹配只有 8 个点(正好一步一个点),VAE / GAN 只有 1 个点; 扩散那一串密到看不出间隔、自回归是一千级楼梯——这两格的密集段是按比例压缩的示意,不是一步一个点。

互动 · 误差随步数掉下去:弯路是 1/N,直路是 0

横轴是步数 N,纵轴是终点误差:折线走到终点时离真正终点差多少。直路是一条压在 0 上的线—— 折线逼近一条直路径不会出错;弯路必须靠 N 把它压下去,所以扩散要多花十倍预算。 这里的 0 说的是路径误差,不等于画质已经满分——画质看第 4 节。

图解 · 把终点误差拆开:哪一步漏得最多

同一个终点误差,拆到每一步上是不均匀的:路径拐得急的地方每步漏得多, 平坦的地方几乎不漏。柱子加起来正好是终点误差(上面那个「差 0.xxx」), 拖 k 或 N 看它们怎么长起来。

4

换个问法:在固定预算下,谁更好?

「哪条路线最好」这个问题问错了。正确的问题是: 在你能付出的计算量下,哪条路线能达到的最高质量是多少? 下面把五条路线的「质量随计算量增长」的曲线放在一起—— 曲线是当场求值的,但形状是按每条路线的特点搭出来的模型,不是实测数据, 具体分数别当成基准测试来引用。横轴只数生成一张图时的前向次数:一次前向的成本各路线并不相同, 本页简化成都算 1 次;GAN 生成只要 1 次,它在曲线里随预算变好是本页的简化(把多给的预算当成更好的模型), 不是 GAN 采样要多走几步。这套 0~10 也和雷达图那套不是同一把尺子。

鼠标停在公式里的 N 上——下面那个唯一的「计算预算」滑块会亮。它就是 N。

人话版:扩散要很多步才收敛;流匹配十几步就到位; VAE 一步出图,但天花板被 MSE 的模糊锁死;GAN 一步出图,但要额外算力保证训练不崩; 自回归要串行生成 1024 个 token,算力直接等于进度。 数学那节的「直路终点误差 0」说的是折线逼近不出错,不是画质零成本;FLOPs 指浮点运算次数。 两条路线的曲线形状只差指数上的分母(80 对 8):训练时扩散把去噪切成 1000 份, 采样时常用几十步;80 是本页模型里「弯路够好」的步数——它是弯度换算出来的,不是 DDPM 实际的采样步数。

这里的扩散曲线指未蒸馏的 DDPM;蒸馏后的 1~4 步模型 (LCM、SDXL-Turbo 等)见「一致性模型与蒸馏」那一章。式子里的 e 是自然常数(≈2.718)。

互动 · 拖动预算,看冠军换人

💡 冠军会换人,说明什么

把滑块从头拖到尾:没有一条路线在整段路上都领先——预算小是 VAE / GAN, 十几步后是流匹配,给到几百步扩散才追上来。 「哪条路线最好」必须带上预算才有答案。自回归算力几乎线性地换成质量,但天花板只有 7 分。

⚠️ 这是一份「模型」,不是实测数据

上面五条曲线是按每条路线讲过的原理写出来的定性模型,形状可信,具体数值不是基准测试。

互动 · 加显卡救不了串行:两种路线的出图时间

纵轴是出这一张图要等多久(秒,对数刻度)。扩散的每一步都能摊到多张卡上, 所以加卡真的更快;自回归的每一步依赖上一步的输出,单条序列的延时是串行的——多给显卡也一步都省不掉。 串行是「1024 个 token 必须一个个生成」的代价;第 3 节那句「丢掉二维邻接结构」说的是它的 7 分天花板,是另一件事。

5

选型决策器

回答四个问题,本章给出推荐,并把每一分的来源列出来—— 你能看到它是怎么想的,而不是只拿一个结论。

互动 · 五条路线的打分与推荐

6

2026 年的实际格局

领域数据现在谁在用为什么
图像连续 扩散 / 流匹配 质量与多样性都最好,而且训练稳定。SD3、FLUX 用的是流匹配
视频连续 扩散(潜空间) Sora、可灵、Veo 都是潜空间扩散/流匹配。视频的 token 数太多,自回归不划算
文本离散 自回归,一家独大 文本天生离散、序列短、需要长程依赖。扩散语言模型有进展但还没翻盘
音频 / 语音连续 两条路都在用 语音合成用自回归(token 化后)或流匹配;音乐生成扩散和流匹配都有
3D / 场景连续 扩散 + 神经辐射场 神经辐射场(NeRF:用一个网络记住场景里每个位置的颜色和密度);3D 数据少、表示不统一,扩散天然适合重建它
分子 / 蛋白质连续坐标 扩散 AlphaFold3(预测蛋白质三维结构的模型)之后的生成式结构预测基本都用扩散。这是扩散优势最明显的领域之一
💡 一句话概括这个格局

「连续的 → 扩散/流匹配;离散的 → 自回归」。
这条规律几乎能解释上面所有格子:图像和视频是连续量,文本是离散量——数据的性质决定了范式的选择。

7

融合:分界线正在变模糊

融合方向怎么做想解决什么
潜空间扩散 + 连续 latent VAE 压缩 → 扩散在潜空间里生成 让 VAE 的「压缩」和扩散的「生成」各干各擅长的事。 Stable Diffusion 的架构就是这个
自回归 + 扩散
Transfusion
同一个 Transformer 里,文本用自回归目标、图像用扩散目标 让一个模型既能「顺着写」又能「整体画」
自回归 + 扩散
MAR
图像 token 仍然自回归地生成,但每个 token 的分布用扩散头(一个小的去噪网络)来建模 去掉离散分词的量化损失,连续空间也能自回归生成
离散扩散语言模型
LLaDA 等
把扩散搬到离散 token 上,并行地「去噪」文本 打破自回归的串行限制,让文本也能并行生成。 代价是失去了 KV cache(把算过的中间结果存下来,省掉重复计算)这个巨大的推理优化
对抗损失重新被用上 在扩散/流匹配的训练里,加一项 GAN 的判别器损失 把 GAN 锐利的优点嫁接进来。 SDXL-Turbo、许多少步模型都在用
统一 token 空间
Chameleon / Emu3
用视觉 tokenizer 把图像变离散,和文本 token 排进同一个序列 真正意义上的「一个模型什么都能生成」
🎯 类比

这五条路线过去像五个各自造车的团队,现在变成了互相拆零件用: 扩散把 VAE 当压缩器、把 GAN 的判别器当质量裁判;自回归把视觉 tokenizer 当翻译器、把扩散当并行渲染器。
「哪条路线赢」正在变成一个过时的问题——现在是「哪种组合适合这个任务」。

互动 · 蒸馏=把弯路掰直:同一条曲线换了个指数

第 4 节那两条曲线的指数是 80 和 8。蒸馏做的事,就是把扩散的 80 换成 1.5 —— 也就是把那条弯路径直接掰直,于是 1~4 步就能出图(LCM、SDXL-Turbo 就是这么来的)。 路径弯不弯,不是一个比喻,它是曲线里唯一那个数。

8

谱系:每条路线的最好代表

路线代表模型年份规模量级标志性突破
自回归 DALL·E 12021120 亿 证明图像可以当语言生成
Parti2022200 亿 把这条路推到极致规模
Chameleon / Emu3202470 亿 ~ 文本与图像共用同一个 Transformer
潜空间压缩器
(不是生成范式,
是给各条路线供货的零件)
VQ-VAE-2(离散)2019几千万
(自编码器本身)
层级码本,生成 1024×1024 人脸
Stable Diffusion 的 VAE(连续)2022约 8000 万 成为「潜空间压缩器」这个角色的事实标准
GAN StyleGAN22019约 3000 万 人脸生成巅峰,潜空间高度解耦
BigGAN20181 亿 ~ ImageNet 128×128 的质量巅峰
扩散 DDPM2020几千万 把「去噪」变成生成范式
SDXL202326 亿 UNet 开源图像生成的事实基线
Sora / Veo 类视频模型2024未公开 把扩散推到时空联合建模
流匹配 Rectified Flow2022— 提出「把路径修直」这个思路
SD3202480 亿 MMDiT + 整流流,开源质量新高
FLUX.12024120 亿 把流匹配推向主流商业应用

这一格的「几千万」只算 VQ-VAE-2 的自编码器(隐藏宽度 128,很轻),大头在自回归先验网络上(隐藏宽度 512、20 层)——不能当成整个系统的参数量。

9

整个阶段 4 学到了什么

章一句话带走
自编码器 用窄瓶颈逼网络学会「什么重要」。线性版就是 PCA
VAE 给潜空间加「必须像正态分布」的约束,把孤岛连成地图
GAN 用学出来的网络当损失函数
扩散 把生成拆成一千次去噪;训练目标只是「猜加了多少噪声」
潜空间扩散 / DiT VAE 当压缩器、Transformer 当去噪器
流匹配 不去把弯路走快,而是把路修直
一致性模型 逼模型在整条轨迹上输出同一个终点,一步到位
视觉 tokenizer 把图变成离散 token,图像就有了一门语言
💡 这八章其实在讲同一件事

整个阶段 4 反复出现同一个模式:每一个新方法,都是在修上一个方法的某个具体代价。
VAE 修自编码器「不能生成」→ 付出了模糊的代价;
GAN 修 VAE「模糊」→ 付出了不稳定的代价;
扩散修 GAN「不稳定」→ 付出了慢的代价;
流匹配和一致性模型修扩散「慢」→ 付出了需要重训/多样性下降的代价。
生成模型的十年,就是一条不断「拿新代价换旧代价」的链子。 看懂这条链子,比记住任何一个模型的名字都有用。

10

小结

五条路线摆到一起,才看得清它们是怎么互相接力的。

它对应哪条线 ② 没有免费午餐 → 必须有归纳偏置—— 五条路线各自就是五组「关于数据长什么样的假设」,而每一组假设都自带一张账单。
一句话 选生成路线不是选哪个更强,而是 选你愿意接受哪个代价——每条路线的短板,都是它核心机制的代价。
它牺牲了什么 牺牲了「存在一个标准答案」这个幻想:这一章给的不是一句推荐, 而是一个函数——最优路线 = f(预算、输出形态、稳定性容忍度)。 不带上「你要干什么」,「哪条路线好」就没有答案(回扣暗线 E)。
💡 检验一下:你现在能指着哪个互动说这句话

回到第 4 节那个「拖动预算,看冠军换人」:把滑块从 1 拖到 1024。 预算小是 VAE / GAN,十几步是流匹配,再大扩散追上来。

那个冠军换人的瞬间你看到的就是「没有免费午餐」: 变的不是路线,是你:同一个模型集合,换一个预算就换一个赢家。 没想指着某个东西说这句话?回到图上再拖一次。

它在暗线里站在哪

这一章作为一个「总表」,几条暗线都能答得很具体。

暗线这一章的回答
A 信息流动 五种「从噪声到数据」的路径:VAE 一次解码;GAN 一次前向; 扩散上千次同样的前向;流匹配同样的迭代,但路径被拉直; 自回归一个 token 一个 token 长出来。同一张图,五条链子长度差三个数量级。
B 什么被牺牲了 第 3 节那张死穴表就是答案:VAE 牺牲细节、GAN 牺牲稳定、扩散牺牲速度、 流匹配牺牲「一步到位」、自回归牺牲并行度(以及 7 分天花板)。
C 参数账本 第 8 节的真实量级:StyleGAN2 约 3000 万 → SD 的 VAE 约 8000 万 → SDXL UNet 26 亿 → SD3 80 亿 → FLUX.1 120 亿 → DALL·E 1 120 亿 → Parti 200 亿。
画质最好的模型并不是参数最多的:StyleGAN2 三千万参数做人脸,质量至今仍被引用。
D 跑在什么上 推理时最贵的是那一串采样步。 每一步都要把整套权重从显存(显卡上存数据的内存)里读一遍, 而每步算的乘加(一次乘法加一次加法)很少, 所以瓶颈是「搬数据」而不是「算数」。 少步蒸馏(LCM / Turbo / 一致性模型)能明显提速,就是因为它直接砍掉了这些重复的搬运。
自回归反过来:算得不多,但必须一个一个串行等。 完整的账见 《硬件与算力账本》
E 它假设了什么 每条路线都是一句关于「数据是什么形状」的假设: VAE 假设潜空间近似高斯;GAN 假设存在一个能判别真假的函数; 扩散假设反向过程是高斯链;流匹配假设存在近似直线的传输路径; 自回归假设数据能排成一个序列。选路线 = 选你相信哪个假设。
F 违背了哪个直觉 “把原理搞对就能修好”是错的。直觉会把路线的短板当成工程问题—— 多调参就好;但扩散慢可以换路径,GAN 不稳和 VAE 糊都动不了机制本身。 缺点是工程问题还是数学问题,直接决定一条路线的生死。这个才是真正的反直觉。
🎯 前后钩子

它接住了前八章: 自编码器、VAE、GAN、 扩散、潜空间扩散、流匹配、 一致性模型、视觉 tokenizer—— 八章各自讲一个方案,这一章是它们第一次互相说话。

它给下一章留了什么:阶段 4 还没收尾—— 下一章(《一套机制,四种模态》)把同一套零件换到别的模态上; 「用有限算力换最大效果」要等更后面的《缩放定律》才搬到语言模型上。

一句话带走生成模型图谱

五条路线没有全面赢家,每条路线的缺点都是它核心机制的代价: VAE 糊、GAN 不稳、扩散慢、流匹配新、自回归串行。
这十年就是一条「拿新代价换旧代价」的链子,每一代都在修上一代的代价。
所以选路线要带上两件事:数据是连续还是离散、你的算力预算有多少—— 连续数据走扩散/流匹配,离散数据走自回归;而这条界线正被互相拆零件的融合抹掉。

11

拓展阅读

上面讲的都是「够用」的版本。想往下挖,这里有三个入口—— 它们不是必修内容,是给想再往前走一步的读者准备的。

📄 这一章的说法从哪来

💻 工业界怎么写

∑ 更严格的形式