系统理解扩散模型(Diffusion Models):从柏拉图洞穴之喻开始(上)
柏拉图洞穴之喻
洞穴之喻(Allegory of the Cave)是柏拉图在《理想国》514-521中描述的对人类知识的基本想象。
设想在洞穴中有一批囚徒,他们终身呆在那里,被铁链束缚、不能转头,只能看到面前洞壁上的影子。他们身后有一条横贯洞穴的小道,沿小道有一堵矮墙,临着矮墙上方有一堆篝火。有一些特定的人,扛着各种根据现实中的实物所做的模型走过墙后的小道,而火光则把透出墙的器具投影到囚徒面前的洞壁上。对这些囚徒而言,他们能观测到的就是这些从不曾见识过的高维实物的低维投影。
生成模型
类似地,我们在现实世界中观测到的物体也可能是从一个抽象的表示方法(例如结合了形状、颜色、大小等多种特征组合的表示)生成的。然后,正如洞穴之喻中的囚徒观测到的是三维物体的二维投影,我们观测到的物体也是这些抽象概念的某种“投影”。尽管洞穴中的人从未看到过隐藏在身后的物体实体,他们也依然能够这些实体进行推断。同样的道理,我们也能够估计表示我们观测到的数据的潜在变量(latent variable)。一旦掌握了这种表示方法,我们就可以利用其生成新的数据,这就是生成模型的底层思想。
不同的是,洞穴之喻中的潜在变量的维度比实际观测的高;而对于生成模型,我们一般是希望寻找一个更低维度的潜在表示。这大致出于两个原因:一方面,在没有很强先验知识的前提下找到一个比实际观测维度更高的表示十分困难;另一方面,采用更低维度的表示可以看作是一个压缩过程,有助于挖掘有语意意义的结构(semantically meaningful structure)。
证据下界(Evidence Lower Bound)
数学上,我们通过联合分布 p ( x , z ) p(x, z) p(x,z)对观测值 x x x和潜在变量 z z z进行建模。那么,基于似然(likelihood-based)的生成旨在学习模型,最大化所有观测值 x x x的似然函数 p ( x ) p(x) p(x)。根据联合分布 p ( x , z ) p(x, z) p(x,z),我们有两种方式可以推出 p ( x ) p(x) p(x)。第一种是求对于 x x x的边缘概率分布:
p ( x ) = ∫ p ( x , z ) d z \begin{equation} p(x) = \int p(x, z) dz \end{equation} p(x)=∫p(x,z)dz
第二种则是利用贝叶斯公式进行推导:
p ( x ) = p ( x , z ) p ( z ∣ x ) \begin{equation} p(x) = \frac{p(x, z)}{p(z| x)} \end{equation} p(x)=p(z∣x)p(x,z)
直接计算并最大化似然函数 p ( x ) p(x) p(x)十分困难:从(1)出发,我们需要对所有的潜在变量 z z z进行积分,遇到复杂的模型更是难上加难;从(2)出发,我们则需要一个真实的潜在编码器(ground truth latent encoder) p ( x , z ) p(x, z) p(x,z)。
但是,我们可以利用这两个式子推出证据下界(Evidence Lower Bound, ELBO)。所谓的“证据”即是观测值的对数似然函数(log likelihood),而ELBO正是其下界:
log p ( x ) ≥ E q ϕ ( z ∣ x ) [ log p ( x , z ) q ϕ ( z ∣ x ) ] \begin{equation} \log p(x) \geq \mathbb{E}_{q_\phi(z|x)}[\log \frac{p(x, z)}{q_\phi(z|x)}] \end{equation} logp(x)≥Eqϕ(z∣x)[logqϕ(z∣x)p(x,z)]
q ϕ ( z ∣ x ) q_\phi(z|x) qϕ(z∣x)是一个近似变分分布, ϕ \phi ϕ是要优化的参数,其旨在近似真实的后验(posterior)分布 p ( z ∣ x ) p(z|x) p(z∣x)。这里,我们利用(2)推导(3):
log p ( x ) = log p ( x ) ∫ q ϕ ( z ∣ x ) d z = ∫ q ϕ ( z ∣ x ) ( log p ( x ) ) d z = E q ϕ ( z ∣ x ) log p ( x ) = E q ϕ ( z ∣ x ) [ log p ( x , z ) p ( z ∣ x ) ] = E q ϕ ( z ∣ x ) [ log p ( x , z ) q ϕ ( z ∣ x ) p ( z ∣ x ) q ϕ ( z ∣ x ) ] = E q ϕ ( z ∣ x ) [ log p ( x , z ) q ϕ ( z ∣ x ) ] + E q ϕ ( z ∣ x ) [ log q ϕ ( z ∣ x ) p ( z ∣ x ) ] = E q ϕ ( z ∣ x ) [ log p ( x , z ) q ϕ ( z ∣ x ) ] + D K L ( q ϕ ( z ∣ x ) ∥ p ( z ∣ x ) ) ≥ E q ϕ ( z ∣ x ) [ log p ( x , z ) q ϕ ( z ∣ x ) ] \begin{align} \log p(x) &= \log p(x) \int q_\phi(z|x)dz \\ & = \int q_\phi(z|x) (\log p(x))dz \\ & = \mathbb{E}_{q_\phi(z|x)}\log p(x) \\ & = \mathbb{E}_{q_\phi(z|x)}\left[\log\frac{p(x, z)}{p(z| x)}\right] \\ & = \mathbb{E}_{q_\phi(z|x)}\left[\log\frac{p(x, z)q_\phi(z|x)}{p(z| x)q_\phi(z|x)}\right] \\ & = \mathbb{E}_{q_\phi(z|x)}\left[\log\frac{p(x, z)}{q_\phi(z|x)}\right] + \mathbb{E}_{q_\phi(z|x)}\left[\log\frac{q_\phi(z|x)}{p(z| x)}\right] \\ & = \mathbb{E}_{q_\phi(z|x)}\left[\log\frac{p(x, z)}{q_\phi(z|x)}\right] + D_{KL}(q_\phi(z|x)\ \|\ p(z| x)) \\ & \geq \mathbb{E}_{q_\phi(z|x)}\left[\log\frac{p(x, z)}{q_\phi(z|x)}\right] \end{align} logp(x)=logp(x)∫qϕ(z∣x)dz=∫qϕ(z∣x)(logp(x))dz=Eqϕ(z∣x)logp(x)=Eqϕ(z∣x)[logp(z∣x)p(x,z)]=Eq<