第 2 章练习与答案¶
目标:用纸笔检查理解,不写代码。
建议:先做,再看答案;错题标记,回到对应讲义。题量:概念 8 + 推导 5 + 计算 7 + 面试复述 4。
一、概念题(8 题)¶
- 采样器和调度器的区别是什么?
- DDPM 和 DDIM 的前向过程有什么不同?
- 为什么 DDIM 能跳步?
- DDPM 是 DDIM 的什么特例?
- 反向 SDE 和概率流 ODE 的关系是什么?
- 为什么 DPM-Solver 不是蒸馏模型?
- LCM、Turbo、DMD 分别是什么类型的加速?
- CFG 为什么叫 classifier-free?
二、推导题(5 题)¶
- 写出 DDIM 的更新式,并说明 \(\sigma_t=0\) 时为什么是确定性的。
- 说明当 \(\sigma_t^2=\tilde\beta_t\) 且取全部步时,DDIM 如何退化为 DDPM。
- 从 score 分解推导 classifier guidance 的 \(\epsilon\) 形式。
- 写出 CFG 公式,并说明它为什么是隐式分类器引导。
- 写出负向 prompt 的 CFG 公式。
三、计算题(7 题)¶
- 设 \(\alpha_t=0.8\),\(\bar\alpha_t=0.5\),\(\bar\alpha_{t-1}=0.625\),\(x_t=1\),\(\epsilon_\theta=0.3\),求 DDIM 的 \(\hat x_0\) 和 \(\sigma_t=0\) 时的 \(x_{t-1}\)。
- 在题 14 中,若 \(\sigma_t=0.2\),\(z=0.5\),求 \(x_{t-1}\)(保留两位小数)。
- 设 \(\epsilon_\theta(x_t,\varnothing)=0.1\),\(\epsilon_\theta(x_t,c)=0.4\),\(w=5\),求 CFG 的 \(\tilde\epsilon\)。
- 设 \(\epsilon_\theta(x_t,c_{\mathrm{neg}})=0.2\),\(\epsilon_\theta(x_t,c)=0.5\),\(w=7\),求负向 prompt 的 \(\tilde\epsilon\)。
- 若 DDPM 用 1000 步,DPM-Solver 用 20 步,模型评估次数大约相差多少倍?
- 若 Heun 每步评估 2 次模型,20 步共评估多少次?和 DDPM 1000 步比呢?
- 若 \(w=1\),CFG 输出等于什么?\(w=0\) 呢?
四、面试复述题(4 题)¶
- 用 90 秒回答 D4。
- 用 90 秒回答 D1。
- 用 90 秒回答 D3。
- 用 90 秒回答 D8。
答案与解析¶
一、概念题答案¶
1. 采样器 vs 调度器¶
- Scheduler:定义噪声水平、时间步、\(\sigma\)/beta schedule;
- Sampler:给定噪声水平,如何数值积分/更新样本。
两者可独立组合,例如 DPM++ 2M + Karras。
2. DDPM 与 DDIM 前向¶
- DDPM:马尔可夫链 \(q(x_t|x_{t-1})\);
- DDIM:非马尔可夫族 \(q_\sigma(x_{t-1}|x_t,x_0)\),但保持相同的 \(q(x_t|x_0)\)。
3. 为什么 DDIM 能跳步¶
因为反向定义在子序列上,前向边缘仍匹配训练分布;不是简单丢步,而是重新定义一致的反向轨迹。
4. DDPM 是 DDIM 的什么特例¶
当 \(\sigma_t^2=\tilde\beta_t\) 且取全部时间步时,DDIM 退化为 DDPM 祖先采样。
5. 反向 SDE 与概率流 ODE¶
概率流 ODE 去掉了反向 SDE 的随机项,但边缘分布相同;因此可以用确定性 ODE 采样。
6. DPM-Solver 为什么不是蒸馏¶
它不改网络、不训练学生,只是更好的数值积分器;蒸馏会改变模型权重。
7. LCM、Turbo、DMD¶
- LCM:一致性蒸馏;
- Turbo:对抗蒸馏;
- DMD:分布匹配蒸馏。
8. CFG 为什么叫 classifier-free¶
它不需要显式分类器,而是用条件/无条件模型的差近似分类器梯度。
二、推导题答案¶
9. DDIM 更新式¶
\[
\hat x_0
=\frac{x_t-\sqrt{1-\bar\alpha_t}\epsilon_\theta}{\sqrt{\bar\alpha_t}},
\]
\[
x_{t-1}
=\sqrt{\bar\alpha_{t-1}}\hat x_0
+\sqrt{1-\bar\alpha_{t-1}-\sigma_t^2}\epsilon_\theta
+\sigma_t\epsilon.
\]
当 \(\sigma_t=0\),最后一项消失,\(x_{t-1}\) 由 \(x_t\) 和网络确定,所以是确定性的。
10. 退化为 DDPM¶
当 \(\sigma_t^2=\tilde\beta_t\) 且取全部时间步时,DDIM 的前向族与 DDPM 的后验一致,反向更新等价于 DDPM 的祖先采样:
\[
x_{t-1}=\mu_\theta+\sigma_t z.
\]
11. Classifier guidance¶
由:
\[
\nabla\log p(x|c)=\nabla\log p(x)+\nabla\log p(c|x).
\]
score 与 \(\epsilon\) 的关系:
\[
\nabla\log p_t(x)=-\frac{\epsilon}{\sqrt{1-\bar\alpha_t}}.
\]
所以:
\[
\tilde\epsilon
=\epsilon_\theta(x_t)
-s\sqrt{1-\bar\alpha_t}\nabla\log p_\phi(c|x_t).
\]
12. CFG¶
\[
\tilde\epsilon
=\epsilon_\theta(x_t,\varnothing)
+w(\epsilon_\theta(x_t,c)-\epsilon_\theta(x_t,\varnothing)).
\]
它用条件/无条件 score 差近似:
\[
\nabla\log p(c|x)
\propto
\nabla\log p(x|c)-\nabla\log p(x).
\]
所以是隐式分类器引导。
13. 负向 prompt¶
\[
\tilde\epsilon
=\epsilon_\theta(x_t,c_{\mathrm{neg}})
+w(\epsilon_\theta(x_t,c)-\epsilon_\theta(x_t,c_{\mathrm{neg}})).
\]
三、计算题答案¶
14. DDIM 确定性一步¶
\[
\hat x_0
=\frac{1-\sqrt{0.5}\times0.3}{\sqrt{0.5}}
\approx1.114.
\]
\[
x_{t-1}
=\sqrt{0.625}\times1.114
+\sqrt{0.375}\times0.3
\approx0.881+0.184
\approx1.065.
\]
15. \(\sigma_t=0.2\),\(z=0.5\)¶
在题 14 的基础上加:
\[
0.2\times0.5=0.1.
\]
所以:
\[
x_{t-1}\approx1.065+0.1=1.165.
\]
16. CFG¶
\[
\tilde\epsilon
=0.1+5\times(0.4-0.1)
=0.1+1.5
=1.6.
\]
17. 负向 prompt¶
\[
\tilde\epsilon
=0.2+7\times(0.5-0.2)
=0.2+2.1
=2.3.
\]
18. 评估次数¶
DDPM 1000 步约 1000 次模型评估;DPM-Solver 20 步约 20 次(若每步一次)。约 50 倍。
19. Heun 20 步¶
每步 2 次评估:
\[
20\times2=40.
\]
和 DDPM 1000 步比:
\[
1000/40=25.
\]
约 25 倍。
20. \(w=1\) 和 \(w=0\)¶
- \(w=1\):
\[
\tilde\epsilon=\epsilon_\theta(x_t,c).
\]
- \(w=0\):
\[
\tilde\epsilon=\epsilon_\theta(x_t,\varnothing).
\]
四、面试复述题自评¶
21. D4¶
- 是否说“共享训练目标,区别在反向”?
- 是否写出 DDIM 更新式?
- 是否说明 DDPM 是特例?
- 是否提到跳步/反演?
22. D1¶
- 是否按随机性/数值方法分类?
- 是否给出至少 6 个 sampler?
- 是否能按任务选型?
23. D3¶
- 是否区分 training-free / training-based?
- 是否比较 LCM/Turbo/DMD?
- 是否说明少步的代价?
24. D8¶
- 是否写出 score 分解?
- 是否说明 CFG 不需要分类器?
- 是否解释 \(w\) 和负向 prompt?
五、错题归因¶
| 错题 | 可能原因 | 回到 |
|---|---|---|
| 14、15 | DDIM 公式不熟 | 2.1 |
| 16、17 | CFG 公式不熟 | 2.4 |
| 18、19 | 评估次数/步数概念混 | 2.2 |
| 9、10 | 特例关系不清 | 2.1 |
| 11、12 | score/CFG 推导不熟 | 2.4 |
六、下一步¶
- 计算错:重做 2.1/2.4 的数值例子;
- 概念错:画采样器分类表;
- 表达卡:用 05 的 90 秒答案录音;
- 选型弱:做一张“场景—方案—代价”表。