跳转至

P5-15.4 扩散模型怎样学习并复原噪声?

Section ID: P5-15.4 Version: v2026.08.28

P5-15.2 和 P5-15.3 把文本生成解释为建立候选分布并选择下一个输出。图像扩散不会从候选中挑出一张完成图像,而是从整幅图像的噪声状态出发,反复计算更接近数据的状态。

本节的问题是:扩散模型把什么作为学习目标,生成时又怎样通过重复计算把噪声推向图像?

正向扩散把原始数据送往噪声状态

扩散模型先在真实数据 x_0 中逐步加入小量随机噪声。目的不是破坏图像,而是构造不同噪声程度的训练输入,使模型学习回到数据方向的线索。

flowchart TD
  Data[原始数据 x₀] --> Forward[按时间步 t 加入噪声]
  Noise[随机噪声 ε] --> Forward
  Forward --> Xt[混入噪声的状态 xₜ]
  Xt --> Train[模型预测 ε]
  Train --> Loss[根据与真实噪声的误差学习]
  Start[生成开始:初始噪声 x_T] --> Predict[预测当前步骤的噪声]
  Predict --> Step[scheduler 计算下一状态]
  Step --> Result[重复后的生成结果]

当时间步 t 较小时,原始轮廓仍较多;随着 t 增大,噪声权重变大。下式简要表示这种混合。

\[ x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon \]

重点不是背诵符号。

符号 本节中的作用
x_0 最初的真实图像或数据状态
epsilon 随机采样并混入的噪声
t 表示加入噪声程度的时间步
x_t 原始数据和噪声混合后的当前状态

同一输入随时间步增大而更接近噪声

这不是被破坏的照片,而是用公式中的权重把自制小网格与高斯噪声混合的观察材料。关键在于:t 越大,模型输入中保留的原始线索越少。

模型预测噪声,而不是完成图像

训练时选择原始状态 x_0、时间步 t 和噪声 epsilon,构造 x_t。随后把 x_tt 给模型,让它预测刚才混入的噪声。

训练步骤 模型接收或产生的内容 为什么需要
1 原始状态 x_0 从训练数据确定起点
2 时间步 t、噪声 epsilon 构造不同噪声程度的输入
3 含噪状态 x_t 模型实际读取的输入
4 预测噪声 epsilon_theta(x_t, t) 估计当前状态中应去除的内容
5 真实噪声与预测噪声的差 构成损失和梯度的学习信号

最简单的解释是最小化真实噪声和预测噪声的均方误差(MSE)。

\[ L = \left\lVert \epsilon - \epsilon_\theta(x_t, t) \right\rVert^2 \]

它仍处在 Part 5 前面见过的损失、梯度和优化器更新位置。新意不在于更新规则,而在于模型要预测的是当前步骤混入的噪声,而不是类别标签或完成图像。

反向生成从噪声开始重复

训练结束后不再提供原始 x_0。从随机噪声开始,模型预测当前噪声,并据此移动到稍微更少噪声的状态。重复后,最终状态就接近图像。

  1. 从初始噪声 x_T 出发。
  2. 输入当前状态 x_t 和时间 t,预测噪声。
  3. 用 scheduler 规则计算下一状态 x_(t-1)
  4. 重复直到得到接近 x_0 的生成结果。

scheduler 既不是模型权重,也不是学习率。它是利用模型预测决定生成状态如何移动到下一步的数值规则。因此,seed、steps 或 scheduler 改变时,同一个训练模型也可能走不同的复原路径。

首先要区分的作用
seed 用于复现初始噪声起点
steps 反向移动的重复次数
scheduler 计算下一状态的数值规则
model weights 学得的、用于预测噪声或复原方向的值

文本生成中的 temperature、top-k、top-p 用于选择下一个 token 候选;扩散 scheduler 则把图像或潜在状态移到下一个复原状态。两者都会影响变体,但不是同一种算法。

观察一个小状态变化

保持小网格和噪声 seed 不变,只改变时间步。要观察的不是“噪声多就看不清”,而是 t 改变了模型输入 x_t,也改变了模型必须估计的去除方向。

改变的值 固定的值 观察内容
时间步 t 原始网格、噪声 seed 原始线索和噪声权重怎样变化
噪声 seed 原始网格、时间步 同一步是否可能出现不同噪声状态
预测噪声误差 x_t、时间步 误差变小时,下一次复原移动的依据怎样改善

P6-21.3 会处理真实公开图像模型的受控测试。本节只需把扩散理解为:在多个噪声等级学习去除方向,再反复应用预测;它不是直接找回原始图像的魔法。

检查清单

  • 我能区分正向扩散、噪声预测训练和反向生成。
  • 我能说明 x_0epsilontx_t 各自代表什么。
  • 我能说明模型为何预测加入的噪声而不是直接预测完成图像。
  • 我能把预测误差与 Part 5 的损失、梯度、更新流程联系起来。
  • 我能区分 scheduler、模型权重和 token 采样。

来源与参考资料