第 5 章练习与答案¶
目标:用纸笔检查理解,不写代码。
建议:先做,再看答案;错题标记,回到对应讲义。题量:概念 8 + 推导 5 + 计算 5 + 面试复述 4。
一、概念题(8 题)¶
- SDXL 相比 SD1.5 的四项核心改动是什么?
- 双文本编码器为什么有效?
- micro-conditioning 解决什么问题?
- base + refiner 的分工是什么?
- SD3 的 MMDiT 和 Cross-Attention 有什么区别?
- Rectified Flow 和 DDPM 的区别是什么?
- SD3 为什么加 T5?
- DALL·E 2 的 prior 是做什么的?
二、推导题(5 题)¶
- 写出 Rectified Flow 的插值和速度目标。
- 写出 Rectified Flow 的训练损失。
- 写出 Flow 的 Euler 采样更新。
- 写出 SDXL 的 base + refiner 流程(文字即可)。
- 写出 SD 与 DALL·E 2 的条件注入路径对比。
三、计算题(5 题)¶
- 设 \(x_0=0.8\),\(\epsilon=-0.2\),\(t=0.3\),求 \(x_t\) 和 \(v\)。
- 设 \(x_t=0.5\),\(v=-1.0\),\(\Delta=0.1\),用 Euler 求 \(x_{t-\Delta}\)。
- 1024×1024 图像经 8 倍下采样、4 通道 VAE,latent 尺寸是多少?
- 若 SD3 用 16 通道、同样 8 倍下采样,1024 的 latent 元素数是 4 通道的几倍?
- 若 GAN 1 步、Diffusion 20 步,模型评估次数大约相差多少倍?
四、面试复述题(4 题)¶
- 用 90 秒回答 A10。
- 用 90 秒回答 A11。
- 用 90 秒回答 A7。
- 用 90 秒回答 D6。
答案与解析¶
一、概念题答案¶
1. SDXL 四项改动¶
- 双文本编码器;
- 更大 UNet;
- micro-conditioning;
- base + refiner。
2. 双文本编码器为什么有效¶
CLIP-L 和 OpenCLIP bigG 的训练数据/语义不同,拼接提供更丰富表示;pooled embedding 提供全局条件。
3. micro-conditioning 解决什么¶
训练随机裁剪导致构图偏移;告诉模型原图尺寸/裁剪坐标/目标尺寸,让它学会补偿。
4. base + refiner¶
- base:主体结构/语义/构图;
- refiner:低强度 img2img 精修细节;
- refiner 可选。
5. MMDiT vs Cross-Attention¶
Cross-attn 是图像查文本、单向;MMDiT 把文本/图像 token 拼接做联合 attention,双向,不同模态独立投影。
6. Rectified Flow vs DDPM¶
DDPM 是随机前向 + 去噪;Flow 是确定性直线路径 + 速度回归,采样解 ODE。
7. SD3 为什么加 T5¶
CLIP 77 token/组合性限制;T5 适合长文本、计数、文字渲染。
8. DALL·E 2 prior¶
把文本嵌入映射到 CLIP 图像嵌入,桥接模态 gap,供 decoder 条件使用。
二、推导题答案¶
9. Flow 插值和速度¶
\[
x_t=(1-t)x_0+t\epsilon,
\qquad
v=\epsilon-x_0.
\]
10. Flow 损失¶
\[
\mathcal L
=\mathbb E\left[
\|v_\theta(x_t,t)-(\epsilon-x_0)\|^2
\right].
\]
11. Euler 采样¶
\[
x_{t-\Delta}=x_t-\Delta\,v_\theta(x_t,t).
\]
12. base + refiner¶
- base 从噪声生成 latent;
- refiner 以 base latent 为输入,做低强度 img2img;
- VAE 解码。
13. 条件注入对比¶
- SD:文本 token → cross-attention 的 K/V;
- DALL·E 2:文本 → prior → CLIP image embedding → decoder 条件。
三、计算题答案¶
14. \(x_t\) 和 \(v\)¶
\[
x_t=(1-0.3)\times0.8+0.3\times(-0.2)
=0.56-0.06=0.5.
\]
\[
v=\epsilon-x_0=-0.2-0.8=-1.0.
\]
15. Euler 一步¶
\[
x_{t-0.1}=0.5-0.1\times(-1.0)=0.6.
\]
16. 1024 latent¶
\[
1024/8=128,
\]
\[
128\times128\times4=65{,}536.
\]
17. 16 通道 vs 4 通道¶
\[
16/4=4
\]
倍。
18. 评估次数¶
\[
20/1=20
\]
约 20 倍。
四、面试复述题自评¶
19. A10¶
- 是否说四项改动?
- 是否解释 micro-conditioning/refiner?
- 是否避免“只是更大”?
20. A11¶
- 是否说 MMDiT/Flow/T5/16ch VAE?
- 是否写 Flow loss?
- 是否解释与 SDXL 的区别?
21. A7¶
- 是否说 LDM vs unCLIP?
- 是否解释 prior?
- 是否比较条件注入/开放程度?
22. D6¶
- 是否比较训练/采样/稳定性/多样性?
- 是否给出混合方案?
- 是否避免绝对化?
五、错题归因¶
| 错题 | 可能原因 | 回到 |
|---|---|---|
| 9–11、14、15 | Flow 公式不熟 | 5.2 |
| 16、17 | latent 尺寸 | 3.2/5.1 |
| 2–4、19 | SDXL 改动 | 5.1 |
| 8、13、21 | unCLIP/prior | 5.3 |
六、下一步¶
- 公式错:重写 Flow loss/Euler;
- 架构错:画 LDM/unCLIP/MMDiT;
- 选型弱:做“场景—模型—代价”表;
- 表达卡:用 05 的 90 秒答案录音。