参考:https://zhuanlan.zhihu.com/p/614147698
https://zhuanlan.zhihu.com/p/565698027
https://kexue.fm/archives/9181

(注:对于概率分布的表示,本文存在$p$和$q$混用的情况,意义相同,请读者谅解)

前言

首先,还是先来回顾一下生成式模型的本质:找到一个从某个先验分布(通常是随机分布,如高斯分布)到数据分布的映射。想象有一群在像素空间的粒子,前向过程就是这些粒子的分布逐渐从数据分布过渡到先验分布,而反向(生成)过程则是反过来。这个过程可以是离散的(如早期的DDPM)也可以是连续的(SDE,ODE等),总之应该是一种慢慢变化的过程。我们看到的,以及我们关心的,只是两个端点分布$p_{data}$和$p_{prior}$及它们的映射关系,至于中间具体是怎么变的,或者说每一个极小的时间步“应该怎么变化”,其实并不重要,我们也永远不可能知道在真实世界中这个渐变过程的细节。所以,各种各样不同的生成式模型,实际上都是在这个变化的中间过程上做文章,既然没有客观的“参考答案”,那自然就是谁更合理,谁效果更好,就接受谁。

DDPM的假设

回顾一下DDPM,有一个极其关键的基石性假设:图像的扩散过程是符合Markov性质的。也就是说,每一个时间步的分布只依赖于前一个时间步的分布,而与更早的时间步无关。为什么会有这个假设?这和我们假定的“中间变化过程”有关:在逻辑上,我们认为图像从真实图到噪声是一步一步来的,每一步都是在上一步的基础上加一点噪声,这是一个自然的Markov过程。

有的人会说,DDPM推导出了$p(x_t|x_0) = \mathcal{N}(x_t; \sqrt{\bar{\alpha}_t} x_0, (1-\bar{\alpha}_t)I)$,这里$x_t$是从$x_0$推出的,而不是从$x_{t-1}$推出的,这不就违背Markov过程了吗?注意,虽然这个公式说明$x_t$可以直接从$x_0$推出,但这个公式本身就是从markov链推出的。虽然我们可以直接从$x_0$推出$x_t$,但在逻辑上,我们依然相信$x_t$是从$x_0$,$x_1$,…$x_{t-1}$一步一步过来的,这只是个等价的结果。

另一个问题,我们在DDPM中究竟是怎样生成图像的?有的人会说,通过$p(x_{t-1}|x_t)$一点一点采样回去。不对,想象一下,假如给你一张带噪声的图片,让你给出加噪前的图片,这实际上是做不到的,因为上一步的图片有无数种可能,你作为人类,会认为上一张图片有关“更清晰”,但在其他生物的眼中,上一张图片可能应该是“更模糊”的。但为什么我们人类面对一张模糊的图片,能自动脑补出加噪前的上一步图片呢?答案是我们脑中有一张真正的“清晰图”$x_0$作为参考,所谓的“上一张图片”应该是更接近我们脑中的清晰图$x_0$的。有了作为参考的清晰图$x_0$,以及带噪声的图片$x_t$,我们就脑补出上一步的图片$x_{t-1}$。因此,我们用于生成图片的每一步,其实不是借助$p(x_{t-1}|x_t)$,而是借助$p(x_{t-1}|x_t,x_0)$(当然,由于我们想象出来的“清晰图”$x_0$不一定对,所以$p(x_{t-1}|x_t,x_0)$与真实分布$p(x_{t-1}|x_t)$是有偏差的,$p(x_{t-1}|x_t,x_0)$仅仅是对$p(x_{t-1}|x_t)$的近似),模型通过预测$p(x_{t-1}|x_t,x_0)$来进行图像的逐步去噪生成。但分布$p(x_{t-1}|x_t,x_0)$需要知道$x_0$的值,而这个是未知的,怎么办?由于$x_t$,$x_0$,$\epsilon$存在等式关系,因此只要让模型预测出噪声$\epsilon$,就得到了$x_0$。这也解释了为什么说这里得到的$x_0$不能直接作为最终结果,因此它只是模型的一个想象,与真实值不一定一致。

可以发现,DDPM的实现实际上仅仅依赖于边缘分布$p(x_t|x_0)$,这个边缘分布虽然是从markov过程推出的,但它本身实际上并不依赖于Markov假设。正如上面所说,我们可以任意定义分布的“中间渐变过程”,而不必一定遵从Markov性,而为了能复用DDPM的结构,我们只需要保证边缘分布$p(x_t|x_0)$和DDPM的一致就行了,至于其动态的变化过程,我们则可以自由发挥。

DDPM是高度与Markov假设绑定的:$p(x_t|x_0)$从Markov链推出,逆向过程$p(x_{t-1}|x_t)$与$p(x_{t-1}|x_t,x_0)$也是Markov的。对于生成模型来说,由于上面的原因,我们不能通过采样$p(x_s|x_t)$来生成图像,而需要通过神经网络拟合并采样$p(x_s|x_t,x_0)$来生成图像,这里$s<t$,但不要求$s=t-1$,因为$s=t-1$这一关系是基于DDPM的Markov假设的,对于一般的模型,不要求Markov性质成立,相邻时间步的分布也就不一定相关联,因此只需要通过$s<t$来“回溯”,不需要强制满足$s=t-1$。

