来源:Song、Meng、Ermon,2020,arXiv 2010.02502 v4,ICLR 2021。公式号与论文一致。符号约定与常用公式卡见本单元 00_导读。 这一节讲:§7 把生成规则写成可执行的采样一步(公式 12),转动 $\sigma$ 点出两个名场面,拧到 $\tilde\beta_t$ 还原 DDPM、拧到 0 得确定性 DDIM;§8 抽稀成子序列跳步,$\eta$(公式 16)统一控制随机量,几十步出图。 --- ## §7 统一采样公式与两个特例(论文 4.1) **这一步**:训练侧锁死了,开始收采样侧的果实。把公式 10 写成可执行的采样一步(公式 12,见公式卡),然后转动 $\sigma$ 旋钮,点出两个名场面。 **结论**:采样一步 = 预测的干净图 + 指向 $x_t$ 的方向项 + 新噪声,三块结构;$\sigma_t^2$ 拧到 $\tilde\beta_t$ 一字不差还原 DDPM,拧到 0 随机项消失,就是 DDIM。同一个网络,换 $\sigma$ 就换一套生成过程,无需重训。 > [!note]- 推导:从公式 10 + 7 拼出公式 12 > 公式 7 的均值(后验中心): > $\mu = \sqrt{\alpha_{t-1}}\,x_0 + \sqrt{1-\alpha_{t-1}-\sigma_t^2}\cdot\frac{x_t-\sqrt{\alpha_t}\,x_0}{\sqrt{1-\alpha_t}}$ > 那个"丑分数"其实就是噪声(由 $x_t=\sqrt{\alpha_t}x_0+\sqrt{1-\alpha_t}\,\epsilon$ 反解): > $\frac{x_t-\sqrt{\alpha_t}\,x_0}{\sqrt{1-\alpha_t}}=\epsilon$ > 采样时 $x_0$ 未知,用网络预测 $f_\theta$(公式 9)替换 $x_0$,那个噪声随之变成 $\epsilon_\theta$: > $x_0\ \to\ f_\theta^{(t)}(x_t)=\frac{x_t-\sqrt{1-\alpha_t}\,\epsilon_\theta}{\sqrt{\alpha_t}}$ > $\frac{x_t-\sqrt{\alpha_t}\,x_0}{\sqrt{1-\alpha_t}}\ \to\ \epsilon_\theta^{(t)}(x_t)$ > 代回,均值变成: > $\mu = \sqrt{\alpha_{t-1}}\,f_\theta^{(t)}(x_t) + \sqrt{1-\alpha_{t-1}-\sigma_t^2}\cdot\epsilon_\theta^{(t)}(x_t)$ > 从这个均值、标准差 $\sigma_t$ 的高斯抽一步(均值 + 随机抖动 $\sigma_t\epsilon_t$): > $x_{t-1} = \underbrace{\sqrt{\alpha_{t-1}}\,f_\theta^{(t)}(x_t)}_{\text{① 指向预测原图}} + \underbrace{\sqrt{1-\alpha_{t-1}-\sigma_t^2}\,\epsilon_\theta^{(t)}(x_t)}_{\text{② 指向 }x_t\text{ 方向}} + \underbrace{\sigma_t\epsilon_t}_{\text{③ 注入新噪声}}$ > 把 $f_\theta$ 按公式 9 展开,即论文完整的公式 12: > $x_{t-1} = \sqrt{\alpha_{t-1}}\,\frac{x_t-\sqrt{1-\alpha_t}\,\epsilon_\theta}{\sqrt{\alpha_t}} + \sqrt{1-\alpha_{t-1}-\sigma_t^2}\,\epsilon_\theta + \sigma_t\epsilon_t$ > [!note]- 视角:特例一,转动旋钮还原 DDPM (对账) > $\sigma_t$ 是我们造出来的控制“新噪声注入量”的旋钮。 > > 把它拧到 $\sigma_t^2 = \frac{1-\alpha_{t-1}}{1-\alpha_t}\beta_t$(这正好等于 DDPM 原本的后验方差 $\tilde\beta_t$),公式 12 的均值随之化简,一字不差地还原成 DDPM 的标准采样公式。 > > **注意:$\tilde\beta_t$ 不是上限,只是中间值。** 合法区间是 $\sigma_t^2\in[\,0,\ 1-\alpha_{t-1}\,]$,三个位置对照记: > - $\sigma_t^2 = 0$:确定性,DDIM(旧噪声全保留) > - $\sigma_t^2 = \tilde\beta_t$:DDPM(中间档) > - $\sigma_t^2 = 1-\alpha_{t-1}$:新噪声拉满、彻底忘掉 $x_t$(§3 的第三种情况,这才是上限) > [!note]- 视角:特例二,旋钮归零,DDIM 登场! > 如果我们走向另一个极端,把旋钮彻底关掉:**令 $\sigma_t = 0$**。 > > 此时公式 12 最后的随机项 $\sigma_t \epsilon_t$ 彻底消失。 > **直觉含义:** 整个采样过程**完全没有掷骰子的环节了**!只要你一开始给定的纯噪声图 $x_T$ 是固定的,这 1000 步怎么退回 $x_0$ 就像火车跑在铁轨上一样,轨迹是 100% 确定的。同一个纯噪声,永远生成同一张清晰的图。 > > 这种不包含显式随机变量映射的模型,在数学上被称为**隐式模型 (Implicit Models)**,这也是 DD**I**M 名字里那个 **I** 的由来。 --- ## §8 跳步加速(论文 4.2 + 附录 C.1) **这一步**:训练只要求边缘固定,那干脆只在一个子序列的时刻上定义过程,生成时只走子序列,几十步出图。 **结论**:取 $\tau$ 为 $[1,\dots,T]$ 的长度 $S$ 递增子序列($\tau_S=T$,如 $T=1000,S=50$)。采样用一个标量 $\eta\ge0$ 统一控制 $\sigma$:$\eta=1$ 即 DDPM(子序列版),$\eta=0$ 即 DDIM,中间值连续插值。 > [!abstract] 公式 16 · 用 η 统一控制 σ > $\sigma_{\tau_i}(\eta) = \eta\sqrt{\frac{1-\alpha_{\tau_{i-1}}}{1-\alpha_{\tau_i}}}\sqrt{1-\frac{\alpha_{\tau_i}}{\alpha_{\tau_{i-1}}}}$ > [!note]- 读公式 16:两个因子各是什么、为什么乘起来正好是 $\sqrt{\tilde\beta}$ > $\tau_i$ 是子序列里第 $i$ 个时间步,$\tau_{i-1}$ 是前一个(更干净)的步。 > > **记号陷阱:** 公式里的 $\alpha$ 是累积积 $\bar\alpha$(代码里 `alpha_bars`),不是单步 `alphas`。 > > **两个因子** > - 左 $\sqrt{\dfrac{1-\alpha_{\tau_{i-1}}}{1-\alpha_{\tau_i}}}$ — 噪声方差比:因为 $x_t=\sqrt{\bar\alpha_t}x_0+\sqrt{1-\bar\alpha_t}\,\varepsilon$,$1-\bar\alpha_t$ 就是第 $t$ 步的噪声方差,所以这是 目标步 ÷ 当前步 的噪声水平比(lt;1$)。 > - 右 $\sqrt{1-\dfrac{\alpha_{\tau_i}}{\alpha_{\tau_{i-1}}}}$ — 这一跳的等效 $\beta$:$\dfrac{\bar\alpha_{\tau_i}}{\bar\alpha_{\tau_{i-1}}}=\prod_{s=\tau_{i-1}+1}^{\tau_i}\alpha_s$ 是等效单步 $\alpha$,$1-(\cdot)$ 就是这一跳新注入的噪声量。 > > **关键:相乘 $=\sqrt{\tilde\beta}$**(后验标准差的跳步版) > $\tilde\beta$ 是 **DDPM 的前向后验方差**——即已知 $x_t,x_0$ 时 $q(x_{t-1}\mid x_t,x_0)$ 的方差,衡量"倒推一步后还剩多少不确定性"。单步形式: > $ > \tilde\beta_t=\frac{1-\bar\alpha_{t-1}}{1-\bar\alpha_t}\beta_t,\quad \beta_t=1-\frac{\bar\alpha_t}{\bar\alpha_{t-1}} > $ > 开根号后正好裂成两块,对上上面两个因子: > $ > \sqrt{\tilde\beta_t}=\sqrt{\frac{1-\bar\alpha_{t-1}}{1-\bar\alpha_t}}\cdot\sqrt{1-\frac{\bar\alpha_t}{\bar\alpha_{t-1}}} > $ > 左 = 后验方差重加权,右 = 这一跳的 $\beta$。跳步只是把单步 $\beta$ 换成等效 $\beta$,公式骨架不变。 > > **$\eta$ 的作用**(整体缩放 $\sqrt{\tilde\beta}$) > - $\eta=0$:$\sigma=0$,纯 DDIM,确定性 > - $\eta=1$:$\sigma=\sqrt{\tilde\beta}$,退化为 DDPM 采样 > - $0<\eta<1$:插值,越大越随机 > > 少步采样常取 $\eta=0$。 > [!note]- 核心直觉:为什么 DDIM 跳步几乎不掉质,DDPM 一跳就崩? > 先说清:**跳步(只在子序列 $\tau$ 上采样)两者都能做**——因为一切都按累积量 $\alpha_t$ 索引,$\alpha$ 就是一张预先算好的“时刻表”。想从第 1000 步直接跳到第 950 步,不必算中间那 49 步,查出 $\alpha_{1000}$、$\alpha_{950}$ 代进公式 12 即可。$\eta=1$ 的 DDPM 也有“子序列版”。 > > 真正的差别在**跳完掉不掉质**: > - **DDIM($\eta=0$,确定性):** 它在解一个 ODE,大步跳 = 大步长欧拉,轨迹基本不偏,所以 50 步、甚至 10–20 步画质都稳。 > - **DDPM($\eta=1$,随机):** 每退一步都按 $\sigma$ 注入新噪声;步子迈得越大、跨过的噪声差越大,灌进去的随机噪声越多,轨迹被冲散。所以步数一少就崩(§10 里 $S=10$ 时 FID 飙到 41)。 > > 一句话:**跳得动,靠累积量查表;跳完还稳,靠 $\eta=0$ 的确定性。** --- ## 本节一条线 公式 10+7 拼出采样一步(公式 12:预测原图 + 方向项 + 新噪声三块);$\sigma_t^2$ 拧到 $\tilde\beta_t$ 一字不差还原 DDPM、拧到 0 随机项消失得确定性 DDIM(名字里的 I);子序列 $\tau$ 上跳步、$\eta$ 统一控制,跳得动靠累积量查表,跳完还稳靠 $\eta=0$ 的确定性。