DDPM

DDPM(Denoising Diffusion Probabilistic Model)[1] 通过逐步添加噪声和去噪过程生成样本.DDPM 的训练过程主要分为前向扩散过程(Forward Diffusion Process)反向生成过程(Reverse Diffusion Process).

1. 前向扩散过程

前向扩散是一个逐步添加噪声的过程.给定一个真实数据分布x0q(x0)x_0 \sim q(x_0),通过一系列的马尔科夫链,将数据逐渐添加高斯噪声直到变成纯噪声.

噪声添加公式

q(xtxt1)=N(xt;1βtxt1,βtI), q(x_t \mid x_{t-1}) = \mathcal{N}(x_t; \sqrt{1-\beta_t} x_{t-1}, \beta_t \mathbf{I}),

其中βt\beta_t是一个小正数,表示第tt步的噪声强度.

简化公式
通过数学推导,可以直接从x0x_0采样任意时间步tt的噪声样本:

q(xtx0)=N(xt;αˉtx0,(1αˉt)I), q(x_t \mid x_0) = \mathcal{N}(x_t; \sqrt{\bar{\alpha}_t} x_0, (1-\bar{\alpha}_t) \mathbf{I}),

其中αˉt=i=1t(1βi)\bar{\alpha}_t = \prod_{i=1}^t (1-\beta_i).

在实际实现中,利用这个公式直接生成xtx_t,避免逐步迭代采样.

2. 反向生成过程

反向过程试图通过去噪还原数据,从纯噪声xTN(0,I)x_T \sim \mathcal{N}(0, \mathbf{I})逐步生成真实样本.

反向分布
反向过程的真实分布为:

pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t)), p_\theta(x_{t-1} \mid x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t)),

其中μθ\mu_\thetaΣθ\Sigma_\theta是通过神经网络(U-Net[2])预测的参数.

通常,方差Σθ\Sigma_\theta被固定为某种简单形式(如常数或依赖于βt\beta_t的值),而网络主要学习去噪均值μθ\mu_\theta.

等价形式
利用高斯分布的性质,可以将均值预测重新表示为对噪声的直接预测:

ϵθ(xt,t)ϵ, \epsilon_\theta(x_t, t) \approx \epsilon,

其中ϵ\epsilon是前向扩散过程中加入的噪声.

3. 训练目标

DDPM 的训练目标是最小化反向过程与真实后验分布的差异.通过变分下界(Variational Lower Bound, VLB),最终的训练目标可以简化为一个均方误差(MSE)损失:

Lsimple=Ex0,ϵ,t[ϵϵθ(xt,t)2],\mathcal{L}_{\text{simple}} = \mathbb{E}_{x_0, \epsilon, t} \left[ \|\epsilon - \epsilon_\theta(x_t, t)\|^2 \right],

其中:

  • x0q(x0)x_0 \sim q(x_0):从真实数据分布采样.
  • ϵN(0,I)\epsilon \sim \mathcal{N}(0, \mathbf{I}):采样高斯噪声.
  • tUniform(1,T)t \sim \text{Uniform}(1, T):随机选择时间步.

4. 训练过程

  1. 采样数据和噪声

    • 从数据分布q(x0)q(x_0)中采样一个真实样本x0x_0.
    • 从高斯分布N(0,I)\mathcal{N}(0, \mathbf{I})中采样噪声ϵ\epsilon.
    • 从均匀分布中采样一个时间步tt.
  2. 生成噪声数据:根据公式xt=αˉtx0+1αˉtϵx_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1-\bar{\alpha}_t} \epsilon生成xtx_t.

  3. 预测噪声:使用神经网络ϵθ(xt,t)\epsilon_\theta(x_t, t)预测噪声ϵ\epsilon.

  4. 计算损失
    使用均方误差损失Lsimple\mathcal{L}_{\text{simple}}对预测的噪声与真实噪声进行比较.

  5. 优化模型
    通过反向传播优化网络参数θ\theta.

5. 生成过程

在训练完成后,使用反向扩散过程生成数据:

  1. 从高斯分布N(0,I)\mathcal{N}(0, \mathbf{I})中采样初始噪声xTx_T.
  2. 逐步应用反向公式xt1pθ(xt1xt)x_{t-1} \sim p_\theta(x_{t-1} \mid x_t)去噪,直到生成x0x_0.

6. 附

DDPM可以看作SDE的离散近似,直接由神经网络预测反向时间步的噪声.

[1]https://arxiv.org/abs/2006.11239
[2]https://arxiv.org/abs/1505.04597