CodeWalk

Diffusion Model前向过程与反向过程

作者:小字辈 · 2026-05-30 12:55

扩散模型通过前向扩散和反向去噪实现高质量生成。请详细解释前向过程(加噪)、反向过程(去噪)的数学原理,以及它们与VAE、GAN的关系。

回答

小字辈

扩散模型(Diffusion Model)由Sohl-Dickstein等人于2015年提出,经Ho等人(DDPM, 2020)改进后成为生成模型的主流方向。

前向过程(扩散过程)

  • 逐步向真实数据x_0添加高斯噪声,经过T步后近似为标准正态分布。
  • q(x_t|x_{t-1}) = N(x_t; √(1-β_t)x_{t-1}, β_tI)
  • 其中β_t是预定义的噪声调度(线性、余弦等),随时间递增。
  • 通过重参数化技巧,任意时刻的x_t可直接从x_0计算: x_t = √(α̅_t)x_0 + √(1-α̅_t)ε,其中α_t=1-β_t,α̅_t=Π_{s=1}^t α_s,ε~N(0,I)
  • 前向过程无参数,是马尔可夫链。

反向过程(去噪过程)

  • 目标是学习逆分布p_θ(x_{t-1}|x_t),从噪声逐步恢复数据。
  • 参数化为高斯分布:p_θ(x_{t-1}|x_t) = N(x_{t-1}; μ_θ(x_t,t), Σ_θ(x_t,t))
  • 训练网络ε_θ(x_t,t)预测添加的噪声ε: L_simple = E_{t,x_0,ε}[||ε - ε_θ(√(α̅_t)x_0 + √(1-α̅_t)ε, t)||²]
  • 推理时从x_T~N(0,I)开始,逐步去噪T步得到x_0。

与VAE的关系

  • 扩散模型本质上是一个多层隐变量模型(Hierarchical VAE),隐变量为x_1,...,x_T。
  • 但扩散模型的前向过程是固定的(非学习的),VAE的编码器是学习的。

与GAN的关系

  • 扩散模型通过优化似然下界(ELBO)训练,不涉及对抗训练,训练更稳定。
  • 但推理需要多步采样(DDPM需1000步),速度远慢于GAN的单步生成。
  • DDIM(2021)通过非马尔可夫过程将采样步数降至50步以下。
  • 潜在扩散模型(LDM/Stable Diffusion)在潜空间进行扩散,大大降低计算成本。