DDPM模型——公式推导

本文深入探讨了DenoisingDiffusionProbabilisticModels(DDPM)的概念,包括其PyTorch实现、联合概率、逆扩散过程的数学表达以及训练中的损失函数。DDPM是一种生成模型,通过逐步加噪和去噪过程来生成高质图像。文章还介绍了模型参数、马尔科夫链、正态分布的叠加以及KL散度在模型中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

论文传送门:Denoising Diffusion Probabilistic Models
代码实现:DDPM模型——pytorch实现
推荐视频:54、Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读

需要的数学基础:

联合概率(Joint probability):
P ( A , B , C ) = P ( C ∣ B , A ) P ( B , A ) = P ( C ∣ B , A ) P ( B ∣ A ) P ( A ) P(A, B, C)=P(C \mid B, A) P(B, A)=P(C \mid B, A) P(B \mid A) P(A) P(A,B,C)=P(CB,A)P(B,A)=P(CB,A)P(BA)P(A)
条件概率(Conditional probability):
P ( B , C ∣ A ) = P ( B ∣ A ) P ( C ∣ A , B ) P(B, C \mid A)=P(B \mid A) P(C \mid A, B) P(B,CA)=P(BA)P(CA,B)
马尔可夫链(Markov Chain):
p ( X t + 1 ∣ X t , … , X 1 ) = p ( X t + 1 ∣ X t ) p\left(X_{t+1} \mid X_{t}, \ldots, X_{1}\right)=p\left(X_{t+1} \mid X_{t}\right) p(Xt+1Xt,,X1)=p(Xt+1Xt)
贝叶斯公式(Bayes Rule):
P ( A i ∣ B ) = P ( B ∣ A i ) P ( A i ) ∑ j P ( B ∣ A j ) P ( A j ) P\left(A_{i} \mid B\right)=\frac{P\left(B \mid A_{i}\right) P\left(A_{i}\right)}{\sum_{j} P\left(B \mid A_{j}\right) P\left(A_{j}\right)} P(AiB)=jP(BAj)P(Aj)P(BAi)P(Ai)
正态分布(Normal distribution) X ∼ N ( μ , σ 2 ) X \sim N\left(\mu, \sigma^{2}\right) XN(μ,σ2)的概率密度函数:
f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 f(x)=\frac{1}{\sqrt{2 \pi} \sigma} e^{-\frac{(x-\mu)^{2}}{2 \sigma^{2}}} f(x)=2π σ1e2σ2(xμ)2
两个正态分布 X ∼ N ( μ X , σ X 2 ) X \sim N\left(\mu_{X}, \sigma_{X}^{2}\right) XN(μX,σX2) Y ∼ N ( μ Y , σ Y 2 ) Y \sim N\left(\mu_{Y}, \sigma_{Y}^{2}\right) YN(μY,σY2)的叠加:
U = X + Y ∼ N ( μ X + μ Y , σ X 2 + σ Y 2 ) U=X+Y \sim N\left(\mu_{X}+\mu_{Y}, \sigma_{X}^{2}+\sigma_{Y}^{2}\right) U=X+YN(μX+μY,σX2+σY2)
两个正态分布 p , q p,q p,q的KL散度(Kullback-Leibler divergence):
K L ( p , q ) = log ⁡ σ q σ p + σ p 2 + ( μ p − μ q ) 2 2 σ q 2 − 1 2 K L(p, q)=\log \frac{\sigma_{q}}{\sigma_{p}}+\frac{\sigma_{p}^{2}+\left(\mu_{p}-\mu_{q}\right)^{2}}{2 \sigma_{q}^{2}}-\frac{1}{2} KL(p,q)=logσpσq+2σq2σp2+(μpμq)221
重参数技巧(Reparameterrization):
若 X ∼ N ( μ , σ 2 ) , Y = X − μ σ ∼ N ( 0 , 1 ) 若X \sim N\left(\mu, \sigma^{2}\right), Y=\frac{X-\mu}{\sigma} \sim N(0,1) XN(μ,σ2),Y=σXμN(0,1)
从正态分布 X X X中采样 z z z,等价于从标准正态分布 Y Y Y中采样 z ′ z' z z = μ + σ × z ′ z = \mu + \sigma \times z' z=μ+σ×z
一元二次式的配方:
a x 2 + b x = a ( x + b 2 a ) 2 + C a x^{2}+b x=a\left(x+\frac{b}{2 a}\right)^{2}+C ax2+bx=a(x+2ab)2+C

概念:

