从工程和理论角度理解DDPM
目录
说明
紧接着上一篇VAE,继续整理DDPM。
1.与VAE的区别和关系
设数据集
X
X
X的分布
P
(
X
)
P(X)
P(X),其对于我们是未知的,但可以从里面进行采样。假设采样了一个观测变量
x
0
x_0
x0。
从极大似然出发,然后引入隐变量,再到变分推导这一系列过程其实都和VAE一致,只不过隐变量改了一下
- 隐变量由单独一个 z z z变成了 x 1 , x 2 , … , x T x_{1}, x_{2}, \ldots, x_{T} x1,x2,…,xT,注意这些不是和 x 0 x_0 x0平行的样本,而是由 x 0 x_0 x0加噪得到的隐变量。
- 隐变量的维度是没有像VAE一样经过压缩的,即维度和 x 0 x_0 x0一致。
- 边缘概率密度公式变为了:
P ( x 0 ) = ∫ P ( x 0 : T ) d x 1 : T , P ( x 0 : T ) = P ( x T ) ∏ t = 1 T P θ ( x t − 1 ∣ x t ) P(x_0) = \int P(x_{0:T}) dx_{1:T}, \ \ \ \ \ P(x_{0:T})=P(x_T)\prod_{t=1}^{T} P_{\theta}\left(x_{t-1} \mid x_{t}\right) P(x0)=∫P(x0:T)dx1:T, P(x0:T)=P(xT)t=1∏TPθ(xt−1∣xt) - 贝叶斯公式变为了:
P ( x 0 ) = P ( x 0 : T ) P ( x 1 : T ∣ x 0 ) , P ( x 1 : T ∣ x 0 ) = ∏ t = 1 T P ( x t ∣ x t − 1 ) P(x_0) = \frac{P(x_{0:T})}{P(x_{1: T} \mid x_{0})}, \ \ \ \ \ P(x_{1: T} \mid x_{0})=\prod_{t=1}^{T} P\left(x_{t} \mid x_{t-1}\right) P(x0)=P(x1:T∣x0)P(x0:T), P(x1:T∣x0)=t=1∏TP(xt∣xt−1)
2.变分推断
变分推断的公式基本和VAE的一致,最终也是转换成求解ELBO的代理任务
概率密度公式推导:
log
P
(
x
0
)
=
log
∫
P
(
x
0
:
T
)
d
x
1
:
T
=
log
∫
P
(
x
0
:
T
)
d
x
1
:
T
Q
ϕ
(
x
1
:
T
∣
x
0
)
Q
ϕ
(
x
1
:
T
∣
x
0
)
d
x
1
:
T
=
log
E
Q
ϕ
(
x
1
:
T
∣
x
0
)
[
P
(
x
0
:
T
)
Q
ϕ
(
x
1
:
T
∣
x
0
)
]
≥
E
Q
ϕ
(
x
1
:
T
∣
x
0
)
[
l
o
g
P
(
x
0
:
T
)
Q
ϕ
(
x
1
:
T
∣
x
0
)
]
\begin{aligned} \log P(x_0) & =\log \int P(x_{0:T}) dx_{1:T} \\ & =\log \int \frac{P(x_{0:T}) dx_{1:T} Q_{\phi}(x_{1: T} \mid x_{0})}{Q_{\phi}(x_{1: T} \mid x_{0})} dx_{1:T} \\ & =\log \mathbb{E}_{Q_{\phi}(x_{1: T} \mid x_{0})}\left[\frac{P(x_{0:T})}{Q_{\phi}(x_{1: T} \mid x_{0})} \right] \\ & \geq \mathbb{E}_{Q_{\phi}(x_{1: T} \mid x_{0})}\left[log \frac{P(x_{0:T})}{Q_{\phi}(x_{1: T} \mid x_{0})} \right] \end{aligned}
logP(x0)=log∫P(x0:T)dx1:T=log∫Qϕ(x1:T∣x0)P(x0:T)dx1:TQϕ(x1:T∣x0)dx1:T=logEQϕ(x1:T∣x0)[Qϕ(x1:T∣x0)P(x0:T)]≥EQϕ(x1:T∣x0)[logQϕ(x1:T∣x0)P(x0:T)]
贝叶斯公式推导:
l
o
g
P
(
x
0
)
=
l
o
g
P
(
x
0
:
T
)
P
(
x
1
:
T
∣
x
0
)
=
l
o
g
P
(
x
0
:
T
)
P
(
x
1
:
T
∣
x
0
)
∫
Q
ϕ
(
x
1
:
T
∣
x
0
)
d
x
1
:
T
=
∫
Q
ϕ
(
x
1
:
T
∣
x
0
)
l
o
g
P
(
x
0
:
T
)
P
(
x
1
:
T
∣
x
0
)
d
x
1
:
T
=
E
Q
ϕ
(
x
1
:
T
∣
x
0
)
[
l
o
g
P
(
x
0
:
T
)
Q
ϕ
(
x
1
:
T
∣
x
0
)
P
(
x
1
:
T
∣
x
0
)
Q
ϕ
(
x
1
:
T
∣
x
0
)
]
=
E
Q
ϕ
(
x
1
:
T
∣
x
0
)
[
l
o
g
P
(
x
0
:
T
)
Q
ϕ
(
x
1
:
T
∣
x
0
)
]
+
E
Q
ϕ
(
x
1
:
T
∣
x
0
)
[
l
o
g
Q
ϕ
(
x
1
:
T
∣
x
0
)
P
(
x
1
:
T
∣
x
0
)
]
=
E
Q
ϕ
(
x
1
:
T
∣
x
0
)
[
l
o
g
P
(
x
0
:
T
)
Q
ϕ
(
x
1
:
T
∣
x
0
)
]
+
D
K
L
(
Q
ϕ
(
x
1
:
T
∣
x
0
)
∥
P
(
x
1
:
T
∣
x
0
)
)
≥
E
Q
ϕ
(
x
1
:
T
∣
x
0
)
[
l
o
g
P
(
x
0
:
T
)
Q
ϕ
(
x
1
:
T
∣
x
0
)
]
\begin{aligned} log P(x_0) &= log \frac{P(x_{0:T})}{P(x_{1: T} \mid x_{0})} \\ &= log \frac{P(x_{0:T})}{P(x_{1: T} \mid x_{0})} \int Q_{\phi}(x_{1: T} \mid x_{0}) dx_{1:T} \\ &= \int Q_{\phi}(x_{1: T} \mid x_{0}) log \frac{P(x_{0:T})}{P(x_{1: T} \mid x_{0})} dx_{1:T} \\ &= \mathbb{E}_{Q_{\phi}(x_{1: T} \mid x_{0})}\left[log \frac{P(x_{0:T}) Q_{\phi}(x_{1: T} \mid x_{0}) }{P(x_{1: T} \mid x_{0}) Q_{\phi}(x_{1: T} \mid x_{0})} \right] \\ &= \mathbb{E}_{Q_{\phi}(x_{1: T} \mid x_{0})}\left[log \frac{P(x_{0:T}) }{ Q_{\phi}(x_{1: T} \mid x_{0})} \right] + \mathbb{E}_{Q_{\phi}(x_{1: T} \mid x_{0})}\left[log \frac{ Q_{\phi}(x_{1: T} \mid x_{0}) }{ P(x_{1: T} \mid x_{0}) } \right] \\ &= \mathbb{E}_{Q_{\phi}(x_{1: T} \mid x_{0})}\left[log \frac{P(x_{0:T}) }{ Q_{\phi}(x_{1: T} \mid x_{0})} \right] + D_{\mathrm{KL}}\left(Q_{\phi}(x_{1: T} \mid x_{0}) \| P(x_{1: T} \mid x_{0}) \right) \\ & \geq \mathbb{E}_{Q_{\phi}(x_{1: T} \mid x_{0})}\left[log \frac{P(x_{0:T})}{Q_{\phi}(x_{1: T} \mid x_{0})} \right] \end{aligned}
logP(x0)=logP(x1:T∣x0)P(x0:T)=logP(x1:T∣x0)P(x0:T)∫Qϕ(x1:T∣x0)dx1:T=∫Qϕ(x1:T∣x0)logP(x1:T∣x0)P(x0:T)dx1:T=EQϕ(x1:T∣x0)[logP(x1:T∣x0)Qϕ(x1:T∣x0)P(x0:T)Qϕ(x1:T∣x0)]=EQϕ(x1:T∣x0)[logQϕ(x1:T∣x0)P(x0:T)]+EQϕ(x1:T∣x0)[logP(x1:T∣x0)Qϕ(x1:T∣x0)]=EQϕ(x1:T∣x0)[logQϕ(x1:T∣x0)P(x0:T)]+DKL(Qϕ(x1:T∣x0)∥P(x1:T∣x0))≥EQϕ(x1:T∣x0)[logQϕ(x1:T∣x0)P(x0:T)]
3.ELBO继续推导
E
L
B
O
=
E
Q
ϕ
(
x
1
:
T
∣
x
0
)
[
l
o
g
P
(
x
0
:
T
)
Q
ϕ
(
x
1
:
T
∣
x
0
)
]
=
E
Q
ϕ
(
x
1
∣
x
0
)
[
log
P
θ
(
x
0
∣
x
1
)
]
⏟
reconstruction term
−
D
K
L
(
Q
ϕ
(
x
T
∣
x
0
)
∥
P
(
x
T
)
)
⏟
prior matching term
−
∑
t
=
2
T
E
Q
ϕ
(
x
t
∣
x
0
)
[
D
K
L
(
Q
ϕ
(
x
t
−
1
∣
x
t
,
x
0
)
∥
P
θ
(
x
t
−
1
∣
x
t
)
)
]
⏟
denoising matching term
\begin{aligned} ELBO &= \mathbb{E}_{Q_{\phi}(x_{1: T} \mid x_{0})}\left[log \frac{P(x_{0:T})}{Q_{\phi}(x_{1: T} \mid x_{0})} \right] \\ &=\underbrace{\mathbb{E}_{Q_{\phi}(x_{1} \mid x_{0})}\left[\log P_{\theta}\left(x_{0} \mid x_{1}\right)\right]}_{\text {reconstruction term }} -\underbrace{D_{\mathrm{KL}}\left(Q_{\phi}\left(x_{T} \mid x_{0}\right) \| P\left(x_{T}\right)\right)}_{\text {prior matching term }} \\ &-\sum_{t=2}^{T} \underbrace{\mathbb{E}_{Q_{\phi}(x_{t} \mid x_{0})}\left[D_{\mathrm{KL}}\left(Q_{\phi}\left(x_{t-1} \mid x_{t}, x_{0}\right) \| P_{\theta}\left(x_{t-1} \mid x_{t}\right)\right)\right]}_{\text {denoising matching term }} \end{aligned}
ELBO=EQϕ(x1:T∣x0)[logQϕ(x1:T∣x0)P(x0:T)]=reconstruction term
EQϕ(x1∣x0)[logPθ(x0∣x1)]−prior matching term
DKL(Qϕ(xT∣x0)∥P(xT))−t=2∑Tdenoising matching term
EQϕ(xt∣x0)[DKL(Qϕ(xt−1∣xt,x0)∥Pθ(xt−1∣xt))]
r
e
c
o
n
s
t
r
u
c
t
i
o
n
t
e
r
m
reconstruction \ term
reconstruction term和VAE一样,是衡量从
x
1
x_1
x1到
x
0
x_0
x0的重建程度。
p r i o r m a t c h i n g t e r m prior \ matching \ term prior matching term由于 Q ϕ ( x T ∣ x 0 ) Q_{\phi}\left(x_{T} \mid x_{0}\right) Qϕ(xT∣x0)不像VAE一样需要神经网络去拟合,而是人工预设的加噪步骤,按照人工设定最终一定会趋向于标准正态分布,所以该项没有可学习参数,所以该项可以忽略。
d e n o i s i n g m a t c h i n g t e r m denoising \ matching \ term denoising matching term这一项是最重要的一项,也是和VAE的区别,DDPM网络的学习主要也是靠这一项。
4. r e c o n s t r u c t i o n t e r m reconstruction \ term reconstruction term
r e c o n s t r u c t i o n t e r m reconstruction \ term reconstruction term 是将最后一步的加噪图像 x 1 x_1 x1 生成去噪图像 x 0 x_0 x0 的极大似然估计,为了生成更好的图像,我们需要对每个像素都运用极大似然估计,使得图像上每个像素值都满足离散的对数似然。
为了达到这个目的,将逆扩散过程中的最后从
x
1
x_1
x1 到
x
0
x_0
x0 的转换设置为独立的离散计算方式。 即在最后一个转换过程在给定
x
1
x_1
x1 下得到图像
x
0
x_0
x0 满足对数似然,假设像素与像素之间是相互独立的:
P
θ
(
x
0
∣
x
1
)
=
∏
i
=
1
D
P
θ
(
x
0
i
∣
x
1
i
)
P_{\theta}\left(x_{0} \mid x_{1}\right)=\prod_{i=1}^{D} P_{\theta}\left(x_{0}^{i} \mid x_{1}^{i}\right)
Pθ(x0∣x1)=i=1∏DPθ(x0i∣x1i)
D
D
D 代表
x
x
x 的维度,上标
i
i
i 表示图像中的一个坐标位置。现在的目标是确定给定像素的值可能性有多大,也就是想要知道对应时间步
t
=
1
t=1
t=1 下噪声图像
x
x
x 中相应像素值的分布:
N
(
x
;
μ
θ
i
(
x
1
,
1
)
,
σ
1
2
)
\mathcal{N}\left(x ; \mu_{\theta}^{i}\left(x_{1}, 1\right), \sigma_{1}^{2}\right)
N(x;μθi(x1,1),σ12)
其中
t
=
1
t=1
t=1 的像素分布来自多元高斯分布,其对角协方差矩阵允许我们将分布拆分为单变量高斯的乘积:
N
(
x
;
μ
θ
(
x
1
,
1
)
,
σ
1
2
I
)
=
∏
i
=
1
D
N
(
x
;
μ
θ
i
(
x
1
,
1
)
,
σ
1
2
)
\mathcal{N}\left(x ; \mu_{\theta}\left(x_{1}, 1\right), \sigma_{1}^{2} \mathbb{I}\right)=\prod_{i=1}^{D} \mathcal{N}\left(x ; \mu_{\theta}^{i}\left(x_{1}, 1\right), \sigma_{1}^{2}\right)
N(x;μθ(x1,1),σ12I)=i=1∏DN(x;μθi(x1,1),σ12)
现在假设图像已经从0-255的数值之间,经过归一化在[-1,1]的范围内。在 t=0 时给定每个像素的像素值,最后一个时间步 t=1 的转换概率分布
p
θ
(
x
0
∣
x
1
)
p_{\theta}\left(x_{0} \mid x_{1}\right)
pθ(x0∣x1) 的值就是每个像素值的乘积。所以:
P
θ
(
x
0
∣
x
1
)
=
∏
i
=
1
D
∫
δ
−
(
x
0
i
)
δ
+
(
x
0
i
)
N
(
x
;
μ
θ
i
(
x
1
,
1
)
,
σ
1
2
)
d
x
δ
+
(
x
)
=
{
∞
if
x
=
1
x
+
1
255
if
x
<
1
δ
−
(
x
)
=
{
−
∞
if
x
=
−
1
x
−
1
255
if
x
>
−
1
\begin{aligned} P_{\theta}\left(\mathbf{x}_{0} \mid \mathbf{x}_{1}\right) & =\prod_{i=1}^{D} \int_{\delta_{-}\left(x_{0}^{i}\right)}^{\delta_{+}\left(x_{0}^{i}\right)} \mathcal{N}\left(x ; \mu_{\theta}^{i}\left(\mathbf{x}_{1}, 1\right), \sigma_{1}^{2}\right) d x \\ \delta_{+}(x) & =\left\{\begin{array}{ll} \infty & \text { if } x=1 \\ x+\frac{1}{255} & \text { if } x<1 \end{array} \quad \delta_{-}(x)=\left\{\begin{array}{ll} -\infty & \text { if } x=-1 \\ x-\frac{1}{255} & \text { if } x>-1 \end{array}\right.\right. \end{aligned}
Pθ(x0∣x1)δ+(x)=i=1∏D∫δ−(x0i)δ+(x0i)N(x;μθi(x1,1),σ12)dx={∞x+2551 if x=1 if x<1δ−(x)={−∞x−2551 if x=−1 if x>−1
这个公式来自原论文,这里解析一下它的含义。就是我们要将最后一步的加噪图像
x
1
x_1
x1 拟合去燥图像
x
0
x_0
x0 ,把图像的每一个像素点都设为一个高斯分布,一共
D
D
D 个像素点。而
x
0
x_0
x0 每个像素点原本的取值范围为
{
0
,
1
,
…
,
255
}
\{0,1, \ldots, 255\}
{0,1,…,255} ,经过归一化映射到了
[
−
1
,
1
]
[-1,1]
[−1,1] 范围内。
现在我们把单独取出一个
x
1
x_1
x1 上的像素点
x
1
i
x_1^i
x1i,它服从分布
N
(
x
;
μ
θ
i
(
x
1
,
1
)
,
σ
1
2
)
\mathcal{N}\left(x ; \mu_{\theta}^{i}\left(x_{1}, 1\right), \sigma_{1}^{2}\right)
N(x;μθi(x1,1),σ12),需要拟合的目标为
x
0
x_0
x0 上的对应位置像素点
x
0
i
x_0^i
x0i ,而
x
0
i
x_0^i
x0i 的取值范围由原本的离散空间
{
0
,
1
,
…
,
255
}
\{0,1, \ldots, 255\}
{0,1,…,255} 映射到了空间
[
−
1
,
1
]
[-1,1]
[−1,1],
{
−
1
,
−
1
+
2
255
,
.
.
.
.
,
1
−
2
255
,
1
}
\{-1,-1 + \frac{2}{255}, ...., 1- \frac{2}{255}, 1 \}
{−1,−1+2552,....,1−2552,1},然后再映射到连续空间
(
−
∞
,
−
1
+
1
255
)
(-\infty, -1+\frac{1}{255})
(−∞,−1+2551),
(
−
1
+
1
255
,
−
1
+
3
255
)
(-1+\frac{1}{255}, -1+\frac{3}{255})
(−1+2551,−1+2553)
所以每个原本的离散值在连续空间中对应一个区间,而区间映射的公式就是:
δ
+
(
x
)
=
{
∞
if
x
=
1
x
+
1
255
if
x
<
1
δ
−
(
x
)
=
{
−
∞
if
x
=
−
1
x
−
1
255
if
x
>
−
1
\begin{aligned} \delta_{+}(x) & =\left\{\begin{array}{ll} \infty & \text { if } x=1 \\ x+\frac{1}{255} & \text { if } x<1 \end{array} \quad \delta_{-}(x)=\left\{\begin{array}{ll} -\infty & \text { if } x=-1 \\ x-\frac{1}{255} & \text { if } x>-1 \end{array}\right.\right. \end{aligned}
δ+(x)={∞x+2551 if x=1 if x<1δ−(x)={−∞x−2551 if x=−1 if x>−1
5. d e n o i s i n g m a t c h i n g t e r m denoising \ matching \ term denoising matching term
∑ t = 2 T E Q ϕ ( x t ∣ x 0 ) [ D K L ( Q ϕ ( x t − 1 ∣ x t , x 0 ) ∥ P θ ( x t − 1 ∣ x t ) ) ] ⏟ denoising matching term \sum_{t=2}^{T} \underbrace{\mathbb{E}_{Q_{\phi}(x_{t} \mid x_{0})}\left[D_{\mathrm{KL}}\left(Q_{\phi}\left(x_{t-1} \mid x_{t}, x_{0}\right) \| P_{\theta}\left(x_{t-1} \mid x_{t}\right)\right)\right]}_{\text {denoising matching term }} t=2∑Tdenoising matching term EQϕ(xt∣x0)[DKL(Qϕ(xt−1∣xt,x0)∥Pθ(xt−1∣xt))]
Q ϕ ( x t − 1 ∣ x t , x 0 ) Q_{\phi}\left(x_{t-1} \mid x_{t}, x_{0}\right) Qϕ(xt−1∣xt,x0)代表ground truth,即给定 x t x_t xt和 x 0 x_0 x0后 x t − 1 x_{t-1} xt−1的真实分布。因为加噪过程是全程人工参与的,透明的,直观一些就是我们是知道 x t − 1 x_{t-1} xt−1到 x t x_{t} xt这一步加了什么噪音的得到了具体分布,所以我们就可以知道从 x t x_t xt到 x t − 1 x_{t-1} xt−1这一步需要减去哪些噪音,所以 Q ϕ ( x t − 1 ∣ x t , x 0 ) Q_{\phi}\left(x_{t-1} \mid x_{t}, x_{0}\right) Qϕ(xt−1∣xt,x0)对我们来说就是ground truth。
P θ ( x t − 1 ∣ x t ) P_{\theta}\left(x_{t-1} \mid x_{t}\right) Pθ(xt−1∣xt)是我们需要学习的网络(原论文中就是那个UNet)拟合的去噪过程,需要受到ground truth的监督。
由于是个累加,所以我们单独拿出第
t
t
t步来讨论:
D
K
L
(
Q
ϕ
(
x
t
−
1
∣
x
t
,
x
0
)
∥
P
θ
(
x
t
−
1
∣
x
t
)
)
D_{\mathrm{KL}}\left(Q_{\phi}\left(x_{t-1} \mid x_{t}, x_{0}\right) \| P_{\theta}\left(x_{t-1} \mid x_{t}\right)\right)
DKL(Qϕ(xt−1∣xt,x0)∥Pθ(xt−1∣xt))
接下来的目标就是求出ground truth
Q
ϕ
(
x
t
−
1
∣
x
t
,
x
0
)
Q_{\phi}\left(x_{t-1} \mid x_{t}, x_{0}\right)
Qϕ(xt−1∣xt,x0)的表达式。
文章太长发不出去,接下一章