跳转至

第 1 章讲师手册

用途:把第 1 章 4 节课讲顺,控制节奏,知道哪里停、哪里追问、哪里做练习。
原则:讲推导主线,不做代码实现;用问题驱动,不做知识堆砌。


1. 授课对象与前置

对象:

  • 准备 Diffusion/AIGC 面试的同学;
  • 会 PyTorch 但不一定推过生成模型;
  • 可能做过 SD 应用,但理论不成体系。

前置:

  • 概率:高斯、条件概率、KL;
  • 线代:矩阵乘法;
  • 深度学习:CNN/Transformer 基础。

不需要:

  • 写过 DDPM;
  • 训练过扩散模型;
  • 会推导变分下界(课上会讲)。

2. 四节课总览

课次 主题 核心产出 对应材料
第 1 课 生成模型全景 + 前向过程 四路线对比表 + 闭式边缘 1.1、1.2 前半
第 2 课 噪声 schedule + 后验 SNR 表 + 后验公式 1.2 后半、1.3 前半
第 3 课 ELBO + 损失 + 采样 一页纸推导 1.3 后半
第 4 课 变体 + 面试演练 90 秒答案 + 模拟面试 1.4、05、06

如果只有 2 次课:第 1 次讲 1.1 + 1.2 + 后验;第 2 次讲 ELBO + 1.4 + 面试。


3. 第 1 课:生成模型全景 + 前向过程

3.1 时间安排(90 分钟)

时间 环节 内容
0–5 开场 课程目标、4 节课地图、面试题清单
5–25 1.1 四条生成路线、对比表
25–35 互动 5 个场景选模型
35–55 1.2 前半 前向链、重参数化
55–70 白板 两步推导 \(q(x_2\mid x_0)\)
70–80 面试 “GAN vs Diffusion” 90 秒
80–90 小结 作业、下节预告

3.2 板书布局

左侧:生成模型四路线对比(GAN/VAE/Flow/Diffusion)
中间:前向链 q(xt|xt-1) → xt = ...
右侧:两步推导 q(x2|x0) 的方差合并
底部:面试关键词(稳定、慢、可控、模式覆盖)

3.3 关键提问

  • 如果 Diffusion 只是加噪,为什么能生成?
  • GAN 为什么快?代价是什么?
  • 为什么前向要分很多步,不一次性加满?
  • 重参数化到底把什么“重新参数化”了?

3.4 常见学生卡点

卡点 处理
分不清生成模型路线 用“一步/多步、显式/隐式”两个轴画象限
不理解重参数化 先讲 VAE 的 \(z=\mu+\sigma\epsilon\),再迁移
不会高斯相加 现场复习:独立高斯方差相加
觉得公式抽象 用“调低音量 + 加底噪”的比喻

3.5 作业

  • 四路线对比表;
  • 300 字“为什么 Diffusion 成为主流”;
  • 3 分钟录音“GAN vs Diffusion”。

4. 第 2 课:噪声 schedule + 真实后验

4.1 时间安排(90 分钟)

时间 环节 内容
0–5 回忆 前向链、重参数化
5–25 1.2 后半 SNR、schedule、数值例子
25–40 互动 手算 4 步 schedule
40–60 1.3 前半 为什么需要后验、贝叶斯公式
60–75 白板 配方推导后验均值/方差
75–85 面试 “为什么加噪幅度不一致”
85–90 小结 作业

4.2 板书布局

左侧:SNR 曲线(t → SNR)
中间:β_t / α_t / α_bar_t 的关系
右侧:贝叶斯公式 → 后验高斯 → 均值/方差
底部:β_t vs 1-α_bar_t 的区别

4.3 关键提问

  • 为什么 \(\beta_t\) 要递增?
  • 如果 \(\beta_t\) 常数,会发生什么?
  • 后验为什么依赖 \(x_0\)?推理时没有 \(x_0\) 怎么办?
  • 后验方差和 \(\beta_t\) 是什么关系?

4.4 常见学生卡点

卡点 处理
把 \(\beta_t\) 当总噪声 画“每步增量 vs 累计”两条线
不会配方 先写二次型,再对比高斯指数
觉得后验复杂 强调“给定 \(x_0\) 后就是高斯”
不会解释 schedule 用“课程难度”比喻

4.5 作业

  • 手算 4 步 schedule 表;
  • 推导后验均值和方差;
  • 90 秒录音“为什么加噪幅度不一致”。

5. 第 3 课:ELBO + 损失 + 采样

5.1 时间安排(90 分钟)

