极市导读
抛弃过多复杂数学公式,本文将从“为什么要用这种方式降低采样次数”的角度切入,揭示DDIM的原理及实现方法。>>加入极市CV技术交流群,走在计算机视觉的最前沿
自己录了一个视频讲解版的地址,比本文又做了一些优化,更方便理解,欢迎支持。
视频讲解版地址:https//www.bilibili.com/video/BV1Ra4y1F73C/
一、前言
我在一文解决你关于扩散模型ddpm的所有疑惑(https://zhuanlan.zhihu.com/p/624851115)一文中详细介绍了扩散模型的基础DDPM模型[1]的结构及其原理。但DDPM存在一个非常明显的缺点,就是采样速度过慢,在生成一张图片的过程中,我们需要进行T次迭代,而一般T都是非常大的(e.g. 1000)。因此DDPM虽然图像的质量和多样性很好,但生成效率非常低。为了解决这个问题,[2]提出了一个新的模型(或者称为采样方式)叫做Denoising Diffusion Implicit Models(DDIM)。
网上关于DDIM的博客文章非常多,但是大部分都是上来“劈头盖脸”输出一堆数学公式,这对数学废柴的我来说并不友好。因此本文将从“为什么要用这种方式降低采样次数”的角度切入,揭示DDIM的原理及实现方法。由于我的文章一贯比较入门级,因此建议配合其他大佬的文章搭配食用。
另外,强烈建议如果对DDPM了解还不清晰的读者看一下我的这篇文章(https://zhuanlan.zhihu.com/p/624851115)。也是同样入门级的讲解,可能会解决读者们的部分疑惑。并且本文也不会过多涉及已经在DDPM文章中讲过的概念,因此本文中你不理解的一些关于DDPM的知识点,可能在该文中都能找到答案。
二、为什么DDPM一定要这么多次采样
首先我们先思考一下,如何可以加快DDPM的生成效率。最容易想到的两种方法,减小 ,"跳步" (i.e. 不再严格按照 到 的顺序来采样),下面我们依次讨论。
第一, 减小 行不行?
答案是不行, 必须很大。在DDPM中,我们有公式
由于对于每个 都接近于 都接近于 1 ,这是为了
-
噪声的方差 较小,保证前后分布均为正态分布的假设成立; -
的系数 要尽量接近于 1 ,因为这样才能保证 时刻的噪音图尽量保留 时刻的大体分布,不至于一步就破坏掉原图分布,这样就不好还原了。
同时,我们通过推导,可以得到:
其中 ,我们希望在 时刻,也就是最后时刻,我们的 是尽量服从标准正态分布的。因此我们希望 尽可能的趋近于 尽可能趋近于 1 。在 接近 1 的前提下,只能让 尽可能的大,才能满足我们最终的需求。这也就是为什么 的取值不能太小的原因,因为 不能太小且我们需要 尽可能的趋近于 0 。
第二,为什么非要一步一步降噪,跳步行不行?
答案是不行。注意,我们的优化目标虽然是噪声 的MSE,但实际这只是重参数化 (reparameterization) 的结果。我们的优化终极目标实际上是去拟合概率分布 。而我们求得这个分布均值的方法是用的贝叶斯公式
其中,等式右边分子中的 是通过一个非常重要的假设得来的,那就是我们的马尔可夫性质! 因此我们的采样必须要严格遵照马尔可夫性质,也就是必须从 到 一步一步来,不能 "跳步”。
第三,由式 (2),如果我们预测出了 ,直接移项由 直接得出 行不行?
不行,答案同上面那一个问题。ok,既然不能跳步的原因是由于马尔可夫性质的约束,那假设我不再让这个过程是马尔可夫的 (Non-Markovian) 了,现在我可不可以跳步了? 答案是可以,并且这就是DDIM所做的事。
三、DDIM是如何去马尔可夫化的?
由于我们现在假设我们不再有马尔可夫性质,因此式 (3) 要改写成
这下好了,由于我们不再是马尔可夫链,等号右边的三个分布,我们全都不知道了 (因为式 (2)是通过马尔可夫性质推导出来的) ,这怎么办? 首先我提出一个大胆的命题:前向过程 一点都不重要,我们不需要知道。
很多人可能会反驳我,我们的反向过程是在模拟前向过程,前向过程怎么能不重要呢? 这我就要再一次推荐你看我之前写的这篇DDPM的文章了。其实DDPM的训练过程,根本没有直接用到 ,而是直接用的 一步到位。
还会有人反驳我,那你不知道 的话,你如何计算 ? 我的回答是:谁说我要计算了,我不能自己设一个分布 吗? 当然,这个分布也不能随便设,必须要满足一定条件,而这个条件就是我们必须让 (2) 式依然成立。因为我们的前向训练过程是用到了 (2) 式的,所以为了让前向过程不变,我们要确保 (2) 式依然成立。
那么问题就简化了,我们可以用待定系数法来求解,假设 ,于是我们有 。由于我们假设 (2) 式依然成立,于是我们有 ,其中 都服从标准正态分布。于是我们可以代入求解,有:
合并同类项,有
由于我们有 都服从标准正态分布,因此两者可合并为同一个正态分布且服从 。于是 (5) 式可改写成
接下来,我们来求解 ,因为我们必须要满足式 (2) ,因此我们要满足
通过初等运算,我们可以轻松得出
最终,我们可以得到我们新的 分布,即
这就是我们新的反向生成分布,也就是我们新的要去拟合的 “终极目标” 。
当然,有了式 (7),通过式 (4) 我们也可以求出 。但这并不重要,以至于原文作者甚至没有给出这个分布的表达式。
四、DDIM的采样过程
这部分和DDPM是完全一样的(除了采样分布变为了式 (7))。同样地,对式 (7) 中的均值进行重参数化,用 来表示,有:
由于我们不再需要上式服从马尔可夫性质,因此我们可以将上式改写为:
其中,严格满足 $s<k$ 。于是,我们就可以从时间序列="" $\{0,="" \ldots,="" t\}$="" 中随机取一个长度为="" $l$="" 的升序子序列,通过式="" (9)="" 迭代采样="" 次最终得到我们想要的="" $x_0$="" 。这部分易于理解,就不多赘述。<="" p="">
ok,到目前为止,我们基本完成了DDIM原理的推导,目前还有一个问题没解决,那就是 的取值问题。原文的appendixB证明了 (实际上我们在第三节中推导也可以看出) 无论 取值为何,都不影响式 (2) 的成立。因此我们可以较为随意的取值。我们第一时间想到的就是令 。为什么呢? 因为这就是DDPM中 的方差嘛。
于是,作者令 ,其中 。考虑两个边界值,当 时,我们就回到了DDPM (推导我放在本文最后,有兴趣的读者可以看一下)。当 时,这就是 DDIM,因此DDIM其实并不是一个模型,只是一个特殊的采样方式。 而当 时,由于式 (9)中唯一具有随机性的 此时亦为 0 ,因此采样过程不再具有随机性,每个 对应了确定的 (deterministic) ,这就有点类似GAN和VAE了。
另外作者发现,当步数 很小时, 效果最好,并且当 时, 20 步的生成结果与 100 步的生成结果一致性很强,这是显然的,因为此时模型变为了确定性模型 (deterministic),但是这里面值得关注的是,由于当 时,每个 对应唯一的 ,就像我上面说的,这有点类似GAN和VAE,那我们可以认为此时的 就是一个high-level的图像编码向量,里面可能蕴涵了大量的信息特征,也许可以用于其他下游任务。最后,作者论述了当 时,式 (9) 可以写成常微分方程的形式,因此可以理解为模型是在用欧拉法近似从 到 的编码函数。
最后一个问题,DDPM中如果在采样时令 ,也就是也让它变成deterministic,为什么效果很差?
原因: 在DDPM中, 的方差 是我们通过式 (3) 贝叶斯方程计算出来的,并不是像本文一样设出来的,换句话说,本文的 取何值也不影响边界分布 ,但DDPM中是不可以改的,改了就不再遵循了前向过程,也就破坏了原本的分布。
五、总结
由于DDPM是基于马尔可夫链建立起来的前向/逆向过程,因此不能 “跳步” 生成图像,且为了保证 不能过小,因此自然会导致采样慢、出图效率低的缺点。而DDIM这篇文章介绍的方法,巧妙地通过自行设计优化目标 ,将马尔可夫的限制取消,在不影响DDPM中的边界分布 (i.e. 式 (2) ) 的情况下大大缩短了采样步数。这样做的好处是,训练好的DDPM可以直接拿来通过DDIM的采样方法进行采样,不需要再去训练一次。原文做了一些对比实验,不是本文的重点,因此没有列举,感兴趣的读者可以自行去论文中查看。本文主要通过 “为什么DDPM这么慢" “如何改" 的逻辑,阐述了DDIM的原理。希望能对一些读者提供一定帮助。
附录:推导当 时,DDIM等价于DDPM
首先,对比DDPM和DDIM的分布 ,显然方差相等,我们只需要证明均值相等即可,即下式
其中比较难化简的部分为 ,因此我们先化简这部分
代入,我们有:
[1] [Denoising Diffusion Probabilistic Models]
https//arxiv.org/abs/2006.11239
[2] [Denoising Diffusion Implicit Models]
https//arxiv.org/abs/2010.02502)

公众号后台回复“数据集”获取100+深度学习各方向资源整理
极市干货

点击阅读原文进入CV社区
收获更多技术干货

