加载中...

Diffusion公式推导和理解


参考文献:

什么是扩散模型?

Generative Modeling by Estimating Gradients of the Data Distribution

Understanding Diffusion Models: A Unified Perspective

VAE、Flow-based Model、GAN的优缺点

给定来自感兴趣分布的观察到的样本xx,生成模型的目标是学习对其真实数据分布p(x)p(x) 进行建模。一旦学会,我们就可以随意从我们的近似模型中生成新的样本。现有的生成模型技术针对表示概率分布的方法可以被分为两类:

  1. 基于似然的模型:通过(近似)最大似然直接学习分布的概率密度(或质量)函数。典型的基于似然的模型包括autoregressive models、flow-based models、energy-based models(EBM)和variational auto-encoders(VAE)。
  2. 隐式生成模型:其中概率分布由其采样过程的模型隐式表示。最突出的例子是生成对抗网络(GAN),其中通过用生成器转换随机高斯向量来合成来自数据分布的新样本。

VAE(Variational Auto-Encoder)地基本思想是首先采样 zp(z)z\sim p(z) ,然后根据得到的 zz 来采样 xpθ(xz)x\sim p_\theta(x|z) 。我们可以把 pθ(xz)p_\theta(x|z)理解成解码器,它把标准高斯 zz 通过某种随机映射的方式映射到了数据分布 xx 上。其中隐变量 zz 满足 p(z)=N(0,I)p(z)=\mathcal{N}(0,I) ,条件分布 pθ(xz)p_\theta(x|z)一般是参数化的高斯分布或伯努利分布。当训练好模型后,只需要按照“祖先采样”(ancestral sampling)的方法就可以生成数据xx 。那么在VAE里面如何表示出我们地p(x)p(x)

在数学上,我们可以把我们观察到的潜在变量和数据想象成一个联合分布 p(x,z)p(x, z) 的模型。我们有两种方法可以使用这个联合分布来恢复纯观测数据 p(x)p(x)

  1. 将潜在变量 zz 边缘化

p(x)=p(x,z)dzp(x) =\int p(x, z) dz

  1. 使用链式规则

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

训练VAE要基于最大似然 logp(x)\log p(x),然而直接计算和最大化 p(x)p(x) 是困难的,因为它要么涉及到对联合概率分布中的所有潜在变量 zz 进行积分,这对于复杂的模型来说是棘手的,要么涉及到在2中训练潜在变量编码器p(zx)p(z| x)。通常我们都需要借助变分推断(variational inference)的技巧,即采用qϕ(zx)q_\phi(z | x)来近似真实后验,模型似然可以有一个下界ELBO(Evidence Lower Bound):

logp(x)=logp(x,z)dz=logp(x,z)qϕ(zx)qϕ(zx)dz=logEqϕ(zx)[p(x,z)qϕ(zx)]Eqϕ(zx)[logp(x,z)qϕ(zx)]=Eqϕ(zx)[logpθ(xz)p(z)qϕ(zx)]=Eqϕ(zx)[logpθ(xz)]+Eqϕ(zx)[logp(z)qϕ(zx)]=Eqϕ(zx)[logpθ(xz)]reconstruction term DKL(qϕ(zx)p(z))prior matching term \begin{aligned} \log p(x) & =\log \int p(x, z) d z \\ & =\log \int \frac{p(x, z) q_\phi(z | x)}{q_\phi(z | x)} d z \\ & =\log \mathbb{E}_{q_\phi(z | x)}\left[\frac{p(x, z)}{q_\phi(z | x)}\right] \\ & \geq \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{p_{\theta}(x | z) p(z)}{q_\phi(z | x)}\right] \\ & =\mathbb{E}_{q_\phi(z | x)}\left[\log p_\theta(x | z)\right]+\mathbb{E}_{q_\phi(z | x)}\left[\log \frac{p(z)}{q_\phi(z | x)}\right] \\ & =\underbrace{\mathbb{E}_{q_\phi(z | x)}\left[\log p_\theta(x | z)\right]}_{\text {reconstruction term }}-\underbrace{D_{\mathrm{KL}}\left(q_\phi(z | x) \| p(z)\right)}_{\text {prior matching term }} \end{aligned}

训练VAE本质上就是最大化不等式的右边,这需要同时训练 pθ(xz)p_\theta(x|z)qϕ(zx)q_\phi(z|x) ,等号成立当且仅当 qϕ(zx)q_\phi(z|x) 等于真实后验。然而,VAE领域这么多年的核心问题就是这个变分后验(variational posterior) qϕ(zx)q_\phi(z|x)很难选择。如果选得比较简单,那很可能没办法近似真实后验,导致模型效果不好;而如果选得比较复杂, logp(x)\log p(x) 又会很难计算,导致难以优化。

相对于VAE,Flow-based Model和GAN只需要考虑生成器,用生成器把采样的高斯噪声 zz 映射到数据分布 pθ(x)p_\theta(x),根本不关心这个后验分布到底是啥。但是两者也有相应的缺点:

  • Flow-based Model 要求模型是可逆函数
  • GAN 需要额外训练判别器,导致训练时间很长,浪费了一部分计算资源

为了克服这些问题,Diffusion Model横空出世。回想VAE,最大的难题是变分后验很难选择,这是因为我们首先定义了Decoder(条件分布 pθ(xz)p_\theta(x|z) ),然后才定义了 Encoder(变分后验qϕ(zx)q_\phi(z|x))来适配这个Decoder。那么我们是否可以做到先造一个Encoder让他来模拟这个变分后验让数据到标准高斯,然后定义Decoder去适配它。换句话说,我们能否先定义某种简单的过程,把数据分布映射到标准高斯,然后完成一个逆过程,就能生成样本。这就是diffusion model的核心思想:匹配简单前向过程对应的逆过程的每一小步。

那么如何描述这个简单的过程呢?他的本质其实就是从一个数据分布转换成另一个分布。那么根据随机过程,如果我们可以构造适当的马尔科夫链,使得不管从什么分布出发,沿着马尔可夫链一直采样下去最终可以得到我们想要的平稳分布(stationary distribution),这也是马尔可夫链蒙特卡洛(MCMC)算法的核心。Diffusion的核心就是两方面:如何采样到高斯分布?(前向过程)如何拟合采样过程?(逆向过程)

Diffusion的前向过程和逆向过程

扩散概率模型(简写为“扩散模型”)是一个参数化的马尔可夫链(parameterized Markov chain),通过变分推断(variational inference)进行训练,以生成在有限时间内匹配数据的样本。该链的转移是学习的,以便逆转扩散过程,即一个马尔可夫链,该链在采样的相反方向逐渐向数据中添加噪声,直到信号被破坏。当扩散过程由小量高斯噪声组成时,仅需要将采样链转移设置为条件高斯,从而允许使用特别简单的神经网络参数化。简单来说。就是diffusion model定义了一个简单的前向过程,不断地加噪来把真实数据映射到标准高斯;然后又定义一个逆向过程来去噪,并且逆向过程的每一步只需要是一个很简单的高斯分布。

Diffusion model最简单的理解方式是将其视为具有三个关键限制假设的马尔可夫层次变分自编码器(Hierarchical Variational Autoencoders):

  • 潜在变量维度与数据维度完全相等
  • 在每个时间步骤中,潜在变量编码器的结构不是通过学习得到的,而是预定义为线性高斯模型,即它是围绕前一个时间步骤的输出中心化的高斯分布
  • 潜在变量编码器的高斯参数随时间变化,以使得最终时间步骤T的潜变量分布为标准高斯分布

扩散模型是形式 pθ(x0)p_{\theta}(\mathbf{x}_0) 的潜变量模型,根据第一个关键假设,其中 x1,,xT\mathbf{x}_1,\dots,\mathbf{x}_T 是与真实数据样本x0q(x0)\mathbf{x}_0 \sim q(\mathbf{x}_0)具有相同维度的潜变量。联合分布 pθ(x0:T)p_{\theta}(\mathbf{x}_{0:T}) 被称为逆过程(reverse process),它被定义为一个从p(xT)=N(xT;0,I)p(\mathbf{x}_T)=\mathcal{N}(\mathbf{x}_T;0,I)开始的具有学习高斯转移的马尔可夫链,他用来模拟近似前向过程的逆过程:

pθ(x0:T):=p(xT)t=1Tpθ(xt1xt),pθ(xt1xt):=N(xt1;μθ(xt,t),Σθ(xt,t))p_{\theta}(\mathbf{x}_{0: T}):=p(\mathbf{x}_T) \prod_{t=1}^T p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_t), \quad p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_t):=\mathcal{N}(\mathbf{x}_{t-1} ; \mu_{\theta}(\mathbf{x}_t, t), \Sigma_{\theta}(\mathbf{x}_t, t))

根据第二个假设,我们知道编码器中每个潜变量的分布都是围绕其前一个层次潜变量的高斯分布。在每个时间步骤t中,编码器的结构不是通过学习得到的;它被固定为线性高斯模型,其中均值和标准差可以预先设置为超参数或学习为参数。扩散模型与其他类型的潜变量模型的区别在于,其近似后验编码器 q(x1:Tx0)q(\mathbf{x}_{1: T} | \mathbf{x}_0),称为前向过程(forward process)或扩散过程(diffusion process),被固定为一个马尔可夫链,该链根据步长的方差时间表 β1,,βT\beta_1,\dots,\beta_T 逐渐向数据添加高斯噪声:

q(x1:Tx0):=t=1Tq(xtxt1),q(xtxt1):=N(xt;1βtxt1,βtI)q(\mathbf{x}_{1: T} | \mathbf{x}_0):=\prod_{t=1}^T q(\mathbf{x}_t | \mathbf{x}_{t-1}), \quad q(\mathbf{x}_t | \mathbf{x}_{t-1}):=\mathcal{N}(\mathbf{x}_t ; \sqrt{1-\beta_t} \mathbf{x}_{t-1}, \beta_t I)

前向过程的方差时间表可以通过重新参数化来学习,也可以作为超参数保持不变,并且 pθ(xt1xt)p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_t) 中高斯条件的选择部分保证了逆过程的表现力,因为当βt\beta_t很小时,两个过程具有相同的函数形式。前向过程的一个显着特性是,它允许在任意时间步 tt 中以闭合形式对 xt\mathbf{x}_t 进行采样,这也就是为什么算法中可以直接加入任意时刻噪音的原因,不用一步一步的加噪:使用符号αt:=1βt\alpha_t:=1-\beta_tαtˉ:=s=1tαs\bar{\alpha_t}:=\prod_{s=1}^t \alpha_s,我们有:

