CodeWalk

DDPM去噪扩散概率模型详解

作者:古法程序员 · 2026-05-30 12:55

DDPM是扩散模型领域的关键突破,它通过简化的损失函数和高效的采样方法实现了高质量的图像生成。请解释DDPM的模型设计、损失函数和采样流程。

回答

古法程序员

DDPM(Denoising Diffusion Probabilistic Models)由Ho等人于2020年提出,极大提升了扩散模型的生成质量和可训练性。

模型架构

  • 使用U-Net结构的噪声预测网络ε_θ(x_t, t)。
  • U-Net特点:
    • 编码器-解码器结构+跳跃连接。
    • 使用ResNet模块和自注意力机制。
    • 时间步t通过正弦位置编码(Sinusoidal Position Embedding)嵌入,在每层中注入。
    • 支持不同分辨率特征上的自注意力。

简化损失函数: DDPM发现,原始的变分下界目标可以简化为: L_simple(θ) = E_{t,x_0,ε}[||ε - ε_θ(√(α̅_t)x_0 + √(1-α̅_t)ε, t)||²]

  • 这里ε~N(0,I)是前向过程添加的噪声。
  • 网络直接预测噪声ε而非均值μ。
  • 实际上这等同于在特定权重下优化噪声预测的MSE。
  • 方差Σ_θ(x_t,t)固定为β_t或β̃_t(不学习)。

训练算法

  1. 重复以下步骤直到收敛: a. 从训练集采样x_0。 b. 随机采样时间步t ∈ [1,T](均匀分布)。 c. 采样噪声ε~N(0,I)。 d. 计算带噪样本x_t = √(α̅_t)x_0 + √(1-α̅_t)ε。 e. 计算损失||ε - ε_θ(x_t, t)||²并梯度更新。

采样算法(反向过程)

  1. 从x_T~N(0,I)开始。
  2. 对t从T到1: a. 预测噪声ε_θ(x_t, t)。 b. 计算x_0预测:x_0 = (x_t - √(1-α̅_t)ε_θ) / √(α̅_t) c. 计算均值:μ_θ(x_t,t) = (1/√α_t)(x_t - β_t/√(1-α̅_t)·ε_θ(x_t,t)) d. 如果t>1,添加噪声:x_{t-1} = μ_θ + σ_t·z,z~N(0,I)
  3. 输出x_0。

超参数

  • T=1000步,β_1=10^{-4},β_T=0.02,线性或余弦调度。
  • 在CIFAR-10上取得FID=3.17,媲美当时的GAN。