第 3 章练习与答案¶
目标:用纸笔检查理解,不写代码。
建议:先做,再看答案;错题标记,回到对应讲义。题量:概念 8 + 推导 5 + 计算 6 + 面试复述 4。
一、概念题(8 题)¶
- AE 为什么不能直接采样?
- VAE 的 ELBO 两项分别是什么?
- VQ-VAE 的三项损失分别是什么?
- straight-through 和重参数化有什么区别?
- Stable Diffusion 为什么用连续 VAE,而不是 VQ-VAE?
- Latent Diffusion 为什么比像素扩散快?
- Self-Attention 和 Cross-Attention 的 Q/K/V 来源有什么不同?
- Offset Noise 解决什么问题?
二、推导题(5 题)¶
- 写出 VAE 的 ELBO。
- 写出 VQ-VAE 的损失,并解释每一项。
- 写出 Cross-Attention 的公式,并标出 Q/K/V 来源。
- 写出 Offset Noise 的训练加噪公式。
- 写出 SD 第二阶段(latent diffusion)的训练损失。
三、计算题(6 题)¶
- 512×512×3 图像经 8 倍下采样、4 通道 VAE,latent 尺寸是多少?元素数压缩多少倍?
- 768×768 和 1024×1024 的 latent 尺寸分别是多少(8 倍下采样)?
- 若图像特征 \(16\times16\)、文本长度 77、维度 320,Cross-Attention 的 Q、K、V、注意力矩阵形状分别是什么?
- Self-Attention 的 token 数 \(N=256\),Cross-Attention 的图像 token \(N=256\)、文本 \(L=77\),比较两者注意力矩阵的元素数。
- 若 Offset Noise 的 \(\sigma_{\mathrm{offset}}=0.1\),噪声 \(\epsilon=0.2\),偏移 \(\eta=0.05\),求 \(\tilde\epsilon\)。
- 若 VAE 下采样倍率从 8 变成 4,512×512 图像的 latent 边长和元素数如何变化?
四、面试复述题(4 题)¶
- 用 90 秒回答 A2。
- 用 90 秒回答 A5。
- 用 90 秒回答 A8。
- 用 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 对比表。