第 2 章面试题库:90 秒答案与追问¶
用途:把第 2 章知识压缩成面试语言。
方法:先自己答,再看参考;每题至少练 3 遍,第 3 遍录音。标记:S = 必须熟练;A = 高频;B = 加分。
1. 本章 4 道核心题¶
| 题号 | 题目 | 重要度 | 主材料 |
|---|---|---|---|
| D1 | 常见采样方式 | S | 2.1、2.2 |
| D3 | Diffusion 加速方法 | S | 2.2、2.3 |
| D4 | DDPM 和 DDIM 的关系 | S | 2.1 |
| D8 | classifier-free vs classifier guidance | S | 2.4 |
2. D4:DDPM 和 DDIM 的关系(S)¶
90 秒版¶
“它们共享同一个前向边缘分布和训练目标,区别在反向过程。DDPM 是马尔可夫链,反向每步注入噪声,是随机采样;DDIM 用非马尔可夫前向,但保持相同的 \(q(x_t|x_0)\),反向可以取 \(\sigma=0\) 变成确定性采样,所以能跳步、能反演。DDPM 可以看成 DDIM 在 \(\sigma_t^2=\tilde\beta_t\)、取全部步数时的特例。同一个 checkpoint 可以直接换 DDIM 采样,不需要重新训练。”
追问 1:DDIM 为什么能跳步?¶
DDIM 的反向定义在子序列上,前向边缘仍匹配训练分布;不是简单每隔几步取一个,而是重新定义一条一致的反向轨迹。
追问 2:DDIM 一定比 DDPM 好吗?¶
不一定。高步数下接近;低步数可能损失细节;DDIM 的确定性也降低了多样性。
追问 3:DDIM inversion 是什么?¶
\(\sigma=0\) 时 DDIM 是确定性映射,可以正向/反向走,用于编辑;但网络不是精确可逆,步数少会累积误差。
易错点¶
- 说 DDIM 是另一种训练方法;
- 说 DDPM 是 DDIM 的特例反了;
- 忽略 DDIM 也能随机(\(\sigma>0\))。
3. D1:常见采样方式(S)¶
90 秒版¶
“可以按随机性和数值方法分。随机采样有 DDPM 祖先采样、Euler a、SDE;确定性采样有 DDIM、ODE Euler、Heun;高阶/多步有 PLMS、DPM-Solver、DPM-Solver++、UniPC;少步蒸馏有 LCM、Turbo、DMD;Flow 模型用 Euler/Heun 解 ODE。实际选择看任务:通用质量用 DPM++ 2M/UniPC,编辑用 DDIM,实时用蒸馏模型。”
追问 1:采样器和调度器的区别?¶
Scheduler 定义噪声水平/时间步/sigma;Sampler 决定如何数值积分。两者可以独立组合。
追问 2:为什么 DPM-Solver 快?¶
把 ODE 写成半线性形式,线性部分解析积分,非线性部分高阶近似;不是蒸馏,不改模型。
追问 3:Euler a 和 Euler 的区别?¶
Euler a 是祖先采样,每步注入噪声;Euler 是确定性 ODE 一阶解。
4. D3:Diffusion 加速方法(S)¶
90 秒版¶
“分两类。Training-free:更好的采样器,比如 DDIM、DPM-Solver、UniPC,减少步数但不改模型;还有缓存、量化、TensorRT 等系统优化。Training-based:渐进蒸馏把多步压成少步,LCM 用一致性蒸馏做到 1–4 步,Turbo 用对抗蒸馏,DMD 做分布匹配,Rectified Flow 把轨迹拉直。少步模型会牺牲一些多样性和细节,CFG 也要重新调。实际选型看延迟、质量和成本。”
追问 1:LCM 和 Turbo 的区别?¶
LCM 是一致性蒸馏,学习任意时刻映射到 \(x_0\);Turbo 是对抗蒸馏 + 教师约束,用判别器提升真实感。
追问 2:为什么 Turbo 建议低 CFG?¶
少步/对抗训练后条件已经很强,高 CFG 容易过饱和、伪影。
追问 3:蒸馏和采样器能一起用吗?¶
可以;少步模型通常还要配匹配的 solver/scheduler,但主要加速来自模型。
5. D8:CFG 和 classifier guidance(S)¶
90 秒版¶
“Classifier guidance 需要额外训练噪声分类器,用 \(\nabla\log p(c|x_t)\) 修改 score;CFG 不需要分类器,而是同时训练条件和无条件模型,采样时用 \(\epsilon_\theta(x_t,c)-\epsilon_\theta(x_t,\varnothing)\) 的差近似分类器梯度,再乘 \(w\)。CFG 更简单、更通用,是文生图主流;但它要两次前向,\(w\) 太高会过饱和、降多样性。两者本质都是放大条件方向。”
追问 1:CFG 需要分类器吗?¶
不需要。classifier-free 就是没有显式分类器。
追问 2:为什么训练时要条件 dropout?¶
为了让同一网络同时具备条件和无条件能力,推理时才能算 \(\epsilon_\theta(x_t,\varnothing)\)。
追问 3:负向 prompt 怎么实现?¶
把负向文本编码作为 \(c_{\mathrm{neg}}\),替代空条件;公式上用负向预测作为基线。
追问 4:\(w\) 太高会怎样?¶
过饱和、色彩偏移、纹理僵硬、多样性下降;可用 CFG rescale/dynamic CFG 缓解。
6. 延伸题:12 个高频追问¶
Q1:DDIM 的 \(\sigma_t\) 控制什么?¶
控制随机性。\(\sigma=0\) 确定性;\(\sigma^2=\tilde\beta_t\) 且全步退化为 DDPM;中间值插值。
Q2:DDIM 为什么能反演?¶
\(\sigma=0\) 时是确定性 ODE,可以反向积分;但网络近似可逆,误差会累积。
Q3:SDE 和 ODE 采样怎么选?¶
要多样性/随机性用 SDE;要可复现/编辑用 ODE(DDIM/Euler)。
Q4:为什么高阶 solver 不一定更快?¶
每步可能多次模型评估;步数少不等于 wall-clock 少,还要看 CFG、VAE、batch。
Q5:PLMS 和 DPM-Solver++ 的区别?¶
PLMS 是线性多步;DPM-Solver++ 用指数积分/半线性结构,通常更稳、更少步。
Q6:UniPC 是什么?¶
统一预测-校正框架,结合预测器和校正器,15–30 步质量稳定。
Q7:渐进蒸馏怎么折半?¶
教师 \(N\) 步,学生学 \(N/2\) 步;反复训练,逐步压到 2–8 步。
Q8:LCM 为什么能 1–4 步?¶
学习一致性映射:同一条轨迹上的不同 \(x_t\) 都映射到同一个 \(x_0\),所以可以从更晚的时刻直接跳。
Q9:DMD 和 LCM 的区别?¶
LCM 学一致性映射;DMD 做分布匹配,让学生分布逼近教师分布,通常多样性更好但训练更复杂。
Q10:Rectified Flow 为什么能少步?¶
把概率流轨迹拉直,ODE 更容易积分;不是严格 1 步,通常 1–8 步。
Q11:CFG 为什么成本翻倍?¶
需要条件前向和无条件前向各一次;也可以 batch 合并,但计算量仍在。
Q12:CFG 和负向 prompt 的关系?¶
负向 prompt 是 CFG 的扩展:用负向条件替代空条件,把采样推离负向语义。
7. 追问树:D4¶
DDPM/DDIM 关系
├── 共享什么?
│ ├── 前向边缘 q(xt|x0)
│ └── 噪声预测训练目标
├── 差在哪?
│ ├── DDPM 马尔可夫、随机
│ └── DDIM 非马尔可夫、可确定
├── 为什么能跳步?
│ ├── 子序列反向
│ └── 边缘匹配
├── 什么特例?
│ ├── σ²=β̃
│ └── 全步
└── 有什么用?
├── 快速采样
└── 反演/编辑
8. 15 分钟模拟面试脚本¶
| 时间 | 内容 | 目标 |
|---|---|---|
| 0–2 | 自我介绍 | 建立上下文 |
| 2–5 | D4 | 公式与关系 |
| 5–8 | D1/D3 | 分类与选型 |
| 8–12 | D8 | 推导与取舍 |
| 12–15 | 追问 + 反馈 | 深度与表达 |
评分(每项 1–5)¶
- 正确性;
- 结构;
- 深度;
- 表达;
- 诚实。
9. 练习方法¶
- 看答案,标关键词;
- 遮住答案,90 秒复述;
- 录音,回听卡壳;
- 找人追问“为什么”。
背“结构 + 3 个关键词 + 1 个公式”,不要背全文。