现在,我们的要求就很明确了:1,为了能让模型从噪声生成图像,我们需要得到分布$p(x_s|x_t,x_0)$,其中$s<t$。2,为了能复用DDPM的结果,我们需要满足边缘分布$p(x_t|x_0)$与DDPM的一致。

DDIM

DDIM由此产生,它不包含Markov假设,也就是说,图像的扩散过程不一定是“每一步加点噪声”这种单一模式。由于解除了Markov性质的约束,我们就需要直接定义联合分布而不依赖Markov链:

在$p(x_t|x_0) = \mathcal{N}(x_t; \sqrt{\bar{\alpha}_t} x_0, (1-\bar{\alpha}_t)I)$约束下,作者推出在t>=2的情况下:

这里的方差$\sigma_t^2$是一个可调节的参数,不同的设置就是不一样的分布,毕竟满足约束条件的解不唯一。作者在论文中给出了两种选择:1,$\sigma_t^2=0$,也就是说,$q_\sigma(\mathbf{x}_{t-1} \vert \mathbf{x}_t, \mathbf{x}_0)$是一个确定性的分布;2,$\sigma_t^2=\frac{1-\alpha_{t-1}}{1-\alpha_t}(1-\frac{\alpha_t}{\alpha_{t-1}})$,也就是说,$q_\sigma(\mathbf{x}_{t-1} \vert \mathbf{x}_t, \mathbf{x}_0)$与DDPM中的$p(x_{t-1}|x_t,x_0)$完全一样。

由于

代入$q_\sigma(\mathbf{x}_{t-1} \vert \mathbf{x}_t, \mathbf{x}_0)$得

这样,我们依然可以通过预测噪声来采样$x_{t-1}$

为什么要DDIM?

DDPM有一个致命的缺陷,让它只能成为实验室玩具而不能工业化:采样太慢。假如扩散过程有一千步,那么由于Markov过程的限制,也必须采样一千步才能得到图像,这在应用中是不可接受的。

而DDIM就没有这个问题,因为它不假设Markov性。在上面,我们推导了$p(x_s|x_t,x_0)$在s=t-1时的结果,但实际上,即使s<t-1,在$p(x_t|x_0) = \mathcal{N}(x_t; \sqrt{\bar{\alpha}_t} x_0, (1-\bar{\alpha}_t)I)$约束下,依然可以推导出

这里的方差$\sigma_{t\to s}^2$也是一个可调节的参数,当 s=t−1 时,就退化回前面那个相邻步公式。只要增加s和t之间的步数,就可以大幅减少采样的步骤数,从而大幅提升采样效率。当然,s和t之间的步数越多,采样的效率越高,但生成的图像质量就越差,因此需要在效率和质量之间进行权衡。

这里提供另一种理解方式:我们想要减少采样步骤,也就是想把采样过程中经历的步骤从完整的[T,T-1,…,0]减少到它的一个子集$[\tau_S,…,\tau_0]$,而这个子集上的每个节点$\tau_s$都对应着一个$p(x_{t_{\tau_s}}|x_0)$,那么DDIM就可以只考虑这些分布$p(x_{t_{\tau_s}}|x_0)$,把它们当作一个步数更少的模型,依然可以得出$q_\sigma(\mathbf{x}_{t-1} \vert \mathbf{x}_t, \mathbf{x}_0)$的公式,从而实现更少步数的采样。注意,DDIM的唯一约束是$p(x_t|x_0) = \mathcal{N}(x_t; \sqrt{\bar{\alpha}_t} x_0, (1-\bar{\alpha}_t)I)$,这里的核心在于系数$\bar\alpha_{t_{\tau_s}}$要对应上,而不是步数/下标要对应上,对于同一下标,DDIM使用的节点不用与原始DDPM的节点保持一致,因为这里DDIM采集的是DDPM节点的一个子集,只要系数能对应上就是满足约束的,就可以用DDIM的公式求解。

补充

既然DDIM是为了加速采样,那我们想问:在原有的DDPM的Markov框架下,能不能通过“跳步”实现加速采样呢?答案可能让你感到意外,是可以的,只要在Markov链上推导出往后多步的分布就行了,比如:

那为什么还要捣鼓DDIM呢?笔者认为可能有以下几方面原因:

  1. 虽然Markov也可以多步采样,但本质上还是从单步采样推导出来的,还是没有摆脱相邻时间步之间的依赖性。而DDIM根本不存在Markov假设,仅仅从边缘分布出发推导,天然就带有对长时间步的适配性,因此在理论上更适合长时间步的采样。
  2. 当把方差设置为0时,DDIM是确定性采样,而Markov链的多步采样依然是随机的。正如SDE和ODE的区别一样,确定性往往更具优势。
  3. DDIM简化了DDPM的约束和假设,实际上提供了一种更通用的框架,它从高视角考虑$p(x_t|x_0)$和$p(x_s|x_t,x_0)$,提炼出了一种扩散模型的通用实现范式。