论文链接:https://arxiv.org/abs/2208.11970
这篇文章来自Calvin Luo,详细地推导了扩散模型的由来,证明其只是VAE的一种特殊形式,而且这篇介绍性论文在书写的时候经过了包括Jonathan Ho(DDPM作者)、SongYang博士和一系列相关扩散模型论文的发表者的审核,非常值得一读。
引言:
何为生成模型?给定可观察到的样本 x x x,其目的便是学习真实数据的分布 p ( x ) p(x) p(x)。一旦学习到,我们就可以通过我们的生成模型来产生新的样本。更进一步,我们可以使用学习到模型来对真实数据或生成样本进行似然估计。
目前在生成领域有几个耳熟能详的大方向,我们首先来简单回顾一下:
这一部分有些知识还不理解,之后会写几篇博客学习一下
- Generative Adversarial Networks (GANs)
- 通过对抗来学习到数据分布
- 基于似然的模型(likelihood-based)
- 不同于GANs的黑盒,这类模型试图学习到观测样本的形式化分布,包括自回归模型(autoregressive models)、流模型(normalizing flows)和变分自编码器(Variational Autoencoders,VAEs)
- 基于能量的模型(energy-based)
- 将分布学习为任意灵活的能量函数,然后将其归一化。
- 基于分数的模型(score-based)
- 和基于能量的模型高度相关,只不过不再是学习能量函数本身,而是学习能量函数模型的分数(score)
在这篇文章中,作者通过推导证明,扩散模型具有基于似然和基于分数这两种理解。作者这里给出了我认为在所有介绍性论文中最详尽的推导,任何一位初学者都可以follow并且understand扩散模型是什么及如何工作的。
背景:ELBO, VAE 和 Hierarchical VAE
我们通常认为我们观测到或生成的数据是通过一个看不见的隐变量 z z z控制的,这种隐变量往往是低维而非高维的,这么做的好处有两点,一是直接对于高维表征进行学习很困难,而且需要引入很强的先验假设;二是起到了维度压缩的作用,同时我们也希望能够在低维空间上探索具有语义化的结构信息。
Evidence Lower Bound
从数学上,我们可以将隐变量和可观测数据通过联合分布 p ( x , z ) p(x,z) p(x,z)进行形式化描述。回顾一下基于似然的模型,它就是通过观测到的 x x x,来最大化似然 p ( x ) p(x) p(x)。我们可以通过如下两种方式来将联合分布推导出真实分布 p ( x ) p(x) p(x):
- 通过边缘分布函数
p ( x ) = ∫ p ( x , z ) d z (1) p(x)=\int p(x,z)dz \tag{1} p(x)=∫p(x,z)dz(1)
- 通过链式法则
p ( x ) = p ( x , z ) p ( z ∣ x ) (2) p(x)=\frac{p(x,z)}{p(z|x)} \tag{2} p(x)=p(z∣x)p(x,z)(2)
直接计算似然
p
(
x
)
p(x)
p(x)是很困难的,因为通过公式1的话,需要对所有隐变量
z
z
z进行积分(但对于复杂的模型来说很难处理);若通过公式2,也需要提前知道真实的
p
(
x
∣
z
)
p(x|z)
p(x∣z)。然而,若咱同时使用两个公式就可以推出一个非常有用的概念,即证据下界(Evidence Lower Bound, ELBO)。何为证据,即对数似然函数
l
o
g
p
(
x
)
\rm{log}\,p(x)
logp(x)。之后,最大化ELBO就可以等价优化观测数据的对数似然函数。在最好的情况下,当ELBO经过充分的优化后,它就等于对数似然函数了。ELBO的形式化表述如下:
E
L
B
O
:
=
E
q
ϕ
(
z
∣
x
)
[
l
o
g
p
(
x
,
z
)
q
ϕ
(
z
∣
x
)
]
(3)
\rm{ELBO} := \mathbb{E}_{q_\phi(z|x)}[\rm{log}\,\frac{p(x,z)}{q_\phi(z|x)}] \tag{3}
ELBO:=Eqϕ(z∣x)[logqϕ(z∣x)p(x,z)](3)
为了和证据下界的关系表述得更清楚一些,可以形式化表述如下:
l
o
g
p
(
x
)
⩾
E
q
ϕ
(
z
∣
x
)
[
l
o
g
p
(
x
,
z
)
q
ϕ
(
z
∣
x
)
]
(4)
\rm{log} \, p(x) \geqslant \mathbb{E}_{q_\phi(z|x)}[\rm{log}\,\frac{p(x,z)}{q_\phi(z|x)}] \tag{4}
logp(x)⩾Eqϕ(z∣x)[logqϕ(z∣x)p(x,z)](4)
这里,
q
ϕ
(
z
∣
x
)
q_\phi(z|x)
qϕ(z∣x)是一个近似变分分布,其中
ϕ
\phi
ϕ是我们试图优化的参数。直觉上,它可以被认为是给定真实数据
x
x
x来试图估计背后的隐变量分布。换句话说,就是对后验概率
p
(
z
∣
x
)
p(z|x)
p(z∣x)进行估计。在变分自编码器中,我们可以通过
ϕ
\phi
ϕ来最大化ELBO,如此一来便学习了真实分布然后直接从里面采样来得到生成样本。现在,我们来了解一下为什么ELBO是一个学习目标,以及我们为什么要最大化它。
使用公式1来推导ELBO:
l
o
g
p
(
x
)
=
l
o
g
∫
p
(
x
,
z
)
d
z
(使用公式
1
)
=
l
o
g
∫
p
(
x
,
z
)
q
ϕ
(
z
∣
x
)
q
ϕ
(
z
∣
x
)
d
z
(上下同乘
q
ϕ
(
z
∣
x
)
)
=
l
o
g
E
q
ϕ
(
z
∣
x
)
[
p
(
x
,
z
)
q
ϕ
(
z
∣
x
)
]
(期望的定义)
⩾
E
l
o
g
q
ϕ
(
z
∣
x
)
[
p
(
x
,
z
)
q
ϕ
(
z
∣
x
)
]
(
J
e
n
s
e
n
不等式)
\begin{align} \rm{log} \, p(x) &= \rm{log} \, \int p(x,z)dz \quad(使用公式1)\tag{5}\\ &= \rm{log} \, \int \frac{p(x,z)q_\phi(z|x)}{q_\phi(z|x)}dz \quad(上下同乘q_\phi(z|x))\tag{6}\\ &= \rm{log} \, \mathbb{E}_{q_\phi(z|x)}[\frac{p(x,z)}{q_\phi(z|x)}] \quad(期望的定义)\tag{7}\\ &\geqslant \mathbb{E}_{\rm{log} \, q_\phi(z|x)}[\frac{p(x,z)}{q_\phi(z|x)}] \quad(Jensen不等式)\tag{8}\\ \end{align}
logp(x)=log∫p(x,z)dz(使用公式1)=log∫qϕ(z∣x)p(x,z)qϕ(z∣x)dz(上下同乘qϕ(z∣x))=logEqϕ(z∣x)[qϕ(z∣x)p(x,z)](期望的定义)⩾Elogqϕ(z∣x)[qϕ(z∣x)p(x,z)](Jensen不等式)(5)(6)(7)(8)
不难发现,我们通过Jensen不等式得到了ELBO是对数似然的下界的结论,但这还不够!因为一是我们不知道下界具体与对数似然有多远,二是我们还不知道我们为什么要最大化它。
为了更好地理解ELBO和证据之间的关系,这次我们用公式2推导:
l
o
g
p
(
x
)
=
l
o
g
p
(
x
)
∫
q
ϕ
(
z
∣
x
)
d
z
(
∫
q
ϕ
(
z
∣
x
)
d
z
=
1
)
=
∫
q
ϕ
(
z
∣
x
)
l
o
g
p
(
x
)
d
z
(由于积分是关于
z
的,可以直接拿进来)
=
E
q
ϕ
(
z
∣
x
)
[
l
o
g
p
(
x
)
]
(期望的定义)
=
E
q
ϕ
(
z
∣
x
)
[
l
o
g
p
(
x
,
z
)
p
(
z
∣
x
)
]
(使用公式
2
)
=
E
q
ϕ
(
z
∣
x
)
[
l
o
g
p
(
x
,
z
)
q
ϕ
(
z
∣
x
)
p
(
z
∣
x
)
q
ϕ
(
z
∣
x
)
]
(上下同乘
q
ϕ
(
z
∣
x
)
)
=
E
q
ϕ
(
z
∣
x
)
[
l
o
g
p
(
x
,
z
)
q
ϕ
(
z
∣
x
)
]
+
E
q
ϕ
(
z
∣
x
)
[
l
o
g
q
ϕ
(
z
∣
x
)
p
(
z
∣
x
)
]
(将期望分开)
=
E
q
ϕ
(
z
∣
x
)
[
l
o
g
p
(
x
,
z
)
q
ϕ
(
z
∣
x
)
]
+
D
K
L
(
q
ϕ
(
z
∣
x
)
∣
∣
p
(
z
∣
x
)
)
(
K
L
散度定义)
⩾
E
l
o
g
q
ϕ
(
z
∣
x
)
[
p
(
x
,
z
)
q
ϕ
(
z
∣
x
)
]
(
K
L
散度大小始终非负)
\begin{align} \rm{log} \, p(x) &= \rm{log} \, p(x) \int q_\phi(z|x) dz \quad(\int q_\phi(z|x) dz=1)\tag{9}\\ &= \int q_\phi(z|x) \rm{log} \, p(x) dz \quad(由于积分是关于z的,可以直接拿进来)\tag{10}\\ &= \mathbb{E}_{q_\phi(z|x)}[\rm{log} \, p(x)] \quad(期望的定义)\tag{11}\\ &= \mathbb{E}_{q_\phi(z|x)}[\rm{log} \, \frac{p(x,z)}{p(z|x)}] \quad(使用公式2)\tag{12}\\ &= \mathbb{E}_{q_\phi(z|x)}[\rm{log} \, \frac{p(x,z)q_\phi(z|x)}{p(z|x)q_\phi(z|x)}] \quad(上下同乘q_\phi(z|x))\tag{13}\\ &= \mathbb{E}_{q_\phi(z|x)}[\rm{log} \, \frac{p(x,z)}{q_\phi(z|x)}]+\mathbb{E}_{q_\phi(z|x)}[\rm{log} \, \frac{q_\phi(z|x)}{p(z|x)}] \quad(将期望分开)\tag{14}\\ &= \mathbb{E}_{q_\phi(z|x)}[\rm{log} \, \frac{p(x,z)}{q_\phi(z|x)}]+D_{KL}(q_{\phi}(z|x)||p(z|x)) \quad(KL散度定义)\tag{15}\\ &\geqslant \mathbb{E}_{\rm{log} \, q_\phi(z|x)}[\frac{p(x,z)}{q_\phi(z|x)}] \quad\rm{(}KL散度大小始终非负)\tag{16} \end{align}
logp(x)=logp(x)∫qϕ(z∣x)dz(∫qϕ(z∣x)dz=1)=∫qϕ(z∣x)logp(x)dz(由于积分是关于z的,可以直接拿进来)=Eqϕ(z∣x)[logp(x)](期望的定义)=Eqϕ(z∣x)[logp(z∣x)p(x,z)](使用公式2)=Eqϕ(z∣x)[logp(z∣x)qϕ(z∣x)p(x,z)qϕ(z∣x)](上下同乘qϕ(z∣x))=Eqϕ(z∣x)[logqϕ(z∣x)p(x,z)]+Eqϕ(z∣x)[logp(z∣x)qϕ(z∣x)](将期望分开)=Eqϕ(z∣x)[logqϕ(z∣x)p(x,z)]+DKL(qϕ(z∣x)∣∣p(z∣x))(KL散度定义)⩾Elogqϕ(z∣x)[qϕ(z∣x)p(x,z)](KL散度大小始终非负)(9)(10)(11)(12)(13)(14)(15)(16)
整个推导的重点是公式15,注意KL散度是评估两个分布间距离的方法,这里的两个分布分别是
p
(
z
∣
x
)
p(z|x)
p(z∣x)和
q
ϕ
(
z
∣
x
)
q_{\phi}(z|x)
qϕ(z∣x),其中前者是真实后验分布(我们并不知道),后者是模型学习到的后验分布(这正是我们想要的)。事实上,KL散度是公式8中被Jensen不等式移除掉的一项。因此,当我们想要最小化两个分布间的差异时(也就是最小化KL散度),等价于最大化ELBO。理解这个关键,非常有助于我们理解ELBO和证据间的关系,也有助于我们理解为什么我们要通过优化ELBO作为目标函数的替代项。
最后我们回顾一下推导过程:首先我们引入隐变量 z z z,这是我们期望模型通过可观测数据 x x x学习到的一项。换句话说,我们希望优化 q ϕ ( z ∣ x ) q_{\phi}(z|x) qϕ(z∣x)来尽可能接近真实后验分布 p ( z ∣ x ) p(z|x) p(z∣x),一般来说可以通过最小化二者的KL散度来完成,但很不幸这里我们没办法获取到真实的 p ( z ∣ x ) p(z|x) p(z∣x),因此很难直接计算KL散度。这里,我们通过推导发现, l o g p ( x ) \rm{log} \, p(x) logp(x)是一个和 ϕ \phi ϕ无关的值,也就是说当我们在优化 ϕ \phi ϕ的时候, l o g p ( x ) \rm{log} \, p(x) logp(x)是一个常数!由于KL散度大小始终非负,那么最大化ELBO就等价于最小化KL散度。我们越优化ELBO, q ϕ ( z ∣ x ) q_{\phi}(z|x) qϕ(z∣x)就越接近 p ( z ∣ x ) p(z|x) p(z∣x);此外,我们还可以通过ELBO估计生成样本或真实数据的似然,因为它就是学习来估计 l o g p ( x ) \rm{log} \, p(x) logp(x)的。
下文将继续介绍另外两个背景概念,即VAE和Hierarchical VAE。