← 返回题目列表

DDPM 的原理是什么?为什么训练目标是预测噪声?

高频 中等 第 10 / 25 题 更新于 2026/09/25
DDPM扩散模型噪声预测ELBO
学习 AI 实战项目

简化版

DDPM 定义固定的前向高斯马尔可夫加噪过程,并学习参数化的反向条件分布。闭式边缘允许从 x₀ 一步采样任意 x_t。原始工作把 ELBO 中的反向均值匹配重参数化为噪声预测,并采用去掉时间权重的 simple MSE。预测 ε、x₀ 或 v 可以相互换算,但对应的损失权重与优化性质不同,不能说噪声预测在所有模型上必然“最稳、最好”。

详细版

DDPM 的两条链

前向(固定,无参数):

q(x_t | x_{t-1}) = N(x_t; √(1-β_t)·x_{t-1}, β_t·I)

闭式解让我们能一步合成任意时刻的带噪图:

x_t = √ᾱ_t·x₀ + √(1-ᾱ_t)·ε,   α_t=1-β_t, ᾱ_t=∏α,  ε~N(0,I)

反向(可学):网络 ε_θ(x_t, t) 预测噪声,据此还原 x_{t-1}。

为什么预测噪声(三个层次的理由)

  1. 理论层面:ELBO 推导出的反向均值 μ 依赖于「已知 x_t 时对 x₀(或 ε)的估计」。由闭式解,x_t、x₀、ε 三者知二求一,所以预测 ε、预测 x₀、预测 μ 在数学上等价,可以互相换算。

  2. 形式层面:选择预测 ε 后,复杂的 ELBO 损失(含一堆 KL 散度)可简化为一个干净的 MSE:

L_simple = E_{t,x₀,ε} ‖ ε − ε_θ(√ᾱ_t·x₀ + √(1-ᾱ_t)·ε, t) ‖²
  1. 工程层面:训练时采样的 ε 边缘分布是标准高斯,目标尺度统一;但给定 x_t 的预测难度随信噪比变化,x₀/v 参数化也可通过加权获得良好效果。

训练与采样流程

  • 训练:取 x₀ → 随机 t、随机 ε → 合成 x_t → 网络预测 ε → MSE 反传。
  • 采样:x_T~N(0,I) → 循环 T…1,每步用 ε_θ 算均值并加噪 → 得 x₀。

核心痛点:祖先采样需要多次网络评估;步数由训练时间表与采样器决定,历史常见 1000 步不是 DDPM 的固定定律。

完整版教学

一、DDPM 在扩散模型谱系里的位置

「扩散模型」是一大类方法的统称,DDPM 是 2020 年 Ho 等人提出的里程碑工作。它没有发明扩散思想(更早可追溯到 Sohl-Dickstein 等人的工作),但把加噪、反向生成与可训练目标连成了一套效果很强的方案。面试若问扩散模型原理,可以用 DDPM 解释基本机制,同时说明现代系统还会采用潜空间扩散、不同预测参数化和更高效的采样器。

二、前向过程为什么要设计成这样

前向过程 q(x_t|x_{t-1}) = N(√(1-β_t)·x_{t-1}, β_t·I) 有两个精心的设计:

  • 系数 √(1-β_t) 的缩放:每步缩小已有信号并注入噪声。若数据已标准化为单位方差,这种 variance-preserving 参数化使各步的边缘方差保持在同一量级;当累计信号系数 ᾱ_T 足够接近 0 时,x_T 才近似标准高斯,而不是有限步下一定精确等于它。
  • 噪声表 β_t:它决定信噪比怎样沿时间分配。经典线性表常让 β 随 t 增大,余弦表则直接设计累计信号;哪种更好取决于数据、训练目标和采样器,不能把“逐渐增大”或“余弦必胜”当成定义。

由此推出的闭式解是训练高效的关键:

x_t = √ᾱ_t·x₀ + √(1-ᾱ_t)·ε

有了它,训练时对任意 t 都能「一步到位」造出带噪样本,无需真的迭代 t 次。可以说,没有这个闭式解,DDPM 训练就不现实。

三、从 ELBO 到「预测噪声」的推导脉络(面试够用版)

不用背完整推导,但要能说清脉络:

  1. 我们想最大化数据似然 log p_θ(x₀),直接算不了,于是用变分下界 ELBO:引入前向 q 作为近似后验,把 log p_θ(x₀) 下界成一串可计算的项。

  2. ELBO 展开后是若干 KL 散度之和,其中主项是让反向分布 p_θ(x_{t-1}|x_t) 去逼近「真实反向后验」q(x_{t-1}|x_t, x₀)。后者是可以精确算出的高斯,其均值记为 μ̃。

  3. 于是训练变成让网络输出的均值 μ_θ 去匹配 μ̃。而 μ̃ 可以写成关于 x_t 和 ε 的表达式。

  4. 重参数化:把 μ_θ 也写成同样的形式,只让网络去预测其中的 ε。代入后,KL 项化简为「真实 ε 与预测 ε 的加权平方差」。

  5. DDPM 发现扔掉那个随 t 变化的权重系数(即用 L_simple 而非带权版本),训练更稳、生成更好。这就是最终的噪声预测 MSE。

