【DDPM 扩散模型】Part 7:最后总结!Denoising Diffusion Probabilistic Models论文全维度详解

【DDPM 扩散模型】Part 7:最后总结!Denoising Diffusion Probabilistic Models论文全维度详解

这是整个扩散模型体系从「基础 → 全局」的总结。

希望这篇文章能够让你真正理解DDPM

1. 模型总览

扩散模型包含两个过程:

  1. 正向过程 (Forward Process / Diffusion Process, qqq):固定规则的马尔可夫链,逐渐向数据添加高斯噪声,直至数据变成纯噪声。
  2. 反向过程 (Reverse Process, pθp_\thetapθ) :参数化的马尔可夫链,训练神经网络去学习逆向去噪的概率分布,从纯噪声还原数据。

2. 正向过程 (Forward Process)

正向过程被定义为一个固定的马尔可夫链。给定真实数据分布 x0∼q(x0)x_0 \sim q(x_0)x0∼q(x0),我们在每一步添加少量高斯噪声。

2.1 单步转移公式

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

  • xtx_txt:当前时间步的图像变量。
  • βt\beta_tβt方差调度参数 (Variance Schedule) 。这是一个预先设定的超参数(常数),随 ttt 线性增加(如 10−4→0.0210^{-4} \to 0.0210−4→0.02)。它决定了每一步加噪的幅度。
  • 1−βt\sqrt{1 - \beta_t}1−βt :对上一步图像 xt−1x_{t-1}xt−1 的缩放系数。为了防止在不断加噪过程中数值爆炸,必须衰减原始信号,以保持方差稳定。
  • N\mathcal{N}N:表示高斯(正态)分布。

2.2 任意步转移公式 (重参数化技巧)

为了高效训练,我们需要直接从 x0x_0x0 得到 xtx_txt,而不是循环 ttt 次。

定义新变量:

  • αt=1−βt\alpha_t = 1 - \beta_tαt=1−βt
  • αˉt=∏s=1tαs\bar{\alpha}t = \prod{s=1}^t \alpha_sαˉt=∏s=1tαs (累积乘积)

推导出的边缘分布公式为:
q(xt∣x0)=N(xt;αˉtx0,(1−αˉt)I)q(x_t | x_0) = \mathcal{N}(x_t; \sqrt{\bar{\alpha}_t}x_0, (1 - \bar{\alpha}_t)\mathbf{I})q(xt∣x0)=N(xt;αˉt x0,(1−αˉt)I)

采样形式(用于代码实现):
xt=αˉtx0+1−αˉtϵ,ϵ∼N(0,I)x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon, \quad \epsilon \sim \mathcal{N}(0, \mathbf{I})xt=αˉt x0+1−αˉt ϵ,ϵ∼N(0,I)

  • αˉtx0\sqrt{\bar{\alpha}_t} x_0αˉt x0信号项 。随着 ttt 增大,αˉt→0\bar{\alpha}_t \to 0αˉt→0,原始图像信息逐渐消失。
  • 1−αˉtϵ\sqrt{1 - \bar{\alpha}_t} \epsilon1−αˉt ϵ噪声项 。随着 ttt 增大,系数趋向 1,噪声主导图像。
  • ϵ\epsilonϵ :从标准正态分布采样的真实噪声 ,这是后续训练的Target(标签)

3. 反向过程与后验分布 (Reverse Process)

反向过程的目标是推断 q(xt−1∣xt)q(x_{t-1} | x_t)q(xt−1∣xt)。由于我们无法直接求得 q(xt−1∣xt)q(x_{t-1} | x_t)q(xt−1∣xt)(需要遍历整个数据集),我们使用神经网络 pθp_\thetapθ 来近似它。

3.1 近似分布定义

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

  • μθ(xt,t)\mu_\theta(x_t, t)μθ(xt,t) :模型需要预测的均值(核心学习目标)。
  • Σθ(xt,t)\Sigma_\theta(x_t, t)Σθ(xt,t) :模型需要预测的方差 。在 DDPM 论文中,作者将其固定为常数 σt2I\sigma_t^2 \mathbf{I}σt2I(通常设为 βtI\beta_t \mathbf{I}βtI),不进行训练

3.2 真实的后验均值 (μ~t\tilde{\mu}_tμ~t)

为了指导模型预测均值 μθ\mu_\thetaμθ,我们需要知道理论上的真实后验均值 μ~t\tilde{\mu}_tμ~t 是什么。

利用贝叶斯公式 q(xt−1∣xt,x0)q(x_{t-1} | x_t, x_0)q(xt−1∣xt,x0),可以推导出:

μ~t(xt,x0)=1αt(xt−βt1−αˉtϵ)\tilde{\mu}_t(x_t, x_0) = \frac{1}{\sqrt{\alpha_t}} \Big( x_t - \frac{\beta_t}{\sqrt{1 - \bar{\alpha}_t}} \epsilon \Big)μ~t(xt,x0)=αt 1(xt−1−αˉt βtϵ)

  • 这个公式表明:如果我们知道 xtx_txt 和其中包含的噪声 ϵ\epsilonϵ,我们就能算出最佳的去噪方向,回到 xt−1x_{t-1}xt−1 的中心。
  • 逻辑链
    1. 真实反向均值 μ~t\tilde{\mu}_tμ~t 由 xtx_txt 和 ϵ\epsilonϵ 决定。
    2. 模型输入是 xtx_txt,但不知道 ϵ\epsilonϵ。
    3. 因此,模型的任务变成了:预测 xtx_txt 中的噪声 ϵ\epsilonϵ

4. 训练目标 (Training Objective)

4.1 参数化选择

根据 3.2 的推导,我们将模型的均值 μθ\mu_\thetaμθ 参数化为:
μθ(xt,t)=1αt(xt−βt1−αˉtϵθ(xt,t))\mu_\theta(x_t, t) = \frac{1}{\sqrt{\alpha_t}} \Big( x_t - \frac{\beta_t}{\sqrt{1 - \bar{\alpha}t}} \epsilon\theta(x_t, t) \Big)μθ(xt,t)=αt 1(xt−1−αˉt βtϵθ(xt,t))

  • ϵθ(xt,t)\epsilon_\theta(x_t, t)ϵθ(xt,t) :这是神经网络的直接输出。网络接收 xtx_txt 和 ttt,输出一个与图像同维度的噪声预测图。
  • θ\thetaθ:神经网络(U-Net)的所有可学习参数(权重和偏置)。

4.2 简化损失函数 (Simplified Loss)

原始的变分下界 (ELBO) 包含复杂的 KL 散度项。论文证明,通过上述参数化,优化 KL 散度等价于优化预测噪声和真实噪声之间的 均方误差 (MSE)

Lsimple(θ)=Et,x0,ϵ[∥ϵ−ϵθ(αˉtx0+1−αˉtϵ,t)∥2]L_{\text{simple}}(\theta) = \mathbb{E}{t, x_0, \epsilon} \Big[ \| \epsilon - \epsilon\theta(\sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon, t) \|^2 \Big]Lsimple(θ)=Et,x0,ϵ[∥ϵ−ϵθ(αˉt x0+1−αˉt ϵ,t)∥2]

  • ϵ\epsilonϵ:正向过程中加入的真实噪声(Ground Truth)。
  • ϵθ(...)\epsilon_\theta(...)ϵθ(...):模型根据脏图预测的噪声。
  • 优化过程 :梯度下降更新 θ\thetaθ,使 ϵθ\epsilon_\thetaϵθ 无限接近 ϵ\epsilonϵ。

5. 算法流程 (Algorithms)

这是模型落地的具体步骤,对应论文中的伪代码。

5.1 训练算法 (Training)

  1. Repeat:开始迭代训练。
  2. x0∼q(x0)x_0 \sim q(x_0)x0∼q(x0):从数据集中采样一张洁净图片。
  3. t∼Uniform({1,...,T})t \sim \text{Uniform}(\{1, \dots, T\})t∼Uniform({1,...,T}) :随机采样一个时间步(例如 t=500t=500t=500)。
  4. ϵ∼N(0,I)\epsilon \sim \mathcal{N}(0, \mathbf{I})ϵ∼N(0,I):采样一个标准高斯噪声。
  5. 构造 xtx_txt :计算 xt=αˉtx0+1−αˉtϵx_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilonxt=αˉt x0+1−αˉt ϵ。
  6. 计算梯度 :计算损失 ∥ϵ−ϵθ(xt,t)∥2\| \epsilon - \epsilon_\theta(x_t, t) \|^2∥ϵ−ϵθ(xt,t)∥2 关于 θ\thetaθ 的梯度。
  7. 更新 θ\thetaθ:使用优化器(如 Adam)更新网络参数。
  8. Until converged:直到 Loss 不再下降。

5.2 采样算法 (Sampling / Inference)

  1. xT∼N(0,I)x_T \sim \mathcal{N}(0, \mathbf{I})xT∼N(0,I):从标准正态分布采样纯噪声。
  2. For t=T,...,1t = T, \dots, 1t=T,...,1 do:从最后一步倒推。
  3. z∼N(0,I)z \sim \mathcal{N}(0, \mathbf{I})z∼N(0,I) :采样随机噪声(如果 t=1t=1t=1 则 z=0z=0z=0)。
  4. 计算去噪步
    xt−1=1αt(xt−1−αt1−αˉtϵθ(xt,t))+σtzx_{t-1} = \frac{1}{\sqrt{\alpha_t}} \Big( x_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}t}} \epsilon\theta(x_t, t) \Big) + \sigma_t zxt−1=αt 1(xt−1−αˉt 1−αtϵθ(xt,t))+σtz
    • 前半部分(大括号内):基于预测噪声算出的后验均值 μ~t\tilde{\mu}_tμ~t(确定性部分)。
    • 后半部分 (σtz\sigma_t zσtz):随机扰动项。模拟朗之万动力学 (Langevin Dynamics),增加多样性,防止图像坍缩。
  5. End for
  6. Return x0x_0x0:输出生成的图像。

