『扩散模型』一篇文章入门DDPM
文章目录
- 扩散模型DDPM
- How Do Diffusion-Based Image Generation Models Work?
- The Need For Generative Models
- Bayesian Inference
- What Are Diffusion Probabilistic Models?
- Itsy-Bitsy Mathematical Details Behind Denoising Diffusion Probabilistic Models
- Mathematical Details Of The Forward Diffusion Process
- Mathematical Details Of The Reverse Diffusion Process
- 参考文献
扩散模型DDPM
2022年,Stable Diffusion模型的问世标志着AI绘画行业从传统深度学习时代迈向AIGC时代。在这一转变中,扩散模型是Stable Diffusion的核心,因此深入了解扩散模型的原理显得尤为重要。
扩散模型本质上属于生成模型,生成模型的工作是“将噪声转换为具有代表性的数据样本”
想要了解什么是扩散模型,我们需要先了解一下扩散的概念
⇒
\Rightarrow
⇒扩散:由浓度梯度驱动的粒子或分子由高浓度区域向低浓度区域的运动
接下来,我们首先从宏观层面探讨基于扩散的图像生成模型的工作原理。
How Do Diffusion-Based Image Generation Models Work?
扩散模型:存在一系列高斯噪声(
T
T
T轮),在扩散模型的正向扩散过程中将输入图片
x
0
x_0
x0变成纯高斯噪声
x
T
x_T
xT,然后在扩散模型的反向扩散过程中将
x
T
x_T
xT还原回图片
x
0
x_0
x0
上面这张图,展示了扩散模型的正向扩散过程(从右到左)和反向扩散过程(从左到右)
Forward Diffusion:
- 原始图像 x 0 x_0 x0通过添加高斯噪声而被迭代地缓慢破坏(马尔可夫链)
- 这个过程是在 T T T个时间步长内完成的
- 时间步 t t t的图像: x t − 1 + ε t − 1 → x t x_{t-1}+ε_{t-1}→ x_t xt−1+εt−1→xt
- 在正向扩散过程 x T x_T xT结束时,已经将数据分布转换为高斯分布
Backward Diffusion:
- 再次以迭代方式去除Forward Diffusion中添加的噪声
- 反向扩散过程的任务如下:给定时间步 t t t和噪声图像 x t x_t xt,预测在时间步 t − 1 t-1 t−1添加到图像中的噪声,即 x t → M o d e l → ϵ x_t→ Model→ \epsilon xt→Model→ϵ
在整个扩散的过程中,“图像的维度保持不变”
The Need For Generative Models
扩散模型是一个概率模型,我们可以结合正向扩散过程和反向扩散过程进行理解
在正向扩散过程中,由于是向数据中逐步添加噪声的,所以每个时间步的状态依赖于前一个时间步的状态。因此,前向扩散过程中的状态转移是基于条件概率的,条件概率描述了如何从一个状态转变为另一个状态
在反向扩散过程中,由于是从噪声数据中逐步去除噪声,而且逆向扩散与正向扩散是相反的过程,所以前一个时间步的状态依赖于当前时间步的状态。因此,逆向扩散过程中的状态转移同样基于条件概率
既然涉及到条件概率,那么贝叶斯公式肯定是不可避免的
Bayesian Inference
我们首先考虑这样的一个问题:
X
X
X的概率密度函数为
f
(
x
∣
θ
)
f(x|\theta)
f(x∣θ),观测到一组样本
(
x
1
,
x
2
,
.
.
.
,
x
n
)
(x_1,x_2,...,x_n)
(x1,x2,...,xn),此时需要估计参数
θ
\theta
θ
当
θ
^
\hat{\theta}
θ^满足“
θ
=
θ
^
\theta=\hat{\theta}
θ=θ^时,该组观测样本
(
x
1
,
x
2
,
.
.
.
,
x
n
)
(x_1,x_2,...,x_n)
(x1,x2,...,xn)更容易被观测到”
⇒
\Rightarrow
⇒
θ
^
\hat{\theta}
θ^是
θ
\theta
θ的极大似然估计值,
θ
^
\hat{\theta}
θ^使得事件
(
x
1
,
x
2
,
.
.
.
,
x
n
)
(x_1,x_2,...,x_n)
(x1,x2,...,xn)发生的可能性最大
极大似然估计的数学描述:
L
(
θ
∣
x
)
=
f
(
x
∣
θ
)
=
f
(
x
1
,
x
2
,
.
.
.
,
x
n
∣
θ
)
=
∏
i
=
1
n
f
(
x
i
∣
θ
)
L(\theta|x)=f(x|\theta)=f(x_1,x_2,...,x_n|\theta)=\prod^{n}_{i=1}f(x_i|\theta)
L(θ∣x)=f(x∣θ)=f(x1,x2,...,xn∣θ)=∏i=1nf(xi∣θ)
⇒
\Rightarrow
⇒
θ
^
=
a
r
g
m
a
x
θ
L
(
θ
∣
x
)
\hat{\theta}=argmax_{\theta}L(\theta|x)
θ^=argmaxθL(θ∣x)(如果有时间的话,笔者会专门写一起关于极大似然估计的文章,对极大似然估计进行介绍)
上述介绍的扩散模型和极大似然估计都与条件概率密切相关,而条件概率又与贝叶斯公式息息相关。
贝叶斯公式的数学描述:
- 离散变量: P ( B i ∣ A ) = P ( B i ) P ( A ∣ B i ) P ( A ) = P ( B i ) P ( A ∣ B i ) ∑ j = 1 n P ( B j ) P ( A ∣ B j ) P(B_i|A)=\frac{P(B_i)P(A|B_i)}{P(A)}=\frac{P(B_i)P(A|B_i)}{\sum_{j=1}^nP(B_j)P(A|B_j)} P(Bi∣A)=P(A)P(Bi)P(A∣Bi)=∑j=1nP(Bj)P(A∣Bj)P(Bi)P(A∣Bi),其中 P ( B i ∣ A ) P(B_i|A) P(Bi∣A)是后验概率、 P ( B i ) P(B_i) P(Bi)是先验概率、 P ( A ∣ B i ) P(A|B_i) P(A∣Bi)是似然函数、 P ( A ) P(A) P(A)是边缘概率
- 连续变量: p ( z ∣ x ) = p ( z ) p ( x ∣ z ) ∫ p ( z ) p ( x ∣ z ) d z p(z|x)=\frac{p(z)p(x|z)}{\int p(z)p(x|z)dz} p(z∣x)=∫p(z)p(x∣z)dzp(z)p(x∣z),其中 p ( z ∣ x ) p(z|x) p(z∣x)是后验概率、 p ( z ) p(z) p(z)是先验概率、 p ( x ∣ z ) p(x|z) p(x∣z)是似然函数、 ∫ p ( z ) p ( x ∣ z ) d z \int p(z)p(x|z)dz ∫p(z)p(x∣z)dz是边缘概率 ⇔ \Leftrightarrow ⇔ π ( θ ∣ x ) = f ( x ∣ θ ) π ( θ ) m ( x ) = f ( x ∣ θ ) π ( θ ) ∫ f ( x ∣ θ ) π ( θ ) d ( θ ) \pi(\theta|x)=\frac{f(x|\theta)\pi(\theta)}{m(x)}=\frac{f(x|\theta)\pi(\theta)}{\int f(x|\theta)\pi(\theta)d(\theta)} π(θ∣x)=m(x)f(x∣θ)π(θ)=∫f(x∣θ)π(θ)d(θ)f(x∣θ)π(θ),其中 π ( θ ) \pi(\theta) π(θ)是参数 θ \theta θ的先验分布,表示对 θ \theta θ的主观认识; π ( θ ∣ x ) \pi(\theta|x) π(θ∣x)是参数 θ \theta θ的后验概率; m ( x ) m(x) m(x)是观测数据 x x x的边际似然函数,边际似然函数是一个用来归一化后验概率分布的因子,确保后验概率的总和(或积分)等于1
贝叶斯估计可以看作是,在假定
θ
\theta
θ服从
π
(
θ
)
\pi(\theta)
π(θ)的先验分布的前提下,根据样本信息去校正先验分布,得到后验分布
π
(
θ
∣
x
)
\pi(\theta|x)
π(θ∣x)
最大后验估计(Maximum A Posteriori estimation,MAP):
θ
^
m
a
p
=
a
r
g
m
a
x
θ
π
(
θ
∣
x
)
=
a
r
g
m
a
x
θ
f
(
x
∣
θ
)
π
(
θ
)
m
(
x
)
=
a
r
g
m
a
x
θ
f
(
x
∣
θ
)
π
(
θ
)
\hat{\theta}_{map}=argmax_{\theta}\pi(\theta|x)=argmax_{\theta}\frac{f(x|\theta)\pi(\theta)}{m(x)}=argmax_{\theta}f(x|\theta)\pi(\theta)
θ^map=argmaxθπ(θ∣x)=argmaxθm(x)f(x∣θ)π(θ)=argmaxθf(x∣θ)π(θ),由于
m
(
x
)
m(x)
m(x)和
θ
\theta
θ无关,因此简化了计算
贝叶斯最大后验就是把极大似然加了一个先验信息
What Are Diffusion Probabilistic Models?
让我们回过头来看什么是扩散概率模型
“我们可以使用马尔可夫链将一种分布逐渐转换为另一种分布”—《Deep Unsupervised Learning using Nonequilibrium Thermodynamics》(ICML2015、CCF-A)
马尔可夫链简单理解就是:“未来独立于过去,而只依赖于当下”(如果有时间的话,笔者会专门写一起关于马尔可夫链的文章,对马尔可夫链进行介绍)
回到扩散模型,扩散模型由两个相反的过程组成,即正向和反向扩散过程
Itsy-Bitsy Mathematical Details Behind Denoising Diffusion Probabilistic Models
箭头上提到了两个术语:
- q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xt∣xt−1):定义了在正向扩散过程中时间步 t t t时图像的概率密度函数
- p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1}|x_t) pθ(xt−1∣xt):定义了在反向扩散过程中时间步 t − 1 t-1 t−1时图像的概率密度函数
Mathematical Details Of The Forward Diffusion Process
将前向扩散过程中的分布
q
q
q定义为马尔可夫链(前向过程每个时刻
t
t
t只与时刻
t
−
1
t-1
t−1相关),由下式给出:
q
(
x
1
,
…
,
x
T
∣
x
0
)
:
=
∏
t
=
1
T
q
(
x
t
∣
x
t
−
1
)
(
1
)
q
(
x
t
∣
x
t
−
1
)
:
=
N
(
x
t
;
1
−
β
t
x
t
−
1
,
β
t
I
)
(
2
)
\begin{aligned} q(x_{1},\ldots,x_{T}|x_{0})& :=\prod_{t=1}^{T}q(x_{t}|x_{t-1}) && (1) \\ q(x_{t}|x_{t-1})& :=\mathcal{N}(x_{t};\sqrt{1-\beta_{t}}x_{t-1},\beta_{t}I) && (2) \end{aligned}
q(x1,…,xT∣x0)q(xt∣xt−1):=t=1∏Tq(xt∣xt−1):=N(xt;1−βtxt−1,βtI)(1)(2),其中高斯分布方差的超参数
{
β
t
∈
(
0
,
1
)
}
t
=
1
T
\{\beta_{t}\in(0,1)\}_{t=1}^T
{βt∈(0,1)}t=1T
- 首先从数据集中获取一张图像 x 0 ∼ q ( x ) x_0\sim q(x) x0∼q(x),数据集中的图像分布满足 q ( x ) q(x) q(x)
- 从时间步 1 1 1到 T T T的所有中间噪声被称为latents,latents的大小与原始图像相同
- 正向扩散过程的概率密度函数是正态分布
- 在每一个时间步 t t t,定义图像 x t x_t xt分布的参数:均值 1 − β t x t − 1 \sqrt{1-\beta_{t}}x_{t-1} 1−βtxt−1、方差 β t I \beta_{t}I βtI
- β \beta β被称为扩散率,使用方差调度器预先计算
- 在每个时间步对原始图像添加少量的高斯噪声,得到 x 1 , x 2 , . . . , x T x_1,x_2,...,x_T x1,x2,...,xT,添加的噪声量由调度器进行调节。随着 t t t的增大, x t x_t xt越来越接近纯噪声,当 T → ∞ T\to\infty T→∞时, x T x_T xT完全的高斯噪声(与均值系数 1 − β t \sqrt{1-\beta_{t}} 1−βt的选择相关),且实际中 β t \beta_t βt随着 t t t增大是递增的,即 β 1 < β 2 < … < β T \beta_{1}<\beta_{2}<\ldots<\beta_{T} β1<β2<…<βT
N ( x t ; 1 − β t x t − 1 , β t I ) \mathcal{N}(x_{t};\sqrt{1-\beta_{t}}x_{t-1},\beta_{t}I) N(xt;1−βtxt−1,βtI):一个多变量的正态分布
- 1 − β t x t − 1 \sqrt{1-\beta_{t}}x_{t-1} 1−βtxt−1: x t x_t xt的条件均值,表示 x t x_t xt的期望是 x t − 1 x_{t-1} xt−1的一个加权版本 ⇒ \Rightarrow ⇒ 1 − β t \sqrt{1-\beta_{t}} 1−βt描述了从前一个状态 x t − 1 x_{t-1} xt−1到当前状态 x t x_t xt的直接传递的强度,如果 β t \beta_t βt接近 0,这意味着 x t − 1 x_{t-1} xt−1与 x t x_t xt有很强的相关性;如果 β t \beta_t βt接近 1,这意味着 x t − 1 x_{t-1} xt−1与 x t x_t xt的相关性较弱
- β t I \beta_tI βtI: β t \beta_t βt控制了新状态 x t x_t xt与旧状态 x t − 1 x_{t-1} xt−1之间的相似度,以及新状态的噪声水平; I I I是单位矩阵
如果从某个分布(高斯分布)中随机采样一个样本,这个过程是无法反向传播梯度的,而这个通过高斯噪声采样得到
x
t
x_t
xt的过程在diffusion中到处都是,因此我们需要通过重参数技巧来使得它可微(如果有时间的话,笔者会专门写一起关于重参数化的文章,对重参数化进行介绍)
最通常的做法是把随机性通过一个独立的随机变量
ϵ
\epsilon
ϵ引导过去。举个例子,如果要从高斯分布
z
∼
N
(
z
;
μ
θ
,
σ
θ
2
I
)
z\sim{\mathcal N}(z;\mu_{\theta},\sigma_{\theta}^{2}\mathbf{I})
z∼N(z;μθ,σθ2I)采样一个
z
z
z,可以写成
z
=
μ
θ
+
σ
θ
⊙
ϵ
,
ϵ
∼
N
(
0
,
I
)
z=\mu_\theta+\sigma_\theta\odot\epsilon,\epsilon\sim\mathcal{N}(0,\mathbf{I})
z=μθ+σθ⊙ϵ,ϵ∼N(0,I)
上式的
z
z
z依旧是有随机性的, 且满足均值为
μ
θ
\mu_{\theta}
μθ、方差为
σ
θ
2
\sigma_{\theta}^2
σθ2的高斯分布,这里的
μ
θ
\mu_{\theta}
μθ和
σ
θ
2
\sigma_{\theta}^2
σθ2可以是由参数
θ
\theta
θ的神经网络推断得到的。整个“采样”过程依旧梯度可导,随机性被转嫁到了
ϵ
\epsilon
ϵ上
How do we get image
x
t
x_t
xt from
x
t
−
1
x_{t-1}
xt−1 and how is noise added at each time step?
从正态分布中对图像
x
t
x_t
xt进行采样:
x
t
=
1
−
β
t
x
t
−
1
+
β
t
ϵ
;where
ϵ
∼
N
(
0
,
I
)
\begin{aligned}x_t=\sqrt{1-\beta_t}x_{t-1}+\sqrt{\beta_t}\epsilon\quad\\\text{;where}\ \epsilon\sim\mathcal{N}(0,I)\end{aligned}
xt=1−βtxt−1+βtϵ;where ϵ∼N(0,I)
- ϵ \epsilon ϵ是从标准高斯分布中随机采样的“噪声”
- 以上述方式,从 x 0 x_0 x0开始,原始图像从 t = 1... t t=1...t t=1...t迭代破坏
DDPM的作者使用“线性方差调度器”并定义
β
\beta
β在
[
0.001
,
0.02
]
[0.001,0.02]
[0.001,0.02]范围内,并设置总时间步
T
=
1000
T=1000
T=1000
每当需要在时间步
t
t
t的潜在样本
x
t
x_t
xt时,我们必须在马尔可夫链中执行
t
−
1
t-1
t−1个步骤
为了解决这个问题,DDPM的作者提出:在这个过程中直接从时间步
0
0
0(即从原始图像)到时间步
t
t
t
at any time
x
t
x_t
xt can be represented by
x
0
x_0
x0 and
β
\beta
β,我们接下来从数学层面进行推导
首先假设
α
t
=
1
−
β
t
\alpha_t=1-\beta_t
αt=1−βt,并且
α
‾
t
=
∏
i
=
1
T
α
i
\overline{\alpha}_t=\prod_{i=1}^T\alpha_i
αt=∏i=1Tαi,展开
x
t
x_t
xt可以得到:
x
t
=
a
t
x
t
−
1
+
1
−
α
t
z
1
w
h
e
r
e
z
1
,
z
2
,
…
∼
N
(
0
,
I
)
;
=
a
t
(
a
t
−
1
x
t
−
2
+
1
−
α
t
−
1
z
2
)
+
1
−
α
t
z
1
=
a
t
a
t
−
1
x
t
−
2
+
(
a
t
(
1
−
α
t
−
1
)
z
2
+
1
−
α
t
z
1
)
=
a
t
a
t
−
1
x
t
−
2
+
1
−
α
t
α
t
−
1
z
‾
2
w
h
e
r
e
z
‾
2
∼
N
(
0
,
I
)
;
=
…
=
α
‾
t
x
0
+
1
−
α
‾
t
z
‾
t
.
\begin{aligned} x_{t}& =\sqrt{a_t}x_{t-1}+\sqrt{1-\alpha_t}z_1\quad\mathrm{where}\quad z_1,z_2,\ldots\sim\mathcal{N}(0,\mathbf{I}); \\ &=\sqrt{a_t}(\sqrt{a_{t-1}}x_{t-2}+\sqrt{1-\alpha_{t-1}}z_2)+\sqrt{1-\alpha_t}z_1 \\ &=\sqrt{a_ta_{t-1}}x_{t-2}+(\sqrt{a_t(1-\alpha_{t-1})}z_2+\sqrt{1-\alpha_t}z_1) \\ &=\sqrt{a_{t}a_{t-1}}x_{t-2}+\sqrt{1-\alpha_{t}\alpha_{t-1}}\overline{z}_{2}\quad\mathrm{where}\quad\overline{z}_{2}\sim\mathcal{N}(0,\mathbf{I}); \\ &=\ldots \\ &=\sqrt{\overline{\alpha}_{t}}x_{0}+\sqrt{1-\overline{\alpha}_{t}}\overline{z}_{t}. \end{aligned}
xt=atxt−1+1−αtz1wherez1,z2,…∼N(0,I);=at(at−1xt−2+1−αt−1z2)+1−αtz1=atat−1xt−2+(at(1−αt−1)z2+1−αtz1)=atat−1xt−2+1−αtαt−1z2wherez2∼N(0,I);=…=αtx0+1−αtzt.
由于独立高斯分布可加性,即
N
(
0
,
σ
1
2
I
)
+
N
(
0
,
σ
2
2
I
)
∼
N
(
0
,
(
σ
1
2
+
σ
2
2
)
I
)
\mathcal{N}(0,\sigma_1^2\mathbf{I})+\mathcal{N}(0,\sigma_2^2\mathbf{I})\sim\mathcal{N}(0,(\sigma_1^2+\sigma_2^2)\mathbf{I})
N(0,σ12I)+N(0,σ22I)∼N(0,(σ12+σ22)I),所以
a
t
(
1
−
α
t
−
1
)
z
2
∼
N
(
0
,
a
t
(
1
−
α
t
−
1
)
I
)
1
−
α
t
z
1
∼
N
(
0
,
(
1
−
α
t
)
I
)
a
t
(
1
−
α
t
−
1
)
z
2
+
1
−
α
t
z
1
∼
N
(
0
,
[
α
t
(
1
−
α
t
−
1
)
+
(
1
−
α
t
)
]
I
)
=
N
(
0
,
(
1
−
α
t
α
t
−
1
)
I
)
.
\begin{aligned} &\sqrt{a_{t}(1-\alpha_{t-1})}z_{2}\sim\mathcal{N}(0,a_{t}(1-\alpha_{t-1})\mathbf{I}) \\ &\sqrt{1-\alpha_{t}}z_{1}\sim\mathcal{N}(0,(1-\alpha_{t})\mathbf{I}) \\ &\sqrt{a_{t}(1-\alpha_{t-1})}z_{2}+\sqrt{1-\alpha_{t}}z_{1}\sim\mathcal{N}(0,[\alpha_{t}(1-\alpha_{t-1})+(1-\alpha_{t})]\mathbf{I}) \\ &=\mathcal{N}(0,(1-\alpha_{t}\alpha_{t-1})\mathbf{I}). \end{aligned}
at(1−αt−1)z2∼N(0,at(1−αt−1)I)1−αtz1∼N(0,(1−αt)I)at(1−αt−1)z2+1−αtz1∼N(0,[αt(1−αt−1)+(1−αt)]I)=N(0,(1−αtαt−1)I).
因此可以混合两个高斯分布得到标准差为
1
−
α
t
α
t
−
1
\sqrt{1-\alpha_{t}\alpha_{t-1}}
1−αtαt−1的混合高斯分布,
z
‾
t
\overline{z}_{t}
zt仍然是高斯分布,而任意时刻的
x
t
x_t
xt满足
q
(
x
t
∣
x
0
)
=
N
(
x
t
;
a
‾
t
x
0
,
(
1
−
a
‾
t
)
I
)
q(x_t|x_0)=\mathcal{N}(x_t;\sqrt{\overline{a}_t}x_0,(1-\overline{a}_t)\mathbf{I})
q(xt∣x0)=N(xt;atx0,(1−at)I)
⇒
\Rightarrow
⇒
x
t
=
α
ˉ
t
x
0
+
1
−
α
ˉ
t
ϵ
x_t=\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\epsilon
xt=αˉtx0+1−αˉtϵ
使用上述公式,可以在马尔可夫链中的任意时间步
t
t
t进行采样
Mathematical Details Of The Reverse Diffusion Process
“在反向扩散过程中,任务是学习有限时间(在
T
T
T时间步内)正向扩散过程的反转”
反向扩散的马尔可夫链从正向过程结束的地方开始,即在时间步
T
T
T:
q
(
x
T
)
≈
N
(
x
t
;
0
,
I
)
p
(
x
T
)
:
=
N
(
x
t
;
0
,
I
)
\begin{aligned}q(x_T)&\approx\mathcal{N}(x_t;0,I)\\p(x_T)&:=\mathcal{N}(x_t;0,I)\end{aligned}
q(xT)p(xT)≈N(xt;0,I):=N(xt;0,I)
反向扩散过程是从纯噪声
x
T
x_T
xT开始的数据样本的所有可能路径的“积分”:
p
θ
(
x
0
)
:
=
∫
p
θ
(
x
0
:
T
)
d
x
1
:
T
p_\theta(x_0):=\int p_\theta(x_{0:T})dx_{1:T}
pθ(x0):=∫pθ(x0:T)dx1:T
⇒
\Rightarrow
⇒
p
θ
(
x
0
;
T
)
:
=
p
(
x
T
)
∏
t
=
1
T
p
θ
(
x
t
−
1
∣
x
t
)
,
p
θ
(
x
t
−
1
∣
x
t
)
:
=
N
(
x
t
−
1
;
μ
θ
(
x
t
,
t
)
,
Σ
θ
(
x
t
,
t
)
)
p_{\theta}(\mathbf{x}_{0;T}):=p(\mathbf{x}_{T})\prod_{t=1}^{T}p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t}),\quad p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t}):=\mathcal{N}(\mathbf{x}_{t-1};\mathbf{\mu}_{\theta}(\mathbf{x}_{t},t),\mathbf{\Sigma}_{\theta}(\mathbf{x}_{t},t))
pθ(x0;T):=p(xT)∏t=1Tpθ(xt−1∣xt),pθ(xt−1∣xt):=N(xt−1;μθ(xt,t),Σθ(xt,t))
如果说正向过程(forward)是加噪的过程,那么反向过程(reverse)就是diffusion的去噪推断过程
无法简单推断
p
θ
(
x
t
−
1
∣
x
t
)
p_{\theta}(x_{t-1}|x_{t})
pθ(xt−1∣xt),因此使用深度学习模型(参数
θ
\theta
θ,目前主流是U-Net+attention的结构)去预测这样的一个反向的分布
p
θ
p_{\theta}
pθ:
p
θ
(
X
0
:
T
)
=
p
(
x
T
)
∏
t
=
1
T
p
θ
(
x
t
−
1
∣
x
t
)
;
p
θ
(
x
t
−
1
∣
x
t
)
=
N
(
x
t
−
1
;
μ
θ
(
x
t
,
t
)
,
Σ
θ
(
x
t
,
t
)
)
.
\begin{aligned} p_{\theta}(X_{0:T}) =p(x_T)\prod_{t=1}^Tp_\theta(x_{t-1}|x_t);\\ p_\theta(x_{t-1}|x_t) =\mathcal{N}(x_{t-1};\mu_\theta(x_t,t),\Sigma_\theta(x_t,t)). \end{aligned}
pθ(X0:T)=p(xT)t=1∏Tpθ(xt−1∣xt);pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t)).(如果有时间的话,笔者会专门写一起关于UNet的文章,对UNet进行介绍)
虽然我们无法得到逆转后的分布
q
(
x
t
−
1
∣
x
t
)
q(x_{t-1}|x_{t})
q(xt−1∣xt),但是如果知道
x
0
x_0
x0,是可以通过贝叶斯公式得到
q
(
x
t
−
1
∣
x
t
,
x
0
)
q(x_{t-1}|x_t,x_0)
q(xt−1∣xt,x0)为:
q
(
x
t
−
1
∣
x
t
,
x
0
)
=
N
(
x
t
−
1
;
μ
~
(
x
t
,
x
0
)
,
β
~
t
I
)
q(x_{t-1}|x_t,x_0)=\mathcal{N}(x_{t-1};\tilde{\mu}(x_t,x_0),\tilde{\beta}_t\mathbf{I})
q(xt−1∣xt,x0)=N(xt−1;μ~(xt,x0),β~tI)
在给定条件
C
C
C下的贝叶斯:
P
(
A
∣
B
,
C
)
=
P
(
B
∣
A
,
C
)
⋅
P
(
A
∣
C
)
P
(
B
∣
C
)
P(A|B,C)=\frac{P(B|A,C)\cdot P(A|C)}{P(B|C)}
P(A∣B,C)=P(B∣C)P(B∣A,C)⋅P(A∣C)
推导过程如下:
- p ( x t − 1 ∣ x t , x 0 ) = p ( x t ∣ x t − 1 , x 0 ) ⋅ p ( x t − 1 ∣ x 0 ) p ( x t ∣ x 0 ) = p ( x t ∣ x t − 1 ) ⋅ p ( x t − 1 ∣ x 0 ) p ( x t ∣ x 0 ) p(x_{t-1}|x_t,x_0)=\frac{p(x_t|x_{t-1},x_0)\cdot p(x_{t-1}|x_0)}{p(x_t|x_0)}=\frac{p(x_t|x_{t-1})\cdot p(x_{t-1}|x_0)}{p(x_t|x_0)} p(xt−1∣xt,x0)=p(xt∣x0)p(xt∣xt−1,x0)⋅p(xt−1∣x0)=p(xt∣x0)p(xt∣xt−1)⋅p(xt−1∣x0)由于马尔可夫链的性质, p ( x t ∣ x t − 1 , x 0 ) p(x_t|x_{t-1},x_0) p(xt∣xt−1,x0)中的 x 0 x_0 x0可以被直接抹除掉)
- p ( x t − 1 ∣ x 0 ) = α ˉ t − 1 x 0 + 1 − α ˉ t − 1 ϵ ∼ N ( α ˉ t − 1 x 0 , 1 − α ˉ t − 1 ) p(x_{t-1}|x_0)=\sqrt{\bar{\alpha}_{t-1}}x_0+\sqrt{1-\bar{\alpha}_{t-1}}\epsilon\sim\mathcal{N}(\sqrt{\bar{\alpha}_{t-1}}x_0,1-\bar{\alpha}_{t-1}) p(xt−1∣x0)=αˉt−1x0+1−αˉt−1ϵ∼N(αˉt−1x0,1−αˉt−1)
- p ( x t ∣ x 0 ) = α ˉ t x 0 + 1 − α ˉ t ϵ ∼ N ( α ˉ t x 0 , 1 − α ˉ t ) p(x_t|x_0)=\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\epsilon\sim\mathcal{N}(\sqrt{\bar{\alpha}_t}x_0,1-\bar{\alpha}_t) p(xt∣x0)=αˉtx0+1−αˉtϵ∼N(αˉtx0,1−αˉt)
- p ( x t ∣ x t − 1 ) = α t x t − 1 + 1 − α t ϵ ∼ N ( α t x t − 1 , 1 − α t ) p(x_t|x_{t-1})=\sqrt{\alpha_t}x_{t-1}+\sqrt{1-\alpha_t}\epsilon\sim\mathcal{N}(\sqrt{\alpha_t}x_{t-1},1-\alpha_t) p(xt∣xt−1)=αtxt−1+1−αtϵ∼N(αtxt−1,1−αt)
- p ( x t − 1 ∣ x t , x 0 ) ∝ e x p ( − 1 2 ( ( x t − α t x t − 1 ) 2 β t ) + ( x t − 1 − α t − 1 x 0 ) 2 1 − α ˉ t − 1 − ( x t − α t x 0 ) 2 1 − α ˉ t ) p(x_{t-1}|x_t,x_0)\propto exp(-\frac12(\frac{(x_t-\sqrt{\alpha_t}x_{t-1})^2}{\beta_t})+\frac{(x_{t-1}-\sqrt{\alpha}_{t-1}x_0)^2}{1-\bar{\alpha}_{t-1}}-\frac{(x_t-\sqrt{\alpha}_tx_0)^2}{1-\bar{\alpha}_t}) p(xt−1∣xt,x0)∝exp(−21(βt(xt−αtxt−1)2)+1−αˉt−1(xt−1−αt−1x0)2−1−αˉt(xt−αtx0)2)(正态分布: e x p ( − ( x − μ ) 2 2 σ 2 ) = e x p ( − 1 2 ( 1 σ 2 x 2 − 2 μ σ 2 x + μ 2 σ 2 ) ) exp(-\frac{(x-\mu)^2}{2\sigma^2})=exp(-\frac12(\frac1{\sigma^2}x^2-\frac{2\mu}{\sigma^2}x+\frac{\mu^2}{\sigma^2})) exp(−2σ2(x−μ)2)=exp(−21(σ21x2−σ22μx+σ2μ2)))
- σ 2 = β t ( 1 − α ˉ t − 1 ) α t ( 1 − α ˉ t − 1 ) + β t \sigma^{2}=\frac{\beta_{t}(1-\bar{\alpha}_{t-1})}{\alpha_{t}(1-\bar{\alpha}_{t-1})+\beta_{t}} σ2=αt(1−αˉt−1)+βtβt(1−αˉt−1)、 μ = α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t + α t − 1 β t 1 − α ˉ t x 0 \mu=\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}x_t+\frac{\sqrt{\alpha_{t-1}}\beta_t}{1-\bar{\alpha}_t}x_0 μ=1−αˉtαt(1−αˉt−1)xt+1−αˉtαt−1βtx0
- 但是在反向过程中, x 0 x_0 x0是未知的, x 0 = 1 α ˉ t ( x t − 1 − α ˉ t ϵ t ) x_0=\frac1{\sqrt{\bar{\alpha}_t}}(x_t-\sqrt{1-\bar{\alpha}_t}\epsilon_t) x0=αˉt1(xt−1−αˉtϵt),将 x 0 x_0 x0代入 μ \mu μ中, μ = 1 α t ( x t − β t 1 − α ˉ t ϵ ) \mu=\frac1{\sqrt{\alpha_t}}(x_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon) μ=αt1(xt−1−αˉtβtϵ)
- 因为 ϵ \epsilon ϵ是个噪音,用神经网络去拟合,表示为 ϵ θ ( x t , t ) \epsilon_{\theta}(x_t,t) ϵθ(xt,t),从而可以得到要优化的目标,就是拟合出每一步的噪音, ∣ ∣ ϵ t − ϵ θ ( x t , t ) ∣ ∣ 2 ||\epsilon_t-\epsilon_{\theta}(x_t,t)||^2 ∣∣ϵt−ϵθ(xt,t)∣∣2 ⇒ \Rightarrow ⇒损失函数:噪声之间的均方差 ∣ ∣ ϵ t − ϵ θ ( x t , t ) ∣ ∣ 2 ||\epsilon_t-\epsilon_{\theta}(x_t,t)||^2 ∣∣ϵt−ϵθ(xt,t)∣∣2 ⇒ \Rightarrow ⇒ E x 0 , ϵ ∼ N ( 0 , I ) [ ∥ ϵ − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) ∥ 2 ] \mathbb{E}_{\mathbf{x}_{0},\epsilon\sim\mathcal{N}(\mathbf{0},\mathbf{I})}\left[\|\epsilon-\epsilon_{\theta}\left(\sqrt{\bar{\alpha}_{t}}\mathbf{x}_{0}+\sqrt{1-\bar{\alpha}_{t}}\epsilon,t\right)\|^{2}\right] Ex0,ϵ∼N(0,I)[∥ϵ−ϵθ(αˉtx0+1−αˉtϵ,t)∥2]
- DDPM最后的采样公式: x t − 1 = 1 α t ( x t − β t 1 − α ˉ t ϵ θ ( x t , t ) ) + σ t ϵ ϵ ∼ N ( 0 , I ) x_{t-1}=\frac1{\sqrt{\alpha_t}}(x_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_\theta(x_t,t))+\sigma_t\epsilon~\epsilon\sim\mathcal{N}(0,I) xt−1=αt1(xt−1−αˉtβtϵθ(xt,t))+σtϵ ϵ∼N(0,I)
DDPM论文中
β
t
\beta_t
βt的生成是将一个给定范围均匀的时间步分成
T
T
T份,然后每个时间步对应其中的某个点:
betas = torch.linspace(start=0.0001, end=0.02, steps=1000)
采用这种方式生成
β
t
\beta_t
βt致的问题:前向扩散过程中靠后的时间步噪声加的很多,这些噪声在反向生成采样的过程中没有产生太大的贡献,即使跳过也不会对结果产生多大的影响
DDPM的训练过程:随机选择一个训练样本
→
\rightarrow
→从时间步
1
1
1到时间步
T
T
T随机抽样一个
t
t
t
→
\rightarrow
→随机产生噪声
→
\rightarrow
→计算当前带噪声的数据
→
\rightarrow
→输入网络预测噪声
→
\rightarrow
→计算产生的噪声和预测的噪声的L2损失
→
\rightarrow
→计算梯度并更新网络
DDPM的采样过程:从一个随机噪声开始
→
\rightarrow
→使用训练好的网络预测噪声
→
\rightarrow
→计算条件分布的均值
→
\rightarrow
→用均值加标准差乘以一个随机噪声,直至
t
=
0
t=0
t=0完成新样本的生成(最后一步不加噪声)
参考文献
1、An In-Depth Guide to Denoising Diffusion Probabilistic Models – From Theory to Implementation
2、Diffusion Models for Image Generation – A Comprehensive Guide
3、由浅入深了解Diffusion Model
4、The Annotated Diffusion Model
5、DDPM和DDIM公式推导
6、扩散模型之DDPM