DDPM扩散模型(模型结构图与公式推导)

DDPM扩散模型

一、前置知识

1. 条件概率知识

P ( A ∣ B ) = P ( A B ) P ( B ) P(A|B) = \frac{P(AB)}{P(B)} P(AB)=P(B)P(AB)

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|B A)P(BA) = P(C|B A)P(B|A)P(A) P(ABC)=P(CBA)P(BA)=P(CBA)P(BA)P(A)

P ( B C ∣ A ) = P ( B ∣ A ) P ( C ∣ A , B ) P(B C|A) = P(B|A)P(C|A, B) P(BCA)=P(BA)P(CA,B)

P ( C ∣ A , B ) = P ( B C ∣ A ) P ( B ∣ A ) P(C|A, B) = \frac{P(BC| A)}{P(B|A)} P(CA,B)=P(BA)P(BCA)

2. 基于马尔科夫假设的条件概率

如果满足马尔科夫链关系 A − > B − > C A -> B -> C A>B>C那么有

P ( A B C ) = P ( C ∣ B A ) P ( B A ) = P ( C ∣ B ) P ( B ∣ A ) P ( A ) P(A B C) = P(C|BA)P(B A) = P(C|B)P(B|A)P(A) P(ABC)=P(CBA)P(BA)=P(CB)P(BA)P(A)

P ( B C ∣ A ) = P ( B ∣ A ) P ( C ∣ B ) P(B C|A) = P(B|A)P(C|B) P(BCA)=P(BA)P(CB)

3. 高斯分布的KL散度公式

对于两个单一变量的高斯分布 P 和 Q 而言,它们的 KL 散度为: K L ( P , Q ) = log ⁡ σ 1 σ 2 + σ 1 2 + ( μ 1 − μ 2 ) 2 2 σ 2 2 − 1 2 KL(P, Q) = \log{\frac{\sigma_1}{\sigma_2}} + \frac{\sigma_1^2 + (\mu_1 - \mu_2)^2}{2 \sigma_2^2} - \frac{1}{2} KL(P,Q)=logσ2σ1+2σ22σ12+(μ1μ2)221

KL 散度,又称为相对熵,描述两个概率分布P和Q的差异和相似性,用 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q)表示

在这里插入图片描述

显然,散度越小,说明概率Q与概率P之间越接近,那么估计的概率分布与真实的概率分布也就越接近。

KL 散度的性质:

  1. 非对称性: D K L ≠ D K L ( Q ∣ ∣ P ) D_{KL} \neq D_{KL}(Q || P) DKL=DKL(Q∣∣P)
  2. D K L ( P ∣ ∣ Q ) ≥ 0 D_{KL}(P || Q) \geq 0 DKL(P∣∣Q)0,仅在 P = Q P = Q P=Q时等于0

4. 参数重整化

如果希望从高斯分布 N ( μ , σ 2 ) N(\mu, \sigma^2) N(μ,σ2)中采样( μ \mu μ:表示均值, σ 2 \sigma^2 σ2:表示方差),可以先从标准分布 N ( 0 , 1 ) N(0, 1) N(0,1)采样处 z z z,再得到 σ × z + μ \sigma \times z + \mu σ×z+μ ,这样做的好处是将随机性转移到了 z z z这个常量上了,而 σ \sigma σ μ \mu μ则当做仿射变换网络的一部分。

二、Diffusion Model流程

在这里插入图片描述

x 0 x_0 x0是初始数据(一个初始的图片), x T x_T xT是最终的图片(一个纯噪声的图片)。

  1. x 0 ∼ x T x_0 \sim x_T x0xT的过程是一个加噪过程,每次从 q ( x t ∣ x t − 1 ) q(x_t|x_{t - 1}) q(xtxt1)分布中取噪声,然后添加到前一个时间步的图片数据中,这样经过T个时间步,我们就能得到一个纯噪声的图片了。
  2. x T ∼ x 0 x_T \sim x_0 xTx0的过程是一个去噪过程,每次从 p θ ( x t − 1 ∣ x t ) p_\theta(x_{t - 1}|x_t) pθ(xt1xt)分布中取噪声,然后使前一个时间步的图片数据减去该噪声,这样经过T个时间步,我们就能得到原始的图片了。

其中 q ( x t ∣ x t − 1 ) q(x_t|x_{t - 1}) q(xtxt1)是自己设定的一个加噪分布,而 p θ ( x t − 1 ∣ x t ) p_\theta(x_{t - 1}|x_t) pθ(xt1xt)是需要神经网络去学习的一个分布,我们会使用参数分布来去对该分布做估计,由于使用了参数重整化的思想( σ × ϵ + μ \sigma \times \epsilon + \mu σ×ϵ+μ,其中 σ \sigma σ是分布的方差, μ \mu μ表示的是分布的均值, ϵ \epsilon ϵ是从标准正态分布中随机采样的一个值),我们加噪过程是从一个标准正态分布中随机采样一个值,然后再进行参数重整化,依据 μ \mu μ σ \sigma σ得到特定分布下的噪声,而去噪过程是利用神经网络学习这个噪声,然后在每个时间步上减去预测出的噪声。

三、加噪过程

给定初始数据分布 x 0 ∼ q ( x ) x_0 \sim q(x) x0q(x),可以不断地向分布中添加高斯噪声,该噪声的方差是以固定值 β t \beta_t βt而确定的,均值是以固定值 β t \beta_t βt和当前 t t t时刻的数据 x t x_t xt决定的。这个过程是一个马尔科夫链过程,随着 t t t的不断增大,不断的向数据中添加噪声,最终数据分布 x t x_t xt变成了一个各向独立的高斯分布。

噪声的分布可以表示如下:

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}\cdot x_{t - 1}, \beta_tI) q(xtxt1)=N(xt;1βt xt1,βtI) 其中 1 − β t ⋅ x t − 1 \sqrt{1 - \beta_t}\cdot x_{t- 1} 1βt xt1表示该分布的均值, β t I \beta_t I βtI 表示方差( I I I表示单位矩阵)。

那么有: x t = 1 − β t x t − 1 + β t z t x_t = \sqrt{1 - \beta_t}x_{t - 1} + \sqrt{\beta_t} z_t xt=1βt xt1+βt zt,其中 1 − β t \sqrt{1 - \beta_t} 1βt 是一个控制噪声强度的系数, β t \beta_t βt是一个添加噪声比例的系数,论文中说明,当分布越来月接近噪声分布的时候,可以将 β t \beta_t βt变得大一点,这样做可以再初始的时候 β t \beta_t βt很小,那么添加的噪声也就很小,而 1 − β t \sqrt{1 - \beta_t} 1βt 会很大,那么将会保留更多原来数据的特征,再最后的时候 β t \beta_t βt很大,那么添加的噪声也会更大,而 1 − β t \sqrt{1 - \beta_t} 1βt 也就会更大,那么将会去除掉更多原来数据的特征。

设定噪声的方差 β t ∈ ( 0 , 1 ) \beta_t \in (0, 1) βt(0,1),并且 β t \beta_t βt 随着 t t t 的增大而增大。

通过上述的分布,我们可以将原始数据图片 x 0 x_0 x0通过 q ( x 1 ∣ x 0 ) q(x_1| x_0) q(x1x0)分布进行加噪,从而得到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值