扩散过程
x 0 → x 1 → x 2 → ⋯ → x N ∼ N ( 0 , I ) x_0\rightarrow x_1 \rightarrow x_2 \rightarrow\cdots\rightarrow x_N \sim N(0,I) x0→x1→x2→⋯→xN∼N(0,I)
在原始数据分布上添加高斯噪声,使之在最后成为一个纯噪声。
α
t
=
1
−
β
t
\alpha_t = 1-\beta_t
αt=1−βt
扩散过程中 β \beta β越来越大, α \alpha α越来越小。
加噪公式:
x
t
=
α
t
x
t
−
1
+
1
−
α
t
ϵ
t
x_t = \sqrt{\alpha_t}x_{t-1}+\sqrt{1-\alpha_t}\epsilon_t
xt=αtxt−1+1−αtϵt
其中
ϵ
∼
N
(
0
,
1
)
\epsilon\sim N(0,1)
ϵ∼N(0,1),噪声参数增大使得在扩散过程中的不同步骤间相对的扩散幅度一致。
对于
x
t
−
1
x_{t-1}
xt−1有:
x
t
−
1
=
α
t
−
1
x
t
−
2
+
1
−
α
t
−
1
ϵ
t
−
1
x_{t-1}=\sqrt{\alpha_{t-1}}x_{t-2}+\sqrt{1-\alpha_{t-1}}\epsilon_{t-1}
xt−1=αt−1xt−2+1−αt−1ϵt−1
代入上式得:
x
t
=
α
t
α
t
−
1
x
t
−
2
+
α
t
(
1
−
α
t
−
1
)
ϵ
t
−
1
+
1
−
α
t
ϵ
t
x_t = \sqrt{\alpha_t\alpha_{t-1}}x_{t-2}+\sqrt{\alpha_t(1-\alpha_{t-1})}\epsilon_{t-1}+\sqrt{1-\alpha_t}\epsilon_t
xt=αtαt−1xt−2+αt(1−αt−1)ϵt−1+1−αtϵt
这里有两个正态分布
ϵ
t
,
ϵ
t
−
1
\epsilon_t,\epsilon_{t-1}
ϵt,ϵt−1,要对他们的结果进行求和,可以使用卷积,当然也可以直接根据正态分布求和的性质,可知求和后的方差为之前两个方差之和:
x
t
=
α
t
α
t
−
1
x
t
−
2
+
1
−
α
t
α
t
−
1
ϵ
x_t = \sqrt{\alpha_t\alpha_{t-1}}x_{t-2}+\sqrt{1-\alpha_t\alpha_{t-1}}\epsilon
xt=αtαt−1xt−2+1−αtαt−1ϵ
不断向后迭代代入,可得:
x
t
=
∏
i
=
0
t
α
i
x
0
+
1
−
∏
i
=
0
t
α
i
ϵ
x_t = \sqrt{\prod_{i=0}^{t}\alpha_i}x_0+\sqrt{1-\prod_{i=0}^{t}\alpha_i}\epsilon
xt=i=0∏tαix0+1−i=0∏tαiϵ这里
ϵ
\epsilon
ϵ是另一个新的服从
N
(
0
,
1
)
\mathcal{N(0,1)}
N(0,1)的分布,记
α
‾
t
=
∏
i
=
0
t
α
i
\overline{\alpha}_t=\prod_{i=0}^{t}\alpha_i
αt=∏i=0tαi,正向过程的表达式可写为
x
t
=
α
‾
t
x
0
+
1
−
α
‾
t
ϵ
x_t = \sqrt{\overline{\alpha}_t}x_0+\sqrt{1-\overline{\alpha}_t}\epsilon
xt=αtx0+1−αtϵ
逆向过程
要倒推的话,根据贝叶斯公式:
P
(
x
t
−
1
∣
x
t
)
=
P
(
x
t
∣
x
t
−
1
)
P
(
x
t
−
1
)
P
(
x
t
)
P(x_{t-1}|x_t) = \frac{P(x_t|x_{t-1})P(x_{t-1})}{P(x_t)}
P(xt−1∣xt)=P(xt)P(xt∣xt−1)P(xt−1)写的更完整一点,加上given
x
0
x_0
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-1}|x_t, x_0) = \frac{P(x_t|x_{t-1},x_0)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
(
x
t
∣
x
t
−
1
,
x
0
)
=
α
t
x
t
−
1
+
1
−
α
t
ϵ
t
∼
N
(
α
t
x
t
−
1
,
1
−
α
t
)
P
(
x
t
−
1
∣
x
0
)
=
α
‾
t
−
1
x
0
+
1
−
α
‾
t
−
1
ϵ
∼
N
(
α
‾
t
−
1
x
0
,
1
−
α
‾
t
−
1
)
P
(
x
t
∣
x
0
)
=
α
‾
t
x
0
+
1
−
α
‾
t
ϵ
∼
N
(
α
‾
t
x
0
,
1
−
α
‾
t
)
P(x_t|x_{t-1},x_0) = \sqrt{\alpha_t}x_{t-1}+\sqrt{1-\alpha_t}\epsilon_t\sim\mathcal{N}(\sqrt{\alpha_t}x_{t-1},1-\alpha_t)\\ P(x_{t-1}|x_0) = \sqrt{\overline{\alpha}}_{t-1}x_{0}+\sqrt{1-\overline{\alpha}_{t-1}}\epsilon\sim\mathcal{N}(\sqrt{\overline{\alpha}}_{t-1}x_{0},1-\overline{\alpha}_{t-1})\\ P(x_{t}|x_0) = \sqrt{\overline{\alpha}}_{t}x_{0}+\sqrt{1-\overline{\alpha}_{t}}\epsilon\sim\mathcal{N}(\sqrt{\overline{\alpha}}_{t}x_{0},1-\overline{\alpha}_{t})\\
P(xt∣xt−1,x0)=αtxt−1+1−αtϵt∼N(αtxt−1,1−αt)P(xt−1∣x0)=αt−1x0+1−αt−1ϵ∼N(αt−1x0,1−αt−1)P(xt∣x0)=αtx0+1−αtϵ∼N(αtx0,1−αt)
将这三个分布带入贝叶斯公式进行计算化简,得到
P
(
x
t
−
1
∣
x
t
,
x
0
)
P(x_{t-1}|x_t,x_0)
P(xt−1∣xt,x0)满足的分布
P
(
x
t
−
1
∣
x
t
,
x
0
)
∼
N
(
a
t
(
1
−
a
‾
t
−
1
)
1
−
a
‾
t
x
t
+
a
t
−
1
(
1
−
a
‾
t
)
1
−
a
‾
t
x
0
,
(
1
−
a
t
1
−
a
‾
t
−
1
1
−
a
‾
t
)
2
)
P(x_{t-1}|x_t,x_0)\sim\mathcal{N}(\frac{\sqrt{a_t}(1-\overline{a}_{t-1})}{1-\overline{a}_t}x_t+\frac{\sqrt{a_{t-1}}(1-\overline{a}_{t})}{1-\overline{a}_t}x_0, (\frac{\sqrt{1-a_t}\sqrt{1-\overline{a}_{t-1}}}{\sqrt{1-\overline{a}_t}})^2)
P(xt−1∣xt,x0)∼N(1−atat(1−at−1)xt+1−atat−1(1−at)x0,(1−at1−at1−at−1)2)同时,将
x
0
x_0
x0由上面的公式
x
t
=
α
‾
t
x
0
+
1
−
α
‾
t
ϵ
x_t = \sqrt{\overline{\alpha}_t}x_0+\sqrt{1-\overline{\alpha}_t}\epsilon
xt=αtx0+1−αtϵ反解带入,得到
P
(
x
t
−
1
∣
x
t
,
x
0
)
∼
N
(
a
t
(
1
−
a
‾
t
−
1
)
1
−
a
‾
t
x
t
+
a
t
−
1
(
1
−
a
‾
t
)
1
−
a
‾
t
×
x
t
−
1
−
a
‾
t
×
ϵ
a
‾
t
,
(
1
−
a
t
1
−
a
‾
t
−
1
1
−
a
‾
t
)
2
)
P(x_{t-1}|x_t,x_0)\sim\mathcal{N}(\frac{\sqrt{a_t}(1-\overline{a}_{t-1})}{1-\overline{a}_t}x_t+\frac{\sqrt{a_{t-1}}(1-\overline{a}_{t})}{1-\overline{a}_t}\times\frac{x_t-\sqrt{1-\overline{a}_t}\times\epsilon}{\sqrt{\overline{a}_t}}, (\frac{\sqrt{1-a_t}\sqrt{1-\overline{a}_{t-1}}}{\sqrt{1-\overline{a}_t}})^2)
P(xt−1∣xt,x0)∼N(1−atat(1−at−1)xt+1−atat−1(1−at)×atxt−1−at×ϵ,(1−at1−at1−at−1)2)
这里面只有从
x
0
x_0
x0到
x
t
x_t
xt添加的噪声
ϵ
\epsilon
ϵ是未知,如果我们使用神经网络来预测这里添加的
ϵ
\epsilon
ϵ是什么,就可以得到
x
t
−
1
x_{t-1}
xt−1遵循的正态分布,再从该分布中进行一次采样,即可得到
x
t
−
1
x_{t-1}
xt−1,如此循环以上过程,即可不断倒退到最开始的图片
x
0
x_0
x0。