q(xtx0):=N(xt;αtˉx0,(1αtˉ)I)q(\mathbf{x}_t | \mathbf{x}_{0}):=\mathcal{N}(\mathbf{x}_t ; \sqrt{\bar{\alpha_t}} \mathbf{x}_{0}, (1-\bar{\alpha_t}) I)

根据重参数的表示和高斯分布的特性(两个独立高斯随机变量的和仍然是高斯分布,其中均值是两个均值的和,方差是两个方差的和)就能推导出上面这个公式:

xt=αtxt1+1αtϵt1=αt(αt1xt2+1αt1ϵt2)+1αtϵt1=αtαt1xt2+αtαtαt1ϵt2+1αtϵt1=αtαt1xt2+(αtαtαt1)2+(1αt)2ϵt2=αtαt1xt2+αtαtαt1+1αtϵt2=αtαt1xt2+1αtαt1ϵt2==i=1tαix0+1i=1tαiϵ0=αˉtx0+1αˉtϵ0N(xt;αˉtx0,(1αˉt)I)\begin{aligned} \mathbf{x}_t& =\sqrt{\alpha_t} \mathbf{x}_{t-1}+\sqrt{1-\alpha_t} \epsilon_{t-1} \\ & =\sqrt{\alpha_t}\left(\sqrt{\alpha_{t-1}} \mathbf{x}_{t-2}+\sqrt{1-\alpha_{t-1}} \epsilon_{t-2}\right)+\sqrt{1-\alpha_t} \epsilon_{t-1} \\ & =\sqrt{\alpha_t \alpha_{t-1}} \mathbf{x}_{t-2}+\sqrt{\alpha_t-\alpha_t \alpha_{t-1}} \epsilon_{t-2}+\sqrt{1-\alpha_t} \epsilon_{t-1} \\ & =\sqrt{\alpha_t \alpha_{t-1}} \mathbf{x}_{t-2}+\sqrt{({\sqrt{\alpha_t-\alpha_t \alpha_{t-1}}})^2+{(\sqrt{1-\alpha_t}})^2} \epsilon_{t-2} \\ & =\sqrt{\alpha_t \alpha_{t-1}} \mathbf{x}_{t-2}+\sqrt{\alpha_t-\alpha_t \alpha_{t-1}+1-\alpha_t} \epsilon_{t-2} \\ & =\sqrt{\alpha_t \alpha_{t-1}} \mathbf{x}_{t-2}+\sqrt{1-\alpha_t \alpha_{t-1}} \epsilon_{t-2} \\ & =\dots \\ & =\sqrt{\prod_{i=1}^t \alpha_i} \mathbf{x}_0+\sqrt{1-\prod_{i=1}^t \alpha_i}\epsilon_0 \\ & =\sqrt{\bar{\alpha}_t} \mathbf{x}_0+\sqrt{1-\bar{\alpha}_t} \epsilon_0 \\ & \sim \mathcal{N}\left(\mathbf{x}_t;\sqrt{\bar{\alpha}_t} \mathbf{x}_0,\left(1-\bar{\alpha}_t\right) I\right) \\ \end{aligned}

其中 αtˉ\bar{\alpha_t} 是一个关于 tt 递减的函数。此外,如果合适地选择 βt\beta_t,我们还可以得到limtαˉt=0\lim_{t\rightarrow \infty}\bar\alpha_t =0 ,这意味着:

limtq(xtx0)=N(0,I)\lim_{t\rightarrow \infty}q(\mathbf{x}_t|\mathbf{x}_0)=\mathcal{N}(0,I)

也就是说这个条件分布最终会收敛到一个和 x0\mathbf{x}_0 无关的分布,因此可以证明边缘分布也会收敛到标准高斯分布,即:

limtq(xt)=N(0,I)\lim_{t\rightarrow\infty}q(\mathbf{x}_t)=\mathcal{N}(0,I)

这样一来,只要我们取一个足够大的终止时刻 NN ,我们就可以逐渐把数据分布 x0\mathbf{x}_0 映射到一个非常接近高斯分布的 xN\mathbf{x}_N 。我们把这样的随机过程称为前向过程(forward process)。并且,由于 q(xtxt1)q(\mathbf{x}_t|\mathbf{x}_{t-1}) 本质上就是把 xt1\mathbf{x}_{t-1} 放缩后加上一点小小的噪声,我们也可以把这个过程理解为逐渐给数据加噪声,这样的过程也称为扩散过程(diffusion process),这也是diffusion model名字的由来。然后通过逆过程(reverse process)你就能把每一步都转换成近似高斯,然后反复去噪xN\mathbf{x}_N生成最后的结果。

Diffusion的优化

总的来说diffusion有三种理解和优化,他们其实是等价的。sθs_\theta 是拟合score function的模型, ϵθ\epsilon_\theta 是预测数据中的噪声的模型(DDPM用的就是这种参数化方法), xθ\mathbf{x}_\theta是估计加噪数据对应的原始数据的模型(去噪模型)。

Diffusion的训练是通过优化负对数似然的ELBO来完成的:

logp(x)=logp(x0:T)dx1:T=logp(x0:T)q(x1:Tx0)q(x1:Tx0)dx1:T=logEq(x1:Tx0)[p(x0:T)q(x1:Tx0)]Eq(x1:Tx0)[logp(x0:T)q(x1:Tx0)]=Eq(x1:Tx0)[logp(xT)t=1Tpθ(xt1xt)t=1Tq(xtxt1)]=Eq(x1:Tx0)[logp(xT)pθ(x0x1)t=2Tpθ(xt1xt)q(xTxT1)t=1T1q(xtxt1)]=Eq(x1:Tx0)[logp(xT)pθ(x0x1)t=1T1pθ(xtxt+1)q(xTxT1)t=1T1q(xtxt1)]=Eq(x1:Tx0)[logp(xT)pθ(x0x1)q(xTxT1)]+Eq(x1:Tx0)[logt=1T1pθ(xtxt+1)q(xtxt1)]=Eq(x1:Tx0)[logpθ(x0x1)]+Eq(x1:Tx0)[logp(xT)q(xTxT1)]+Eq(x1:Tx0)[t=1T1logpθ(xtxt+1)q(xtxt1)]=Eq(x1:Tx0)[logpθ(x0x1)]+Eq(x1:Tx0)[logp(xT)q(xTxT1)]+t=1T1Eq(x1:Tx0)[logpθ(xtxt+1)q(xtxt1)]=Eq(x1x0)[logpθ(x0x1)]+Eq(xT1,xTx0)[logp(xT)q(xTxT1)]+t=1T1Eq(xt1,xt,xt+1x0)[logpθ(xtxt+1)q(xtxt1)]=Eq(x1x0)[logpθ(x0x1)]reconstruction term Eq(xT1x0)[DKL(q(xTxT1)p(xT))]prior matching term t=1T1Eq(xt1,1xt+1x0)[DKL(q(xtxt1)pθ(xtxt+1))]consistency term \begin{aligned} \log p(x)&=\log \int p\left(\mathbf{x}_{0: T}\right) d \mathbf{x}_{1: T} \\ & =\log \int \frac{p\left(\mathbf{x}_{0: T}\right) q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)} d \mathbf{x}_{1: T} \\ & =\log \mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\frac{p\left(\mathbf{x}_{0: T}\right)}{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\right] \\ & \geq \mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_{0: T}\right)}{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\right] \\ & =\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_T\right) \prod_{t=1}^T p_{\theta}\left(\mathbf{x}_{t-1} | \mathbf{x}_t\right)}{\prod_{t=1}^T q\left(\mathbf{x}_t | \mathbf{x}_{t-1}\right)}\right] \\ & =\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_T\right) p_{\theta}\left(\mathbf{x}_0 | \mathbf{x}_1\right) \prod_{t=2}^T p_{\theta}\left(\mathbf{x}_{t-1} | \mathbf{x}_t\right)}{q\left(\mathbf{x}_T | \mathbf{x}_{T-1}\right) \prod_{t=1}^{T-1} q\left(\mathbf{x}_t | \mathbf{x}_{t-1}\right)}\right] \\ & =\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_T\right) p_{\theta}\left(\mathbf{x}_0 | \mathbf{x}_1\right) \prod_{t=1}^{T-1} p_{\theta}\left(\mathbf{x}_t | \mathbf{x}_{t+1}\right)}{q\left(\mathbf{x}_T | \mathbf{x}_{T-1}\right) \prod_{t=1}^{T-1} q\left(\mathbf{x}_t | \mathbf{x}_{t-1}\right)}\right] \\ & =\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_T\right) p_{\theta}\left(\mathbf{x}_0 | \mathbf{x}_1\right)}{q\left(\mathbf{x}_T | \mathbf{x}_{T-1}\right)}\right]+\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \prod_{t=1}^{T-1} \frac{p_{\theta}\left(\mathbf{x}_t | \mathbf{x}_{t+1}\right)}{q\left(\mathbf{x}_t | \mathbf{x}_{t-1}\right)}\right] \\ & =\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log p_{\theta}\left(\mathbf{x}_0 | \mathbf{x}_1\right)\right]+\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_T\right)}{q\left(\mathbf{x}_T | \mathbf{x}_{T-1}\right)}\right]+\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\sum_{t=1}^{T-1} \log \frac{p_{\theta}\left(\mathbf{x}_t | \mathbf{x}_{t+1}\right)}{q\left(\mathbf{x}_t | \mathbf{x}_{t-1}\right)}\right] \\ & =\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log p_{\theta}\left(\mathbf{x}_0 | \mathbf{x}_1\right)\right]+\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_T\right)}{q\left(\mathbf{x}_T | \mathbf{x}_{T-1}\right)}\right]+\sum_{t=1}^{T-1} \mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p_{\theta}\left(\mathbf{x}_t | \mathbf{x}_{t+1}\right)}{q\left(\mathbf{x}_t | \mathbf{x}_{t-1}\right)}\right] \\ & =\mathbb{E}_{q\left(\mathbf{x}_1 | \mathbf{x}_0\right)}\left[\log p_{\theta}\left(\mathbf{x}_0 | \mathbf{x}_1\right)\right]+\mathbb{E}_{q\left(\mathbf{x}_{T-1}, \mathbf{x}_T | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_T\right)}{q\left(\mathbf{x}_T | \mathbf{x}_{T-1}\right)}\right]+\sum_{t=1}^{T-1} \mathbb{E}_{q\left(\mathbf{x}_{t-1}, \mathbf{x}_t, \mathbf{x}_{t+1} | \mathbf{x}_0\right)}\left[\log \frac{p_{\theta}\left(\mathbf{x}_t | \mathbf{x}_{t+1}\right)}{q\left(\mathbf{x}_t | \mathbf{x}_{t-1}\right)}\right] \\ & =\underbrace{\mathbb{E}_{q\left(\mathbf{x}_1 | \mathbf{x}_0\right)}\left[\log p_\theta\left(\mathbf{x}_0 | \mathbf{x}_1\right)\right]}_{\text {reconstruction term }}-\underbrace{\mathbb{E}_{q\left(\mathbf{x}_{T-1} | \mathbf{x}_0\right)}\left[D_{\mathrm{KL}}\left(q\left(\mathbf{x}_T | \mathbf{x}_{T-1}\right) \| p\left(\mathbf{x}_T\right)\right)\right]}_{\text {prior matching term }} \\ & \quad \quad -\sum_{t=1}^{T-1} \underbrace{\mathbb{E}_{q\left(\mathbf{x}_{t-1,1} \mathbf{x}_{t+1} | \mathbf{x}_0\right)}\left[D_{\mathrm{KL}}\left(q\left(\mathbf{x}_t | \mathbf{x}_{t-1}\right) \| p_\theta\left(\mathbf{x}_t | \mathbf{x}_{t+1}\right)\right)\right]}_{\text {consistency term }} \end{aligned}

