整篇 DDPM 推导的终点是这条采样式,它由 $L_{t-1}$ 的 KL 化简、前向后验配方、噪声换元一路推出,本身就是"从 $p_\theta(x_{t-1} \mid x_t)$ 采一个样"的展开写法: $x_{t-1} = \frac{1}{\sqrt{\alpha_{t}}}\left(x_{t} - \frac{\beta_{t}}{\sqrt{1-\bar{\alpha}_{t}}}\epsilon_{\theta}(x_{t},t)\right) + \sigma_{t}z,\qquad z \sim \mathcal{N}(0,I),\quad \sigma_{t} = \sqrt{\beta_{t}}\ \text{或}\ \sqrt{\tilde{\beta}_{t}}$ 本笔记把它拆成三块,逐一回答:每一块是什么、系数为什么长这样、带不带根号的规律是什么、新噪声 $z$ 为何不破坏去噪。 ## 一、总览:反向一步 = 撤销一次前向加噪 前向单步 $x_{t} = \sqrt{\alpha_{t}}\,x_{t-1} + \sqrt{\beta_{t}}\,\epsilon_{t}$ 做了两件事:把信号缩小 $\sqrt{\alpha_{t}}$,再揉进一块方差为 $\beta_{t}$ 的新噪声。反向一步逐项对着撤: $x_{t-1} = \underbrace{\frac{1}{\sqrt{\alpha_{t}}}}_{\text{①信号放大回去}}\Big(x_{t} - \underbrace{\frac{\beta_{t}}{\sqrt{1-\bar{\alpha}_{t}}}\epsilon_{\theta}}_{\text{②剥掉这一步该负责的噪声}}\Big) + \underbrace{\sigma_{t}z}_{\text{③补回残余不确定性}}$ ## 二、① 信号缩放 最直白的一项:前向每步把图的信号乘 $\sqrt{\alpha_{t}}$(缩小),反向就除以 $\sqrt{\alpha_{t}}$(放大回去)。逐步还原前向对信号幅度的衰减。 ## 三、② 去噪项:按"占比"剥噪,而不是减掉真噪声 ### 3.1 核心恒等式:总噪声的方差分解 前向到 $x_t$ 时刻,累积噪声方差为 $1-\bar{\alpha}_{t}$。它可以精确拆成两份: $1-\bar{\alpha}_{t} = \underbrace{\alpha_{t}(1-\bar{\alpha}_{t-1})}_{\text{以前各步的噪声,被本步缩放带过来}} + \underbrace{\beta_{t}}_{\text{本步新加的噪声}}$ **这个式子哪来的**:直接照抄前向一步 $x_{t} = \sqrt{\alpha_{t}}\,x_{t-1} + \sqrt{\beta_{t}}\,\epsilon_{t}$,看噪声方差怎么走。$x_{t-1}$ 身上已经背着方差为 $1-\bar{\alpha}_{t-1}$ 的旧噪声;整个 $x_{t-1}$ 被乘了 $\sqrt{\alpha_{t}}$,它身上的旧噪声也跟着被乘 $\sqrt{\alpha_{t}}$——这里用到一条规则:一个随机量整体乘 $\sqrt{\alpha_{t}}$,它的方差就乘 $\alpha_{t}$(方差是平方尺度,幅度的缩放进了方差要平方),所以旧噪声方差从 $1-\bar{\alpha}_{t-1}$ 缩成 $\alpha_{t}(1-\bar{\alpha}_{t-1})$;再加进一块全新噪声、方差 $\beta_{t}$,两块独立、方差直接相加。 所以 $x_t$ 的总噪声方差 = 缩过的旧噪声 + 新噪声 = $\alpha_{t}(1-\bar{\alpha}_{t-1}) + \beta_{t}$。而我们又知道它就该等于 $1-\bar{\alpha}_{t}$,两边核对: $\alpha_{t}(1-\bar{\alpha}_{t-1}) + \beta_{t} = \underbrace{\alpha_{t} + \beta_{t}}_{=1} - \underbrace{\alpha_{t}\bar{\alpha}_{t-1}}_{=\bar{\alpha}_{t}} = 1-\bar{\alpha}_{t}\ \checkmark$ 注意:中间那项 $\alpha_{t}\bar{\alpha}_{t-1}$ 不是单独有含义的"强度差",它只是 $\alpha_t$ 乘开后掉出来的一项,作用就是凑出 $\bar\alpha_t$ 完成核对。真正有物理含义的是没乘开的两块:缩过的旧噪声和新噪声。 **数字例子(全程只看噪声)**。设本步 $\alpha_{t} = 0.9$(即 $\beta_{t} = 0.1$),上一步噪声方差已累积到 $1-\bar{\alpha}_{t-1} = 0.5$:旧噪声 0.5 被本步缩放 $0.9 \times 0.5 = 0.45$;新加噪声 $\beta_t = 0.1$;相加得本步总噪声 $0.45 + 0.1 = 0.55$。交叉核对(走信号那条线,应得同一个数):$\bar{\alpha}_{t} = \alpha_t\bar\alpha_{t-1} = 0.9 \times 0.5 = 0.45$,本步累积总噪声 $1-\bar\alpha_t = 0.55$ ✓。两条线严丝合缝,这正是分解恒等式说的事。于是"本步新加噪声"占"总噪声"的比例就是 $\frac{\beta_{t}}{1-\bar{\alpha}_{t}}$,例子里即 $\frac{0.1}{0.55} \approx 0.18$——去噪那一步要从估出的总噪声里撤掉的,就是这 18%。 ### 3.2 去噪系数的拆读:占比 × 总噪幅度 $\frac{\beta_{t}}{\sqrt{1-\bar{\alpha}_{t}}}\epsilon_{\theta} = \underbrace{\frac{\beta_{t}}{1-\bar{\alpha}_{t}}}_{\text{本步占总噪的比例(无量纲)}} \times \underbrace{\sqrt{1-\bar{\alpha}_{t}}\,\epsilon_{\theta}}_{x_{t}\text{ 内总噪声向量的估计}}$ 读法:网络 $\epsilon_\theta$ 估计出 $x_t$ 里的全部噪声($\sqrt{1-\bar\alpha_t}\epsilon_\theta$ 是它的实际幅度),但本步只撤掉其中"这一步该负责的那一份"。撤多了会一步冲到 $x_0$,撤少了退不动,撤的恰好是本步加进来的份额。分子 $\beta_{t}$ 是本步新注入的噪声量(这一步的"罪责"),加得多就撤得多。分母 $\sqrt{1-\bar\alpha_t}$ 不是凭空出现的、是两个数相乘抵消后的剩余:要撤掉的量 = 本步份额比例 × 总噪声实际大小,比例是 $\frac{\beta_t}{1-\bar\alpha_t}$(分母是不带根号的 $1-\bar\alpha_t$),总噪声实际大小是 $\sqrt{1-\bar\alpha_t}$(因为 $\epsilon_\theta$ 只是单位大小的噪声方向,真实大小要乘上 $\sqrt{1-\bar\alpha_t}$ 才对)。两者一乘: $\frac{\beta_{t}}{1-\bar{\alpha}_{t}} \times \sqrt{1-\bar{\alpha}_{t}} = \frac{\beta_{t}}{\sqrt{1-\bar{\alpha}_{t}}}$ 分母的"全量 $1-\bar\alpha_tquot;被分子上的"根号量 $\sqrt{1-\bar\alpha_t}quot;约掉一半,所以最终式子里只剩一个根号在分母。 ### 3.3 一个必须打破的错误直觉:"减掉这步加的真噪声" 前向把 $x_{t-1}$ 和全新随机的 $\epsilon_t$ 揉成一个 $x_t$,信息被抹掉:无穷多组 $(x_{t-1},\epsilon_t)$ 产生同一个 $x_t$,那个真实的 $\epsilon_t$ 不可恢复、网络也恢复不了。所以反向不是"减真噪、补真噪",而是两件事:去噪项把 $x_t$ 推到最可能的 $x_{t-1}$ 位置;$\sigma_t z$ 则是在"所有可能生成此 $x_t$ 的 $x_{t-1}quot;里采一个(见 §4)。 ## 四、③ $\sigma_t z$:不是重建噪声,是采样不确定性 ### 4.1 它在干什么 给定 $x_t$,$x_{t-1}$ 不是唯一的。原因:前向加噪是随机的,很多个不同的 $x_{t-1}$ 各自加一把随机噪声后都可能落到同一个 $x_t$。所以"反推上一步"没有唯一答案、只有一团候选:这团候选聚在一个中心附近(最可能的那个 $x_{t-1}$,就是前两项),并向四周散开一定范围(散开多大由 $\sigma_t$ 衡量)。式子前两项只把你送到中心,$\sigma_t z$ 是在这团候选里随机选一个——把"到底是哪个 $x_{t-1}quot;这份本来就消不掉的不确定性撒回去,保证整条反向链真的是在按分布采样,而不是沿中心一路滑行。只走中心会过度平滑、多样性塌掉,采出来的不再是 $p_\theta$ 的样本。 ### 4.2 为什么每步加新噪声,图还能越来越清晰 关键不在"末尾 $\sigma_t$ 小所以加得少"(那只是配角),而在每一步撤掉的远多于补回的、净噪声严格下降: $\text{噪声标准差}:\quad \sqrt{1-\bar{\alpha}_{t}} \longrightarrow \sqrt{1-\bar{\alpha}_{t-1}}\quad(\text{严格变小,因为}\ \bar{\alpha}_{t-1} > \bar{\alpha}_{t})$ 反向后验是照着前向边缘构造出来的:它保证 $x_{t-1}$ 的噪声量恰好等于前向在 $t-1$ 时刻该有的量。补回的 $\sigma_t z$ 的大小,正好是"下一级该剩的残余"、不是额外堆上去的脏东西。整条链"每步撤一大块、补一小块",一路逼近 $x_0$。旁证:DDIM 全程 $\sigma_t = 0$(确定性采样)同样能出清晰图——说明变干净靠去噪项,$\sigma_t z$ 管的是采得对、采得多样;且它的幅度本来就随噪声水平一起缩到零($t=1$ 时取 $\sigma_1 = 0$),从不妨碍最终清晰度。 ### 4.3 $\sigma_t$ 的两种取值 反向方差不参与训练、固定为预设常数,常见两种取法:一是前向后验方差 $\tilde{\beta}_{t} = \frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_{t}}\beta_{t}$,二是噪声调度给定的前向方差 $\beta_t$(超参数)。二者分别对应反向过程熵的下界与上界(分别在"数据退化为单点"与"数据为标准高斯"两个极端下最优),实测样本质量相近。注意 $\tilde{\beta}_{t} \leq \beta_{t}$ 恒成立,差距在小 $t$ 处最大($t \to 0$)。 ## 五、带不带根号的统一规则:同一个 $\beta_t$ 的两种身份 式中同一个 $\beta_t$ 出现两次:一次不带根号(去噪系数的分子 $\frac{\beta_t}{\sqrt{1-\bar\alpha_t}}$),一次带根号($z$ 前的 $\sqrt{\beta_t}$)。规律只有一条,先在一维高斯上看清——同一个方差 $V$,在两种场合长相不同:**场合一,密度公式**:方差蹲在平方底下、不带根号 $\exp(-\frac{x^{2}}{2V})$。**场合二,采样**:拿单位噪声 $z$ 乘标准差 $\sqrt{V}\,z$(平方回去方差正好是 $V$)。 所以 $\frac{\beta_t}{\sqrt{1-\bar\alpha_t}}$ 看着"分子方差、分母标准差"很别扭,其实是两种不同出处的量除在了一起:分子是密度公式里搬来的方差(权重身份,天生不带根),分母是采样式里乘单位噪声的标准差(幅度身份,天生带根)。量纲上也自洽:方差 ÷ 标准差 = 标准差,而乘在标准化的 $\epsilon_\theta$ 前面的系数恰恰必须是标准差量级。为什么不是"标准差除标准差"——因为去噪项不是"减掉单步噪声的幅度 $\sqrt{\beta_t}quot;,它是从密度配方推出的中心位置,推导全程以方差形态参与($\beta_t$ 从指数底下被原样搬运),根本不经过开根这一步。 ## 六、整条采样链的物理图像 每一步:估出当前总噪 → 只退一步该退的那份(按占比 $\frac{\beta_t}{1-\bar\alpha_t}$)→ 把信号放大回去($\frac{1}{\sqrt{\alpha_t}}$)→ 补回本步无法确定的随机性($\sigma_t z$,幅度恰为下一级该剩的残余)。从 $x_T$ 出发逐步执行,噪声水平 $\sqrt{1-\bar\alpha_t}$ 单调下降,不确定度同步收窄,$t=1$ 时取 $\sigma_1 = 0$ 输出干净样本。 一句话:反向一步 = 定中心(去噪)+ 给宽度(撒回不确定性),且宽度逐级缩到零。去噪让图变清晰,$\sigma_t z$ 让采样正确而多样——两者分工不同、互不妨碍。