来源:Song、Meng、Ermon,2020,arXiv 2010.02502 v4,ICLR 2021。公式号与论文一致。符号约定与常用公式卡见本单元 00_导读。 这一节讲:实验结论(§10)、在自己模型上跑 DDIM 的代码(§11),最后收口:全篇一条线与对论文的覆盖盘点。 --- ## §10 实验(论文第 5 节,支线,只记结论) - 质量与速度(Table 1,FID 越低越好):同步数下 $\eta=0$(DDIM)在小步数全面最好,CIFAR-10 上 $S=50$ 时 FID 4.67,逼近 1000 步的 4.04;$\eta=1$(DDPM)在 $S=10$ 时崩到 41.07。综合 10–50 倍提速。论文还测了 Ho 实现里方差超标的 $\hat\sigma$ 版:小步数下彻底崩($S=10$ 时 FID 367),注入噪声一旦超过后验方差,跳步的伤害被放到最大。 - 一致性(Figure 5):固定 $x_T$,10/20/50/100/1000 步生成的高层特征一致,只差细节。$x_T$ 单独就携带了图像主要信息。 - 插值与重构(Figure 6、Table 2):$x_T$ 空间 slerp 得语义插值;重构误差随步数下降,接近 Neural ODE 和 normalizing flow。 --- ## §11 落地:在自己的模型上跑 DDIM 网络用已训好的 CIFAR-10 DDPM(不动一个参数),只换采样循环。对表:本论文的 $\alpha_t$ = 代码里的 `alpha_bars[t]`,且 `alpha_bars[0] = 1` 实现 $\alpha_0:=1$。 ```python # DDIM 采样 (公式12 + 公式16 + 子序列 tau). 复用已训练 model 与 alpha_bars @torch.no_grad() def ddim_sample(model, shape, device, T=1000, S=50, eta=0.0): # T、alpha_bars 需与训练一致 tau = torch.linspace(1, T, S).round().long().tolist() # 线性子序列 (附录D.2) x = torch.randn(shape, device=device) # x_T ~ N(0, I) for i in range(S - 1, -1, -1): t = tau[i] t_prev = tau[i - 1] if i > 0 else 0 # i=0 落到 alpha_bars[0]=1 ab_t, ab_prev = alpha_bars[t], alpha_bars[t_prev] t_batch = torch.full((shape[0],), t, device=device) eps = model(x, t_batch) x0_pred = (x - (1 - ab_t).sqrt() * eps) / ab_t.sqrt() # 公式9 sigma = eta * ((1 - ab_prev) / (1 - ab_t)).sqrt() \ * (1 - ab_t / ab_prev).sqrt() # 公式16 z = torch.randn_like(x) if (eta > 0 and i > 0) else torch.zeros_like(x) x = ab_prev.sqrt() * x0_pred \ + (1 - ab_prev - sigma**2).sqrt() * eps \ + sigma * z # 公式12 return x ``` 子序列选法论文给了两种(附录 D.2):线性 $\tau_i=\lfloor ci\rfloor$ 与二次 $\tau_i=\lfloor ci^2\rfloor$,CIFAR10 上二次略优、其余数据集用线性;此处用线性已够验证。 验证:① $S=1000,\eta=1$ 复现 DDPM 质量;② $S=50,\eta=0$ 约 1/20 时间出接近的图;③ 固定种子下 $S=20$ 与 $S=100$ 高层一致(复现 Figure 5)。 --- ## 全篇一条线 训练目标只认每个时刻的边缘分布(§2 支点),链条随便换。于是造一族带参数 $\sigma$ 的非马尔可夫链(§3,公式 6、7),归纳法验证边缘全程不动(§4,Lemma 1),用网络预测 $x_0$ 顶替真 $x_0$ 定义生成过程(§5,公式 9、10),证明新目标落回旧目标族(§6,Theorem 1),训练侧锁死。采样侧自由了:统一公式 12 转 $\sigma$(§7),转到 DDPM 方差是 DDPM、转到 0 是确定性的 DDIM,再抽稀成子序列(§8)几十步出图。最后发现 $\sigma=0$ 的过程是一个 ODE 的欧拉法(§9,公式 14),确定性带来反演与插值,也搭好了通往 Score-SDE 的台阶。 --- ## 各章对应论文结构 | 论文位置 | 内容 | 对应章节 | 覆盖 | |---|---|---|---| | §1–2 背景 | 记号、$L_\gamma$(eq 1–5) | 01 | ✅ 全 | | §3.1 | 非马尔可夫前向(eq 6/7) | 02 | ✅ 全(含造法推导) | | Lemma 1 + 附录 B(eq 24–28) | 边缘不变 | 02 | ✅ 全(归纳一步逐行) | | §3.2 | 生成过程(eq 9/10)、$J_\sigma$(eq 11) | 03 | ✅ 全 | | Theorem 1 + 附录 B(eq 29–35) | 不用重训 | 03 | ✅ 全(证明四步代数完全版) | | §4.1 | 统一采样(eq 12)与两特例 | 04 | ✅ 全 | | §4.2 + 附录 C.1 | 跳步、$\eta$(eq 16) | 04 | ✅ 全 | | §4.3 | ODE 视角(eq 13/14) | 05 | ✅ 全(12→14 逐步) | | §5 实验 | FID、一致性、插值 | 06(§10) | 只记结论 | | 附录 D.2 | 子序列选择 | 06(§11 代码) | 线性子序列已用 | ## 下一步 - 下一单元 Score-SDE:把离散的 $t$ 连续化,$\bar x$、$\sigma$ 这副 ODE 眼镜在那边升级成概率流 ODE 的完整理论。 - 本单元的关键遗产:「训练目标只认边缘」(支点)、$\eta=0$ 的确定性采样、ODE 眼镜,EDM 的 35 步采样与 $\sigma$ 语言全部建在这三样上。