t t t:时刻(加噪次数)
T T T:总时长(总加噪次数)
x \mathbf{x} x:图像
x 0 \mathbf{x}_{0} x0:初始时刻图像
x t \mathbf{x}_{t} xt t t t时刻图像
x T \mathbf{x}_{T} xT:终止时刻图像
x 0 x_0 x0 ~ q ( x 0 ) q(x_0) q(x0) q ( x 0 ) q(x_0) q(x0):真实图像分布
p θ ( x 0 ) : = ∫ p θ ( x 0 : T ) d x 1 : T p_\theta (x_0) := \int p_\theta (x_{0:T}) d x_{1:T} pθ(x0):=pθ(x0:T)dx1:T p θ ( x 0 ) p_\theta (x_0) pθ(x0):生成图像分布
θ \theta θ:(网络)参数
β t \beta_{t} βt:扩散过程t时刻加入噪声的方差
β \beta β:噪声方差序列,长度为T,在 ( 0 , 1 ) (0,1) (0,1)区间内单调递增

Reverse process:

逆扩散过程的数学表达:
p θ ( x 0 : T ) : = p ( x T ) ∏ t = 1 T p θ ( x t − 1 ∣ x t ) p_{\theta}\left(\mathbf{x}_{0: T}\right):=p\left(\mathbf{x}_{T}\right) \prod_{t=1}^{T} p_{\theta}\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right) pθ(x0:T):=p(xT)t=1Tpθ(xt1xt)
全部时刻图像的联合概率分布 p θ ( x 0 : T ) p_{\theta}\left(\mathbf{x}_{0: T}\right) pθ(x0:T),整个过程是马尔科夫链。其中,
p ( x T ) = N ( x T ; 0 , I ) p\left(\mathbf{x}_{T}\right)=\mathcal{N}\left(\mathbf{x}_{T} ; \mathbf{0}, \mathbf{I}\right) p(xT)=N(xT;0,I)
p ( x T ) p\left(\mathbf{x}_{T}\right) p(xT)是标准正态分布, x T \mathbf{x}_{T} xT为采样值,与网络参数无关。
t t t时刻去噪的数学表达:
p θ ( x t − 1 ∣ x t ) : = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) p_{\theta}\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right):=\mathcal{N}\left(\mathbf{x}_{t-1} ; \boldsymbol{\mu}_{\theta}\left(\mathbf{x}_{t}, t\right), \boldsymbol{\Sigma}_{\theta}\left(\mathbf{x}_{t}, t\right)\right) pθ(xt1xt):=N(xt1;μθ(xt,t),Σθ(xt,t))
x t − 1 \mathbf{x}_{t-1} xt1服从均值为 μ θ ( x t , t ) \boldsymbol{\mu}_{\theta}\left(\mathbf{x}_{t}, t\right) μθ(xt,t),方差为 Σ θ ( x t , t ) \boldsymbol{\Sigma}_{\theta}\left(\mathbf{x}_{t}, t\right) Σθ(xt,t)的正态分布,作者在原文中将方差 Σ θ ( x t , t ) \boldsymbol{\Sigma}_{\theta}\left(\mathbf{x}_{t}, t\right) Σθ(xt,t)设为 σ t 2 = β ~ t = 1 − α ˉ t − 1 1 − α ˉ t β t \sigma_{t}^{2}=\tilde{\beta}_{t}=\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_{t}} \beta_{t} σt2=β~t=1αˉt1αˉt1βt(经实验, σ t 2 = β t \sigma_{t}^{2}={\beta}_{t} σt2=βt σ t 2 = β ~ t \sigma_{t}^{2}=\tilde{\beta}_{t} σt2=β~t的结果相似),与模型参数无关( β ~ t \tilde{\beta}_{t} β~t在后续计算中会提到)。

Forward process:

扩散过程的数学表达:
q ( x 1 : T ∣ x 0 ) : = ∏ t = 1 T q ( x t ∣ x t − 1 ) q\left(\mathbf{x}_{1: T} \mid \mathbf{x}_{0}\right):=\prod_{t=1}^{T} q\left(\mathbf{x}_{t} \mid \mathbf{x}_{t-1}\right) q(x1:Tx0):=t=1Tq(xtxt1)
给定初始图像 x 0 \mathbf{x}_{0} x0,全部时刻( t > 0 t>0 t>0)的联合概率分布,整个过程是马尔科夫链。
t t t时刻加噪的数学表达:
q ( x t ∣ x t − 1 ) : = N ( x t ; 1 − β t x t − 1 , β t I ) q\left(\mathbf{x}_{t} \mid \mathbf{x}_{t-1}\right):=\mathcal{N}\left(\mathbf{x}_{t} ; \sqrt{1-\beta_{t}} \mathbf{x}_{t-1}, \beta_{t} \mathbf{I}\right) q(xtxt1):=N(xt;1βt xt1,βtI)
x t \mathbf{x}_{t} xt服从均值为 1 − β t x t − 1 \sqrt{1-\beta_{t}} \mathbf{x}_{t-1} 1βt xt1,方差为 β t \beta_{t} βt的正态分布。
使用重参数技巧,任意时刻的图像 x t \mathbf{x}_{t} xt可以由初始时刻图像 x 0 \mathbf{x}_{0} x0和噪声方差序列 β \beta β来确定,为简化表达,定义 α t : = 1 − β t \alpha_{t}:=1-\beta_{t} αt:=1βt α ˉ t : = ∏ s = 1 t α s \bar{\alpha}_{t}:=\prod_{s=1}^{t} \alpha_{s} αˉt:=s=1tαs,则:
x t = α t x t − 1 + 1 − α t ϵ t − 1 = α t ( α t − 1 x t − 2 + 1 − α t − 1 ϵ t − 2 ) + 1 − α t ϵ t − 1 = α t α t − 1 x t − 2 +

