【论文阅读笔记】大统一视角下理解扩散模型-1

论文链接: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)

  1. 通过边缘分布函数

p ( x ) = ∫ p ( x , z ) d z (1) p(x)=\int p(x,z)dz \tag{1} p(x)=p(x,z)dz(1)

  1. 通过链式法则

p ( x ) = p ( x , z ) p ( z ∣ x ) (2) p(x)=\frac{p(x,z)}{p(z|x)} \tag{2} p(x)=p(zx)p(x,z)(2)

直接计算似然 p ( x ) p(x) p(x)是很困难的,因为通过公式1的话,需要对所有隐变量 z z z进行积分(但对于复杂的模型来说很难处理);若通过公式2,也需要提前知道真实的 p ( x ∣ z ) p(x|z) p(xz)。然而,若咱同时使用两个公式就可以推出一个非常有用的概念,即证据下界(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ϕ(zx)是一个近似变分分布,其中 ϕ \phi ϕ是我们试图优化的参数。直觉上,它可以被认为是给定真实数据 x x x来试图估计背后的隐变量分布。换句话说,就是对后验概率 p ( z ∣ x ) p(z|x) p(zx)进行估计。在变分自编码器中,我们可以通过 ϕ \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)=logp(x,z)dz(使用公式1=logqϕ(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ϕ(zx)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)dzqϕ(z∣x)dz=1=qϕ(zx)logp(x)dz(由于积分是关于z的,可以直接拿进来)=Eqϕ(zx)[logp(x)](期望的定义)=Eqϕ(zx)[logp(z∣x)p(x,z)](使用公式2=Eqϕ(zx)[logp(z∣x)qϕ(z∣x)p(x,z)qϕ(z∣x)](上下同乘qϕ(z∣x)=Eqϕ(zx)[logqϕ(z∣x)p(x,z)]+Eqϕ(z∣x)[logp(z∣x)qϕ(z∣x)](将期望分开)=Eqϕ(zx)[logqϕ(z∣x)p(x,z)]+DKL(qϕ(z∣x)∣∣p(z∣x))KL散度定义)Elogqϕ(z∣x)[qϕ(zx)p(x,z)]KL散度大小始终非负)(9)(10)(11)(12)(13)(14)(15)(16)
整个推导的重点是公式15,注意KL散度是评估两个分布间距离的方法,这里的两个分布分别是 p ( z ∣ x ) p(z|x) p(zx) q ϕ ( z ∣ x ) q_{\phi}(z|x) qϕ(zx),其中前者是真实后验分布(我们并不知道),后者是模型学习到的后验分布(这正是我们想要的)。事实上,KL散度是公式8中被Jensen不等式移除掉的一项。因此,当我们想要最小化两个分布间的差异时(也就是最小化KL散度),等价于最大化ELBO。理解这个关键,非常有助于我们理解ELBO和证据间的关系,也有助于我们理解为什么我们要通过优化ELBO作为目标函数的替代项。

最后我们回顾一下推导过程:首先我们引入隐变量 z z z,这是我们期望模型通过可观测数据 x x x学习到的一项。换句话说,我们希望优化 q ϕ ( z ∣ x ) q_{\phi}(z|x) qϕ(zx)来尽可能接近真实后验分布 p ( z ∣ x ) p(z|x) p(zx),一般来说可以通过最小化二者的KL散度来完成,但很不幸这里我们没办法获取到真实的 p ( z ∣ x ) p(z|x) p(zx),因此很难直接计算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ϕ(zx)就越接近 p ( z ∣ x ) p(z|x) p(zx);此外,我们还可以通过ELBO估计生成样本或真实数据的似然,因为它就是学习来估计 l o g   p ( x ) \rm{log} \, p(x) logp(x)的。

下文将继续介绍另外两个背景概念,即VAE和Hierarchical VAE。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值