尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

【DDPM 扩散模型】Part 7:最后总结!Denoising Diffusion Probabilistic Models论文全维度详解
📅 发布时间:2026/6/19 5:42:47

【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​,βt​I)

  • 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}σt2​I(通常设为βtI\beta_t \mathbf{I}βt​I),不进行训练。

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. Fort=T,…,1t = T, \dots, 1t=T,…,1do:从最后一步倒推。
  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))+σt​z
    • 前半部分(大括号内):基于预测噪声算出的后验均值μ~t\tilde{\mu}_tμ~​t​(确定性部分)。
    • 后半部分 (σtz\sigma_t zσt​z):随机扰动项。模拟朗之万动力学 (Langevin Dynamics),增加多样性,防止图像坍缩。
  5. End for。
  6. Returnx0x_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​。
TTTConstant扩散总步数,通常为 1000。
MSELossMean Squared Error,均方误差。LsimpleL_{\text{simple}}Lsimple​的计算方式。

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

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

相关新闻

  • volatile 的顺序性和可见性原理详解
  • 数据结构之二叉树
  • 2025中山车铣复合数控机床设计口碑与性能综合排行,牙科配件数控车床/CNC数控机床/数控机床/空调配件数控机床车铣复合数控机床采购排行榜 - 品牌推荐师

最新新闻

  • 大连家电维修平台推荐:本地用户实测较好的几家服务商深度对比——2026年6月最新发布 - 一步到家
  • 3步解锁老旧Mac新生命:OpenCore Legacy Patcher终极升级指南
  • 2026宜昌非急救转运救护车TOP5盘点|宜荆荆同城、长江跨江、三峡山地、院区转诊首选康跃转运 - 吉修匠
  • 2026年湖北百合种植基地推荐排行榜:百合技术/百合回收/百合种苗案例参考 - 新闻快传
  • 告别龟速与超时:全方位解决 git clone 网络难题的实战指南
  • 嵌入式MCU电气特性与FLASH操作深度解析:从数据手册到稳定设计

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号