跳转至

第 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. 练习方法

  1. 看答案,标关键词;
  2. 遮住答案,90 秒复述;
  3. 录音,回听卡壳;
  4. 找人追问“为什么”。

背“结构 + 3 个关键词 + 1 个公式”,不要背全文。


10. 相关材料