P5-15.4 扩散模型怎样学习并复原噪声?¶
Section ID:
P5-15.4Version: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_0 | 最初的真实图像或数据状态 |
epsilon | 随机采样并混入的噪声 |
t | 表示加入噪声程度的时间步 |
x_t | 原始数据和噪声混合后的当前状态 |
这不是被破坏的照片,而是用公式中的权重把自制小网格与高斯噪声混合的观察材料。关键在于:t 越大,模型输入中保留的原始线索越少。
模型预测噪声,而不是完成图像¶
训练时选择原始状态 x_0、时间步 t 和噪声 epsilon,构造 x_t。随后把 x_t 与 t 给模型,让它预测刚才混入的噪声。
| 训练步骤 | 模型接收或产生的内容 | 为什么需要 |
|---|---|---|
| 1 | 原始状态 x_0 | 从训练数据确定起点 |
| 2 | 时间步 t、噪声 epsilon | 构造不同噪声程度的输入 |
| 3 | 含噪状态 x_t | 模型实际读取的输入 |
| 4 | 预测噪声 epsilon_theta(x_t, t) | 估计当前状态中应去除的内容 |
| 5 | 真实噪声与预测噪声的差 | 构成损失和梯度的学习信号 |
最简单的解释是最小化真实噪声和预测噪声的均方误差(MSE)。
它仍处在 Part 5 前面见过的损失、梯度和优化器更新位置。新意不在于更新规则,而在于模型要预测的是当前步骤混入的噪声,而不是类别标签或完成图像。
反向生成从噪声开始重复¶
训练结束后不再提供原始 x_0。从随机噪声开始,模型预测当前噪声,并据此移动到稍微更少噪声的状态。重复后,最终状态就接近图像。
- 从初始噪声
x_T出发。 - 输入当前状态
x_t和时间t,预测噪声。 - 用 scheduler 规则计算下一状态
x_(t-1)。 - 重复直到得到接近
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_0、epsilon、t、x_t各自代表什么。 - 我能说明模型为何预测加入的噪声而不是直接预测完成图像。
- 我能把预测误差与 Part 5 的损失、梯度、更新流程联系起来。
- 我能区分 scheduler、模型权重和 token 采样。
来源与参考资料¶
- Jonathan Ho, Ajay Jain, Pieter Abbeel, Denoising Diffusion Probabilistic Models, arXiv, 2020,确认日期:2026-08-28。
- Yang Song et al., Score-Based Generative Modeling through Stochastic Differential Equations, arXiv, 2021,确认日期:2026-08-28。