"); //-->
这篇文章是近期笔者阅读扩散模型的一些技术博客和概览的一篇梳理。主要参考的内容来自Calvin luo的论文,针对的对象主要是对扩散模型已经有一些基础了解的读者。Calvin luo 的这篇论文为理解扩散模型提供了一个统一的视角,尤其是其中的数理公式推导非常详尽,本文将试图尽量简要地概括一遍大一统视角下的扩散模型的推导过程。在结尾处,笔者附上了一些推导过程中的强假设的思考和疑惑,并简要讨论了下扩散模型应用在自然语言处理时的一些思考。
本篇阅读笔记一共参考了以下技术博客。其中如果不了解扩散模型的读者可以考虑先阅读lilian-weng的科普博客。Calvin-Luo的这篇介绍性论文在书写的时候经过了包括Jonathan Ho(DDPM作者), SongYang博士 和一系列相关扩散模型论文的发表者的审核,非常值得一读。
1. What are Diffusion Models? by Lilian Weng
2. Generative Modeling by Estimating Gradients of the Data Distribution by Song Yang
3. Understanding Diffusion Models: A Unified Perspective by Calvin Luo
生成模型希望可以生成符合真实分布(或给定数据集)的数据。我们常见的几种生成模型有GANs,Flow-based Models, VAEs, Energy-Based Models 以及我们今天希望讨论的扩散模型Diffusion Models. 其中扩散模型和变分自编码器VAEs, 和基于能量的模型EBMs有一些联系和区别,笔者会在接下来的章节阐述。
常见的几种生成模型
ELBO & VAE在介绍扩散模型前,我们先来回顾一下变分自编码器VAE。我们知道VAE最大的特点是引入了一个潜在向量的分布来辅助建模真实的数据分布。那么为什么我们要引入潜在向量?有两个直观的原因,一个是直接建模高维表征十分困难,常常需要引入很强的先验假设并且有维度诅咒的问题存在。另外一个是直接学习低维的潜在向量,一方面起到了维度压缩的作用,一方面也希望能够在低维空间上探索具有语义化的结构信息(例如图像领域里的GAN往往可以通过操控具体的某个维度影响输出图像的某个具体特征)。
引入了潜在向量后,我们可以将我们的目标分布的对数似然logP(x),也称为“证据evidence“写成下列形式:
ELBO的推理过程
其中,我们重点关注式15. 等式的左边是生成模型想要接近的真实数据分布(evidence),等式右边由两项组成,其中第二项的KL散度因为恒大于零,所以不等式恒成立。如果在等式右边减去该KL散度,则我们得到了真实数据分布的下界,即证据下界ELBO。对ELBO进行进一步的展开,我们就可以得到VAE的优化目标
ELBO等式的展开
对该证据下界的变形的形式,我们可以直观地这么理解:证据下界等价于这么一个过程,我们用编码器将输入x编码为一个后验的潜在向量分布q(z|x)。我们希望这个向量分布尽可能地和真实的潜在向量分布p(z)相似,所以用KL散度约束,这也可以避免学习到的后验分布q(z|x)坍塌成一个狄拉克delta函数(式19的右侧)。而得到的潜在向量我们用一个****重构出原数据,对应的是式19的左边P(x|z)。
VAE为什么叫变分自编码器。变分的部分来自于寻找最优的潜在向量分布q(z|x)的这个过程。自编码器的部分是上面提到的对输入数据的编码,再解码为原数据的行为。
那么提炼一下为什么VAE可以比较好地贴合原数据的分布?因为根据上述的公式推导我们发现:原数据分布的对数似然(称为证据evidence)可以写成证据下界加上我们希望近似的后验潜在向量分布和真实的潜在向量分布间的KL散度(即式15)。如果把该式写为A = B+C的形式。因为evidence(即A)是个常数(与我们要学习的参数无关),所以最大化B,也就是我们的证据下界,等价于最小化C,也即是我们希望拟合的分布和真实分布间的差别。而因为证据下界,我们可以重新写成式19那样一个自编码器的形式,我们也就得到了自编码器的训练目标。优化该目标,等价于近似真实数据分布,也等价于用变分手法来优化后验潜在向量分布q(z|x)的过程。
但VAE自身依然有很多问题。一个最明显的就是我们如何选定后验分布q_phi(z|x)。绝大多数的VAE实现里,这个后验分布被选定为了一个多维高斯分布。但这个选择更多的是为了计算和优化的方便而选择。这样的简单形式极大地限制了模型逼近真实后验分布的能力。VAE的原作者kingma曾经有篇非常经典的工作就是通过引入normalization flow[1]在改进后验分布的表达能力。而扩散模型同样可以看做是对后验分布q_phi(z|x)的改进。
Hierarchical VAE下图展示了一个变分自编码器里,潜在向量和输入间的闭环关系。即从输入中提取低维的潜在向量后,我们可以通过这个潜在向量重构出输入。
VAE里潜在向量与输入的关系
很明显,我们认为这个低维的潜在向量里一定是高效地编码了原数据分布的一些重要特性,才使得我们的****可以成功重构出原数据分布里的各式数据。那么如果我们递归式地对这个潜在向量再次计算“潜在向量的潜在向量”,我们就得到了一个多层的HVAE,其中每一层的潜在向量条件于所有前序的潜在向量。但是在这篇文章里,我们主要关注具有马尔可夫性质的层级变分自编码器MHVAE,即每一层的潜在向量仅条件于前一层的潜在向量。
MHVAE里的潜在向量只条件于上一层
对于该MHVAE,我们可以通过马尔可夫假设得到以下二式
23和24式是用链式法则对依赖图里的关系的拆解
对于该MHVAE,我们可以用以下步骤推导其证据下界
MHVAE的变分下界推导
Variation Diffusion Model我们之所以在谈论扩散模型之前,要花如此大的篇幅介绍VAE,并引出MHVAE的证据下界推导是因为我们可以非常自然地将扩散模型视为一种特殊的MHVAE,该MHVAE满足以下三点限制(注意以下三点限制也是整个扩散模型推断的基础):
因为第一点维度一致的原因,在不影响理解的基础上,我们将MHVAE里的Zt表示为Xt(其中x0为原始输入),则我们可以将MHVAE的层级潜在向量依赖图,重新画为以下形式(即将扩散模型的中间扩散过程当做潜在向量的层级建模过程):
扩散过程的直观解释:在数据x0上不断加高斯噪声直至退化为纯噪声图像Xt
直至这里,我们终于见到了我们熟悉的扩散模型的形式。
而在将上面的公式25-28里的Zt与Xt替换后,我们可以得到VDM里证据下界的推导公式里的前四行,即公式34-37。并且在此基础上,我们可以继续往下推导。37至38行的变换是链式法则的等价替换(或上述公式23和24的变换),38至39行是连乘过程的重组,39至40行是对齐连乘符号的区间,40至41行应用了Log乘法的性质,41至42继续运用该性质进一步拆分,42至43行是因为和的期望等于期望的和,43至44是因为期望目标与部分时间步的概率无关可以直接省去,44至45步是应用了KL散度的定义进行了重组。
VDM的证据下界推导
至此,我们又一次将原数据分布的对数似然,转化为了证据下界(公式37),并将其转化为了几项非常直观的损失函数的加和形式(公式45),他们分别为:
虽然以上的公式推导给了我们一个非常直观的证据下界,并且由于每一项都是以期望来计算,所以天然适用蒙特卡洛方法来近似,但如果优化该证据下界依然存在几个问题:
所以我们需要重新推导一个证据下界。而这个推导的关键将着眼于以下这个观察:我们可以将扩散过程的正向加噪过程q(xt|xt-1)重写为q(xt|xt-1, x0)。之所以这样重写的原因是基于马尔可夫假设,这两个式子完全等价。于是对这个式子使用贝叶斯法则,我们可以得到式46.
对前向加噪过程使用马尔可夫假设和贝叶斯法则后的公式
基于公式46,我们可以重写上面的证据下界(式37)为以下形式:其中式47,48和式37,38一致。式49开始,分母的连乘拆解由从T开始改为从1开始。式50基于上文提及的马尔可夫假设对分母添加了x0的依赖。式51用log的性质拆分了对数的目标。式52代入了式46做了替换。式53将划掉的分母部分连乘单独提取出来后发现各项可约剩下式54部分的log(q(x1|x0)/q(xT|x0))。式54用log的性质消去了q(x1|x0)得到了式55。式56用log的性质拆分重组了公式,式57如同前述式43-44的变换,省去了无关的时间步。式58则用了KL散度的性质。
应用了马尔可夫假设的扩散模型证据下界推导1应用了马尔可夫假设的扩散模型证据下界推导2
至此,我们应用了马尔可夫假设得到了一个更优的证据下界推导。该证据下界同样包含几项直观的损失函数:
注意,以上的推导完全基于马尔可夫的性质所以适用于所有MHVAE,所以当T=1的时候,以上的证据下界和VAE所推导出的证据下界完全一致!并且本文之所以称为大一统视角,是因为对于该证据下界里的去噪匹配项,不同的论文有不同的优化方式。但归根结底,他们的本质互相等价,且皆由该式展开推导得到。下面我们会从扩散模型的角度做公式推导,来展开计算去噪匹配项。(注意第一版的推导里的一致项,也完全可以通过下一节的方式得到q和p的表达式,再通过KL来计算解析式)
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。