简要说串起来:最大化似然 → ELBO → 匹配反向后验高斯的均值 → 重参数化成预测 ε → 去掉权重变成简单 MSE。

四、预测噪声 vs 预测 x₀ vs 预测 v

这是高频追问,给一张对比表:

参数化网络输出特点适用
ε-prediction预测掺入的噪声 εDDPM 原始选择,目标边缘尺度统一经典 DDPM 与大量潜扩散模型
x₀-prediction直接预测干净样本 x₀输出直观,但不同信噪比处的损失权重与 ε 预测不同图像生成、离散或约束数据等配方
v-prediction预测 v = √ᾱ_t·ε − √(1-ᾱ_t)·x₀是 x₀ 与 ε 的旋转参数化,可改善特定训练配方的权重和数值性质部分潜扩散、蒸馏配方

给定 x_t 和时间步时,它们可以线性换算;但用相同形式的 MSE 训练时,隐含的信噪比权重并不相同,所以“输出可换算”不等于“优化完全等价”。选择时应结合噪声调度、损失加权和采样器做消融。

五、采样过程的细节与随机项

采样单步公式:

x_{t-1} = 1/√α_t · ( x_t − (1-α_t)/√(1-ᾱ_t) · ε_θ(x_t,t) ) + σ_t·z,   z~N(0,I)
  • 前半部分是去噪均值:把预测噪声按比例减掉。
  • 后半部分 σ_t·z 是重新注入的随机性,让反向过程也是一条随机链(DDPM 是随机采样)。在最后一步 t=1 时不再加噪。
  • 原始 DDPM 讨论过把反向方差固定为 β_t 或前向后验方差 β̃_t;它们代表不同的方差设定,效果是否接近要由具体数据和指标验证。

易错点:原始 DDPM 祖先采样是随机的,但生成多样性首先来自初始噪声,不能只归因于每步随机项。DDIM 构造了与训练边缘分布相容的非马尔可夫过程;取 η=0 可得到确定性轨迹,不是简单把任意 DDPM 公式中的 σ_t 清零就解释完了。

六、手算一次前向采样与训练损失

设某个时间步的 ᾱ_t=0.64,标量干净样本 x₀=0.5,本次抽到的噪声 ε=-1。因为 √ᾱ_t=0.8、√(1-ᾱ_t)=0.6,所以:

x_t = 0.8 × 0.5 + 0.6 × (-1) = -0.2

若网络在 (x_t,t) 上预测 ε_θ=-0.8,这个标量样本的 simple loss 是 (-1-(-0.8))²=0.04。训练可以每次只随机抽一个 t,因为这是对全时间步期望损失的随机估计;生成时却必须从高噪声状态求解一条反向轨迹,不能据此推断“一步训练就能一步生成”。

七、常见误区与追问

  • 误区:前向加噪过程也需要训练神经网络。 前向过程由预设噪声调度固定,可直接从 x0 采样任意 xt;学习发生在反向去噪模型。
  • 追问:为什么常预测 ε 而不是直接预测 x0? 在常见参数化下二者可转换,预测标准高斯噪声让目标尺度更统一、训练实现简单稳定。
  • 追问:训练为何可以随机抽一个 t,而采样要走多步? 损失对时间步的期望可用随机 t 无偏估计;生成却要从高噪声状态逐步数值求解到数据分布。
  • 误区:减少采样步数不会影响任何结果。 少步求解误差更大,对调度器、模型预测精度和蒸馏配方更敏感。
  • 追问:β schedule 改变什么? 它分配各时间步的信噪比与学习难度,影响模型更重视结构还是细节区间。
  • 误区:DDPM 必须固定训练或采样 1000 步。 1000 是经典配置而非数学约束;时间离散、训练调度和推理函数评估次数需要分开描述。
  • 误区:没有判别器就保证比 GAN 稳定且不会模式遗漏。 去噪回归避开了对抗博弈,但仍会受数据覆盖、损失权重、网络容量和优化问题影响。

八、加强记忆

DDPM 抓三点:(1)前向固定加噪,闭式解 x_t=√ᾱ_t·x₀+√(1-ᾱ_t)·ε;(2)原始常用噪声预测 simple MSE,它来自 ELBO 均值匹配的重参数化与重新加权;(3)原始祖先采样从近似高斯噪声逐步计算反向均值并按设定方差采样。 再补一句:ε、x₀、v 虽能换算,但相同 MSE 对不同信噪比的加权不同,实际优劣必须结合训练与采样配方验证。