本文是观看以下视频的笔记:
https://www.bilibili.com/video/BV1CU4y1i7jn/?p=4&spm_id_from=pageDriver
其他参考
https://zhuanlan.zhihu.com/p/614147698
https://zhuanlan.zhihu.com/p/563661713
这个写的非常详细:
https://www.zhihu.com/question/574586781/answer/3001481574
https://www.bilibili.com/video/BV16N4y177Wk/?spm_id_from=333.788&


(“:=” 是定义为的意思)
q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) q\left(\mathbf{x}_t \mid \mathbf{x}_0\right)=\mathcal{N}\left(\mathbf{x}_t ; \sqrt{\bar{\alpha}_t} \mathbf{x}_0,\left(1-\bar{\alpha}_t\right) \mathbf{I}\right) q(xt∣x0)=N(xt;αˉtx0,(1−αˉt)I) 或 q ( x t ∣ x 0 ) ∼ N ( α ˉ t x 0 , ( 1 − α ˉ t ) I ) q\left(\mathbf{x}_t \mid \mathbf{x}_0\right)\sim \mathcal{N}\left(\sqrt{\bar\alpha_t} \mathbf{x}_0, (1-\bar\alpha_t\right)\mathbf{I}) q(xt∣x0)∼N(αˉtx0,(1−αˉt)I)也即
x t = α ˉ t x 0 + 1 − α ˉ t ϵ \mathbf{x}_t=\sqrt{\bar\alpha_t} \mathbf{x}_0+\sqrt{1-\bar\alpha_t} \boldsymbol{\epsilon} xt=αˉtx0+1−αˉtϵ, 其中 α ˉ t = ∏ i = 1 t α i \bar{\alpha}_t=\prod_{i=1}^t \alpha_i αˉt=∏i=1tαi, ϵ ∼ N ( 0 , 1 ) \boldsymbol{\epsilon} \sim \mathcal{N}(0,1) ϵ∼N(0,1)。
注意区分“每一步t的噪声 ϵ t \boldsymbol{\epsilon}_t ϵt”和“他们叠加后的噪声 ϵ \boldsymbol{\epsilon} ϵ ”,
具体推导过程如下:
x
t
=
α
t
x
t
−
1
+
1
−
α
t
ϵ
t
=
α
t
(
α
t
−
1
x
t
−
2
+
1
−
α
t
−
1
ϵ
t
−
1
)
+
1
−
α
t
ϵ
t
=
α
t
α
t
−
1
x
t
−
2
+
α
t
−
α
t
α
t
−
1
2
+
1
−
α
t
2
ϵ
ˉ
t
−
1
;
两个相互独立的正态分布的叠加仍是正态分布
=
α
t
α
t
−
1
x
t
−
2
+
1
−
α
t
α
t
−
1
ϵ
ˉ
t
−
1
=
…
=
α
ˉ
t
x
0
+
1
−
α
ˉ
t
ϵ
或者看下图:



现在我们有:
q
(
x
t
∣
x
t
−
1
)
q(\mathbf{x}_t \mid \mathbf{x}_{t-1})
q(xt∣xt−1) ,
q
(
x
t
∣
x
0
)
q(\mathbf{x}_t \mid \mathbf{x}_0)
q(xt∣x0) ,
p
(
x
T
)
=
N
(
x
T
;
0
,
I
)
p(\mathbf{x}_T)=\mathcal{N}(\mathbf{x}_T ; \mathbf{0}, \mathbf{I})
p(xT)=N(xT;0,I)
要求的是:
p
(
x
t
−
1
∣
x
t
)
p(\mathbf{x}_{t-1} \mid \mathbf{x}_t)
p(xt−1∣xt) 。
这个东西不好弄,我们改为求
p
(
x
t
−
1
∣
x
t
,
x
0
)
p(\mathbf{x}_{t-1}|\mathbf{x}_{t},\mathbf{x}_0)
p(xt−1∣xt,x0)
开始,
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
)
(马尔科夫假设)
第一个等号:贝叶斯公式(将右边分母挪到左边后,两边就都是x0条件下xt-1和xt同时发生的概率)
第二个等号:由于从t-1到t这个加噪的过程是马尔科夫过程,即xt只与xt-1有关,而与更小的时间步无关,所以 p ( x t ∣ x t − 1 , x 0 ) = p ( x t ∣ x t − 1 , x 0 ) p(\mathbf{x}_t|\mathbf{x}_{t-1},\mathbf{x}_0)=p(\mathbf{x}_t|\mathbf{x}_{t-1},\mathbf{x}_0) p(xt∣xt−1,x0)=p(xt∣xt−1,x0)
最后的这三项都是已知的:
p
(
x
t
∣
x
t
−
1
)
:
=
N
(
x
t
;
α
t
x
t
−
1
,
(
1
−
α
t
)
I
)
q
(
x
t
∣
x
0
)
=
N
(
x
t
;
α
ˉ
t
x
0
,
(
1
−
α
ˉ
t
)
I
)
q
(
x
t
−
1
∣
x
0
)
=
N
(
x
t
−
1
;
α
ˉ
t
−
1
x
0
,
(
1
−
α
ˉ
t
−
1
)
I
)
p\left(\mathbf{x}_t \mid \mathbf{x}_{t-1}\right):=\mathcal{N}\left(\mathbf{x}_t;\sqrt{\alpha_t} \mathbf{x}_{t-1}, (1-\alpha_t\right)\mathbf{I})\\ q\left(\mathbf{x}_t \mid \mathbf{x}_0\right)=\mathcal{N}\left(\mathbf{x}_t ; \sqrt{\bar{\alpha}_t} \mathbf{x}_0,\left(1-\bar{\alpha}_t\right) \mathbf{I}\right)\\ q\left(\mathbf{x}_{t-1} \mid \mathbf{x}_0\right)=\mathcal{N}\left(\mathbf{x}_{t-1} ; \sqrt{\bar{\alpha}_{t-1} } \mathbf{x}_0,\left(1-\bar{\alpha}_{t-1} \right) \mathbf{I}\right)
p(xt∣xt−1):=N(xt;αtxt−1,(1−αt)I)q(xt∣x0)=N(xt;αˉtx0,(1−αˉt)I)q(xt−1∣x0)=N(xt−1;αˉt−1x0,(1−αˉt−1)I)
考虑到:
正态分布
f
(
x
)
=
1
σ
2
π
e
−
(
x
−
μ
)
2
2
σ
2
f
(
x
)
∝
e
−
(
x
−
μ
)
2
2
σ
2
正态分布 f(x) = \frac{1}{\sigma\sqrt{2\pi}} e{-\frac{(x-\mu)2}{2\sigma^2}} \\ f(x) \propto e{-\frac{(x-\mu)2}{2\sigma^2}}
正态分布f(x)=σ2π1e−2σ2(x−μ)2f(x)∝e−2σ2(x−μ)2
把所有的正态分布换成这个正比于的表达方式,我们凑一下
p
(
x
t
−
1
∣
x
t
,
x
0
)
p(\mathbf{x}_{t-1} \mid \mathbf{x}_t,\mathbf{x}_0)
p(xt−1∣xt,x0) 也写成这个形式:
下方的推导有以下注意点:
- exp指数部分的常数如果拿到exp外面, 不影响“正比于”这件事,因此我们都忽略掉;
- 注意,由于目标是 p ( x t − 1 ∣ x t ) p(\mathbf{x}_{t-1} \mid \mathbf{x}_t) p(xt−1∣xt),我们最后的结果中只保留xt这个变量,用xt和预测的z波浪来表达x0
p
(
x
t
−
1
∣
x
t
,
x
0
)
=
p
(
x
t
∣
x
t
−
1
)
p
(
x
t
−
1
∣
x
0
)
p
(
x
t
∣
x
0
)
∝
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
)
}


至此得到了方差,发现是固定的常数。下面继续求均值μ。
注意


至此,我们求出了
p
(
x
t
−
1
∣
x
t
,
x
0
)
∝
N
(
μ
,
σ
2
)
,其中
σ
2
=
1
−
α
ˉ
t
−
1
1
−
α
ˉ
t
⋅
β
t
,
μ
=
α
t
(
1
−
α
ˉ
t
−
1
)
1
−
α
ˉ
t
x
t
+
α
ˉ
t
−
1
β
t
1
−
α
ˉ
t
x
0
=
1
α
t
(
x
t
−
β
t
1
−
α
t
ˉ
z
^
)
p(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)\propto \mathcal{N(\mu, σ^2 )},其中\\ \sigma^2 = \frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\cdot\beta_t,\\ \mu=\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}\mathbf{x}_t+\frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1-\bar{\alpha}_t}\mathbf{x}_0\\=\frac{1}{\sqrt{\alpha_{t}}}(\mathbf{x}_{t}-\frac{\beta_{t}}{\sqrt{1-\bar{\alpha_{t}}}}\hat{z})
p(xt−1∣xt,x0)∝N(μ,σ2),其中σ2=1−αˉt1−αˉt−1⋅βt,μ=1−αˉtαt(1−αˉt−1)xt+1−αˉtαˉt−1βtx0=αt1(xt−1−αtˉβtz^)
也就是说,如果已知x0和xt,那么xt-1满足一个标准正态分布,其方差是常数,均值与网络预测的z波浪有关
因此,根据正态分布的重参数化技巧,
p
(
x
t
−
1
∣
x
t
,
x
0
)
=
μ
+
σ
z
=
1
α
t
(
x
t
−
β
t
1
−
α
t
ˉ
z
^
)
+
1
−
α
ˉ
t
−
1
1
−
α
ˉ
t
⋅
β
t
z
其中z属于标准正态分布。
那么,为什么这里最后的z要用一个噪声采样而不直接设为0呢?如果全0的话,其实概率很低,符合正态分布的概率更高一些。
上面那个式子直接就可以写成这样了,问题仅在于,我们省略的常数去哪 里了。不知道,可能刚好算出来还是没了吧。