<think>嗯,用户想了解DDPM模型的相关信息,包括原理、实现方法和应用场景。首先,我需要回忆一下DDPM的基本概念。根据提供的引用,DDPM是基于扩散过程的生成模型,灵感来自非平衡热力学。它的核心是通过马尔可夫链逐步添加噪声,然后学习逆向过程去噪生成数据。 接下来,原理部分需要分步骤解释。前向过程是逐步加噪,每次添加高斯噪声,这类似于扩散现象。这里可能需要数学公式,比如使用$q(x_t|x_{t-1})$表示每一步的转移。然后逆向过程是学习如何从噪声中恢复数据,这里涉及变分推断,估计条件概率分布。引用中的变分推断和马尔可夫链需要结合起来说明。 实现方法方面,DDPM需要定义时间步的beta调度,比如线性或余弦调度。网络架构通常使用U-Net,结合时间步嵌入。训练过程需要最小化噪声预测的损失函数,这部分可以用均方误差。引用里提到了训练过程的公式分析,可能需要具体说明损失函数的形式。 应用场景方面,用户提供的引用提到高质量图像生成、灵活控制和可解释性。需要列举具体的应用,比如图像合成、风格迁移等,并引用相关引用中的内容。 另外,用户示例中的结构需要遵循,比如分章节,使用LaTeX公式,并在引用后添加标识。要注意所有行内数学表达式用$...$,独立公式用$$...$$,并检查语法正确性。 可能还需要生成相关问题,考虑用户可能进一步想知道DDPM与其他模型(如VAE、GAN)的区别,优化方法,或者数学推导细节。需要确保问题相关且基于现有内容。 最后,确保回答结构清晰,逐步引导用户理解,同时保持真实可靠,引用提供的资料。</think>### DDPM模型详解 #### 一、基本原理 DDPM(Denoising Diffusion Probabilistic Model)是一种基于**扩散过程**的深度生成模型,其核心思想通过**马尔可夫链**逐步向数据添加噪声,再学习逆向过程从噪声中重建数据[^1]。 ##### 1. 前向过程(扩散过程) 定义马尔可夫链逐步添加高斯噪声: $$q(x_{1:T}|x_0) = \prod_{t=1}^T q(x_t|x_{t-1})$$ 其中单步噪声添加公式为: $$q(x_t|x_{t-1}) = \mathcal{N}(x_t; \sqrt{1-\beta_t}x_{t-1}, \beta_t\mathbf{I})$$ 其中$\beta_t$是预定义的噪声调度参数,控制噪声添加速度[^4]。 ##### 2. 逆向过程(去噪过程) 学习反向分布$p_\theta(x_{t-1}|x_t)$,通过神经网络预测噪声: $$\mu_\theta(x_t,t) = \frac{1}{\sqrt{\alpha_t}} \left( x_t - \frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}} \epsilon_\theta(x_t,t) \right)$$ 其中$\alpha_t=1-\beta_t$,$\bar{\alpha}_t=\prod_{s=1}^t \alpha_s$,$\epsilon_\theta$是噪声预测网络[^3]。 #### 二、实现方法 ##### 1. 关键组件 - **噪声调度**:采用余弦调度定义$\beta_t$,平衡高频与低频信号处理 - **U-Net架构**:加入时间步嵌入,用于噪声预测 - **损失函数**:简化后的均方误差损失: $$L(\theta) = \mathbb{E}_{t,x_0,\epsilon} \left[ \|\epsilon - \epsilon_\theta(\sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon, t)\|^2 \right]$$ ##### 2. 训练流程 ```python # 伪代码示例 for batch in dataset: x0 = sample_real_data() t = uniform_sample(1, T) ε = sample_gaussian_noise() xt = sqrt(α_bar_t)*x0 + sqrt(1-α_bar_t)*ε ε_pred = model(xt, t) loss = mse_loss(ε, ε_pred) update_model(loss) ``` #### 三、应用场景 1. **高质量图像生成**:生成分辨率达1024x1024的逼真图像 2. **医学影像重建**:用于低剂量CT图像去噪 3. **音频合成**:生成自然语音片段 4. **分子设计**:生成新型药物分子结构 #### 四、优势特点 1. **训练稳定性**:相比GAN没有模式崩溃问题 2. **渐进式生成**:可通过调节时间步控制生成过程 3. **理论保障**:基于非平衡热力学的数学框架
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CV_Peach

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值