引言
在讨论DDPM之前,我们要先对生成模型有一个认识,何为生成模型?从“生成”二字出发,生成模型肯定要能生成样本,并且要有多样性、创新性。模型只有从训练数据中学习到数据分布,才能采样生成新样本。所以,生成模型是对训练数据分布建模的模型。既然说到分布,必然和概率挂钩,故DDPM全称是去噪扩散概率模型。
往往谈到深度学习,都会将其视为一个黑盒子,缺乏可解释性;但有时也确实不用深究其到底是如何学习到知识的,一种很淳朴的思想就是:哪个环节缺失,就通过深度学习把它学习出来,最终实现目的。比如,缺一个分类器,就搜集数据训练一个;想要有一个模型生成图片,还是搜集数据训练一个;当然,这是一种极简的抽象,但至少在概念理解时很有效。
前置知识
本系列文档将对生成模型范式演变进行分析,必然会涉及到大量的公式推导和演算,很多知识我们基本都已遗忘,主要是关于概率论,在此进行一个简单的汇总阐述:
- 马尔可夫过程:只用记住当前状态只依赖于前一状态,只与前一状态有关
- 高斯分布/正太分布:一种连续概率分布,记为
X
∼
N
(
μ
,
σ
2
I
)
X \sim N(\mu, \sigma^2I)
X∼N(μ,σ2I)
- 均值 μ \mu μ::分布的中心点,决定了分布的对称中心
- 标准差 σ \sigma σ:决定了分布的宽度,标准差越大,数据的分散程度越高,曲线越平缓
- 概率密度函数: f ( x ∣ μ , σ 2 ) = 1 2 π σ 2 exp ( − ( x − μ ) 2 2 σ 2 ) f(x|\mu,\sigma^2)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp(-\frac{(x-\mu)^2}{2\sigma^2}) f(x∣μ,σ2)=2πσ21exp(−2σ2(x−μ)2)
- 标准正太分布:均值 μ \mu μ为0,标准差 σ \sigma σ为1的正太分布
- 概率密度函数/PDF:描述连续随机变量的概率分布,表征随机变量在不同值上出现的相对可能性;积分可以计算出随机变量落在某个区间内的概率
- ∫ f ( x ) d x = 1 \int f(x)dx = 1 ∫f(x)dx=1
- P ( a ≤ X ≤ b ) = ∫ a b f ( x ) d x P(a \le X \le b) = \int^b_a f(x)dx P(a≤X≤b)=∫abf(x)dx:表示随机变量 X X X落在 [ a , b ] [a,b] [a,b]之间的概率
- 联合概率:描述两个或多个随机变量同时发生的概率;对于两个随机变量
X
X
X和
Y
Y
Y,它们的联合概率分布被记作
P
(
X
,
Y
)
P(X,Y)
P(X,Y)
- P ( X , Y ) = P ( X ∣ Y ) P ( Y ) = P ( Y ∣ X ) P ( X ) P(X,Y) = P(X|Y)P(Y) = P(Y|X)P(X) P(X,Y)=P(X∣Y)P(Y)=P(Y∣X)P(X)
- P ( X , Y , Z ) = P ( X ∣ Y , Z ) P ( Y , Z ) = P ( X ∣ Y , Z ) P ( Y ∣ Z ) P ( Z ) P(X,Y,Z) = P(X|Y,Z)P(Y,Z) = P(X|Y,Z)P(Y|Z)P(Z) P(X,Y,Z)=P(X∣Y,Z)P(Y,Z)=P(X∣Y,Z)P(Y∣Z)P(Z)
- 边缘概率:当一个概率分布涉及两个或多个随机变量时,对某一个(或几个)随机变量进行"边缘化"处理,得到该(些)随机变量本身的概率分布
- 假设有两个随机变量 X X X和 Y Y Y,它们的联合概率分布为 P ( X , Y ) P(X,Y) P(X,Y),那么 X X X的边缘概率分布就是 P ( X ) = Σ P ( X , Y ) P(X) = Σ P(X,Y) P(X)=ΣP(X,Y),也就是将 Y Y Y从联合概率分布中"边缘化"或"积出"而得到的 X X X自身的概率分布
- 期望:表示随机变量的加权平均值:连续随机变量 E ( X ) = ∫ x f ( x ) d x E(X) = \int x f(x) dx E(X)=∫xf(x)dx, E ( X , Y ) = E ( X ) ∗ E ( Y ) E(X,Y)=E(X)*E(Y) E(X,Y)=E(X)∗E(Y)
- KL散度:表征两个概率分布差异的一种方式,描述一个概率分布相对于另一个概率分布的“信息损失”或“距离”,也可以简单理解为相似性
- 对于两个连续概率分布
P
(
x
)
P(x)
P(x)和
Q
(
x
)
Q(x)
Q(x)(在相同的定义域上), 从分布
Q
Q
Q到分布
P
P
P的KL散度 D_KL(P||Q) 定义为:
D
K
L
(
P
∣
∣
Q
)
=
∫
p
(
x
)
log
(
p
(
x
)
/
q
(
x
)
)
d
x
D_{KL}(P||Q) = ∫ p(x) \log(p(x) / q(x)) dx
DKL(P∣∣Q)=∫p(x)log(p(x)/q(x))dx
- 积分是在 P ( x ) P(x) P(x)的定义域上进行的
- P ( x ) P(x) P(x)是真实的概率分布
- Q ( x ) Q(x) Q(x)是近似或模型预测概率分布
- KL散度是非负的,且当且仅当 P ( x ) = Q ( x ) P(x)=Q(x) P(x)=Q(x)时等于0
- KL散度是非对称的,即 D K L ( P ∣ ∣ Q ) ≠ D K L ( Q ∣ ∣ P ) D_{KL}(P||Q) ≠ D_{KL}(Q||P) DKL(P∣∣Q)=DKL(Q∣∣P)
- KL散度在机器学习中用于判断模型的拟合程度,如最大似然估计;最小化KL散度等同于最大化似然函数
- 对于两个单一变量的高斯分布 P ∼ N ( μ 1 , σ 1 2 I ) P \sim N(\mu_1,\sigma_1^2I) P∼N(μ1,σ12I)和 Q ∼ N ( μ 2 , σ 2 2 I ) Q \sim N(\mu_2,\sigma_2^2I) Q∼N(μ2,σ22I), D K L ( P ∣ ∣ Q ) = log σ 2 σ 1 + σ 1 2 + ( μ 1 − μ 2 ) 2 2 σ 2 2 − 1 2 D_{KL}(P||Q) = \log\frac{\sigma_2}{\sigma_1}+\frac{\sigma_1^2+(\mu_1-\mu_2)^2}{2\sigma_2^2}-\frac{1}{2} DKL(P∣∣Q)=logσ1σ2+2σ22σ12+(μ1−μ2)2−21
- 对于两个连续概率分布
P
(
x
)
P(x)
P(x)和
Q
(
x
)
Q(x)
Q(x)(在相同的定义域上), 从分布
Q
Q
Q到分布
P
P
P的KL散度 D_KL(P||Q) 定义为:
D
K
L
(
P
∣
∣
Q
)
=
∫
p
(
x
)
log
(
p
(
x
)
/
q
(
x
)
)
d
x
D_{KL}(P||Q) = ∫ p(x) \log(p(x) / q(x)) dx
DKL(P∣∣Q)=∫p(x)log(p(x)/q(x))dx
- 重参数化:若需要从 N ( μ , σ 2 I ) N(\mu, \sigma^2I) N(μ,σ2I)中随机采样样本 x x x,可以先从标注正太分布 N ( 0 , 1 ) N(0, 1) N(0,1)中随机采样一个值,记为 z z z,在通过 x = σ ∗ z + μ x = \sigma * z + \mu x=σ∗z+μ得到 N ( μ , σ 2 I ) N(\mu, \sigma^2I) N(μ,σ2I)分布中的样本。这样做,可以使得模型训练过程在遇到分布时是连续的,通过对 σ \sigma σ和 μ \mu μ预测,实现对分布的学习。
DDPM是在学什么?
看过DDPM论文或了解过扩散模型的读者应该对上图都不陌生,该图是DDPM论文中对扩散模型过程的直观描述。在DDPM中, x 0 x_0 x0为目标分布中的样本, x T x_T xT是通过对 x 0 x_0 x0中进行T步加噪后的数据。从右到左,是加噪过程,或称为前向过程/正向过程,每一步对上一步随机增加一点噪声,经过T步后,原始图片完全变成一个随机噪声,一般假设符合一个标准正太分布,这一过程可由条件概率 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xt∣xt−1)表征,是一个马尔可夫过程, x t x_t xt只与 x t − 1 x_{t-1} xt−1有关。
生成过程,是去噪过程,或称为逆向过程,是从随机噪声出发,一步步减少噪声,即从 X T X_T XT到 X 0 X_0 X0的过程,即上图中从左至右。如果我们现在只有一批图片数据,从认知上来讲,从随机噪声生成图片是不可能的,此时就用到了引言中提到的,缺什么,就用深度学习去训练。生成模型的建模目标就是“如何基于 x t x_t xt预测出 x t − 1 x_{t-1} xt−1”,即一个条件概率分布,记为 p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1}|x_t) pθ(xt−1∣xt),在深度学习公式推导中 θ \theta θ一般表征与训练模型相关的项。
现在我们知道了,DDPM的学习目标就是通过模型训练过程对分布 p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1}|x_t) pθ(xt−1∣xt)进行建模。
加噪过程的慢与快
从真实数据分布采样的数据点
x
0
∼
q
(
x
0
)
x_0 \sim q(x_0)
x0∼q(x0),以T步向样本中逐步添加少量噪声,产生一系列的噪声样本
x
1
,
x
2
,
.
.
.
,
x
T
x_1,x_2,...,x_T
x1,x2,...,xT。每一步加噪过程其实就是随机从一个高斯分布中采样噪声,然后与上一步数据相加,每一步噪声添加的分布方差由
β
1
,
β
2
,
.
.
.
,
β
T
\beta_1,\beta_2,...,\beta_T
β1,β2,...,βT控制,在DDPM中
β
i
\beta_i
βi是超参数。前面提到,加噪过程是马尔可夫过程,且因为每一步是在上一步数据中增加少量噪声,故认为每一步数据都符合高斯分布,即有以下公式:
q
(
x
t
∣
x
t
−
1
)
=
N
(
x
t
;
1
−
β
t
x
t
−
1
,
β
t
I
)
(1)
q(x_t|x_{t-1}) = N(x_t;\sqrt{1-\beta_t}x_{t-1},\beta_t I) \tag1
q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)(1)
其中
{
β
i
∈
(
0
,
1
)
}
1
T
\{\beta_i \in (0,1)\}_1^T
{βi∈(0,1)}1T,且
β
1
<
β
2
<
,
.
.
.
,
<
β
T
\beta_1<\beta_2<,...,<\beta_T
β1<β2<,...,<βT
上述公式其实可以直接理解,即如果每步只是增加少量噪声,就相当于当前步 x t x_t xt是由前一步 x t − 1 x_{t-1} xt−1和少量噪声组成,即 x t = 1 − β t x t − 1 + β t ϵ x_t = \sqrt{1-\beta_t} x_{t-1} + \sqrt{\beta_t} \epsilon xt=1−βtxt−1+βtϵ,其中 ϵ ∼ N ( 0 , I ) \epsilon \sim N(0,I) ϵ∼N(0,I)。随着步数t增加,数据 x t x_t xt逐渐丢失其可区分的特征,最终当T足够大时, x T x_T xT等价于各项同性的高斯分布。DDPM中T为1000,一步一步计算很低效,基于马尔可夫过程性质,使用重参数化技巧,能推导出一步到位计算公式,具体过程如下。
基于公式(1),记
α
t
=
1
−
β
t
,
α
ˉ
t
=
∏
1
t
α
i
\alpha_t = 1 - \beta_t, \bar{\alpha}_t=\prod_1^t \alpha_i
αt=1−βt,αˉt=∏1tαi,有:
x
t
=
1
−
β
t
x
t
−
1
+
β
t
ϵ
t
−
1
=
α
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
+
α
t
(
1
−
α
t
−
1
)
ϵ
t
−
2
+
1
−
α
t
ϵ
t
−
1
\begin{align*} x_t & = \sqrt{1-\beta_t} x_{t-1} + \sqrt{\beta_t} \epsilon_{t-1} \\ & = \sqrt{\alpha_t} x_{t-1} + \sqrt{1-\alpha_t} \epsilon_{t-1} \\ & = \sqrt{\alpha_t}(\sqrt{\alpha_{t-1}}x_{t-2}+\sqrt{1-\alpha_{t-1}} \epsilon_{t-2})+ \sqrt{1-\alpha_t} \epsilon_{t-1} \\ & = \sqrt{\alpha_t \alpha_{t-1}}x_{t-2} + \sqrt{\alpha_t (1-\alpha_{t-1})}\epsilon_{t-2}+\sqrt{1-\alpha_t} \epsilon_{t-1} \tag2 \end{align*}
xt=1−βtxt−1+βtϵt−1=αtxt−1+1−αtϵt−1=αt(αt−1xt−2+1−αt−1ϵt−2)+1−αtϵt−1=αtαt−1xt−2+αt(1−αt−1)ϵt−2+1−αtϵt−1(2)
有两个高斯分布,
X
∼
N
(
μ
1
,
σ
1
2
I
)
X \sim N(\mu_1, \sigma_1^2I)
X∼N(μ1,σ12I),
Y
∼
N
(
μ
2
,
σ
2
2
I
)
Y \sim N(\mu_2, \sigma_2^2I)
Y∼N(μ2,σ22I),则
a
X
+
b
Y
∼
N
(
a
μ
1
+
b
μ
2
,
(
a
2
σ
1
2
+
b
2
σ
2
2
)
I
)
aX + bY \sim N(a\mu_1+b\mu_2, (a^2\sigma_1^2+b^2\sigma_2^2)I)
aX+bY∼N(aμ1+bμ2,(a2σ12+b2σ22)I)
即,两个高斯分布之和也符合一个高斯分布。
上述公式(2)中后面两项是两个从高斯分布中采样的噪声项之和,再结合上段阐述的两个高斯分布之和也符合高斯分布,自然而然就可以会联想到将两个噪声项合并。即,有两个高斯分布,
ϵ
t
−
1
∼
N
(
0
,
I
)
\epsilon_{t-1} \sim N(0,I)
ϵt−1∼N(0,I),
ϵ
t
−
2
∼
N
(
0
,
I
)
\epsilon_{t-2} \sim N(0,I)
ϵt−2∼N(0,I),则
α
t
(
1
−
α
t
−
1
)
ϵ
t
−
2
+
1
−
α
t
ϵ
t
−
1
∼
N
(
0
,
(
α
t
(
1
−
α
t
−
1
)
+
1
−
α
t
)
I
)
∼
N
(
0
,
(
α
t
−
α
t
α
t
−
1
+
1
−
α
t
)
I
)
∼
N
(
0
,
(
1
−
α
t
α
t
−
1
)
I
)
\begin{align*} \sqrt{\alpha_t (1-\alpha_{t-1})}\epsilon_{t-2}+\sqrt{1-\alpha_t} \epsilon_{t-1} & \sim N(0,(\alpha_t (1-\alpha_{t-1})+1-\alpha_t)I) \\ & \sim N(0,(\alpha_t-\alpha_t\alpha_{t-1}+1-\alpha_t)I) \\ & \sim N(0,(1-\alpha_t\alpha_{t-1})I) \end{align*}
αt(1−αt−1)ϵt−2+1−αtϵt−1∼N(0,(αt(1−αt−1)+1−αt)I)∼N(0,(αt−αtαt−1+1−αt)I)∼N(0,(1−αtαt−1)I)
故公式(2)中后面两项可以用一个噪声项表示,即
α
t
(
1
−
α
t
−
1
)
ϵ
t
−
2
+
1
−
α
t
ϵ
t
−
1
=
1
−
α
t
α
t
−
1
ϵ
ˉ
t
−
2
\sqrt{\alpha_t (1-\alpha_{t-1})}\epsilon_{t-2}+\sqrt{1-\alpha_t} \epsilon_{t-1} = \sqrt{1-\alpha_t\alpha_{t-1}} \bar{\epsilon}_{t-2}
αt(1−αt−1)ϵt−2+1−αtϵt−1=1−αtαt−1ϵˉt−2
将上式带入公式(2)有
x
t
=
α
t
α
t
−
1
x
t
−
2
+
1
−
α
t
α
t
−
1
ϵ
ˉ
t
−
2
(3)
x_t = \sqrt{\alpha_t \alpha_{t-1}}x_{t-2} + \sqrt{1-\alpha_t\alpha_{t-1}} \bar{\epsilon}_{t-2} \tag3
xt=αtαt−1xt−2+1−αtαt−1ϵˉt−2(3)
通过上述推导,
x
t
x_t
xt从基于
x
t
−
1
x_{t-1}
xt−1和噪声计算转换为可基于
x
t
−
2
x_{t-2}
xt−2和噪声计算,继续按照上述推导步骤,将公式(3)中的
x
t
−
2
x_{t-2}
xt−2由
x
t
−
3
x_{t-3}
xt−3和噪声表示,会将公式(3)转换为以下形式
x
t
=
α
t
α
t
−
1
α
t
−
2
x
t
−
3
+
1
−
α
t
α
t
−
1
α
t
−
2
ϵ
ˉ
t
−
3
x_t = \sqrt{\alpha_t \alpha_{t-1} \alpha_{t-2}}x_{t-3} + \sqrt{1-\alpha_t\alpha_{t-1}\alpha_{t-2}} \bar{\epsilon}_{t-3}
xt=αtαt−1αt−2xt−3+1−αtαt−1αt−2ϵˉt−3
最终会得到
x
t
=
α
t
α
t
−
1
.
.
.
α
1
x
0
+
1
−
α
t
α
t
−
1
.
.
.
α
1
ϵ
ˉ
0
=
α
ˉ
t
x
0
+
1
−
α
ˉ
t
ϵ
ˉ
0
\begin{align*} x_t & = \sqrt{\alpha_t \alpha_{t-1}... \alpha_1}x_0 + \sqrt{1-\alpha_t\alpha_{t-1}...\alpha_1} \bar{\epsilon}_0 \\ & = \sqrt{ \bar{\alpha}_t} x_0 + \sqrt{1- \bar{\alpha}_t} \bar{\epsilon}_0 \tag4 \end{align*}
xt=αtαt−1...α1x0+1−αtαt−1...α1ϵˉ0=αˉtx0+1−αˉtϵˉ0(4)
经过一系列推导,我们得到了公式(4),可以基于
x
0
x_0
x0和噪声,直接一步到位生成
x
t
x_t
xt,因为
ϵ
ˉ
0
∼
N
(
0
,
I
)
\bar{\epsilon}_0 \sim N(0,I)
ϵˉ0∼N(0,I),公式(4)与以下概率分布等价,
q
(
x
t
∣
x
0
)
∼
N
(
x
t
;
α
ˉ
t
x
0
,
(
1
−
α
ˉ
t
)
I
)
q(x_t|x_0) \sim N(x_t;\sqrt{ \bar{\alpha}_t} x_0, (1- \bar{\alpha}_t)I)
q(xt∣x0)∼N(xt;αˉtx0,(1−αˉt)I)
如果直接使用公式(1)从 x 0 x_0 x0开始一步一步计算 x t x_t xt,这个过程又慢又麻烦;当通过一系列推导,我们得到了公式(4),可以基于 x 0 x_0 x0和步数 t t t直接计算出 x t x_t xt,使得计算过程又快又简洁。
无中生有的目标分布
如果我们有过模型训练经验,那就一定知道,需要有一个目标值或GT值与模型预测值计算损失才能实现训练闭环。在前文中我们说到,DDMP就是对“能基于 x t x_t xt计算出 x t − 1 x_{t-1} xt−1”的逆向分布过程建模,模型训练预测出的分布用 p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1}|x_t) pθ(xt−1∣xt)表示,那与预测分布进行比较的目标分布应该如何表示呢?
假设目标分布用 q ( x t − 1 ∣ x t ) q(x_{t-1}|x_t) q(xt−1∣xt)表示,请问计算出 q ( x t − 1 ∣ x t ) q(x_{t-1}|x_t) q(xt−1∣xt)这个分布可能吗?理论上,是可能的,但需要遍历整个数据集,通过大量计算,才能实现。如果我们真的大费周章计算出了 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
)
q(x_{t-1}|x_t)
q(xt−1∣xt)做不到的事情,
q
(
x
t
−
1
∣
x
t
,
x
0
)
q(x_{t-1}|x_t,x_0)
q(xt−1∣xt,x0)可以做的到。这也是一个顺利成章的想法,因为训练过程本来就是先从
x
0
x_0
x0数据中加载到
x
T
x_T
xT,然后再通过模型训练进行去噪,使用
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
)
q(x_{t-1}|x_t,x_0)
q(xt−1∣xt,x0)拿出来会有些突兀,但其实
q
(
x
t
−
1
∣
x
t
)
q(x_{t-1}|x_t)
q(xt−1∣xt)和
q
(
x
t
−
1
∣
x
t
,
x
0
)
q(x_{t-1}|x_t,x_0)
q(xt−1∣xt,x0)是等价的,因为去噪过程也是一步步减少一些噪声,故也认为是马尔可夫过程,即
x
t
−
1
x_{t-1}
xt−1只与
x
t
x_t
xt相关,与
x
0
x_0
x0无关,故将
x
0
x_0
x0添加到条件概率
q
(
x
t
−
1
∣
x
t
)
q(x_{t-1}|x_t)
q(xt−1∣xt)中没有任务影响;既然说没有任何影响,并且一眼过去条件概率
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
)
=
q
(
x
t
,
x
t
−
1
,
x
0
)
q
(
x
t
,
x
0
)
=
q
(
x
t
∣
x
t
−
1
,
x
0
)
q
(
x
t
−
1
,
x
0
)
q
(
x
t
,
x
0
)
=
q
(
x
t
∣
x
t
−
1
,
x
0
)
q
(
x
t
−
1
∣
x
0
)
q
(
x
0
)
q
(
x
t
∣
x
0
)
q
(
x
0
)
=
q
(
x
t
∣
x
t
−
1
)
q
(
x
t
−
1
∣
x
0
)
q
(
x
t
∣
x
0
)
\begin{align*} q(x_{t-1}|x_t,x_0) & = \frac{q(x_t,x_{t-1},x_0)}{q(x_t,x_0)} \\ & = \frac{q(x_t|x_{t-1},x_0)q(x_{t-1},x_0)}{q(x_t,x_0)} \\ & = q(x_t|x_{t-1},x_0)\frac{q(x_{t-1}|x_0)q(x_0)}{q(x_t|x_0)q(x_0)} \\ & = q(x_t|x_{t-1})\frac{q(x_{t-1}|x_0)}{q(x_t|x_0)} \tag5 \end{align*}
q(xt−1∣xt,x0)=q(xt,x0)q(xt,xt−1,x0)=q(xt,x0)q(xt∣xt−1,x0)q(xt−1,x0)=q(xt∣xt−1,x0)q(xt∣x0)q(x0)q(xt−1∣x0)q(x0)=q(xt∣xt−1)q(xt∣x0)q(xt−1∣x0)(5)
通过上述推导,有一种柳暗花明又一村的感觉,因为
q
(
x
t
−
1
∣
x
t
,
x
0
)
q(x_{t-1}|x_t,x_0)
q(xt−1∣xt,x0)等价三个前向加载过程表征,而我们前面已经推导除了此处所需的公式。我们知道公式(5)中的三项都符合高斯分布,直接将高斯分布概率密度函数
f
(
x
∣
μ
,
σ
2
)
=
1
2
π
σ
2
exp
(
−
(
x
−
μ
)
2
2
σ
2
)
f(x|\mu,\sigma^2)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp(-\frac{(x-\mu)^2}{2\sigma^2})
f(x∣μ,σ2)=2πσ21exp(−2σ2(x−μ)2)带入计算
q
(
x
t
−
1
∣
x
t
,
x
0
)
=
q
(
x
t
∣
x
t
−
1
)
q
(
x
t
−
1
∣
x
0
)
q
(
x
t
∣
x
0
)
=
N
(
x
t
;
α
t
x
t
−
1
,
(
1
−
α
t
)
I
)
N
(
x
t
−
1
;
α
ˉ
t
−
1
x
0
,
(
1
−
α
ˉ
t
−
1
)
I
)
N
(
x
t
;
α
ˉ
t
x
0
,
(
1
−
α
ˉ
t
)
I
)
∝
exp
{
−
[
(
x
t
−
α
t
x
t
−
1
)
2
2
(
1
−
α
t
)
+
(
x
t
−
1
−
α
ˉ
t
−
1
x
0
)
2
2
(
1
−
α
ˉ
t
−
1
)
−
(
x
t
−
α
ˉ
t
x
0
)
2
2
(
1
−
α
ˉ
t
)
]
}
=
exp
{
−
1
2
[
(
x
t
−
α
t
x
t
−
1
)
2
1
−
α
t
+
(
x
t
−
1
−
α
ˉ
t
−
1
x
0
)
2
1
−
α
ˉ
t
−
1
−
(
x
t
−
α
ˉ
t
x
0
)
2
1
−
α
ˉ
t
]
}
=
\begin{align*} q(x_{t-1}|x_t,x_0) & = q(x_t|x_{t-1})\frac{q(x_{t-1}|x_0)}{q(x_t|x_0)} \\ & = \frac{N(x_t;\sqrt{\alpha_t}x_{t-1},(1-\alpha_t) I)N(x_{t-1};\sqrt{ \bar{\alpha}_{t-1}} x_0, (1- \bar{\alpha}_{t-1})I)}{N(x_t;\sqrt{ \bar{\alpha}_t} x_0, (1- \bar{\alpha}_t)I)} \\ & \propto \exp \lbrace -[\frac{(x_t-\sqrt{\alpha_t}x_{t-1})^2}{2(1-\alpha_t)} + \frac{(x_{t-1}-\sqrt{ \bar{\alpha}_{t-1}} x_0)^2}{2(1- \bar{\alpha}_{t-1})} - \frac{(x_t-\sqrt{ \bar{\alpha}_t} x_0)^2}{2(1- \bar{\alpha}_t)}] \rbrace \\ & = \exp \lbrace -\frac{1}{2}[\frac{(x_t-\sqrt{\alpha_t}x_{t-1})^2}{1-\alpha_t} + \frac{(x_{t-1}-\sqrt{ \bar{\alpha}_{t-1}} x_0)^2}{1- \bar{\alpha}_{t-1}} - \frac{(x_t-\sqrt{ \bar{\alpha}_t} x_0)^2}{1- \bar{\alpha}_t}] \rbrace \\ & = \end{align*}
q(xt−1∣xt,x0)=q(xt∣xt−1)q(xt∣x0)q(xt−1∣x0)=N(xt;αˉtx0,(1−αˉt)I)N(xt;αtxt−1,(1−αt)I)N(xt−1;αˉt−1x0,(1−αˉt−1)I)∝exp{−[2(1−αt)(xt−αtxt−1)2+2(1−αˉt−1)(xt−1−αˉt−1x0)2−2(1−αˉt)(xt−αˉtx0)2]}=exp{−21[1−αt(xt−αtxt−1)2+1−αˉt−1(xt−1−αˉt−1x0)2−1−αˉt(xt−αˉtx0)2]}=
后续尽快补充