Diffusion Process:正向扩散过程

在扩散模型(Diffusion Models)里,diffusion process 通常指”正向扩散过程”,也就是把真实数据逐步加噪,最终变成接近标准高斯噪声的过程。

它的核心作用是:构造一个可控的破坏过程,然后训练神经网络学会反过来去噪。

1. 基本思想

给定真实数据:x0∼q(x0)x_0 \sim q(x_0)

其中 x0x_0 可以是一张图片、一段音频、一个 latent 表示等。

扩散过程会在很多个时间步中不断加入高斯噪声:

x0→x1→x2→⋯→xTx_0 \rightarrow x_1 \rightarrow x_2 \rightarrow \cdots \rightarrow x_T

当 TT 足够大时,xTx_T 接近一个标准高斯分布:xT∼N(0,I)x_T \sim \mathcal{N}(0, I)

也就是说,原始图像会被逐渐”污染”成纯噪声。

2. 正向扩散过程的数学定义

在 DDPM 里,正向扩散过程通常被定义为一个马尔可夫链:

q(xt∣xt−1)=N(xt; 1−βt xt−1, βtI)q(x_t \mid x_{t-1}) = \mathcal{N} \left( x_t;\,\sqrt{1-\beta_t}\,x_{t-1},\,\beta_t I \right)

q(x1:T∣x0)=∏t=1Tq(xt∣xt−1)q(x_{1:T} \mid x_0)=\prod_{t=1}^{T} q(x_t \mid x_{t-1})

这里 βt\beta_t 是第 t 步加入噪声的强度,通常称为 noise schedule。

可以把它理解为:xt=1−βt xt−1+βt ϵx_t = \sqrt{1-\beta_t}\,x_{t-1} + \sqrt{\beta_t}\,\epsilon

其中 ϵ∼N(0,I)\epsilon \sim \mathcal{N}(0, I),也就是每一步保留一部分原信号,再加入一部分高斯噪声。

3. 闭式采样形式

正向过程有一个很重要的性质:可以直接从 x0x_0 得到任意时间步的 xtx_t,不需要一步一步加噪。

定义:αt=1−βt\alpha_t = 1 - \beta_t,αˉt=∏s=1tαs\bar{\alpha}_t = \prod_{s=1}^{t} \alpha_s

则有:q(xt∣x0)=N(xt; αˉt x0, (1−αˉt)I)q(x_t \mid x_0) = \mathcal{N} \left( x_t;\,\sqrt{\bar{\alpha}_t}\,x_0,\,(1-\bar{\alpha}_t)I \right)

等价地:xt=αˉt x0+1−αˉt ϵx_t = \sqrt{\bar{\alpha}_t}\,x_0 + \sqrt{1-\bar{\alpha}_t}\,\epsilon

这里可以清楚看到:αˉt x0\sqrt{\bar{\alpha}_t}\,x_0 是保留下来的原始信号部分,而 1−αˉt ϵ\sqrt{1-\bar{\alpha}_t}\,\epsilon 是加入的噪声部分。

随着 t 增大, αˉt\bar{\alpha}_t 逐渐变小, 原始信号越来越弱, 噪声越来越强。

diffusion process 的本质是在定义数据到噪声的桥

扩散模型的目标并不是正向加噪本身, 而是学习它的逆过程:pθ(xt−1∣xt)p_\theta(x_{t-1} \mid x_t)

也就是从噪声中一步步恢复数据:xT→xT−1→⋯→x0x_T \rightarrow x_{T-1} \rightarrow \cdots \rightarrow x_0

正向 diffusion process 是人为设计的,通常不需要学习;反向 denoising process 才是需要神经网络学习的部分。

所以从专业角度看: diffusion process 是一个固定的随机退化过程,它把复杂的数据分布逐渐映射到简单的高斯分布;模型训练的任务是学习这个随机过程的时间反演。

4.直观解释

可以这样理解:

正向过程:

把一张清晰图像一点点打乱,直到它完全变成噪声。

反向过程:

训练一个模型学会从噪声中逐步恢复结构,最后生成一张合理的新图像。

训练时,模型通常不是直接预测 xt−1x_{t-1},而是预测噪声:ϵθ(xt,t)\epsilon_\theta(x_t, t)

目标是让它接近真实加入的噪声:ϵθ(xt,t)≈ϵ\epsilon_\theta(x_t, t) \approx \epsilon

常见训练损失为:L=Ex0,ϵ,t[∥ϵ−ϵθ(xt,t)∥2]L = \mathbb{E}_{x_0, \epsilon, t} \left[ \|\epsilon - \epsilon_\theta(x_t,t)\|^2 \right]

这就是为什么 diffusion model 训练时常被描述为”噪声预测”或”去噪训练”。