ELBO的推导形式可以通过其各个组成部分进行解释:

  1. 第一项可以解释为重建项,预测给定第一步潜变量的原始数据样本的对数概率。这个项在普通的VAE中也出现过,并且可以类似地进行训练。
  2. 第二项是一个先验匹配项;当最终潜变量分布与高斯先验相匹配时,它被最小化。这个项不需要优化,因为它没有可训练的参数;此外,我们已经假设T足够大,以使最终分布为高斯分布,因此这个项实际上变为零。
  3. 第三项是一个一致性项;它努力使xt\mathbf{x}_t处的分布在正向和反向过程中保持一致。也就是说,从一个更嘈杂的图像进行去噪步骤应该与从一个更清晰的图像进行相应的加噪步骤相匹配,对于每个中间时间步骤;这在数学上通过KL散度来反映。

在这个推导下,ELBO的所有项都被计算为期望,因此可以使用蒙特卡罗估计进行近似。然而,实际上使用我们刚刚推导的项来优化ELBO可能不是最优的;因为一致性项是在每个时间步骤上对两个随机变量 xt1,xt+1\mathbf{x}_{t-1}, \mathbf{x}_{t+1} 的期望进行计算的,其蒙特卡罗估计的方差可能会比每个时间步骤只使用一个随机变量来估计的项的方差高。由于它是通过对 T1T-1 个一致性项进行求和来计算的,因此对于较大的TT值,ELBO的最终估计值可能具有很高的方差。
相反,让我们尝试推导一种形式的ELBO,其中每个项仅在一个随机变量上计算期望。关键是,我们可以将编码器转换重写为q(xtxt1)=q(xtxt1,x0)q(\mathbf{x}_t|\mathbf{x}_{t-1}) = q(\mathbf{x}_t|\mathbf{x}_{t-1}, \mathbf{x}_0),由于马尔可夫性质,额外的条件项是不必要的,但可以选择性质的加入。然后,根据贝叶斯定理,我们可以将每个转换重写为:

q(xtxt1,x0)=q(xt1xt,x0)q(xtx0)q(xt1x0)q\left(\mathbf{x}_t | \mathbf{x}_{t-1}, \mathbf{x}_0\right)=\frac{q\left(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0\right) q\left(\mathbf{x}_t | \mathbf{x}_0\right)}{q\left(\mathbf{x}_{t-1} | \mathbf{x}_0\right)}

重新推导ELBO,得到如下公式:

logp(x)Eq(x1:Tx0)[logp(x0:T)q(x1:Tx0)]=Eq(x1:Tx0)[logp(xT)t=1Tpθ(xt1xt)t=1Tq(xtxt1)]=Eq(x1:Tx0)[logp(xT)pθ(x0x1)t=2Tpθ(xt1xt)q(x1x0)t=2Tq(xtxt1)]=Eq(x1:Tx0)[logp(xT)pθ(x0x1)t=1T1pθ(xtxt+1)q(x1x0)t=2Tq(xtxt1,x0)]=Eq(x1:Tx0)[logp(xT)pθ(x0x1)q(x1x0)+logt=2Tpθ(xtxt+1)q(xtxt1,x0)]=Eq(x1:Tx0)[logp(xT)pθ(x0x1)q(x1x0)+logt=2Tpθ(xtxt+1)q(xt1xt,x0)q(xtx0)q(xt1x0)]=Eq(x1:Tx0)[logp(xT)pθ(x0x1)q(xTx0)+t=2Tlogpθ(xt1xt)q(xt1xt,x0)]=Eq(x1:Tx0)[logpθ(x0x1)]+Eq(x1:Tx0)[logp(xT)q(xTx0)]+t=2TEq(x1:Tx0)[logpθ(xt1xt)q(xt1xt,x0)]=Eq(x1x0)[logpθ(x0x1)]+Eq(xTx0)[logp(xT)q(xTx0)]+t=2TEq(xt,xt1x0)[logpθ(xt1xt)q(xt1xt,x0)]=Eq(x1x0)[logpθ(x0x1)]reconstruction term DKL(q(xTx0)p(xT))prior matching term t=2TEq(xtx0)[DKL(q(xt1xt,x0)pθ(xt1xt))]denoising matching term \begin{aligned} \log p(x) & \geq \mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_{0: T}\right)}{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\right] \\ & =\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_T\right) \prod_{t=1}^T p_{\theta}\left(\mathbf{x}_{t-1} | \mathbf{x}_t\right)}{\prod_{t=1}^T q\left(\mathbf{x}_t | \mathbf{x}_{t-1}\right)}\right] \\ & =\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_T\right) p_{\theta}\left(\mathbf{x}_0 | \mathbf{x}_1\right) \prod_{t=2}^T p_{\theta}\left(\mathbf{x}_{t-1} | \mathbf{x}_t\right)}{q\left(\mathbf{x}_1 | \mathbf{x}_{0}\right) \prod_{t=2}^{T} q\left(\mathbf{x}_t | \mathbf{x}_{t-1}\right)}\right] \\ & =\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_T\right) p_{\theta}\left(\mathbf{x}_0 | \mathbf{x}_1\right) \prod_{t=1}^{T-1} p_{\theta}\left(\mathbf{x}_t | \mathbf{x}_{t+1}\right)}{q\left(\mathbf{x}_1 | \mathbf{x}_{0}\right) \prod_{t=2}^{T} q\left(\mathbf{x}_t | \mathbf{x}_{t-1},\mathbf{x}_0\right)}\right] \\ & =\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_T\right) p_{\theta}\left(\mathbf{x}_0 | \mathbf{x}_1\right)}{q\left(\mathbf{x}_1 | \mathbf{x}_{0}\right)}+\log \prod_{t=2}^{T} \frac{p_{\theta}\left(\mathbf{x}_t | \mathbf{x}_{t+1}\right)}{q\left(\mathbf{x}_t | \mathbf{x}_{t-1},\mathbf{x}_0\right)}\right] \\ & =\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_T\right) p_{\theta}\left(\mathbf{x}_0 | \mathbf{x}_1\right)}{q\left(\mathbf{x}_1 | \mathbf{x}_{0}\right)}+\log \prod_{t=2}^{T} \frac{p_{\theta}\left(\mathbf{x}_t | \mathbf{x}_{t+1}\right)}{\frac{q\left(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0\right) q\left(\mathbf{x}_t | \mathbf{x}_0\right)}{q\left(\mathbf{x}_{t-1} | \mathbf{x}_0\right)}}\right] \\ & =\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_T\right) p_{\theta}\left(\mathbf{x}_0 | \mathbf{x}_1\right)}{q\left(\mathbf{x}_T | \mathbf{x}_0\right)}+\sum_{t=2}^T \log \frac{p_{\theta}\left(\mathbf{x}_{t-1} | \mathbf{x}_t\right)}{q\left(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0\right)}\right] \\ & =\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log p_{\theta}\left(\mathbf{x}_0 | \mathbf{x}_1\right)\right]+\mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_T\right)}{q\left(\mathbf{x}_T | \mathbf{x}_0\right)}\right]+\sum_{t=2}^T \mathbb{E}_{q\left(\mathbf{x}_{1: T} | \mathbf{x}_0\right)}\left[\log \frac{p_{\theta}\left(\mathbf{x}_{t-1} | \mathbf{x}_t\right)}{q\left(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0\right)}\right] \\ & =\mathbb{E}_{q\left(\mathbf{x}_1 | \mathbf{x}_0\right)}\left[\log p_{\theta}\left(\mathbf{x}_0 | \mathbf{x}_1\right)\right]+\mathbb{E}_{q\left(\mathbf{x}_T | \mathbf{x}_0\right)}\left[\log \frac{p\left(\mathbf{x}_T\right)}{q\left(\mathbf{x}_T | \mathbf{x}_0\right)}\right]+\sum_{t=2}^T \mathbb{E}_{q\left(\mathbf{x}_t, \mathbf{x}_{t-1} | \mathbf{x}_0\right)}\left[\log \frac{p_{\theta}\left(\mathbf{x}_{t-1} | \mathbf{x}_t\right)}{q\left(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0\right)}\right] \\ & =\underbrace{\mathbb{E}_{q\left(\mathbf{x}_1 | \mathbf{x}_0\right)}\left[\log p_{\theta}\left(\mathbf{x}_0 | \mathbf{x}_1\right)\right]}_{\text {reconstruction term }}-\underbrace{D_{\mathrm{KL}}\left(q\left(\mathbf{x}_T | \mathbf{x}_0\right) \| p\left(\mathbf{x}_T\right)\right)}_{\text {prior matching term }} \\ & \quad \quad -\sum_{t=2}^T \underbrace{\mathbb{E}_{q\left(\mathbf{x}_t | \mathbf{x}_0\right)}\left[D_{\mathrm{KL}}\left(q\left(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0\right) \| p_{\theta}\left(\mathbf{x}_{t-1} | \mathbf{x}_t\right)\right)\right]}_{\text {denoising matching term }} \\ & \end{aligned}