6. 网络架构 (Model Architecture)

在实现中,ϵθ\epsilon_\thetaϵθ 具体由以下组件构成:

  1. Backbone: U-Net

    • 输入 :xtx_txt (例如 32×32×332 \times 32 \times 332×32×3)。
    • 输出 :ϵpred\epsilon_\text{pred}ϵpred (与输入同尺寸 32×32×332 \times 32 \times 332×32×3)。
    • 结构:包含下采样(Downsampling)提取特征,瓶颈层(Bottleneck)处理语义,上采样(Upsampling)恢复分辨率。
  2. Time Embedding (位置编码)

    • 问题 :U-Net 共享权重,必须知道当前处理的是 ttt 是多少。
    • 解决 :使用 Transformer 中的正弦位置编码 (Sinusoidal Embedding) 将标量 ttt 映射为向量,通过 MLP 处理后,加到 U-Net 的每个残差块 (Residual Block) 中。
  3. Self-Attention (自注意力)

    • 位置 :通常在 U-Net 的低分辨率层(如 16×1616 \times 1616×16 特征图处)。
    • 目的:捕捉长距离依赖(Global Context),解决卷积核感受野有限的问题。

7. 符号公式完整对照表

符号 定义/公式 含义与备注
x0x_0x0 Data 真实数据(原图)。
xTx_TxT N(0,I)\mathcal{N}(0, \mathbf{I})N(0,I) 纯高斯噪声,正向过程的终点,反向过程的起点。
xtx_txt Latent 第 ttt 步的潜变量(含噪图像)。
ϵ\epsilonϵ Noise 真实噪声 。训练时的 Target,服从 N(0,I)\mathcal{N}(0, \mathbf{I})N(0,I)。
ϵθ\epsilon_\thetaϵθ Function 预测噪声 。神经网络的输出,依赖于输入 xt,tx_t, txt,t 和参数 θ\thetaθ。
θ\thetaθ Parameters 神经网络(U-Net)的所有权重和偏置。
βt\beta_tβt Hyperparameter 方差调度。控制每一步加噪的量。常数,线性增加。
αt\alpha_tαt 1−βt1 - \beta_t1−βt 单步保留原始信息的比例。
αˉt\bar{\alpha}_tαˉt ∏s=1tαs\prod_{s=1}^t \alpha_s∏s=1tαs 累积保留比例 。用于一步计算 xtx_txt。
q(xt∣x0)q(x_t|x_0)q(xt∣x0) Distribution 正向扩散分布 。根据 αˉt\bar{\alpha}_tαˉt 直接定义的分布。
pθ(xt−1∣xt)p_\theta(x_{t-1}|x_t)pθ(xt−1∣xt) Distribution 反向生成分布。模型试图拟合的目标分布。
μ~t\tilde{\mu}_tμ~t Formula 真实后验均值 。已知 x0x_0x0 时,xt−1x_{t-1}xt−1 的理论最佳中心。
μθ\mu_\thetaμθ Formula 预测均值 。模型通过预测 ϵθ\epsilon_\thetaϵθ 间接计算出的 xt−1x_{t-1}xt−1 中心。
σt\sigma_tσt / Σ\SigmaΣ Formula 反向过程的方差。DDPM 中固定为 βt\beta_tβt 或 β~t\tilde{\beta}_tβ~t。
TTT Constant 扩散总步数,通常为 1000。
MSE Loss Mean Squared Error,均方误差。LsimpleL_{\text{simple}}Lsimple 的计算方式。

🎉祝你天天开心,我将更新更多有意思的内容,欢迎关注!

最后更新:2025年12月
作者:Echo

相关推荐
winfield8212 小时前
推荐/搜索系统的召回、精排、粗排、打散这四个环节都是做什么的?
大数据·人工智能
540_5402 小时前
ADVANCE Day23
人工智能·python·机器学习
有为少年2 小时前
数据增强在小型卷积神经网络中的有效性探究
人工智能·深度学习·神经网络·机器学习·cnn
雪花desu2 小时前
什么是融入 CoT 写 prompt
人工智能·语言模型
AIBox3653 小时前
ChatGPT 中文版镜像官网,GPT5.2使用教程(2025年 12 月更新)
人工智能
测试人社区-千羽3 小时前
生物识别系统的测试安全性与漏洞防护实践
运维·人工智能·opencv·安全·数据挖掘·自动化·边缘计算
2501_924794903 小时前
企业AI转型为何难?——从“不敢用”到“用得稳”的路径重构
大数据·人工智能·重构
Tezign_space3 小时前
小红书内容运营工具怎么选?专业视角拆解优质工具核心标准
大数据·人工智能·内容运营
老马啸西风3 小时前
成熟企业级技术平台 MVE-010-跳板机 / 堡垒机(Jump Server / Bastion Host)
人工智能·深度学习·算法·职场和发展