跳转至

第 1 章练习与答案

目标:用纸笔检查理解,不写代码。
建议:先做,再看答案;错题标记,回到对应讲义。

题量:概念 8 + 推导 7 + 计算 9 + 面试复述 4。


一、概念题(8 题)

  1. 用一句话分别定义 GAN、VAE、Flow、Diffusion。
  2. 为什么 GAN 容易出现模式坍塌?
  3. Diffusion 的训练为什么比 GAN 稳定?
  4. DDPM 和 LDM 的区别是什么?
  5. 为什么希望 \(\bar\alpha_T\approx0\)?
  6. 重参数化在 VAE 和 Diffusion 中的用法有什么相同点和不同点?
  7. 为什么预测噪声 \(\epsilon\) 等价于学习 score?
  8. 为什么“换非高斯噪声”不是只改一行采样代码?

二、推导题(7 题)

  1. 用两步推导证明 \(q(x_2\mid x_0)\) 是高斯,并写出均值和方差。
  2. 从贝叶斯公式出发,写出 \(q(x_{t-1}\mid x_t,x_0)\) 的均值和方差。
  3. 证明固定方差时,两个高斯的 KL 只和均值差有关。
  4. 把 \(\tilde\mu_t\) 中的 \(x_0\) 换成 \(x_t,\epsilon\),推导噪声预测参数化 \(\mu_\theta\)。
  5. 证明 \(x_t\) 的信号方差与噪声方差之和为 1(假设 \(x_0\) 单位方差)。
  6. 写出 \(\mathcal L_{\mathrm{simple}}\) 与 ELBO 中 \(L_{t-1}\) 的系数关系。
  7. 写出 \(v\)-prediction 的定义,并反解 \(x_0\) 和 \(\epsilon\)。

三、计算题(9 题)

  1. 取 \(\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 ? ? ? ?
  1. 若 \(\bar\alpha_t=0.5\),\(x_0=1\),\(\epsilon=0.2\),求 \(x_t\)。
  2. 若 \(\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}\)。
  3. 求 \(\bar\alpha_t=0.9,0.5,0.1\) 时的 SNR,并判断噪声水平。
  4. 若 \(\beta_t=0.02\),\(\bar\alpha_t=0.3\),求 \(\alpha_t\)、信号系数、噪声系数、SNR。
  5. 若 \(x_0=0.8\),\(x_t=0.2\),\(\bar\alpha_t=0.64\),求 \(\epsilon\)。
  6. 若 \(\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\) 的系数。
  7. 若 \(\beta=0.02\) 为常数,求 100 步后的 \(\bar\alpha_{100}\) 和 SNR。
  8. 若 \(\bar\alpha_t=0.001\),求信号系数、噪声系数、SNR,并解释意味着什么。

四、面试复述题(4 题)

  1. 用 90 秒回答“为什么 DDPM 加噪幅度不一致”。
  2. 用 2 分钟回答“推演 DDPM 公式”。
  3. 用 90 秒回答“能否使用其他噪声”。
  4. 用 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 的四路线对比表。