1.1 生成模型全景与扩散直觉¶
所属章节:第 1 章 扩散模型基础
课时:90 分钟
前置:概率论基础、深度学习基础
对应面试题:D6(主)、A2(引入)、A5(引入)
一句话目标:学完能用自己的话解释“扩散为什么出现、它和 GAN/VAE/Flow 有什么不同”,并给出 90 秒面试回答。
1. 学习目标¶
学完本节,你应该能够:
- 解释生成模型的三种建模语言:显式密度、隐式密度、score;
- 比较 GAN、VAE、Flow、Diffusion 的训练目标、采样方式和优缺点;
- 说明扩散模型“前向破坏、反向恢复”的直觉;
- 回答“为什么扩散模型训练更稳定、采样更慢”;
- 区分 DDPM(算法)与 LDM(系统)这两个容易混淆的概念;
- 用 90 秒回答“GAN 和 Diffusion 的区别”,并接住两层追问。
2. 为什么先学“全景”,而不是直接推 DDPM¶
如果一上来就写 \(q(x_t\mid x_{t-1})\),很容易陷入公式,却不知道它在整个生成模型版图中的位置。面试官问“DDPM 和 GAN 的区别”时,如果你只会背“一个对抗、一个去噪”,很难拿高分。
先建立坐标系,有三个好处:
- 知道 Diffusion 不是凭空出现的:它继承了 VAE 的变分思想、score matching 的梯度思想、SDE 的连续时间思想;
- 知道 Diffusion 的取舍:训练稳定、采样慢、可控性强;
- 知道面试官在比较什么:训练信号、采样步数、模式覆盖、似然、可控性。
所以本节不追求公式细节,而是先回答:生成模型到底在学什么?Diffusion 用什么方式学?
3. 生成模型到底在学什么¶
生成模型的目标,是学习数据分布 \(p_{\mathrm{data}}(x)\),并能够:
- 采样:从学到的分布中生成新样本;
- 密度估计(可选):给一个样本 \(x\) 打分 \(\log p_\theta(x)\);
- 条件生成(可选):学 \(p(x\mid c)\),如文本到图像。
不同路线的主要区别是:
| 问题 | GAN | VAE | Flow | Diffusion |
|---|---|---|---|---|
| 怎么表示分布 | 隐式,生成器 | 潜变量 + 解码器 | 可逆变换 | 去噪过程 |
| 怎么训练 | 对抗 | ELBO | 精确似然 | 变分/score |
| 怎么采样 | 一步 | 一步(解码) | 一步(逆变换) | 多步去噪 |
| 有没有似然 | 一般没有 | 下界 | 有 | 下界/score |
| 典型问题 | 不稳定、模式坍塌 | 模糊、后验坍塌 | 架构受限 | 慢、计算重 |
这张表是本节最重要的产出。面试时能画出来,比背十句话更有用。
4. 四条路线,各自在解决什么¶
4.1 GAN:用判别器代替似然¶
GAN 有一个生成器 \(G\) 和一个判别器 \(D\):
直觉:
- 生成器把噪声 \(z\) 映射成样本;
- 判别器区分真/假;
- 两者对抗,生成器逐渐逼近数据分布。
优点:
- 采样快,通常一步;
- 样本往往很锐利;
- 在特定域(人脸、超分)很强。
缺点:
- 训练不稳定,生成器/判别器容易失衡;
- 模式坍塌(mode collapse);
- 一般没有似然;
- 条件控制不如 Diffusion 自然。
面试要点:GAN 是隐式密度模型,不显式建模 \(p(x)\),而是学一个采样映射。
4.2 VAE:用潜变量和 ELBO¶
VAE 假设数据由潜变量 \(z\) 生成:
编码器近似后验 \(q_\phi(z\mid x)\),训练最大化 ELBO:
优点:
- 有概率框架,可采样;
- 潜空间连续、平滑;
- 重参数化让训练稳定。
缺点:
- 像素级重建容易模糊;
- KL 过强会导致 posterior collapse;
- 先验/解码器容量有限。
面试要点:VAE 是显式密度(下界)模型;它的潜空间思想被 LDM 继承,但 Stable Diffusion 的 VAE 不是用来“生成”的,而是用来压缩图像。
4.3 Flow:用可逆变换做精确似然¶
Flow 模型用一系列可逆变换 \(f\) 把简单分布映射到数据分布:
优点:
- 精确似然;
- 可逆,编码/解码一致;
- 采样一步。
缺点:
- 网络必须可逆,架构受限;
- 雅可比行列式计算昂贵;
- 表达能力和工程灵活性不如 Diffusion。
面试要点:Flow 和 Diffusion 都可以写成连续变换/ODE,但 Flow 通常要求可逆、精确似然;Diffusion 用多步去噪近似分布。
4.4 Diffusion:学习“破坏—恢复”¶
Diffusion 不直接学 \(x\to z\) 的映射,而是:
- 前向:逐步给数据加噪,最终变成近似标准高斯;
- 反向:学习每一步去噪,从噪声恢复数据;
- 训练:随机取一个时刻 \(t\),让网络预测“这一步加了什么噪声”;
- 采样:从 \(x_T\sim\mathcal N(0,I)\) 开始,迭代去噪。
直觉:
- 前向是“把一幅画逐渐揉成噪声”;
- 反向是“教模型如何一点点把噪声擦掉”;
- 每一步只学一个简单的去噪任务,所以训练稳定;
- 但采样要跑很多步,所以慢。
面试要点:Diffusion 是“迭代去噪”的生成模型;它把复杂的生成问题拆成很多简单的去噪问题。
5. 一张图看懂四条路线¶
GAN:
噪声 z ──G──> 图像 x
↑
判别器 D 给信号
VAE:
图像 x ──编码器──> z ──解码器──> 重建 x
↑
先验 N(0,I)
Flow:
噪声 z ──可逆变换 f──> 图像 x
(可逆,可算似然)
Diffusion:
图像 x0 ──逐步加噪──> xT ≈ N(0,I)
图像 x0 <──逐步去噪── xT
(多步,学习每步去噪)
如果只能记一句话:GAN 一步“骗”,VAE 一步“编解码”,Flow 一步“可逆变换”,Diffusion 多步“去噪”。
6. 为什么 Diffusion 成为文生图主流¶
6.1 训练稳定¶
- 每个时间步都有明确的回归目标:预测噪声;
- 不需要对抗训练,不容易出现生成器/判别器失衡;
- 损失函数简单,容易扩展到大模型和大 batch。
6.2 容易扩展¶
- 数据、模型、分辨率都可以 scale;
- U-Net/DiT 等骨干网络成熟;
- 训练目标不依赖复杂的判别器设计。
6.3 条件注入自然¶
- 文本可以通过 cross-attention 注入;
- 类别可以通过 embedding/AdaGN 注入;
- 控制图可以通过 ControlNet 注入;
- CFG 让条件强度可调。
6.4 可控性强¶
- inpainting、editing、img2img 都可以在去噪过程中做;
- 多步采样天然支持中间干预;
- 社区生态(LoRA、ControlNet、IP-Adapter)丰富。
6.5 代价:慢¶
- 需要多步采样;
- 每步都要跑一次网络;
- 高分辨率/大模型更贵;
- 所以有 DDIM、DPM-Solver、LCM、Turbo 等加速路线。
7. 90 秒回答:GAN 和 Diffusion 的区别¶
面试官问:GAN 和 Diffusion 有什么区别?
参考回答:
“它们都是生成模型,但建模方式不同。GAN 用生成器和判别器做对抗训练,学一个隐式的采样映射,通常一步出图,速度快、样本锐利,但训练不稳定、容易模式坍塌。Diffusion 学的是逐步去噪:前向把数据加噪到高斯,反向学习每一步去噪,采样时从噪声迭代恢复。它的训练目标更稳定、模式覆盖通常更好、条件控制更自然,但采样慢,需要多步,所以有很多加速方法。实际系统里两者也会混合,比如 VQGAN 用 GAN 提升重建,或少步扩散用对抗蒸馏。”
结构拆解:
- 一句话定位:都是生成模型,但建模方式不同;
- GAN:对抗、隐式、一步、快、不稳定;
- Diffusion:去噪、多步、稳定、可控、慢;
- 收尾:混合趋势。
8. 追问与回答¶
追问 1:为什么 Diffusion 训练比 GAN 稳定?¶
因为 Diffusion 每个时间步都有一个明确的去噪回归目标,损失是 MSE/变分下界,不需要判别器提供动态信号;GAN 的生成器要追逐一个不断变化的判别器,容易出现失衡和模式坍塌。
追问 2:Diffusion 一定比 GAN 好吗?¶
不能绝对说。Diffusion 在大规模文生图上因为训练稳定、可扩展、可控性强而成为主流;GAN 在实时、低算力、特定域(人脸、超分)仍有优势。实际系统经常混合,比如对抗蒸馏、VQGAN。
追问 3:Diffusion 和 VAE 是什么关系?¶
两者都用变分/潜变量思想。VAE 直接学“编码—解码”,Diffusion 学“逐步去噪”;DDPM 的 ELBO 也来自变分推断。Stable Diffusion 的 VAE 不是生成器,而是图像压缩器,扩散在它的潜空间里做。
追问 4:为什么 Diffusion 采样慢?¶
因为它不是一步映射,而是从 \(x_T\) 开始迭代去噪;每步都要跑一次网络。步数、模型大小、分辨率共同决定时延。加速方法包括更好的求解器、蒸馏、缓存、量化等。
追问 5:DDPM 和 LDM 是一回事吗?¶
不是。DDPM 是一种扩散算法/训练目标;LDM 是“在 VAE 潜空间做扩散”的系统架构。Stable Diffusion 是 LDM,不是直接在像素空间跑 DDPM。
9. 常见误区¶
- “Diffusion 只是加噪”:加噪只是前向,真正学的是反向去噪分布。
- “Diffusion 一定比 GAN 好”:要分场景,GAN 在速度和特定域仍有优势。
- “DDPM 就是 Stable Diffusion”:DDPM 是算法,SD 是 LDM 系统。
- “Diffusion 没有似然”:有 ELBO/似然下界,只是不精确。
- “VAE 在 SD 里负责生成”:SD 的 VAE 主要负责压缩/解码,生成由扩散完成。
- “采样慢是因为模型大”:主要因为多步迭代,模型大只是每步更慢。
10. 自测题¶
- 用一句话分别定义 GAN、VAE、Flow、Diffusion。
- 为什么 GAN 容易模式坍塌?
- Diffusion 的训练目标为什么比 GAN 稳定?
- DDPM 和 LDM 的区别是什么?
- 为什么 Diffusion 采样慢?说出两个加速方向。
- 如果面试官问“Diffusion 的本质是什么”,你会怎么回答?
自测参考答案要点¶
- GAN:对抗学隐式映射;VAE:潜变量 + ELBO;Flow:可逆变换 + 精确似然;Diffusion:多步去噪。
- 生成器只覆盖少数模式也能骗过判别器;判别器信号不稳定。
- 每步有明确的噪声回归目标,不需要对抗。
- DDPM 是扩散算法;LDM 是在 VAE 潜空间做扩散的系统。
- 多步迭代;加速:更好求解器、蒸馏、缓存、量化。
- 本质:学习一个从噪声到数据的逐步去噪过程,等价于学习数据分布的 score/变分下界。
11. 课后作业(不写代码)¶
- 画表:GAN/VAE/Flow/Diffusion 四行,列为“训练目标、采样方式、优点、缺点、典型代表”。
- 写 300 字:为什么 Diffusion 会成为文生图主流?要求至少提到“训练稳定、可控性、扩展性”三点。
- 录 3 分钟:不看笔记讲“GAN 和 Diffusion 的区别”,回听并标记卡壳点。
- 找反例:举一个 GAN 仍然比 Diffusion 更合适的场景,并说明理由。
12. 本节材料为什么这样设计¶
- 先全景后公式:避免“会推 DDPM 但不知道它和 GAN/VAE 的关系”。
- 四路线对比表:面试高频,且能直接作为复习卡片。
- 90 秒回答 + 追问:把知识转成表达,而不是停留在阅读。
- 不写代码:本节目标是建立直觉,代码会分散注意力。
- 常见误区:针对面试中容易说错的点,提前纠偏。
详细设计理由见 08-材料设计理由。
13. 延伸阅读¶
- Goodfellow et al., Generative Adversarial Nets, 2014.
- Kingma & Welling, Auto-Encoding Variational Bayes, 2014.
- Rezende & Mohamed, Variational Inference with Normalizing Flows, 2015.
- Ho et al., Denoising Diffusion Probabilistic Models, 2020.
- Song et al., Score-Based Generative Modeling through SDEs, 2021.