关于 DDIM 采样算法的推导
November 5, 2023
作者: 赖泽强
写在前面 #
DDIM 全称 【Denoising Diffusion Implict Model】,是一篇发表于 ICLR 2021 的论文,不过实际时间也就比 DDPM 晚几个月(2020 年 10 月)就挂在 arXiv 上了。作者呢,则是 Yang Song 博士(也就是 Score-based Diffusion Model 的奠基人)的同门,Jiaming Song 博士, Chenlin Meng 博士(她在Guided Diffusion 蒸馏领域的早期工作获得了 CVPR2023 的 Award Candidate),以及 Stefano Ermon 教授。
老实说,这是一篇比较难懂的论文,一方面是里面涉及大量的推导以及概率论等相关背景知识,另一方面也是推导过程不太直观,以及刚接触的人难以获取到的 intutition,其他也包括一些 notation 的差异和 typo。
以下是个人对 DDIM 的一些理解(数学不好,记性也不行,也当是方便以后查阅的笔记),如果有理解上的错误,还请大佬们批评指正。
撰写过程不仅参考了原论文,还包括了
在此向互联网上热心分享的同僚表示敬意。
DDIM 出发点 #
DDIM 虽然是一个比较难的算法,但这并不意味着每一个从事扩散模型研究的人员都需要知道其具体的原理。对于大部分人来说,其实只需要知道
DDIM 是 DDPM 的一种加速采样算法,它可以进行确定性采样(也即给定一个初始的随机噪声,通过DDIM 进行采样,不管采样多少次,最终的结果是一样的,而原始的 DDPM 采样是随机采样,即便初始噪声一致,最终结果也可能不一致),除此之外,DDIM 采样可以在 50 步左右达到 DDPM 1000 步的性能/图片质量。
不过如果想要基于 DDIM 做一些进一步的研究,我们则必须更进一步:
因为不是作者本人,所以我们也无从得知,DDIM 一开始怎么被想出来的。但是从论文以及个人理解来看,DDIM 的推导基石应该是发现了 DDPM 的训练目标实际上只跟
那么为什么说 DDPM 的训练目标实际上只跟 这个边缘分布有关 呢 ?
如果我们从 Latent variable model 的角度考虑 Diffusion Model,我们的隐变量是一个集合
乍一看,这个优化目标和联合分布
但是如果我们把这个优化目标展开,参考 DDPM 原始论文,我们可以得到这么一个优化目标
其中
而
所以,实际上 DDPM 的优化目标实际上只与
DDIM 推导 #
在理解出发点之后,我们的目标就很明确了,怎么找一个具有相同
这一章作者提到他们使用了一个 non-Markovian 的 inference process 去替代 DDPM 的 Markovian inference process,至于二者的区别可以在后面再细究。
马尔科夫过程
每个状态转移到下一个状态的概率只与当前状态有关。
原论文里 3.1 节是比较魔幻,容易让人莫名其妙的,因为作者这里直接给出来他们推导出来的结果,然后在附录里附上了证明过程,证明该 generative process 和 DDPM 具有相同的
首先我们回顾一下 DDPM 的推导过程
其中采样过程理论上需要用到
那么怎么推导呢?在 DDPM 的论文里,我们有
可以看到
回忆
以下推导基于苏剑林的博客和原论文附录 B
我们的约束是和 DDPM 具有相同的
为什么要做这个转换呢?
因为如果我们想要约束
因为 q 分布是对 p 分布的等价近似,下面使用 p 分布进行推导。
首先进行一个等价变换
左右两边同时积分消掉
关于这个转换,概率论小白一开始表示非常难以理解,不过仔细想想,右边之所以能消掉是因为
另外,其实这玩意也怪怪的
,因为我们一般见到的是边缘概率的形式 ,而非前面那种条件概率。不过等式左边积分实际上 每个取值的和,但 本身是关于 的函数,不过因为是概率密度函数,所以和自然也还是 1 。
回到刚刚的积分,等式左边都包含有
可以看到,我们至此得到了
待定系数法求解
那么问题来了,我们知道
注意
这里的
等价于 DDPM 里的 ,作者在附录里有专门讲为什么他要用这套 notation。
DDIM 里的原论文是先给出了
Bishop(2006): Christopher M Bishop. Pattern recognition and machine learning. springer, 2006.
那 Bishop(2006) 2.115 究竟讲了个什么呢,没有书的看 这里。

Bishop(2006) 2.115
这里直接截图了,其实讲的就是当给定一个高斯的边缘分布
不过直接套,还是有一些心理障碍,因为这个
当我们去掉
还原回来
结合 Bishop(2006) 2.115,以及
其中
, ,
我们可以推导出等式左边,也即
方差为:
讲了半天终于把等式两边都求出来了,这下可以列方程求解了,回顾等式右边是
由第二个方程,我们可以解出:
结合上述结果和第一个方程,我们可以解出:
代回
我们就可以得到
🤗 至此我们就得到了 DDIM 论文里的直接给出的公式 7 了。
DDIM 论文的一些 typo #
附录 B 里的公式 22 和 23 应该是打错了, 方差不应该带根号,原论文多了个根号,应该是下面这个公式
DDIM 采样 #
基于推导出来的
然后,我们需要用网络预测的
我们有
把这个式子往回代,我们就得到了最终的采样公式(对应原论文的公式 12)
快速采样 #
事实上,DDIM 本身并不能带来加速效果,DDIM 快速采样的原理本质上就是 Stride Sampling,即间隔采样。而间隔采样的基石则是
DDPM的训练结果实质上包含了它的任意子序列参数的训练结果。
具体地,DDPM 的训练过程可以用一个
间隔采样则是取1000,980,960,940 一步一步采样(采样总步数为 50)。
讨论 #
事实上,通过 DDIM 的推导,我们得到了一个更加 general 的采样过程
例如,如果选取
除此之外,我们还可以选取一个特殊的
那么怎么选取
为此,作者做了一些实验,作者选取的
事实上,当

可以看到当
一个有趣的性质
对于加噪过程,我们有
而当
所以可以看出 DDIM
进一步思考,DDIM 的性能应该取决于相邻两个时间步预测结果的一致性,这也意味着,如果我们用相邻步数的结果去 finetune 一下 SD,即用噪声小的,也就是 t 更小的步数去监督 t+1 步,这样应该可以让性能更好。很好,然后我们就得到了 Consistency Model?