跳转至

第 3 章练习与答案

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

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


一、概念题(8 题)

  1. AE 为什么不能直接采样?
  2. VAE 的 ELBO 两项分别是什么?
  3. VQ-VAE 的三项损失分别是什么?
  4. straight-through 和重参数化有什么区别?
  5. Stable Diffusion 为什么用连续 VAE,而不是 VQ-VAE?
  6. Latent Diffusion 为什么比像素扩散快?
  7. Self-Attention 和 Cross-Attention 的 Q/K/V 来源有什么不同?
  8. Offset Noise 解决什么问题?

二、推导题(5 题)

  1. 写出 VAE 的 ELBO。
  2. 写出 VQ-VAE 的损失,并解释每一项。
  3. 写出 Cross-Attention 的公式,并标出 Q/K/V 来源。
  4. 写出 Offset Noise 的训练加噪公式。
  5. 写出 SD 第二阶段(latent diffusion)的训练损失。

三、计算题(6 题)

  1. 512×512×3 图像经 8 倍下采样、4 通道 VAE,latent 尺寸是多少?元素数压缩多少倍?
  2. 768×768 和 1024×1024 的 latent 尺寸分别是多少(8 倍下采样)?
  3. 若图像特征 \(16\times16\)、文本长度 77、维度 320,Cross-Attention 的 Q、K、V、注意力矩阵形状分别是什么?
  4. Self-Attention 的 token 数 \(N=256\),Cross-Attention 的图像 token \(N=256\)、文本 \(L=77\),比较两者注意力矩阵的元素数。
  5. 若 Offset Noise 的 \(\sigma_{\mathrm{offset}}=0.1\),噪声 \(\epsilon=0.2\),偏移 \(\eta=0.05\),求 \(\tilde\epsilon\)。
  6. 若 VAE 下采样倍率从 8 变成 4,512×512 图像的 latent 边长和元素数如何变化?

四、面试复述题(4 题)

  1. 用 90 秒回答 A2。
  2. 用 90 秒回答 A5。
  3. 用 90 秒回答 A8。
  4. 用 2 分钟回答 A6。

答案与解析

一、概念题答案

1. AE 为什么不能直接采样

AE 只学确定性编码/解码,隐空间没有先验分布;随机采一个 \(z\) 不一定落在数据流形上,解码结果可能无意义。

2. VAE ELBO 两项

  • 重建项:\(\mathbb E_{q(z|x)}[\log p(x|z)]\);
  • KL 正则:\(-D_{\mathrm{KL}}(q(z|x)\|p(z))\)。

3. VQ-VAE 三项损失

  • 重建:\(\|x-D(z_q)\|^2\);
  • codebook:\(\|\mathrm{sg}[z_e]-z_q\|^2\);
  • commitment:\(\beta\|z_e-\mathrm{sg}[z_q]\|^2\)。

4. straight-through vs 重参数化

  • 重参数化:连续高斯,随机性剥离到 \(\epsilon\),无偏路径导数;
  • straight-through:离散选择,前向用量化结果,反向直接传梯度,有偏。

5. SD 为什么用连续 VAE

扩散更适合连续空间;避免量化误差;连续 latent 可直接加高斯噪声/去噪。

6. Latent Diffusion 为什么快

VAE 8 倍下采样、4 通道,latent 元素少约 48 倍;注意力和卷积成本大幅下降。

7. Self vs Cross 的 Q/K/V

  • Self:Q/K/V 都来自同一序列;
  • Cross:Q 来自图像,K/V 来自文本。

8. Offset Noise 解决什么

标准高斯噪声低频分量小,模型少见全局亮度偏移,导致极暗/极亮不稳定;Offset Noise 加入空间相关的低频偏移。


二、推导题答案

9. VAE ELBO

\[ \log p(x) \ge \mathbb E_{q(z|x)}[\log p(x|z)] -D_{\mathrm{KL}}(q(z|x)\|p(z)). \]

10. VQ-VAE 损失

\[ \mathcal L =\|x-D(z_q)\|^2 +\|\mathrm{sg}[z_e]-z_q\|^2 +\beta\|z_e-\mathrm{sg}[z_q]\|^2. \]
  • 第一项:重建;
  • 第二项:codebook 向编码器输出靠近;
  • 第三项:编码器输出向 codebook 靠近(commitment)。

11. Cross-Attention

\[ Q=XW_Q,\quad K=CW_K,\quad V=CW_V, \]
\[ \mathrm{Attn}(Q,K,V) =\mathrm{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V. \]
  • \(X\):图像特征;
  • \(C\):文本特征;
  • Q 来自图像,K/V 来自文本。

12. Offset Noise 加噪

\[ \tilde\epsilon=\epsilon+\eta, \qquad \eta\sim\mathcal N(0,\sigma_{\mathrm{offset}}^2 I_c), \]
\[ z_t =\sqrt{\bar\alpha_t}z_0 +\sqrt{1-\bar\alpha_t}\tilde\epsilon. \]

13. SD 第二阶段损失

\[ \mathcal L =\mathbb E_{z_0,t,\epsilon,c} \left[ \|\epsilon-\epsilon_\theta(z_t,t,c)\|^2 \right]. \]

三、计算题答案

14. 512 latent

8 倍下采样:

\[ 512/8=64. \]

latent 尺寸:

\[ 64\times64\times4=16{,}384. \]

原图元素:

\[ 512\times512\times3=786{,}432. \]

倍率:

\[ 786{,}432/16{,}384\approx48. \]

15. 768 和 1024

  • 768/8=96 → \(96\times96\times4\);
  • 1024/8=128 → \(128\times128\times4\)。

16. Attention 形状

  • \(Q\):\(256\times320\);
  • \(K\):\(77\times320\);
  • \(V\):\(77\times320\);
  • \(QK^\top\):\(256\times77\);
  • 注意力矩阵:\(256\times77\);
  • 输出:\(256\times320\)。

17. 注意力矩阵元素数

  • Self:\(256\times256=65{,}536\);
  • Cross:\(256\times77=19{,}712\)。

Cross 的矩阵更小,因为文本长度远小于图像 token 数。

18. Offset Noise

\[ \tilde\epsilon=0.2+0.05=0.25. \]

19. 下采样 4 倍

  • 512/4=128;
  • latent 尺寸 \(128\times128\times4=65{,}536\);
  • 相比 8 倍下采样的 16,384,元素数变为 4 倍。

四、面试复述题自评

20. A2

  • 是否区分确定性/连续概率/离散?
  • 是否写出 VAE ELBO/VQ 损失?
  • 是否说明 SD 用连续 VAE?

21. A5

  • 是否先说 Latent Diffusion?
  • 是否给出压缩倍率?
  • 是否讲清 VAE/UNet/CLIP/Cross-Attn?
  • 是否提到瓶颈?

22. A8

  • 是否说 Q 来自图像、K/V 来自文本?
  • 是否写出公式?
  • 是否解释 77 token/单向局限?

23. A6

  • 是否分两阶段?
  • 是否说明 VAE/文本编码器冻结?
  • 是否提到 CFG dropout/EMA/bucketing?

五、错题归因

错题 可能原因 回到
14、15、19 压缩率/尺寸计算 3.2
16、17 attention 形状 3.3
9、10 ELBO/VQ 损失 3.1
12、18 Offset Noise 3.4
13 LDM 损失 3.4

六、下一步

  • 计算错:重画 SD 数据流和 latent 尺寸表;
  • 公式错:重写 VAE/VQ/Attention;
  • 表达卡:用 05 的 90 秒答案录音;
  • 概念混:做 AE/VAE/VQ 对比表。