第 1 章练习与答案¶
目标:用纸笔检查理解,不写代码。
建议:先做,再看答案;错题标记,回到对应讲义。题量:概念 8 + 推导 7 + 计算 9 + 面试复述 4。
一、概念题(8 题)¶
- 用一句话分别定义 GAN、VAE、Flow、Diffusion。
- 为什么 GAN 容易出现模式坍塌?
- Diffusion 的训练为什么比 GAN 稳定?
- DDPM 和 LDM 的区别是什么?
- 为什么希望 \(\bar\alpha_T\approx0\)?
- 重参数化在 VAE 和 Diffusion 中的用法有什么相同点和不同点?
- 为什么预测噪声 \(\epsilon\) 等价于学习 score?
- 为什么“换非高斯噪声”不是只改一行采样代码?
二、推导题(7 题)¶
- 用两步推导证明 \(q(x_2\mid x_0)\) 是高斯,并写出均值和方差。
- 从贝叶斯公式出发,写出 \(q(x_{t-1}\mid x_t,x_0)\) 的均值和方差。
- 证明固定方差时,两个高斯的 KL 只和均值差有关。
- 把 \(\tilde\mu_t\) 中的 \(x_0\) 换成 \(x_t,\epsilon\),推导噪声预测参数化 \(\mu_\theta\)。
- 证明 \(x_t\) 的信号方差与噪声方差之和为 1(假设 \(x_0\) 单位方差)。
- 写出 \(\mathcal L_{\mathrm{simple}}\) 与 ELBO 中 \(L_{t-1}\) 的系数关系。
- 写出 \(v\)-prediction 的定义,并反解 \(x_0\) 和 \(\epsilon\)。
三、计算题(9 题)¶
- 取 \(\beta=[0.1,0.2,0.3,0.4]\),填表:
| \(t\) | \(\beta_t\) | \(\bar\alpha_t\) | 信号系数 | 噪声系数 | SNR |
|---|---|---|---|---|---|
| 1 | 0.1 | ? | ? | ? | ? |
| 2 | 0.2 | ? | ? | ? | ? |
| 3 | 0.3 | ? | ? | ? | ? |
| 4 | 0.4 | ? | ? | ? | ? |
- 若 \(\bar\alpha_t=0.5\),\(x_0=1\),\(\epsilon=0.2\),求 \(x_t\)。
- 若 \(\alpha_t=0.8\),\(\beta_t=0.2\),\(\bar\alpha_t=0.5\),\(x_t=1.0\),\(\epsilon_\theta=0.3\),求 DDPM 的均值 \(\mu_\theta\);若 \(\sigma_t=\sqrt{\beta_t}\),\(z=0.5\),求 \(x_{t-1}\)。
- 求 \(\bar\alpha_t=0.9,0.5,0.1\) 时的 SNR,并判断噪声水平。
- 若 \(\beta_t=0.02\),\(\bar\alpha_t=0.3\),求 \(\alpha_t\)、信号系数、噪声系数、SNR。
- 若 \(x_0=0.8\),\(x_t=0.2\),\(\bar\alpha_t=0.64\),求 \(\epsilon\)。
- 若 \(\alpha_t=0.8\),\(\beta_t=0.2\),\(\bar\alpha_t=0.5\),\(\sigma_t^2=\beta_t\),求 \(L_{t-1}\) 中 \(\|\epsilon-\epsilon_\theta\|^2\) 的系数。
- 若 \(\beta=0.02\) 为常数,求 100 步后的 \(\bar\alpha_{100}\) 和 SNR。
- 若 \(\bar\alpha_t=0.001\),求信号系数、噪声系数、SNR,并解释意味着什么。
四、面试复述题(4 题)¶
- 用 90 秒回答“为什么 DDPM 加噪幅度不一致”。
- 用 2 分钟回答“推演 DDPM 公式”。
- 用 90 秒回答“能否使用其他噪声”。
- 用 90 秒回答“GAN 和 Diffusion 的区别”。
复述题没有标准答案,按“结论 → 公式/原理 → 对比 → 局限”自评。
答案与解析¶
一、概念题答案¶
1. 四句话定义¶
- GAN:用生成器和判别器做对抗训练,学一个隐式的采样映射。
- VAE:用编码器近似后验、解码器建模似然,最大化 ELBO。
- Flow:用可逆变换把简单分布映射到数据分布,可算精确似然。
- Diffusion:定义前向破坏过程,学习反向去噪,从噪声迭代生成数据。
2. GAN 为什么模式坍塌¶
生成器只需要覆盖少数能骗过判别器的模式,就能获得低损失;判别器没有足够信号惩罚“漏掉的模式”,加上对抗训练不稳定,生成器可能塌到少数样本。
3. Diffusion 为什么稳定¶
每个时间步都有明确的去噪回归目标,损失是 MSE/变分下界;不需要判别器提供动态信号,不容易出现生成器/判别器失衡。
4. DDPM 和 LDM 的区别¶
- DDPM:一种扩散算法/训练目标,通常在像素空间;
- LDM:在 VAE 潜空间做扩散的系统架构;
- Stable Diffusion 是 LDM,不是直接在像素空间跑 DDPM。
5. 为什么希望 \(\bar\alpha_T\approx0\)¶
因为反向采样从 \(p(x_T)=\mathcal N(0,I)\) 开始;如果 \(\bar\alpha_T\) 不接近 0,\(x_T\) 还保留数据信号,训练和推理的起点不一致,采样会偏。
6. 重参数化的相同/不同¶
相同:
- 都是把随机采样写成“确定性变换 + 外部噪声”;
- 都让梯度穿过采样。
不同:
- VAE:\(z=\mu+\sigma\odot\epsilon\),学习编码器;
- Diffusion:\(x_t=\sqrt{\bar\alpha_t}x_0+\sqrt{1-\bar\alpha_t}\epsilon\),用于直接采样和噪声回归;
- VQ-VAE 的离散选择不能用普通重参数化,需要 straight-through。
7. 为什么预测噪声等价于 score¶
\[
\nabla_{x_t}\log q(x_t\mid x_0)
=-\frac{x_t-\sqrt{\bar\alpha_t}x_0}{1-\bar\alpha_t}
=-\frac{\epsilon}{\sqrt{1-\bar\alpha_t}}.
\]
所以预测 \(\epsilon\) 就是预测 score 的方向(差一个已知缩放)。
8. 为什么换噪声不是改一行¶
因为换噪声会改变:
- 前向边缘 \(q(x_t\mid x_0)\);
- 真实后验 \(q(x_{t-1}\mid x_t,x_0)\);
- 反向变分族;
- 训练目标(KL/score/交叉熵);
- 采样转移。
二、推导题答案¶
9. \(q(x_2\mid x_0)\)¶
\[
x_1=\sqrt{\alpha_1}x_0+\sqrt{\beta_1}\epsilon_1,
\]
\[
x_2=\sqrt{\alpha_2}x_1+\sqrt{\beta_2}\epsilon_2
=\sqrt{\alpha_1\alpha_2}x_0
+\sqrt{\alpha_2\beta_1}\epsilon_1
+\sqrt{\beta_2}\epsilon_2.
\]
方差:
\[
\alpha_2\beta_1+\beta_2
=\alpha_2(1-\alpha_1)+(1-\alpha_2)
=1-\alpha_1\alpha_2.
\]
所以:
\[
q(x_2\mid x_0)
=\mathcal N\left(\sqrt{\alpha_1\alpha_2}x_0,(1-\alpha_1\alpha_2)I\right).
\]
10. 后验均值和方差¶
\[
\tilde\mu_t
=\frac{\sqrt{\bar\alpha_{t-1}}\beta_t}{1-\bar\alpha_t}x_0
+\frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})}{1-\bar\alpha_t}x_t,
\]
\[
\tilde\beta_t
=\frac{1-\bar\alpha_{t-1}}{1-\bar\alpha_t}\beta_t.
\]
推导要点:贝叶斯公式,分子是两个高斯相乘,分母与 \(x_{t-1}\) 无关;对 \(x_{t-1}\) 配方。
11. KL 只和均值差有关¶
两个同方差高斯:
\[
p=\mathcal N(\mu_1,\sigma^2 I),\quad
q=\mathcal N(\mu_2,\sigma^2 I).
\]
\[
D_{\mathrm{KL}}(p\|q)
=\frac{1}{2\sigma^2}\|\mu_1-\mu_2\|^2.
\]
协方差项相同,所以只剩均值差。
12. 噪声预测参数化¶
由:
\[
x_0=\frac{x_t-\sqrt{1-\bar\alpha_t}\epsilon}{\sqrt{\bar\alpha_t}}.
\]
代入 \(\tilde\mu_t\),化简:
\[
\tilde\mu_t
=\frac{1}{\sqrt{\alpha_t}}
\left(
x_t-\frac{\beta_t}{\sqrt{1-\bar\alpha_t}}\epsilon
\right).
\]
因此:
\[
\mu_\theta
=\frac{1}{\sqrt{\alpha_t}}
\left(
x_t-\frac{\beta_t}{\sqrt{1-\bar\alpha_t}}\epsilon_\theta
\right).
\]
13. 信号方差 + 噪声方差 = 1¶
\[
x_t=\sqrt{\bar\alpha_t}x_0+\sqrt{1-\bar\alpha_t}\epsilon.
\]
若 \(\mathrm{Var}(x_0)=I\),且 \(x_0\perp\epsilon\):
\[
\mathrm{Var}(x_t)
=\bar\alpha_t I+(1-\bar\alpha_t)I
=I.
\]
14. \(\mathcal L_{\mathrm{simple}}\) 与 \(L_{t-1}\) 的系数¶
\[
L_{t-1}
=\mathbb E\left[
\frac{\beta_t^2}{2\sigma_t^2\alpha_t(1-\bar\alpha_t)}
\|\epsilon-\epsilon_\theta\|^2
\right].
\]
\(\mathcal L_{\mathrm{simple}}\) 丢掉前面的系数,直接用 MSE。它不是精确 ELBO,而是重加权目标。
15. \(v\)-prediction¶
\[
v=\sqrt{\bar\alpha_t}\epsilon-\sqrt{1-\bar\alpha_t}x_0.
\]
反解:
\[
x_0=\sqrt{\bar\alpha_t}x_t-\sqrt{1-\bar\alpha_t}v,
\]
\[
\epsilon=\sqrt{\bar\alpha_t}v+\sqrt{1-\bar\alpha_t}x_t.
\]
三、计算题答案¶
16. 表格¶
| \(t\) | \(\beta_t\) | \(\bar\alpha_t\) | 信号系数 | 噪声系数 | SNR |
|---|---|---|---|---|---|
| 1 | 0.1 | 0.9 | 0.949 | 0.316 | 9.00 |
| 2 | 0.2 | 0.72 | 0.849 | 0.529 | 2.57 |
| 3 | 0.3 | 0.504 | 0.710 | 0.704 | 1.02 |
| 4 | 0.4 | 0.3024 | 0.550 | 0.835 | 0.43 |
计算:
- \(\bar\alpha_1=0.9\);
- \(\bar\alpha_2=0.9\times0.8=0.72\);
- \(\bar\alpha_3=0.72\times0.7=0.504\);
- \(\bar\alpha_4=0.504\times0.6=0.3024\)。
17. 求 \(x_t\)¶
\[
x_t=\sqrt{0.5}\times1+\sqrt{0.5}\times0.2
\approx0.7071+0.1414
=0.8485.
\]
18. DDPM 一步¶
\[
\mu_\theta
=\frac{1}{\sqrt{0.8}}
\left(
1-\frac{0.2}{\sqrt{0.5}}\times0.3
\right)
\approx1.023.
\]
若 \(\sigma_t=\sqrt{0.2}\approx0.447\),\(z=0.5\):
\[
x_{t-1}
\approx1.023+0.447\times0.5
\approx1.247.
\]
19. SNR¶
- \(\bar\alpha=0.9\):\(\mathrm{SNR}=0.9/0.1=9\),信号主导;
- \(\bar\alpha=0.5\):\(\mathrm{SNR}=1\),信号/噪声相当;
- \(\bar\alpha=0.1\):\(\mathrm{SNR}=0.1/0.9\approx0.111\),噪声主导。
20. \(\beta_t=0.02,\bar\alpha_t=0.3\)¶
\[
\alpha_t=1-0.02=0.98.
\]
信号系数:
\[
\sqrt{0.3}\approx0.548.
\]
噪声系数:
\[
\sqrt{0.7}\approx0.837.
\]
\[
\mathrm{SNR}=\frac{0.3}{0.7}\approx0.429.
\]
21. 求 \(\epsilon\)¶
\[
\epsilon
=\frac{x_t-\sqrt{\bar\alpha_t}x_0}{\sqrt{1-\bar\alpha_t}}
=\frac{0.2-0.8\times0.8}{0.6}
=\frac{-0.44}{0.6}
\approx-0.733.
\]
22. 损失系数¶
\[
\frac{\beta_t^2}{2\sigma_t^2\alpha_t(1-\bar\alpha_t)}
=\frac{0.2^2}{2\times0.2\times0.8\times0.5}
=\frac{0.04}{0.16}
=0.25.
\]
23. 常数 \(\beta=0.02\),100 步¶
\[
\alpha=0.98,\qquad
\bar\alpha_{100}=0.98^{100}\approx0.1326.
\]
\[
\mathrm{SNR}=\frac{0.1326}{1-0.1326}\approx0.153.
\]
信号已经很弱,噪声主导。
24. \(\bar\alpha_t=0.001\)¶
- 信号系数:\(\sqrt{0.001}\approx0.0316\);
- 噪声系数:\(\sqrt{0.999}\approx0.9995\);
- SNR:\(0.001/0.999\approx0.001\)。
意味着几乎全是噪声,\(x_t\) 非常接近标准高斯。
四、面试复述题自评¶
25. D10 自评¶
- 是否先说“\(\beta_t\) 是 schedule”?
- 是否写出 \(x_t=\sqrt{\bar\alpha_t}x_0+\sqrt{1-\bar\alpha_t}\epsilon\)?
- 是否解释 SNR 下降?
- 是否区分“每步增量”与“累计噪声”?
26. D5 自评¶
- 是否按“前向 → 后验 → ELBO → 噪声预测 → 采样”顺序?
- 是否写出后验均值?
- 是否解释为什么可以预测噪声?
- 是否说明 \(\mathcal L_{\mathrm{simple}}\) 不是精确 ELBO?
27. D2 自评¶
- 是否先回答“可以”?
- 是否给出 3 个具体例子?
- 是否说明换噪声的代价?
- 是否解释为什么默认高斯?
28. D6 自评¶
- 是否一句话定位?
- 是否比较训练、采样、稳定性、多样性?
- 是否给出混合方案?
- 是否避免绝对化?
五、错题归因表¶
| 错题 | 可能原因 | 回到 |
|---|---|---|
| 16、19、23、24 | SNR/累乘不熟 | 1.2 |
| 10、12、14 | 后验/ELBO 推导不熟 | 1.3 |
| 21 | 代数变形不熟 | 1.2、1.3 |
| 8、27 | 非高斯边界不清 | 1.4 |
| 25、26 | 表达结构不清 | 05 题库 |
六、下一步¶
- 如果计算错得多:重做 1.2 的数值例子;
- 如果推导错得多:白板重推 1.3;
- 如果表达卡:用 05 的 90 秒答案录音;
- 如果概念混淆:重画 1.1 的四路线对比表。