时间 环节 内容
0–5 回忆 后验公式
5–25 ELBO 从对数似然到三项分解
25–45 参数化 均值匹配 → 噪声预测
45–60 简化损失 为什么可以丢系数
60–75 采样 从 \(x_T\) 到 \(x_0\) 的流程
75–85 面试 2 分钟“推演 DDPM”
85–90 小结 作业

5.2 板书布局

左侧:log p(x) ≥ ELBO
中间:ELBO = L_T + Σ L_{t-1} + L_0
右侧:μ̃ → μθ → εθ → L_simple
底部:采样公式 + t=1 不加噪

5.3 关键提问

  • 为什么要最大化 ELBO,而不是直接最大化似然?
  • 固定方差后,KL 为什么不依赖方差?
  • 为什么预测噪声比预测图像稳?
  • \(\mathcal L_{\mathrm{simple}}\) 丢了什么?为什么还能 work?
  • 采样时为什么要加噪声?最后一步为什么加 0?

5.4 常见学生卡点

卡点 处理
ELBO 符号混乱 先写“重构 - KL”的直觉,再展开
不会从后验到噪声 一步步代入,不跳步
不理解丢系数 强调“重加权”,不是“等价”
采样公式记不住 用“去噪 + 加回随机性”解释

5.5 作业

  • 一页纸推导(前向、后验、ELBO、损失、采样);
  • 2 分钟录音“推演 DDPM”;
  • 06 的推导题。

6. 第 4 课:变体 + 面试演练

6.1 时间安排(90 分钟)

时间 环节 内容
0–5 回忆 DDPM 主线
5–25 1.4 非高斯、Cold Diffusion、D3PM、Flow
25–40 讨论 为什么工程默认高斯
40–60 面试题库 6 道核心题抽答
60–80 模拟面试 2 人一组,追问两层
80–90 复盘 评分、错题、下章预告

6.2 板书布局

左侧:高斯假设的 6 个便利
中间:换噪声要改的 5 个环节
右侧:Cold Diffusion / D3PM / Flow 对比
底部:面试答题结构(结论-原理-对比-局限)

6.3 关键提问

  • 高斯是必须的吗?
  • 换噪声后,后验还是高斯吗?
  • Cold Diffusion 和 DDPM 最大区别?
  • Flow Matching 是不是 Diffusion?
  • 如果数据是离散 token,用什么?

6.4 常见学生卡点

卡点 处理
只会说“可以换” 追问“换完要改什么”
把 Flow 当 sampler 画“路径 + 速度场”
把 Cold Diffusion 当 DDPM 强调“退化不一定是噪声”
面试答题没结构 用“结论-原理-对比-局限”模板

6.5 作业

  • 90 秒回答 D2、D5、D6、D10;
  • 完成 06 的计算题;
  • 录一次 15 分钟模拟面试。

7. 教学节奏控制

7.1 如果学生数学基础弱

  • 先讲直觉,再上公式;
  • 公式只推主线,不展开所有代数;
  • 用数值例子替代抽象证明;
  • 允许“先记住结论,再回头补推导”。

7.2 如果学生基础好

  • 加问“为什么后验方差是 \(\tilde\beta_t\)”;
  • 加问“\(\mathcal L_{\mathrm{simple}}\) 和 ELBO 的偏差”;
  • 加问“zero terminal SNR 与 \(v\)-prediction”;
  • 加问“Flow Matching 与 DDPM 的统一视角”。

7.3 如果时间不够

优先级:

  1. 前向闭式;
  2. 后验均值;
  3. ELBO 三项;
  4. 噪声预测;
  5. 采样公式;
  6. 非高斯只讲结论。

8. 课堂禁忌

  • ❌ 不要现场写完整 DDPM 代码;
  • ❌ 不要花时间调包/训练;
  • ❌ 不要逐行推导所有代数;
  • ❌ 不要只念 PPT,不给学生动手;
  • ❌ 不要用“显然”“易得”跳过关键步骤;
  • ❌ 不要让学生只背结论,不练追问。

9. 讲师课前检查清单

  • [ ] 白板笔/黑板可用;
  • [ ] 四路线对比表已准备;
  • [ ] 数值例子已算好;
  • [ ] 90 秒答案已练过;
  • [ ] 练习题答案已看;
  • [ ] 模拟面试评分表已打印;
  • [ ] 时间控制点(25/55/75 分钟)已标记。

10. 课后跟进

  • 收作业:对比表、一页纸推导、录音;
  • 批改重点:公式符号、逻辑顺序、是否解释“为什么”;
  • 个别辅导:后验推导、ELBO 符号、面试表达;
  • 下章预告:采样、加速、CFG。

11. 相关材料