我们成功地推导出了ELBO的解释,可以用更低的方差进行估计,因为每个项最多只计算一个随机变量的期望。这个公式也有一个优雅的解释,在检查每个单独的项时可以看出:

  1. 第一项可以解释为重建项 L0L_0。像普通VAE中的重建项一样,这个项可以使用蒙特卡罗估计进行近似和优化。

  2. 第二项表示最终噪声输入的分布与标准高斯先验的接近程度 LTL_T。它没有可训练的参数,在我们的假设下也等于零。在DDPM中由于选择了固定方差,所以可以认为是个常数。

  3. 第三项是一个去噪匹配项 Lt1L_{t-1}。我们学习期望的去噪转换步骤 pθ(xt1xt)p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_t) 作为可计算的、真实的去噪转换步骤 q(xt1xt,x0)q(\mathbf{x}_{t-1}|\mathbf{x}_t, \mathbf{x}_0) 的近似。q(xt1xt,x0)q(\mathbf{x}_{t-1}|\mathbf{x}_t, \mathbf{x}_0)转换步骤可以作为一个真实的信号,因为它定义了如何去噪带有噪声的图像xt\mathbf{x}_t,并有访问完全去噪的图像x0\mathbf{x}_0应该是什么。因此,当两个去噪步骤的KL散度尽可能接近时,这个项被最小化。

在这个ELBO的推导中,大部分的优化成本在求和项中,接下来推导这个求和项里面的每一个项。先计算下面的后验概率,这个概率与神经网络无关,和设定的 βt\beta_t 有关,可以直接通过公式来计算均值和方差:

q(xt1xt,x0)=N(xt1;μ~t(xt,x0),β~tI)q(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0)=\mathcal{N}(\mathbf{x}_{t-1} ; \tilde{\mu}_t(\mathbf{x}_t, \mathbf{x}_0), \tilde{\beta}_t I)

μ~t(xt,x0):=αˉt1βt1αˉtx0+αt(1αˉt1)1αˉtxtandβ~t:=1αˉt11αˉtβt\quad \tilde{\mu}_t(\mathbf{x}_t, \mathbf{x}_0):=\frac{\sqrt{\bar{\alpha}_{t-1}} \beta_t}{1-\bar{\alpha}_t} \mathbf{x}_0+\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t} \mathbf{x}_t \quad and \quad \tilde{\beta}_t:=\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t} \beta_t

推导如下:

q(xt1xt,x0)=q(xtxt1,x0)q(xt1x0)q(xtx0)=N(xt;αtxt1,(1αt)I)N(xt1;αˉt1x0,(1αˉt1)I)N(xt;αˉtx0,(1αˉt)I)exp{[(xtαtxt1)22(1αt)+(xt1αt1x0)22(1αˉt1)(xtαˉtx0)22(1αˉt)]}=exp{12[(xtαtxt1)21αt+(xt1αt1x0)21αˉt1(xtαˉtx0)21αˉt]}=exp{12[(2αtxtxt1+αtxt12)1αt+(xt122αˉt1xt1x0)1αˉt1+C(xt,x0)]}exp{12[2αtxtxt11αt+αtxt121αt+xt121αˉt12αˉt1xt1x01αˉt1]}=exp{12[(αt1αt+11αˉt1)xt122(αtxt1αt+αt1x01αˉt1)xt1]}=exp{12[αt(1αˉt1)+1αt(1αt)(1αˉt1)xt122(αtxt1αt+αt1x01αˉt1)xt1]}=exp{12[αtαˉt+1αt(1αt)(1αˉt1)xt122(αtxt1αt+αt1x01αˉt1)xt1]}=exp{12[1αˉt(1αt)(1αˉt1)xt122(αtxt1αt+αt1x01αˉt1)xt1]}=exp{12(1αˉt(1αt)(1αˉt1))[xt122(αtxt1αt+αt1x01αˉt1)1αˉt(1αt)(1αˉt1)xt1]}=exp{12(1αˉt(1αt)(1αˉt1))[xt122(αtxt1αt+αt1x01αˉt1)(1αt)(1αˉt1)1αˉtxt1]}=exp{12(1(1αt)(1αˉt1)1αˉt)[xt122αt(1αˉt1)xt+αˉt1(1αt)x01αˉtxt1]}N(xt1;αt(1αˉt1)xt+αˉt1(1αt)x01αˉtμq(xt,x0),(1αt)(1αˉt1)1αˉtI)Σq(t)\begin{aligned} & q\left(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0\right)=\frac{q\left(\mathbf{x}_t | \mathbf{x}_{t-1}, \mathbf{x}_0\right) q\left(\mathbf{x}_{t-1} | \mathbf{x}_0\right)}{q\left(\mathbf{x}_t | \mathbf{x}_0\right)} \\ & =\frac{\mathcal{N}\left(\mathbf{x}_t ; \sqrt{\alpha_t} \mathbf{x}_{t-1},\left(1-\alpha_t\right) I\right) \mathcal{N}\left(\mathbf{x}_{t-1} ; \sqrt{\bar{\alpha}_{t-1}} \mathbf{x}_0,\left(1-\bar{\alpha}_{t-1}\right) I\right)}{\mathcal{N}\left(\mathbf{x}_t ; \sqrt{\bar{\alpha}_t} \mathbf{x}_0,\left(1-\bar{\alpha}_t\right) I\right)} \\ & \propto \exp \left\{-\left[\frac{\left(\mathbf{x}_t-\sqrt{\alpha_t} \mathbf{x}_{t-1}\right)^2}{2\left(1-\alpha_t\right)}+\frac{\left(\mathbf{x}_{t-1}-\sqrt{\alpha_{t-1}} \mathbf{x}_0\right)^2}{2\left(1-\bar{\alpha}_{t-1}\right)}-\frac{\left(\mathbf{x}_t-\sqrt{\bar{\alpha}_t} \mathbf{x}_0\right)^2}{2\left(1-\bar{\alpha}_t\right)}\right]\right\} \\ & =\exp \left\{-\frac{1}{2}\left[\frac{\left(\mathbf{x}_t-\sqrt{\alpha_t} \mathbf{x}_{t-1}\right)^2}{1-\alpha_t}+\frac{\left(\mathbf{x}_{t-1}-\sqrt{\alpha_{t-1}} \mathbf{x}_0\right)^2}{1-\bar{\alpha}_{t-1}}-\frac{\left(\mathbf{x}_t-\sqrt{\bar{\alpha}_t} \mathbf{x}_0\right)^2}{1-\bar{\alpha}_t}\right]\right\} \\ & =\exp \left\{-\frac{1}{2}\left[\frac{\left(-2 \sqrt{\alpha_t} \mathbf{x}_t \mathbf{x}_{t-1}+\alpha_t \mathbf{x}_{t-1}^2\right)}{1-\alpha_t}+\frac{\left(\mathbf{x}_{t-1}^2-2 \sqrt{\bar{\alpha}_{t-1}} \mathbf{x}_{t-1} \mathbf{x}_0\right)}{1-\bar{\alpha}_{t-1}}+C\left(\mathbf{x}_t, \mathbf{x}_0\right)\right]\right\} \\ & \propto \exp \left\{-\frac{1}{2}\left[-\frac{2 \sqrt{\alpha_t} \mathbf{x}_t \mathbf{x}_{t-1}}{1-\alpha_t}+\frac{\alpha_t \mathbf{x}_{t-1}^2}{1-\alpha_t}+\frac{\mathbf{x}_{t-1}^2}{1-\bar{\alpha}_{t-1}}-\frac{2 \sqrt{\bar{\alpha}_{t-1}} \mathbf{x}_{t-1} \mathbf{x}_0}{1-\bar{\alpha}_{t-1}}\right]\right\} \\ & =\exp \left\{-\frac{1}{2}\left[\left(\frac{\alpha_t}{1-\alpha_t}+\frac{1}{1-\bar{\alpha}_{t-1}}\right) \mathbf{x}_{t-1}^2-2\left(\frac{\sqrt{\alpha_t} \mathbf{x}_t}{1-\alpha_t}+\frac{\sqrt{\alpha_{t-1}} \mathbf{x}_0}{1-\bar{\alpha}_{t-1}}\right) \mathbf{x}_{t-1}\right]\right\} \\ & =\exp \left\{-\frac{1}{2}\left[\frac{\alpha_t\left(1-\bar{\alpha}_{t-1}\right)+1-\alpha_t}{\left(1-\alpha_t\right)\left(1-\bar{\alpha}_{t-1}\right)} \mathbf{x}_{t-1}^2-2\left(\frac{\sqrt{\alpha_t} \mathbf{x}_t}{1-\alpha_t}+\frac{\sqrt{\alpha_{t-1}} \mathbf{x}_0}{1-\bar{\alpha}_{t-1}}\right) \mathbf{x}_{t-1}\right]\right\} \\ & =\exp \left\{-\frac{1}{2}\left[\frac{\alpha_t-\bar{\alpha}_t+1-\alpha_t}{\left(1-\alpha_t\right)\left(1-\bar{\alpha}_{t-1}\right)} \mathbf{x}_{t-1}^2-2\left(\frac{\sqrt{\alpha_t} \mathbf{x}_t}{1-\alpha_t}+\frac{\sqrt{\alpha_{t-1}} \mathbf{x}_0}{1-\bar{\alpha}_{t-1}}\right) \mathbf{x}_{t-1}\right]\right\} \\ & =\exp \left\{-\frac{1}{2}\left[\frac{1-\bar{\alpha}_t}{\left(1-\alpha_t\right)\left(1-\bar{\alpha}_{t-1}\right)} \mathbf{x}_{t-1}^2-2\left(\frac{\sqrt{\alpha_t} \mathbf{x}_t}{1-\alpha_t}+\frac{\sqrt{\alpha_{t-1}} \mathbf{x}_0}{1-\bar{\alpha}_{t-1}}\right) \mathbf{x}_{t-1}\right]\right\} \\ & =\exp \left\{-\frac{1}{2}\left(\frac{1-\bar{\alpha}_t}{\left(1-\alpha_t\right)\left(1-\bar{\alpha}_{t-1}\right)}\right)\left[\mathbf{x}_{t-1}^2-2 \frac{\left(\frac{\sqrt{\alpha_t} \mathbf{x}_t}{1-\alpha_t}+\frac{\sqrt{\alpha_{t-1}} \mathbf{x}_0}{1-\bar{\alpha}_{t-1}}\right)}{\frac{1-\bar{\alpha}_t}{\left(1-\alpha_t\right)\left(1-\bar{\alpha}_{t-1}\right)}} \mathbf{x}_{t-1}\right]\right\} \\ & =\exp \left\{-\frac{1}{2}\left(\frac{1-\bar{\alpha}_t}{\left(1-\alpha_t\right)\left(1-\bar{\alpha}_{t-1}\right)}\right)\left[\mathbf{x}_{t-1}^2-2 \frac{\left(\frac{\sqrt{\alpha_t} \mathbf{x}_t}{1-\alpha_t}+\frac{\sqrt{\alpha_{t-1}} \mathbf{x}_0}{1-\bar{\alpha}_{t-1}}\right)\left(1-\alpha_t\right)\left(1-\bar{\alpha}_{t-1}\right)}{1-\bar{\alpha}_t} \mathbf{x}_{t-1}\right]\right\} \\ & =\exp \left\{-\frac{1}{2}\left(\frac{1}{\frac{\left(1-\alpha_t\right)\left(1-\bar{\alpha}_{t-1}\right)}{1-\bar{\alpha}_t}}\right)\left[\mathbf{x}_{t-1}^2-2 \frac{\sqrt{\alpha_t}\left(1-\bar{\alpha}_{t-1}\right) \mathbf{x}_t+\sqrt{\bar{\alpha}_{t-1}}\left(1-\alpha_t\right) \mathbf{x}_0}{1-\bar{\alpha}_t} \mathbf{x}_{t-1}\right]\right\} \\ & \propto \mathcal{N}(\mathbf{x}_{t-1} ; \underbrace{\frac{\sqrt{\alpha_t}\left(1-\bar{\alpha}_{t-1}\right) \mathbf{x}_t+\sqrt{\bar{\alpha}_{t-1}}\left(1-\alpha_t\right) \mathbf{x}_0}{1-\bar{\alpha}_t}}_{\mu_q\left(\mathbf{x}_t, \mathbf{x}_0\right)}, \underbrace{\left.\frac{\left(1-\alpha_t\right)\left(1-\bar{\alpha}_{t-1}\right)}{1-\bar{\alpha}_t} I\right)}_{\Sigma_q(t)} \\ & \end{aligned}

