【扩散模型第1篇】扩散概率模型DPM和去噪扩散概率模型DDPM

本文主要介绍了扩散概率模型相关知识。扩散模型可看作多层VAE,前向和反向过程遵循马尔可夫过程。文中阐述了前向和反向过程、优化目标ELBO及采样过程,还介绍了去噪扩散概率模型DDPM,包括其训练和采样过程,最后提及基于分数解释DDPM、三种等价表示及改进方法。

参考阅读:
[1] 张振虎博客

PS.内容基本上是参考博客的内容,以下内容本人复习用

1 马尔可夫分层概率模型

在这里插入图片描述
扩散模型可以看作是多层的VAE,既编码和解码过程分别重复了 T T T次。但无论是前向过程还是反向过程,都遵循马尔可夫过程(Markov chain):当前时刻 t t t仅与其上一时刻相关。

和VAE类似,其对数似然可以写成如下式子,利用詹森不等式可以求出其ELBO:
l o g p ( x ) = l o g ∫ p ( x , z 1 : T ) d z 1 : T = l o g ∫ p ( x , z 1 : T q ϕ ( z 1 : T ∣ x ) q ϕ ( z 1 : T ∣ x ) d z 1 : T = l o g E q ϕ ( z 1 : T ∣ x ) [ p ( x , z 1 : T ) q ϕ ( z 1 : T ∣ x ) ] ≥ E q ϕ ( z 1 : T ∣ x ) [ p ( x , z 1 : T ) q ϕ ( z 1 : T ∣ x ) ] \begin{aligned} log p(x) &= log\int p(x,z_{1:T})dz_{1:T}\\ &= log\int \frac{p(x,z_{1:T}q_\phi(z_{1:T}|x)}{q_\phi(z_{1:T}|x)}dz_{1:T}\\ &= log E_{q_\phi(z_{1:T}|x)}[ \frac{p(x,z_{1:T})}{q_\phi(z_{1:T}|x)}]\\ &\ge E_{q_\phi(z_{1:T}|x)}[ \frac{p(x,z_{1:T})}{q_\phi(z_{1:T}|x)}] \end{aligned} logp(x)=logp(x,z1:T)dz1:T=logqϕ(z1:Tx)p(x,z1:Tqϕ(z1:Tx)dz1:T=logEqϕ(z1:Tx)[qϕ(z1:Tx)p(x,z1:T)]Eqϕ(z1:Tx)[qϕ(z1:Tx)p(x,z1:T)]

2 扩散概率模型

在这里插入图片描述
在以上基础上,进行微调便可得到扩散模型:

  • 不再区分 x x x z z z,且尺寸保持不变(VAE中 z z z一般小于 x x x)
  • 前向过程不再需要学习,既 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1)固定为一个线性高斯变换,不再使用参数化的模型去拟合。
  • 结合线性高斯变换和马尔科夫链的特性,理论上 T → ∞ T\rightarrow \infty T时, x T x_T xT是一个正态分布,既其收敛到 N ( 0 , I ) N(0,I) N(0,I)

2.1 前向和反向过程

由上图可知,整个网络可以用前向过程 q q q或者反向过程 p p p表示,既联合概率可以表示为
p ( x 0 : T ) = q ( x 0 ) ∏ t = 1 T q ( x t ∣ x t − 1 ) = p ( x T ) ∏ t = 1 T p ( x t − 1 ∣ x t ) p(x_{0:T})=q(x_0)\prod_{t=1}^Tq(x_t|x_{t-1})=p(x_T)\prod_{t=1}^Tp(x_{t-1}|x_t) p(x0:T)=q(x0)t=1Tq(xtxt1)=p(xT)t=1Tp(xt1xt)
前向过程又叫扩散过程,是在前进过程中不断增加微小的标准高斯噪声,当 T T T很大时,原图趋近于标准高斯噪声;反向过程又叫采样过程,它可以从纯粹的标准高斯噪声随机变量逐渐转变为真实图片。

前向过程

定义
q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) q(x_t|x_{t-1}) = N(x_{t}; \sqrt{1-\beta_t}x_{t-1},\beta_t I) q(xtxt1)=N(xt;1βt xt1,βtI)
定义这个概率分布为线性高斯变换,是指 x t x_t xt的均值和 x t − 1 x_{t-1} xt1的值呈线性关系,也就是
x t = 1 − β t x t − 1 + β t ϵ   , ϵ ∼ N ( 0 , 1 ) x_t = \sqrt{1-\beta_t}x_{t-1}+\sqrt{\beta_t}\epsilon\space,\epsilon\sim N(0,1) xt=1βt xt1+βt ϵ ,ϵN(0,1)
β \beta β满足, t 1 > t 2 > . . . > t T t_1>t_2>...>t_T t1>t2>...>tT时,有 β 1 < β 2 < . . . < β T \beta_1<\beta_2<...<\beta_T β1<β2<...<βT,且 β ∈ [ 0 , 1 ] \beta\in[0,1] β[0,1]。也可以令 α t = 1 − β t \alpha_t=1-\beta_t αt=1βt,则 α t \alpha_t αt是单调递减的。则此时式子变成:
x t = α t x t − 1 + 1 − α t ϵ x_t = \sqrt{\alpha_t}x_{t-1}+\sqrt{1-\alpha_t}\epsilon xt=αt xt1+1αt ϵ

为什么要有 β \beta β<

### 生成扩散模型DDPM原理 生成扩散模型(Diffusion Probabilistic Model, DPM),特别是扩散概率模型(Denoising Diffusion Probabilistic Models, DDPM),基于逐步添加声至数据的过程来训练,随后学习逆转这一过程以从纯声中重建原始数据模式[^2]。此过程涉及两个阶段:前向扩散步骤反向生成步骤。 #### 前向扩散步骤 在前向过程中,一系列的马尔科夫链被定义用于逐渐增加到输入中的高斯白音量级。每一步都由一个简单的加法运算表示,在该步中加入少量额外的随机扰动直到最终完全覆盖原信号特征为止。这个过程可以形式化描述为: \[ q(\mathbf{x}_t|\mathbf{x}_{t-1})=N(\sqrt{1-\beta_t}\mathbf{x}_{t-1};\ \mathbf{0},\ \beta_tI), t\in[1,T], \] 其中 $\beta_t$ 表示第 $t$ 步所引入的新声水平,并且整个序列构成了从清晰图像退化成纯粹声场的变化路径。 #### 反向生成步骤 为了能够有效地从未知分布采样新实例,DDPM 学习了一个参数化的逆向转换函数 $\theta$ 来预测如何移除给定时间戳下的特定数量的声: \[ p_\theta (\mathbf{x}_{t-1} | \mathbf{x}_t)= N(f_\theta(\mathbf{x}_t,t); \sigma^2 I). \] 这里的目标是最小化 KL 散度损失项,使得合成样本尽可能接近实际观测值的概率密度函数[^3]。 ```python import torch.nn as nn class UNet(nn.Module): def __init__(self, ...): ... def forward(self, x, timesteps): ... # Training loop pseudo-code for epoch in range(num_epochs): for batch_x in dataloader: noise = torch.randn_like(batch_x) noisy_images = add_noise_to_image(batch_x, noise, timestep=t) predicted_noise = unet_model(noisy_images, t) loss = F.mse_loss(predicted_noise, noise) optimizer.zero_grad() loss.backward() optimizer.step() ``` ### 应用场景 有条件版本的DDPM已经被广泛应用于多个领域内解决复杂任务,例如但不限于文本转图像生成、超分辨率处理等。这些应用通常依赖于附加条件信息引导生成流程,确保输出更贴合预期目标或上下文环境的要求[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值