2.1 DDPM 采样与 DDIM¶
所属章节:第 2 章 采样、加速与引导
课时:90 分钟
前置:第 1 章(DDPM 后验、噪声预测)
对应面试题:D1、D4
一句话目标:学完能写出 DDPM/DDIM 采样公式,解释“同一个模型为什么能跳步”,并回答 DDPM 与 DDIM 的关系。
1. 学习目标¶
学完本节,你应该能够:
- 写出 DDPM 祖先采样公式;
- 解释 每一步为什么要加噪声;
- 写出 DDIM 更新式,并说明 \(\sigma_t=0\) 的含义;
- 解释 DDIM 为什么能跳步、为什么能反演;
- 说明 DDPM 是 DDIM 的什么特例;
- 比较 两者的多样性、可复现性、速度;
- 用 90 秒回答 D4,并给出 D1 的采样分类框架。
2. 为什么采样是面试重点¶
训练只解决“网络能不能去噪”,采样解决“怎么从噪声走回数据”。
面试官问采样,通常想确认三件事:
- 你知道采样器不是模型,同一 checkpoint 可以换采样器;
- 你知道 DDPM/DDIM 的公式差异,而不是只记名字;
- 你知道速度、多样性、可编辑性之间的取舍。
3. DDPM 采样:从后验均值 + 噪声¶
第 1 章得到:
推理时没有 \(x_0\),用网络预测噪声,得到均值:
DDPM 采样:
其中:
- \(z\sim\mathcal N(0,I)\);
- \(\sigma_t^2=\beta_t\) 或 \(\tilde\beta_t\);
- \(t=1\) 时 \(z=0\),不再加噪声。
展开写:
3.1 直觉¶
- 先算“最可能的去噪结果”\(\mu_\theta\);
- 再加一点随机噪声,保持采样的多样性;
- 每一步都随机,所以同一 seed 也不保证完全可复现(取决于实现);
- 多样性好,但需要较多步数。
3.2 为什么最后一步不加噪声¶
\(t=1\) 时已经接近数据,再加噪声会破坏结果;所以最后一步只取均值。
4. DDIM:确定性采样与跳步¶
4.1 动机¶
DDPM 有两个问题:
- 每步都随机,结果不够稳定;
- 需要很多步,速度慢。
DDIM 的目标:
- 保持训练时的边缘分布;
- 让反向过程可以确定性;
- 允许跳步;
- 不重新训练网络。
4.2 非马尔可夫前向¶
DDIM 定义一族前向分布:
关键:
- 它仍然满足 \(q(x_t\mid x_0)=\mathcal N(\sqrt{\bar\alpha_t}x_0,(1-\bar\alpha_t)I)\);
- 所以和 DDPM 共享训练目标;
- 但反向不再是马尔可夫链,可以由 \(\sigma_t\) 控制随机性。
4.3 反向更新¶
用 \(\hat x_0\) 表示网络对 \(x_0\) 的估计:
DDIM 更新:
- \(\sigma_t=0\):完全确定性;
- \(\sigma_t>0\):保留随机性;
- 当 \(\sigma_t^2=\tilde\beta_t\) 且取全部步:退化为 DDPM 的祖先采样。
4.4 特例关系¶
| 设置 | 结果 |
|---|---|
| \(\sigma_t=0\) | 确定性 DDIM |
| \(\sigma_t^2=\tilde\beta_t\),全步 | DDPM 祖先采样 |
| 取子序列 \(\tau\) | DDIM 跳步采样 |
所以:
DDPM 是 DDIM 在特定方差、完整步数下的特例;DDIM 是更一般的采样族。
4.5 为什么能跳步¶
DDPM 的采样必须逐步走,因为它是马尔可夫链。
DDIM 的反向定义在子序列上:
每一步用对应的 \(\bar\alpha_{\tau_i}\) 计算。因为前向边缘仍然匹配,所以可以“跨步”而不破坏分布。
注意:
- 跳步不是“每隔几步随便取一个”;
- 是重新定义一条一致的反向轨迹;
- 步数太少会损失细节;
- 步数太多则接近 DDPM/连续 ODE。
4.6 为什么能反演¶
当 \(\sigma_t=0\) 时,DDIM 是确定性映射:
可以正向走、也可以反向走,用于:
- DDIM inversion;
- prompt-to-prompt;
- 图像编辑;
- 视频一致性。
但反演是近似的:
- 网络不是精确可逆;
- 步数少时误差累积;
- 编辑强度大时容易偏。
5. 一个数值例子¶
设:
- \(\alpha_t=0.8\),\(\beta_t=0.2\);
- \(\bar\alpha_t=0.5\),\(\bar\alpha_{t-1}=0.625\);
- \(x_t=1.0\),\(\epsilon_\theta=0.3\)。
先算 \(\hat x_0\):
DDIM 确定性更新(\(\sigma_t=0\)):
DDPM 均值(第 1 章):
再加噪声 \(\sigma_t z\)。所以:
- DDIM 的确定性结果更接近“均值 + 条件修正”;
- DDPM 会额外注入随机性;
- 两者不是完全相同的数值,但来自同一个网络。
6. 对比表¶
| 维度 | DDPM | DDIM |
|---|---|---|
| 前向 | 马尔可夫 | 非马尔可夫,同边缘 |
| 反向 | 随机 | 可确定(\(\sigma=0\)) |
| 训练 | 噪声 MSE | 同一个网络 |
| 步数 | 1000/多步 | 可跳步 20–50 |
| 多样性 | 高 | 较低 |
| 可复现 | 较弱 | 较强 |
| 可反演 | 不便 | 可以 |
| 典型用途 | 质量基线 | 快速采样、编辑 |
7. 90 秒回答:DDPM 和 DDIM 的关系¶
面试官问:DDPM 和 DDIM 是什么关系?
参考回答:
“它们共享同一个前向边缘分布和训练目标,区别在反向过程。DDPM 是马尔可夫链,反向每步注入噪声,是随机采样;DDIM 用非马尔可夫前向,但保持相同的 \(q(x_t|x_0)\),反向可以取 \(\sigma=0\) 变成确定性采样,所以能跳步、能反演。DDPM 可以看成 DDIM 在 \(\sigma_t^2=\tilde\beta_t\)、取全部步数时的特例。同一个 checkpoint 可以直接换 DDIM 采样,不需要重新训练。”
结构:
- 共享训练目标;
- DDPM 随机、DDIM 可确定;
- DDPM 是特例;
- 同一模型换采样器。
8. 90 秒回答:常见采样方式(D1 的框架)¶
面试官问:扩散模型有哪些常见采样方式?
参考回答:
“可以按随机性和数值解法分。随机采样有 DDPM 祖先采样、Euler a、SDE 类;确定性采样有 DDIM、ODE Euler、Heun;高阶/多步有 PLMS、DPM-Solver、DPM-Solver++、UniPC;少步有 LCM、Turbo、DMD 等蒸馏模型;Flow 模型用 Euler/Heun 解 ODE。实际选择看任务:通用质量用 DPM++ 2M/UniPC,编辑用 DDIM,实时用蒸馏模型。”
9. 常见误区¶
- “DDIM 是另一种训练方法”:它只是另一种反向采样。
- “DDIM 一定比 DDPM 好”:高步数下接近;低步数可能损失细节。
- “DDIM 跳步就是每隔几步采样”:它重新定义了子序列上的反向过程。
- “DDIM 没有随机性”:\(\sigma_t>0\) 时仍有随机性。
- “DDIM inversion 完全可逆”:近似可逆,误差会累积。
- “DDPM 采样最后一步也要加噪声”:\(t=1\) 时 \(z=0\)。
10. 课堂练习¶
答案见 06 章节练习与答案。
- 写出 DDPM 采样公式,并解释每一项。
- 写出 DDIM 更新式。
- 说明 \(\sigma_t=0\) 和 \(\sigma_t^2=\tilde\beta_t\) 分别对应什么。
- 为什么 DDIM 能跳步?
- 用 90 秒回答 D4。
- 比较 DDPM 和 DDIM 的多样性/可复现性。
11. 自测清单¶
- [ ] 能写 DDPM 采样;
- [ ] 能写 DDIM 更新;
- [ ] 能解释 DDPM 是 DDIM 的特例;
- [ ] 能解释跳步;
- [ ] 能解释反演;
- [ ] 能 90 秒回答 D4;
- [ ] 能给出 D1 的分类框架。
12. 本节材料为什么这样设计¶
- 先 DDPM 再 DDIM:先有“随机采样”的基线,才能理解确定性采样的价值。
- 公式 + 特例表:面试最爱问“关系”,表比段落更容易记。
- 数值例子:让 DDIM 的确定性有直观感受。
- 单列反演:编辑类岗位常追问。
- 不写代码:本节目标是公式和关系,不是实现采样器。
详细设计理由见 08 材料设计理由。