接下来就是计算几个散度,根据假设ELBO里面的散度都是两个高斯分布间的散度,所以我们需要推导高斯分布的散度:

DKL(N(x;μx,Σx)N(y;μy,Σy))=12[logΣyΣxd+tr(Σy1Σx)+(μyμx)TΣy1(μyμx)]D_{\mathrm{KL}}\left(\mathcal{N}\left(x ; \mu_x, \Sigma_x\right) \| \mathcal{N}\left(y ; \mu_y, \Sigma_y\right)\right)=\frac{1}{2}\left[\log \frac{\left|\Sigma_y\right|}{\left|\Sigma_x\right|}-d+\operatorname{tr}\left(\Sigma_y^{-1} \Sigma_x\right)+\left(\mu_y-\mu_x\right)^T \Sigma_y^{-1}\left(\mu_y-\mu_x\right)\right]

argminθDKL(q(xt1xt,x0)pθ(xt1xt))=argminθDKL(N(xt1;μq,Σq(t))N(xt1;μθ,Σq(t)))=argminθ12[logΣq(t)Σq(t)d+tr(Σq(t)1Σq(t))+(μθμq)TΣq(t)1(μθμq)]=argminθ12[log1d+d+(μθμq)TΣq(t)1(μθμq)]=argminθ12[(μθμq)TΣq(t)1(μθμq)]=argminθ12[(μθμq)T(σq2(t)I)1(μθμq)]=argminθ12σq2(t)[μθμq22]\begin{aligned} & \underset{\theta}{\arg \min } D_{\mathrm{KL}}\left(q\left(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0\right) \| p_{\theta}\left(\mathbf{x}_{t-1} | \mathbf{x}_t\right)\right) \\ & =\underset{\theta}{\arg \min } D_{\mathrm{KL}}\left(\mathcal{N}\left(\mathbf{x}_{t-1} ; \mu_q, \Sigma_q(t)\right) \| \mathcal{N}\left(\mathbf{x}_{t-1} ; \mu_{\theta}, \Sigma_q(t)\right)\right) \\ & =\underset{\theta}{\arg \min } \frac{1}{2}\left[\log \frac{\left|\Sigma_q(t)\right|}{\left|\Sigma_q(t)\right|}-d+\operatorname{tr}\left(\Sigma_q(t)^{-1} \Sigma_q(t)\right)+\left(\mu_{\theta}-\mu_q\right)^T \Sigma_q(t)^{-1}\left(\mu_{\theta}-\mu_q\right)\right] \\ & =\underset{\theta}{\arg \min } \frac{1}{2}\left[\log 1-d+d+\left(\mu_{\theta}-\mu_q\right)^T \Sigma_q(t)^{-1}\left(\mu_{\theta}-\mu_q\right)\right] \\ & =\underset{\theta}{\arg \min } \frac{1}{2}\left[\left(\mu_{\theta}-\mu_q\right)^T \Sigma_q(t)^{-1}\left(\mu_{\theta}-\mu_q\right)\right] \\ & =\underset{\theta}{\arg \min } \frac{1}{2}\left[\left(\mu_{\theta}-\mu_q\right)^T\left(\sigma_q^2(t) I\right)^{-1}\left(\mu_{\theta}-\mu_q\right)\right] \\ & =\underset{\theta}{\arg \min } \frac{1}{2 \sigma_q^2(t)}\left[\left\|\mu_{\theta}-\mu_q\right\|_2^2\right] \end{aligned}

这里我们用 μq\mu_q 表示μq(xt,x0)\mu_q(\mathbf{x}_t, \mathbf{x}_0),用 μθ\mu_\theta 表示 μθ(xt,t)\mu_\theta(\mathbf{x}_t, t)。换句话说,我们想要尝试优化并使用 μθ(xt,t)\mu_\theta(\mathbf{x}_t, t) 来预测 μq(xt,x0)\mu_q(\mathbf{x}_t, \mathbf{x}_0)。此时我们有多种方式进行建模:

  • 第一种方法是让神经网络直接输出后验分布的均值 μθ(xt,t)\mu_\theta(\mathbf{x}_t, t)
  • 第二种方法就是直接预测μ~t(xt,x0)\tilde{\mu}_t(\mathbf{x}_t, \mathbf{x}_0)里面的x0\mathbf{x}_0,这种方法被DDPM证明效果很差(下面推导的方法)
  • 第三种方法是把x0\mathbf{x}_0代换为xt\mathbf{x}_tϵ\epsilon,然后神经网络去预测这个ϵ\epsilon。(DDPM选择的方法)

去噪模型的形式为:

argminθDKL(q(xt1xt,x0)pθ(xt1xt))=argminθDKL(N(xt1;μq,Σq(t))N(xt1;μθ,Σq(t)))=argminθ12σq2(t)[αt(1αˉt1)xt+αˉt1(1αt)x^θ(xt,t)1αˉtαt(1αˉt1)xt+αˉt1(1αt)x01αˉt2]=argminθ12σq2(t)[αˉt1(1αt)x^θ(xt,t)1αˉtαˉt1(1αt)x01αˉt22]=argminθ12σq2(t)[αˉt1(1αt)1αˉt(x^θ(xt,t)x0)22]=argminθ12σq2(t)αˉt1(1αt)2(1αˉt)2[x^θ(xt,t)x022]=argminθ12(1αt)(1αˉt1)1αˉtαˉt1(1αt)2(1αˉt)2[x^θ(xt,t)x022]=argminθ121αˉt(1αt)(1αˉt1)αˉt1(1αt)2(1αˉt)2[x^θ(xt,t)x022]=argminθ12αˉt1(1αt)(1αˉt1)(1αˉt)[x^θ(xt,t)x022]=argminθ12αˉt1αˉt(1αˉt1)(1αˉt)[x^θ(xt,t)x022]=argminθ12αˉt1αˉt1αˉt+αˉt1αˉtαˉt(1αˉt1)(1αˉt)[x^θ(xt,t)x022]=argminθ12αˉt1(1αˉt)αˉt(1αˉt1)(1αˉt1)(1αˉt)[x^θ(xt,t)x022]=argminθ12(αˉt1(1αˉt)(1αˉt1)(1αˉt)αˉt(1αˉt1)(1αˉt1)(1αˉt))[x^θ(xt,t)x022]=argminθ12(αˉt11αˉt1αˉt1αˉt)[x^θ(xt,t)x022]=argminθ12(SNR(t1)SNR(t))[x^θ(xt,t)x022]\begin{aligned} & \underset{\theta}{\arg \min } D_{\mathrm{KL}}\left(q\left(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0\right) \| p_{\theta}\left(\mathbf{x}_{t-1} | \mathbf{x}_t\right)\right) \\ & =\underset{\theta}{\arg \min } D_{\mathrm{KL}}\left(\mathcal{N}\left(\mathbf{x}_{t-1} ; \mu_q, \Sigma_q(t)\right) \| \mathcal{N}\left(\mathbf{x}_{t-1} ; \mu_{\theta}, \Sigma_q(t)\right)\right) \\ & =\underset{\theta}{\arg \min } \frac{1}{2 \sigma_q^2(t)}\left[\left\|\frac{\sqrt{\alpha_t}\left(1-\bar{\alpha}_{t-1}\right) \mathbf{x}_t+\sqrt{\bar{\alpha}_{t-1}}\left(1-\alpha_t\right) \hat{x}_{\theta}\left(\mathbf{x}_t, t\right)}{1-\bar{\alpha}_t}-\frac{\sqrt{\alpha_t}\left(1-\bar{\alpha}_{t-1}\right) \mathbf{x}_t+\sqrt{\bar{\alpha}_{t-1}}\left(1-\alpha_t\right) \mathbf{x}_0}{1-\bar{\alpha}_t}\right\|_2\right] \\ & =\underset{\theta}{\arg \min } \frac{1}{2 \sigma_q^2(t)}\left[\left\|\frac{\sqrt{\bar{\alpha}_{t-1}}\left(1-\alpha_t\right) \hat{x}_{\theta}\left(\mathbf{x}_t, t\right)}{1-\bar{\alpha}_t}-\frac{\sqrt{\bar{\alpha}_{t-1}}\left(1-\alpha_t\right) \mathbf{x}_0}{1-\bar{\alpha}_t}\right\|_2^2\right] \\ & =\underset{\theta}{\arg \min } \frac{1}{2 \sigma_q^2(t)}\left[\left\|\frac{\sqrt{\bar{\alpha}_{t-1}}\left(1-\alpha_t\right)}{1-\bar{\alpha}_t}\left(\hat{x}_{\theta}\left(\mathbf{x}_t, t\right)-\mathbf{x}_0\right)\right\|_2^2\right] \\ & =\underset{\theta}{\arg \min } \frac{1}{2 \sigma_q^2(t)} \frac{\bar{\alpha}_{t-1}\left(1-\alpha_t\right)^2}{\left(1-\bar{\alpha}_t\right)^2}\left[\left\|\hat{x}_{\theta}\left(\mathbf{x}_t, t\right)-\mathbf{x}_0\right\|_2^2\right] \\ &=\underset{\theta}{\arg \min } \frac{1}{2 \frac{\left(1-\alpha_t\right)\left(1-\bar{\alpha}_{t-1}\right)}{1-\bar{\alpha}_t}} \frac{\bar{\alpha}_{t-1}\left(1-\alpha_t\right)^2}{\left(1-\bar{\alpha}_t\right)^2}\left[\left\|\hat{x}_{\theta}\left(\mathbf{x}_t, t\right)-\mathbf{x}_0\right\|_2^2\right] \\ & =\underset{\theta}{\arg \min } \frac{1}{2} \frac{1-\bar{\alpha}_t}{\left(1-\alpha_t\right)\left(1-\bar{\alpha}_{t-1}\right)} \frac{\bar{\alpha}_{t-1}\left(1-\alpha_t\right)^2}{\left(1-\bar{\alpha}_t\right)^2}\left[\left\|\hat{x}_{\theta}\left(\mathbf{x}_t, t\right)-\mathbf{x}_0\right\|_2^2\right] \\ & =\underset{\theta}{\arg \min }\frac{1}{2} \frac{\bar{\alpha}_{t-1}\left(1-\alpha_t\right)}{\left(1-\bar{\alpha}_{t-1}\right)\left(1-\bar{\alpha}_t\right)}\left[\left\|\hat{x}_{\theta}\left(\mathbf{x}_t, t\right)-\mathbf{x}_0\right\|_2^2\right] \\ & =\underset{\theta}{\arg \min }\frac{1}{2} \frac{\bar{\alpha}_{t-1}-\bar{\alpha}_t}{\left(1-\bar{\alpha}_{t-1}\right)\left(1-\bar{\alpha}_t\right)}\left[\left\|\hat{x}_{\theta}\left(\mathbf{x}_t, t\right)-\mathbf{x}_0\right\|_2^2\right] \\ & =\underset{\theta}{\arg \min } \frac{1}{2} \frac{\bar{\alpha}_{t-1}-\bar{\alpha}_{t-1} \bar{\alpha}_t+\bar{\alpha}_{t-1} \bar{\alpha}_t-\bar{\alpha}_t}{\left(1-\bar{\alpha}_{t-1}\right)\left(1-\bar{\alpha}_t\right)}\left[\left\|\hat{x}_{\theta}\left(\mathbf{x}_t, t\right)-\mathbf{x}_0\right\|_2^2\right] \\ & =\underset{\theta}{\arg \min } \frac{1}{2} \frac{\bar{\alpha}_{t-1}\left(1-\bar{\alpha}_t\right)-\bar{\alpha}_t\left(1-\bar{\alpha}_{t-1}\right)}{\left(1-\bar{\alpha}_{t-1}\right)\left(1-\bar{\alpha}_t\right)}\left[\left\|\hat{x}_{\theta}\left(\mathbf{x}_t, t\right)-\mathbf{x}_0\right\|_2^2\right] \\ & =\underset{\theta}{\arg \min } \frac{1}{2}\left(\frac{\bar{\alpha}_{t-1}\left(1-\bar{\alpha}_t\right)}{\left(1-\bar{\alpha}_{t-1}\right)\left(1-\bar{\alpha}_t\right)}-\frac{\bar{\alpha}_t\left(1-\bar{\alpha}_{t-1}\right)}{\left(1-\bar{\alpha}_{t-1}\right)\left(1-\bar{\alpha}_t\right)}\right)\left[\left\|\hat{x}_{\theta}\left(\mathbf{x}_t, t\right)-\mathbf{x}_0\right\|_2^2\right] \\ & =\underset{\theta}{\arg \min } \frac{1}{2}\left(\frac{\bar{\alpha}_{t-1}}{1-\bar{\alpha}_{t-1}}-\frac{\bar{\alpha}_t}{1-\bar{\alpha}_t}\right)\left[\left\|\hat{x}_{\theta}\left(\mathbf{x}_t, t\right)-\mathbf{x}_0\right\|_2^2\right] \\ & = \underset{\theta}{\arg \min } \frac{1}{2} \left(SNR(t-1)-SNR(t)\right)\left[\left\|\hat{x}_{\theta}\left(\mathbf{x}_t, t\right)-\mathbf{x}_0\right\|_2^2\right] \end{aligned}

其中信噪比(SNR)定义如下,因为q(xtx0):=N(xt;αtˉx0,(1αtˉ)I)q(\mathbf{x}_t | \mathbf{x}_{0}):=\mathcal{N}(\mathbf{x}_t ; \sqrt{\bar{\alpha_t}} \mathbf{x}_{0}, (1-\bar{\alpha_t}) I):

SNR(t)=μ2σ2=αˉt1αˉtSNR(t)=\frac{\mu^2}{\sigma^2}=\frac{\bar{\alpha}_t}{1-\bar{\alpha}_{t}}

信噪比代表了原始信号与存在的噪声量之间的比率。较高的信噪比代表较多的信号,较低的信噪比代表较多的噪声。在扩散模型中,我们要求信噪比随着时间步长tt 的增加而单调减小,我们可以使用神经网络直接参数化每个时间步的信噪比,并与扩散模型一起学习它。

αˉt1αˉt=exp(ωη(t))αˉt=sigmoid(ωη(t))1αˉt=sigmoid(ωη(t))\begin{aligned} \frac{\bar{\alpha}_t}{1-\bar{\alpha}_t}=\exp \left(-\omega_{\boldsymbol{\eta}}(t)\right) \\ \bar{\alpha}_t=\operatorname{sigmoid}\left(-\omega_{\boldsymbol{\eta}}(t)\right) \\ 1-\bar{\alpha}_t=\operatorname{sigmoid}\left(\omega_{\boldsymbol{\eta}}(t)\right) \end{aligned}

此外,最小化我们导出的ELBO目标在所有噪声水平上的求和项可以通过最小化所有时间步上的期望来逼近,然后可以在时间步长上使用随机样本进行优化:

argminθEtU{2,T}[Eq(xtx0)[DKL(q(xt1xt,x0)pθ(xt1xt))]]\underset{\theta}{\arg \min } \mathbb{E}_{t \sim U\{2, T\}}\left[\mathbb{E}_{q\left(\mathbf{x}_t | \mathbf{x}_0\right)}\left[D_{\mathrm{KL}}\left(q\left(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0\right) \| p_{\theta}\left(\mathbf{x}_{t-1} | \mathbf{x}_t\right)\right)\right]\right]

优化的等价描述(DDPM)

另外,将xt=αˉtx0+1αˉtϵ0\mathbf{x}_t=\sqrt{\bar{\alpha}_t} \mathbf{x}_0+\sqrt{1-\bar{\alpha}_t} \epsilon_0带入可以得到:

μq(xt,x0)=αt(1αˉt1)xt+αˉt1(1αt)x01αˉt=αt(1αˉt1)xt+αˉt1(1αt)xt1αˉtϵ0αˉt1αˉt=αt(1αˉt1)xt+(1αt)xt1αˉtϵ0αt1αˉt=αt(1αˉt1)xt1αˉt+(1αt)xt(1αˉt)αt(1αt)1αˉtϵ0(1αˉt)αt=(αt(1αˉt1)1αˉt+1αt(1αˉt)αt)xt(1αt)1αˉt(1αˉt)αtϵ0=(αt(1αˉt1)(1αˉt)αt+1αt(1αˉt)αt)xt1αt1αˉtαtϵ0=αtαˉt+1αt(1αˉt)αtxt1αt1αˉtαtϵ0=1αˉt(1αˉt)αtxt1αt1αˉtαtϵ0=1αtxt1αt1αˉtαtϵ0=1αt(xt1αt1αˉtϵ0)\begin{aligned} \mu_q\left(\mathbf{x}_t, \mathbf{x}_0\right) & =\frac{\sqrt{\alpha_t}\left(1-\bar{\alpha}_{t-1}\right) \mathbf{x}_t+\sqrt{\bar{\alpha}_{t-1}}\left(1-\alpha_t\right) \mathbf{x}_0}{1-\bar{\alpha}_t} \\ & =\frac{\sqrt{\alpha_t}\left(1-\bar{\alpha}_{t-1}\right) \mathbf{x}_t+\sqrt{\bar{\alpha}_{t-1}}\left(1-\alpha_t\right) \frac{\mathbf{x}_t-\sqrt{1-\bar{\alpha}_t} \epsilon_0}{\sqrt{\bar{\alpha}_t}}}{1-\bar{\alpha}_t} \\ & =\frac{\sqrt{\alpha_t}\left(1-\bar{\alpha}_{t-1}\right) \mathbf{x}_t+\left(1-\alpha_t\right) \frac{\mathbf{x}_t-\sqrt{1-\bar{\alpha}_t} \epsilon_0}{\sqrt{\alpha_t}}}{1-\bar{\alpha}_t} \\ & =\frac{\sqrt{\alpha_t}\left(1-\bar{\alpha}_{t-1}\right) \mathbf{x}_t}{1-\bar{\alpha}_t}+\frac{\left(1-\alpha_t\right) \mathbf{x}_t}{\left(1-\bar{\alpha}_t\right) \sqrt{\alpha_t}}-\frac{\left(1-\alpha_t\right) \sqrt{1-\bar{\alpha}_t} \epsilon_0}{\left(1-\bar{\alpha}_t\right) \sqrt{\alpha_t}} \\ & =\left(\frac{\sqrt{\alpha_t}\left(1-\bar{\alpha}_{t-1}\right)}{1-\bar{\alpha}_t}+\frac{1-\alpha_t}{\left(1-\bar{\alpha}_t\right) \sqrt{\alpha_t}}\right) \mathbf{x}_t-\frac{\left(1-\alpha_t\right) \sqrt{1-\bar{\alpha}_t}}{\left(1-\bar{\alpha}_t\right) \sqrt{\alpha_t}} \epsilon_0 \\ & =\left(\frac{\alpha_t\left(1-\bar{\alpha}_{t-1}\right)}{\left(1-\bar{\alpha}_t\right) \sqrt{\alpha_t}}+\frac{1-\alpha_t}{\left(1-\bar{\alpha}_t\right) \sqrt{\alpha_t}}\right) \mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t} \sqrt{\alpha_t}} \epsilon_0 \\ & =\frac{\alpha_t-\bar{\alpha}_t+1-\alpha_t}{\left(1-\bar{\alpha}_t\right) \sqrt{\alpha_t}} \mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t} \sqrt{\alpha_t}} \epsilon_0 \\ & =\frac{1-\bar{\alpha}_t}{\left(1-\bar{\alpha}_t\right) \sqrt{\alpha_t}} \mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t} \sqrt{\alpha_t}} \epsilon_0 \\ & =\frac{1}{\sqrt{\alpha_t}} \mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t} \sqrt{\alpha_t}} \epsilon_0 \\ & =\frac{1}{\sqrt{\alpha_t}}\left(\mathrm{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}} \epsilon_0\right) \end{aligned}

我们尝试使用 μθ(xt,t)\mu_\theta(\mathbf{x}_t, t) 来预测 μq(xt,x0)\mu_q(\mathbf{x}_t, \mathbf{x}_0),因为 xt\mathbf{x}_t 在训练时可作为输入,我们可以重新参数化高斯噪声项以使其预测ϵ0\epsilon_0:

μθ(xt,t)=1αt(xt1αt1αˉtϵθ(xt,t))\mu_\theta(\mathbf{x}_t, t) = \frac{1}{\sqrt{\alpha_t}} \left( \mathbf{x}_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \epsilon_\theta(\mathbf{x}_t, t) \right)

xt1=N(xt1;1αt(xt1αt1αˉtϵθ(xt,t)),Σθ(xt,t))\mathbf{x}_{t-1} = \mathcal{N}\left(\mathbf{x}_{t-1}; \frac{1}{\sqrt{\alpha_t}} \left( \mathbf{x}_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \epsilon_\theta(\mathbf{x}_t, t) \right), \Sigma_\theta(\mathbf{x}_t, t)\right)

这里,ϵθ(xt,t)\epsilon_{\theta}(\mathbf{x}_t, t) 是一个学习预测源噪声 ϵ0\epsilon_0 的神经网络,DDPM 采用了一个 U-Net 结构的 Autoencoder 来对噪声进行预测。这个式子说明通过预测原始图像 x0\mathbf{x}_0 来学习diffusion等同于学习预测噪声。此外DDPM丢弃了前面的系数,此时的损失描述如下:

Lsimple (θ):=Et,x0,ϵ[ϵϵθ(αˉtx0+1αˉtϵ,t)2]L_{\text {simple }}(\theta):=\mathbb{E}_{t, \mathbf{x}_0, \epsilon}\left[\left\|\epsilon-\epsilon_\theta\left(\sqrt{\bar{\alpha}_t} \mathbf{x}_0+\sqrt{1-\bar{\alpha}_t} \epsilon, t\right)\right\|^2\right]

优化的等价描述(Score-based Generative Model)

我们先推导Tweedie公式。在参数估计里面,经典贝叶斯派的公式很多,Tweedie公式就是其中一个。假设p(xθ)=N(θ,σ2)p(x|\theta)=\mathcal{N}(\theta,\sigma^2)

E[θx]=θp(θx)dθ=θp(xθ)p(θ)p(x)dθ=θp(xθ)p(θ)dθp(x)=θ12πσ2e(xθ)22σ2p(θ)dθp(x)=[σ2θxσ212πσ2e(xθ)22σ2p(θ)+x12πσ2e(xθ)22σ2p(θ)]dθp(x)=σ2θxσ212πσ2e(xθ)22σ2p(θ)dθ+x12πσ2e(xθ)22σ2p(θ)dθp(x)=σ2d[12πσ2e(xθ)22σ2]dxp(θ)dθ+x12πσ2e(xθ)22σ2p(θ)dθp(x)=σ2dp(xθ)dxp(θ)dθ+xp(xθ)p(θ)dθp(x)=σ2ddxp(xθ)p(θ)dθ+xp(xθ)p(θ)dθp(x)=σ2dp(x)dx+xp(x)p(x)=x+σ2ddxlogp(x)\begin{aligned} \mathbb{E}[\theta | x]& =\int \theta p(\theta | x) \mathrm{d} \theta \\ & =\int \theta \frac{p(x | \theta) p(\theta)}{p(x)} \mathrm{d} \theta \\ & =\frac{\int \theta p(x | \theta) p(\theta) \mathrm{d} \theta}{p(x)} \\ & =\frac{\int \theta \frac{1}{\sqrt{2 \pi \sigma^2}} e^{-\frac{(x-\theta)^2}{2 \sigma^2}} p(\theta) \mathrm{d} \theta}{p(x)} \\ & =\frac{\int\left[\sigma^2 \frac{\theta-x}{\sigma^2} \frac{1}{\sqrt{2 \pi \sigma^2}} e^{-\frac{(x-\theta)^2}{2 \sigma^2}} p(\theta)+x \frac{1}{\sqrt{2 \pi \sigma^2}} e^{-\frac{(x-\theta)^2}{2 \sigma^2}} p(\theta)\right] \mathrm{d} \theta}{p(x)} \\ & =\frac{\int \sigma^2 \frac{\theta-x}{\sigma^2} \frac{1}{\sqrt{2 \pi \sigma^2}} e^{-\frac{(x-\theta)^2}{2 \sigma^2}} p(\theta) \mathrm{d} \theta+\int x \frac{1}{\sqrt{2 \pi \sigma^2}} e^{-\frac{(x-\theta)^2}{2 \sigma^2}} p(\theta) \mathrm{d} \theta}{p(x)} \\ & =\frac{\sigma^2 \int \frac{\mathrm{d}\left[\frac{1}{\sqrt{2 \pi \sigma^2}} e^{-\frac{(x-\theta)^2}{2 \sigma^2}}\right]}{\mathrm{d} x} p(\theta) \mathrm{d} \theta+\int x \frac{1}{\sqrt{2 \pi \sigma^2}} e^{-\frac{(x-\theta)^2}{2 \sigma^2}} p(\theta) \mathrm{d} \theta}{p(x)} \\ & =\frac{\sigma^2 \int \frac{\mathrm{d} p(x | \theta)}{\mathrm{d} x} p(\theta) \mathrm{d} \theta+\int x p(x | \theta) p(\theta) \mathrm{d} \theta}{p(x)} \\ & =\frac{\sigma^2 \frac{\mathrm{d}}{\mathrm{d} x} \int p(x | \theta) p(\theta) \mathrm{d} \theta+x \int p(x | \theta) p(\theta) \mathrm{d} \theta}{p(x)} \\ & =\frac{\sigma^2 \frac{\mathrm{d} p(x)}{\mathrm{d} x}+x p(x)}{p(x)} \\ & =x+\sigma^2 \frac{\mathrm{d}}{\mathrm{d} x} \log p(x) \\ & \end{aligned}

在diffusion的公式里面,我们应用它来预测给定样本的 xt\mathbf{x}_t 的真实后验均值:

E[μxtxt]=xt+(1αˉt)xtlogp(xt)\mathbb{E}\left[\mu_{\mathbf{x}_t} | \mathbf{x}_t\right]=\mathbf{x}_t+\left(1-\bar{\alpha}_t\right) \nabla_{\mathbf{x}_t} \log p\left(\mathbf{x}_t\right)

根据Tweedie’s Formula,对 xt\mathbf{x}_t 的真实均值的最佳估计为μxt=αˉtx0\mu_{\mathbf{x}_t} =\sqrt{\bar\alpha_t}\mathbf{x}_0

x0=xt+(1αˉt)logp(xt)αˉt\mathbf{x}_0=\frac{\mathbf{x}_t+\left(1-\bar{\alpha}_t\right) \nabla \log p\left(\mathbf{x}_t\right)}{\sqrt{\bar{\alpha}_t}}

那么就能推导出新的公式:

μq(xt,x0)=αt(1αˉt1)xt+αˉt1(1αt)x01αˉt=αt(1αˉt1)xt+αˉt1(1αt)xt+(1αˉt)logp(xt)αˉt1αˉt=αt(1αˉt1)xt+(1αt)xt+(1αˉt)logp(xt)αt1αˉt=αt(1αˉt1)xt1αˉt+(1αt)xt(1αˉt)αt+(1αt)(1αˉt)logp(xt)(1αˉt)αt=(αt(1αˉt1)1αˉt+1αt(1αˉt)αt)xt+1αtαtlogp(xt)=(αt(1αˉt1)(1αˉt)αt+1αt(1αˉt)αt)xt+1αtαtlogp(xt)=αtαˉt+1αt(1αˉt)αtxt+1αtαtlogp(xt)=1αˉt(1αˉt)αtxt+1αtαtlogp(xt)=1αtxt+1αtαtlogp(xt)\begin{aligned} \mu_q\left(\mathbf{x}_t, \mathbf{x}_0\right) & =\frac{\sqrt{\alpha_t}\left(1-\bar{\alpha}_{t-1}\right) \mathbf{x}_t+\sqrt{\bar{\alpha}_{t-1}}\left(1-\alpha_t\right) \mathbf{x}_0}{1-\bar{\alpha}_t} \\ & =\frac{\sqrt{\alpha_t}\left(1-\bar{\alpha}_{t-1}\right) \mathbf{x}_t+\sqrt{\bar{\alpha}_{t-1}}\left(1-\alpha_t\right) \frac{\mathbf{x}_t+\left(1-\bar{\alpha}_t\right) \nabla \log p\left(\mathbf{x}_t\right)}{\sqrt{\bar{\alpha}_t}}}{1-\bar{\alpha}_t} \\ & =\frac{\sqrt{\alpha_t}\left(1-\bar{\alpha}_{t-1}\right) \mathbf{x}_t+\left(1-\alpha_t\right) \frac{\mathbf{x}_t+\left(1-\bar{\alpha}_t\right) \nabla \log p\left(\mathbf{x}_t\right)}{\sqrt{\alpha_t}}}{1-\bar{\alpha}_t} \\ & =\frac{\sqrt{\alpha_t}\left(1-\bar{\alpha}_{t-1}\right) \mathbf{x}_t}{1-\bar{\alpha}_t}+\frac{\left(1-\alpha_t\right) \mathbf{x}_t}{\left(1-\bar{\alpha}_t\right) \sqrt{\alpha_t}}+\frac{\left(1-\alpha_t\right)\left(1-\bar{\alpha}_t\right) \nabla \log p\left(\mathbf{x}_t\right)}{\left(1-\bar{\alpha}_t\right) \sqrt{\alpha_t}} \\ & =\left(\frac{\sqrt{\alpha_t}\left(1-\bar{\alpha}_{t-1}\right)}{1-\bar{\alpha}_t}+\frac{1-\alpha_t}{\left(1-\bar{\alpha}_t\right) \sqrt{\alpha_t}}\right) \mathbf{x}_t+\frac{1-\alpha_t}{\sqrt{\alpha_t}} \nabla \log p\left(\mathbf{x}_t\right) \\ & =\left(\frac{\alpha_t\left(1-\bar{\alpha}_{t-1}\right)}{\left(1-\bar{\alpha}_t\right) \sqrt{\alpha_t}}+\frac{1-\alpha_t}{\left(1-\bar{\alpha}_t\right) \sqrt{\alpha_t}}\right) \mathbf{x}_t+\frac{1-\alpha_t}{\sqrt{\alpha_t}} \nabla \log p\left(\mathbf{x}_t\right) \\ & =\frac{\alpha_t-\bar{\alpha}_t+1-\alpha_t}{\left(1-\bar{\alpha}_t\right) \sqrt{\alpha_t}} \mathbf{x}_t+\frac{1-\alpha_t}{\sqrt{\alpha_t}} \nabla \log p\left(\mathbf{x}_t\right) \\ & =\frac{1-\bar{\alpha}_t}{\left(1-\bar{\alpha}_t\right) \sqrt{\alpha_t}} \mathbf{x}_t+\frac{1-\alpha_t}{\sqrt{\alpha_t}} \nabla \log p\left(\mathbf{x}_t\right) \\ & =\frac{1}{\sqrt{\alpha_t}} \mathbf{x}_t+\frac{1-\alpha_t}{\sqrt{\alpha_t}} \nabla \log p\left(\mathbf{x}_t\right) \end{aligned}

在score-based里面我们使用如下式子去近似上面的式子:

μθ(xt,t)=1αtxt+1αtαtsθ(xt,t)\mu_{\theta}\left(\mathbf{x}_t, t\right)=\frac{1}{\sqrt{\alpha_t}} \mathbf{x}_t+\frac{1-\alpha_t}{\sqrt{\alpha_t}} s_{\theta}\left(\mathbf{x}_t, t\right)

这里sθ(xt,t)s_{\theta}\left(\mathbf{x}_t, t\right)是一个神经网络,它学习预测 xt\mathbf{x}_t 在数据空间中的梯度。其实他和源噪声 ϵ0\epsilon_0 非常相似。这两项与时间有一个常数的比值差距。

Improved Denoising Diffusion Probabilistic Models

  • 方差变成可学习的

  • β\beta 由线性变化变成非线性变换

  • 改变损失函数 Lhybrid=Lsimple+λLvlb(λ=0.001)L_{hybrid} = L_{simple} + \lambda L_{vlb} \quad (\lambda=0.001)

除了 L0L_0 之外,损失函数都是两个高斯分布之间的KL散度,因此可以通过闭合形式进行评估。为了评估图像的L0L_0,我们假设每个颜色分量分成256个分区,并计算pθ(x0x1)p_{\theta}(\mathbf{x}_0|\mathbf{x}_1)落入正确分区的概率(使用高斯分布的CDF可计算性)。此外,需要注意的是,虽然LTL_T不依赖于 θ\theta,但如果前向加噪过程充分破坏了数据分布,此时LTL_T将接近于零。

DDIM

  • 改变了q(xt1xt,x0)q(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0)

qσ(xt1xt,x0)=N(xt1;αt1x0+1αt1σt2xtαtx01αt,σt2I)q_\sigma(\mathbf{x}_{t-1} \vert \mathbf{x}_t, \mathbf{x}_0) = \mathcal{N}(\mathbf{x}_{t-1}; \sqrt{\alpha_{t-1}}\mathbf{x}_0 + \sqrt{1 - \alpha_{t-1} - \sigma_t^2} \frac{\mathbf{x}_t - \sqrt{\alpha_t}\mathbf{x}_0}{\sqrt{1 - \alpha_t}}, \sigma_t^2 \mathbf{I})

xt1=αt1(xt1αtϵθ(xt,t)αtpredicted x0)+1αt1σt2ϵθ(xt,t)direction pointing to  xt+σtϵtrandom noise\mathbf{x}_{t-1} = \sqrt{\alpha_{t-1}}\Big(\underbrace{\frac{\mathbf{x}_t-\sqrt{1-\alpha_{t}}\mathbf{\epsilon}_\theta(\mathbf{x}_t, t)}{\sqrt{\alpha_{t}}}}_{\text{predicted}\ \mathbf{x}_0}\Big) + \underbrace{\sqrt{1 - \alpha_{t-1} - \sigma_t^2} \cdot \mathbf{\epsilon}_\theta(\mathbf{x}_t, t)}_{\text{direction pointing to }\ \mathbf{x}_t} + \underbrace{\sigma_t\epsilon_t}_{\text {random noise}}

注意:其中的α\alpha就是DDPM里面的αˉ\bar{\alpha}。这里将生成过程分成三个部分:一是由预测的x0\mathbf{x}_0来产生的,二是由指向xt\mathbf{x}_t的部分,三是随机噪音(这里ϵt\epsilon_t是与xt\mathbf{x}_t无关的噪音)。

条件生成(Stable diffusion/Diffusion Models Beat GANs on Image Synthesis)

上面的推导只关注于数据分布 p(x)p(\mathbf{x}) 的建模。然而,我们也经常对学习条件分布 p(xy)p(\mathbf{x}|y) 感兴趣,这将使我们能够显式地控制通过条件信息 yy 生成的数据。

p(x0:Ty)=p(xT)t=1Tpθ(xt1xt,y)p\left(\mathbf{x}_{0: T} | y\right)=p\left(\mathbf{x}_T\right) \prod_{t=1}^T p_{\theta}\left(\mathbf{x}_{t-1} | \mathbf{x}_t, y\right)

其中 yy 可以是任意东西。只需要在各个神经网络的输入里面传入信息 yy。但是,以这种方式训练的条件扩散模型可能会潜在地学会忽略或淡化任何给定的条件信息。因此,指导(Guidance)被提出作为一种方式,以样本多样性为代价,更明确地控制模型给予条件信息的权重。最流行的两种指导形式是分类器指导和无分类器指导。

  1. 分类器指导

logp(xty)=log(p(xt)p(yxt)p(y))=logp(xt)+logp(yxt)logp(y)=logp(xt)unconditional score +logp(yxt)adversarial gradient \begin{aligned} \nabla \log p\left(\mathbf{x}_t | y\right) & =\nabla \log \left(\frac{p\left(\mathbf{x}_t\right) p\left(y | \mathbf{x}_t\right)}{p(y)}\right) \\ & =\nabla \log p\left(\mathbf{x}_t\right)+\nabla \log p\left(y | \mathbf{x}_t\right)-\nabla \log p(y) \\ & =\underbrace{\nabla \log p\left(\mathbf{x}_t\right)}_{\text {unconditional score }}+\underbrace{\nabla \log p\left(y | \mathbf{x}_t\right)}_{\text {adversarial gradient }} \end{aligned}

我们也可以选择控制后面那个训练的分类器牺牲的多样性代价:

logp(xty)=logp(xt)+γlogp(yxt)\nabla \log p\left(\mathbf{x}_t | y\right) = \nabla \log p\left(\mathbf{x}_t\right) + \gamma \nabla \log p\left(y | \mathbf{x}_t\right)

分类器指南的一个显著缺点是它依赖于一个单独的学习分类器。因为分类器必须处理任意噪声的输入,这是大多数现有的预先训练的分类模型都没有优化过的,所以它必须与扩散模型一起学习。

  1. 无分类器指导

logp(xty)=logp(xt)+γ(logp(xty)logp(xt))=logp(xt)+γlogp(xty)γlogp(xt)=γlogp(xty)conditional score +(1γ)logp(xt)unconditional score \begin{aligned} \nabla \log p\left(\mathbf{x}_t | y\right) & =\nabla \log p\left(\mathbf{x}_t\right)+\gamma\left(\nabla \log p\left(\mathbf{x}_t | y\right)-\nabla \log p\left(\mathbf{x}_t\right)\right) \\ & =\nabla \log p\left(\mathbf{x}_t\right)+\gamma \nabla \log p\left(\mathbf{x}_t | y\right)-\gamma \nabla \log p\left(\mathbf{x}_t\right) \\ & =\underbrace{\gamma \nabla \log p\left(\mathbf{x}_t | y\right)}_{\text {conditional score }}+\underbrace{(1-\gamma) \nabla \log p\left(\mathbf{x}_t\right)}_{\text {unconditional score }} \end{aligned}


文章作者: JiJunhao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 JiJunhao !