很早之前就新建了一个专栏从0开始弃坑扩散模型,但发了一篇文章就没有继续这一系列,在这个AIGC的时代,于是我准备重启这个专栏。
整个专栏的学习顺序可以见这篇汇总文章
很多时候我们看到一篇文章很长,难免会心生胆怯,所以我将这些知识进行分解到每一篇中。
这是本专栏的第2章
在正向过程,输入数据通过逐步添加高斯噪声被破坏,经过T次加噪操作后会变成一个符合标准正态分布的纯噪声图像。这是一个马尔可夫过程,当前时刻的状态只由上一时刻状态决定,公式如下所示:
x
t
∼
N
(
1
−
β
t
x
t
−
1
,
β
t
I
)
\mathbf{x}_t \sim \mathcal{N}(\sqrt{1 - \beta_t}\mathbf{x}_{t - 1},\beta_t\mathbf{I})
xt∼N(1−βtxt−1,βtI)
这个公式意思是现在的
x
t
x_t
xt服从一个数学期望(均值,
μ
t
(
x
t
−
1
)
{\mu}_t(x_{t-1})
μt(xt−1))为
1
−
β
t
x
t
−
1
\sqrt{1 - \beta_t}\mathbf{x}_{t - 1}
1−βtxt−1,方差(
σ
t
2
I
\sigma_t^2I
σt2I)为
β
t
I
\beta_t\mathbf{I}
βtI的标准正态分布(高斯分布),也就是说
x
t
x_t
xt是从和
x
t
−
1
x_{t-1}
xt−1有关的标准正态分布里面采样出来。至于为什么值是这样,可以看后面的解释。
这个实际上还可以变成一个等式:
x
t
∼
N
(
1
−
β
t
x
t
−
1
,
β
t
I
)
⇒
x
t
=
1
−
β
t
x
t
−
1
+
β
t
ϵ
t
−
1
;
ϵ
t
−
1
∼
N
(
0
,
I
)
\begin{aligned} \mathbf{x}_t &\sim \mathcal{N}(\sqrt{1 - \beta_t}\mathbf{x}_{t - 1},\beta_t\mathbf{I}) \\ \Rightarrow \mathbf{x}_t =& \sqrt{1 - \beta_t}\mathbf{x}_{t - 1} + \sqrt{\beta_t}\epsilon_{t-1}; \epsilon_{t-1} \sim \mathcal{N}(0, \mathbf{I}) \end{aligned}
xt⇒xt=∼N(1−βtxt−1,βtI)1−βtxt−1+βtϵt−1;ϵt−1∼N(0,I)
其中
N
(
0
,
I
)
\mathcal{N}(0, \mathbf{I})
N(0,I)就是标准正态分布。I就是数字1。注意,这两个公式均值前后一致,但等式的加号后面就变成标准差了。
这个等式还可以进一步迭代,直接求出
x
t
x_{t}
xt和
x
0
x_{0}
x0的关系,这里还要懂得一个定理:
N
(
0
,
σ
1
2
I
)
+
N
(
0
,
σ
2
2
I
)
=
N
(
0
,
(
σ
1
2
+
σ
2
2
)
I
)
\mathcal{N}(0, \sigma_1^2 I)+\mathcal{N}(0, \sigma_2^2 I)=\mathcal{N}(0, (\sigma_1^2+\sigma_2^2) I)
N(0,σ12I)+N(0,σ22I)=N(0,(σ12+σ22)I)
我们现在在等式的基础上再推
x
t
−
2
x_{t-2}
xt−2:
x
t
=
1
−
β
t
x
t
−
1
+
β
t
ϵ
t
−
1
;
ϵ
t
−
1
∼
N
(
0
,
I
)
=
1
−
β
t
(
1
−
β
t
−
1
x
t
−
2
+
β
t
−
1
ϵ
t
−
2
)
+
β
t
ϵ
t
−
1
;
ϵ
t
−
2
∼
N
(
0
,
I
)
=
(
1
−
β
t
)
(
1
−
β
t
−
1
)
x
t
−
2
+
(
1
−
β
t
)
β
t
−
1
ϵ
t
−
2
+
β
t
ϵ
t
−
1
\begin{aligned}\mathbf{x}_t =& \sqrt{1 - \beta_t}\mathbf{x}_{t - 1} + \sqrt{\beta_t}\epsilon_{t-1}; \epsilon_{t-1} \sim \mathcal{N}(0, \mathbf{I}) \\ =& \sqrt{1 - \beta_t}(\sqrt{1 - \beta_{t-1}}\mathbf{x}_{t - 2} + \sqrt{\beta_{t-1}}\epsilon_{t-2}) + \sqrt{\beta_t}\epsilon_{t-1}; \epsilon_{t-2} \sim \mathcal{N}(0, \mathbf{I})\\ =& \sqrt{(1 - \beta_t)(1 - \beta_{t-1})}\mathbf{x}_{t - 2} + \sqrt{(1 - \beta_t)\beta_{t-1}}\epsilon_{t-2} + \sqrt{\beta_t}\epsilon_{t-1} \end{aligned}
xt===1−βtxt−1+βtϵt−1;ϵt−1∼N(0,I)1−βt(1−βt−1xt−2+βt−1ϵt−2)+βtϵt−1;ϵt−2∼N(0,I)(1−βt)(1−βt−1)xt−2+(1−βt)βt−1ϵt−2+βtϵt−1
根据上面正态分布的定理,我们发现
x
t
=
(
1
−
β
t
)
(
1
−
β
t
−
1
)
x
t
−
2
+
(
1
−
β
t
)
β
t
−
1
ϵ
t
−
2
+
β
t
ϵ
t
−
1
=
(
1
−
β
t
)
(
1
−
β
t
−
1
)
x
t
−
2
+
(
1
−
β
t
)
β
t
−
1
+
β
t
ϵ
=
(
1
−
β
t
)
(
1
−
β
t
−
1
)
x
t
−
2
+
1
−
(
1
−
β
t
)
(
1
−
β
t
−
1
)
ϵ
=
(
1
−
β
t
)
(
1
−
β
t
−
1
)
(
1
−
β
t
−
2
)
x
t
−
3
+
1
−
(
1
−
β
t
)
(
1
−
β
t
−
1
)
(
1
−
β
t
−
2
)
ϵ
=
(
1
−
β
t
)
(
1
−
β
t
−
1
)
(
1
−
β
t
−
2
)
(
1
−
β
t
−
3
)
x
t
−
4
+
1
−
(
1
−
β
t
)
(
1
−
β
t
−
1
)
(
1
−
β
t
−
2
)
(
1
−
β
t
−
3
)
ϵ
\begin{aligned}\mathbf{x}_t =\sqrt{(1 - \beta_t)(1 - \beta_{t-1})}\mathbf{x}_{t - 2} + \sqrt{(1 - \beta_t)\beta_{t-1}}\epsilon_{t-2} + \sqrt{\beta_t}\epsilon_{t-1}\\=\sqrt{(1 - \beta_t)(1 - \beta_{t-1})}\mathbf{x}_{t - 2} + \sqrt{(1 - \beta_t)\beta_{t-1} + \beta_t}\epsilon \\=\sqrt{(1 - \beta_t)(1 - \beta_{t-1})}\mathbf{x}_{t - 2} + \sqrt{1-(1-\beta_t)(1-\beta_{t-1})}\epsilon \\=\sqrt{(1 - \beta_t)(1 - \beta_{t-1})(1 - \beta_{t-2})}\mathbf{x}_{t - 3} + \sqrt{1-(1-\beta_t)(1-\beta_{t-1})(1 - \beta_{t-2})}\epsilon \\=\sqrt{(1 - \beta_t)(1 - \beta_{t-1})(1 - \beta_{t-2})(1 - \beta_{t-3})}\mathbf{x}_{t - 4} + \sqrt{1-(1-\beta_t)(1-\beta_{t-1})(1 - \beta_{t-2})(1 - \beta_{t-3})}\epsilon \end{aligned}
xt=(1−βt)(1−βt−1)xt−2+(1−βt)βt−1ϵt−2+βtϵt−1=(1−βt)(1−βt−1)xt−2+(1−βt)βt−1+βtϵ=(1−βt)(1−βt−1)xt−2+1−(1−βt)(1−βt−1)ϵ=(1−βt)(1−βt−1)(1−βt−2)xt−3+1−(1−βt)(1−βt−1)(1−βt−2)ϵ=(1−βt)(1−βt−1)(1−βt−2)(1−βt−3)xt−4+1−(1−βt)(1−βt−1)(1−βt−2)(1−βt−3)ϵ
从上面可以到,我们可以一步一步到
x
0
x_0
x0,后面都是可以合并的,化简一下上面的公式,就可以得到:
x
t
=
α
ˉ
t
x
0
+
1
−
α
ˉ
t
ϵ
\mathbf{x}_t = \sqrt{\bar{\alpha}_t}\mathbf{x}_{0} + \sqrt{1-\bar{\alpha}_t}\epsilon
xt=αˉtx0+1−αˉtϵ,其中令
α
t
=
1
−
β
t
,
α
ˉ
t
=
∏
i
=
1
t
α
i
\alpha_t=1-\beta_t, \bar{\alpha}_t=\prod_{i=1}^t\alpha_i
αt=1−βt,αˉt=∏i=1tαi,这里呼应前面提到的第一个疑惑,这个公式的值的形式是化简而来的。
通过这个公式,我们就可以知道加噪过程是什么了,
α
ˉ
t
\bar{\alpha}_t
αˉt不断变小,直到0,那么最后的
x
t
x_t
xt就是一个单纯的标准正态分布了。在DDPM论文中,
β
t
\beta_t
βt从
1
0
−
4
10^{-4}
10−4到0.02线性增长,
a
t
a_t
at线性变小,但是注意了
α
ˉ
t
\bar{\alpha}_t
αˉt是乘法计算,那么它的趋势是越来越快,所以你要注意的是,加噪过程是由慢变快的,而不是匀速。