Diffusion

本文是Google发布的Understanding Diffusion Models: A Unified Perspective一文的笔记。

生成模型简介

给定我们关注的数据分布中的观测样本$x$,生成模型的目标是学习真实的数据分布$p(x)$。这样之后就可以从近似模型任意生成新的样本,以及使用近似模型来评估样本数据的概率。

目前有几个较重要的方向,下面简要概括:

  • 生成对抗网络(GANs)模拟了一个复杂分布的抽样过程,它是通过对抗的方式学习的。
  • “基于似然的模型”,将高似然概率分配给观测样本。这包括自回归模型、正规流(normalizing flows)和变分自编码器(VAE)。
  • 基于能量的模型,分布被学习为任意可变的能量函数,然后被归一化。
  • 基于分数的模型,与能量模型很相关:它将基于能量的模型的分数作为神经网络来学习。

本文介绍扩散模型,它有基于似然和基于分数的解释。会非常数学,不过这些推导很细节,做好准备!

背景:ELBO,VAE和分层VAE

证据下界(Evidence Lower Bound)

对于很多模式中的数据,可以看作是由未知的隐变量$z$产生出的。把隐变量$z$和数据$x$建模成联合概率分布$p(x,z)$。基于似然的模型最大化所有观测$x$的可能性$p(x)$,可以用两种方法操纵联合分布排除隐变量$z$来恢复$p(x)$: $$p(x)=\int p(x,z)dz\tag{1}$$

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

直接计算以及最大化似然函数$p(x)$是困难的,因为积分和条件概率的计算都比较难。我们用一个近似的变分分布$q_{\phi}(z|x)$来估计后验概率$p(z|x)$,然后去优化最大似然的对数(这里被称为证据Evidence):

$$ \begin{aligned} \log p(\pmb{x}) &=\log p(\pmb{x}) \int q_{\phi}(\pmb{z} | \pmb{x}) d z \ &=\int q_{\pmb{\phi}}(\pmb{z} | \pmb{x})(\log p(\pmb{x})) d z \ &=\mathbb{E}{q{\phi}(\pmb{z} | \pmb{x})}[\log p(\pmb{x})] \ &=\mathbb{E}{q{\phi}(\pmb{z} | \pmb{x})}\left[\log \frac{p(\pmb{x}, \pmb{z})}{p(\pmb{z} | \pmb{x})}\right] \ &=\mathbb{E}{q{\phi}(\pmb{z} | \pmb{x})}\left[\log \frac{p(\pmb{x}, \pmb{z}) q_{\phi}(\pmb{z} | \pmb{x})}{p(\pmb{z} | \pmb{x}) q_{\phi}(\pmb{z} | \pmb{x})}\right] \ &=\mathbb{E}{q{\phi}(\pmb{z} | \pmb{x})}\left[\log \frac{p(\pmb{x}, \pmb{z})}{q_{\pmb{\phi}}(\pmb{z} | \pmb{x})}\right]+\mathbb{E}{q{\phi}(\pmb{z} | \pmb{x})}\left[\log \frac{q_{\phi}(\pmb{z} | \pmb{x})}{p(\pmb{z} | \pmb{x})}\right] \ &=\mathbb{E}{q{\phi}(\pmb{z} | \pmb{x})}\left[\log \frac{p(\pmb{x}, \pmb{z})}{q_{\pmb{\phi}}(\pmb{z} | \pmb{x})}\right]+D_{\mathrm{KL}}\left(q_{\phi}(\pmb{z} | \pmb{x}) | p(\pmb{z} | \pmb{x})\right) \ & \geq \mathbb{E}{q{\phi}(\pmb{z} | \pmb{x})}\left[\log \frac{p(\pmb{x}, \pmb{z})}{q_{\phi}(\pmb{z} | \pmb{x})}\right] \end{aligned} $$

因为$q_{\phi}(z|x)$和$p(z|x)$的DL散度$D_{\mathrm{KL}}\left(q_{\pmb{\phi}}(\pmb{z} | \pmb{x}) | p(\pmb{z} | \pmb{x})\right) \geq 0$,最后一行得到的期望被称为证据下界(ELBO),透过不等式,最大化ELBO就等价于最大化似然和最小化DL散度(注意,ELBO是关于$\phi$的函数)。

如何实现ELBO的最大化,亦即如何实现一个好的$q_{\phi}(z|x)$,将我们引到了VAE之中。

变分自编码器(Variational AutoEncoder)

自编码器是一个学习输入数据$x$,获得中间表示$z$,然后再拿来预测$x$自己的模型。$q_{\phi}(z|x)$就是编码器,$p_{\theta}(x|z)$就是解码器。说它是变分的,是因为$q_{\phi}(z|x)$从一族由$\phi$参数化的隐后验分布中优化而来。