AIGC: DDIM (Denoising Diffusion Implicit Models) 笔记
TL;DR: 去噪扩散隐式模型 (DDIM) 是利用非马尔可夫的思想,以牺牲一小部分图片质量为代价,对图像生成过程大幅度加速的采样方法。
这个话题太过复杂,如内容有错误,还请在评论里面指正。
本人数学不好,尽量绕开复杂的公式(?)
大局观

首先,有一个问题必须要回答——为什么 DDPM 要基于马尔可夫链,马尔可夫链到底起一个什么样的作用。
在这里,以一个小白的视角来理一下DDPM的大致过程:
首先,加噪过程是给数据添加一些微小的高斯噪音,即 。
在多次加噪之后,数据最终将会变成高斯分布。
在加噪强度非常小的情况下,去噪分布可以被看作是一个高斯分布,所以我们用一个模型(比如神经网络) 去贴合去噪的分布。
但是,我们的目的不是为了去学习 (事实上我们也没有去学习
). 我们的最终目的,是去模拟出原始数据的分布
.
只不过,相比于直接利用极大化似然法(Maximum Likelihood) (很明显,如果我们能够直接极大化似然的话,就不用在这里费这么大力气了😂), DDPM 的优化目标是最大化其变分下界(Evidence Lower Bound)
. (这里
的意思是
)
我们在 log 前面加一个负号,把最大化目标变成最小化目标,于是就得到了 DDPM 的优化目标:
于是,下一个问题就变成了,什么是 . 很明显,这是一个依赖于
的联合分布(Joint Distribution). 对于联合分布,我们初高中学过,有链式法则
而在马尔可夫链的情况下,上面这个公式将变成
所以,在马尔可夫链的前提下, 这个联合分布可以被写成如下的乘积形式(如果外面带 log 的话就相当于加和形式)
也是差不多的道理,这里就不去花力气解释了。总之,在马尔可夫链的前提下,上面的优化目标可以进一步地写下去:
然后,我们把 这一项从
中拆分出来。然后我们再将
改写一下,变成
的形式(后面一项可以被相互抵消掉),然后我们就得到了目标的一个新的形式:
至此,我们利用了马尔可夫链的性质对公式做了变形,如果我们把高斯分布这一个条件也加上去的话,我们可以对上面的目标做进一步的推导(这里就省略过程了,如果想知道过程,可以参考之前推荐的DDPM的文章,或者DDIM原论文附录C,链接在文章末尾),得到如下的最终形式:
这里,一个重要的发现就是,目标函数 ,依赖于
而不是联合分布
. 那么什么是
呢?首先,这是个加噪/前向过程,并且根据定义,有
并且,根据马尔可夫链和高斯分布的两个大前提,我们还知道,
呃,所以扯了大半天,这家伙在一本正经的胡说八道什么?
这里,从 到公式的“解”
,我们是通过了马尔可夫链推导出来的。但是实际上,我们未必一定要通过马尔可夫链去"求解"。有没有一种方法,基于非马尔可夫链的方式,也能求得这个"解"呢?
非马尔可夫过程
这里,直接照搬论文给出的标准答案了。如果我们的概率分布 q 满足以下的条件:
那么可以有,.
上面的第三个公式非常重要,至于怎么来的,论文没有给出过程和说明。网上有许多大神们针对这一步写了不少文章,感兴趣的可以去看(链接在文章末尾)。
然后我们利用贝叶斯理论(Bayes' Rule)获得非马尔科夫下的前向过程:
等式后面的每一项,代入上面的公式即可。顺便一提,由于我们前向不再遵循马尔可夫链,所以 不再已知。
反向过程就是上面公式 ,和前向一样,同时依赖于
和
. 当然遵循 DDPM 的思路,我们可以将这个概率分布改写一下
这里注意 α 和 σ 长得特别像,不要搞错了 (lll¬ω¬)。另外,在这里,我们依旧是老老实实地在一步步地进行采样,还没有涉及到任何加速采样的内容。
借用 DDPM 模型
BANG! 又是一个重磅炸弹——DDIM 不需要再训练一个单独的模型,直接利用已经训练好的 DDPM 模型就可以进行采样。

因为,论文团队证明了,对于任意的 , 都存在
, 和一个常数
, 使得等式
成立。(这是什么天书)
这里对于论证过程不做叙述,但是有必要解释一下上面的这个结论是什么意思。
,或者完整地说,
, 是我们 DDIM 非马尔可夫过程下的目标,而
是我们利用 DDPM 推导出来的目标(上文中有完整的公式)。这里主要想说的一点,就是因为两者目标相等,所以 DDIM 可以借用其对应的参数下的 DDPM 的模型。
这里,如果我们再加入一个限定条件——如果我们的模型 , 在不同的时间 t, 权重是不共享的(比如,不同的时间点 t,我们都用一个不同的神经网络)。那么最小化目标
就变成了独立地最小化
里面的每一项,于是
在优化目标的时候就不再起作用(我们最优解
将不再依赖
的取值)。比如,我们可以取
,那么这就变成了 DDPM 原论文中的情况。
加速推理
所以,讲了这么多废话。终于到了最关键的部分——如何利用DDIM来加速推理。

所以,上面我们知道了,DDIM采样可以借用DDPM的模型,假设,我们DDPM训练时,用了1000步,那么我们DDIM采样时,就从这个 的集合中,取一个子集出来
, 这个子集的长度将远小于1000。然后我们把
带入非马尔可夫过程这一节里面的迭代公式,就得到了我们加速采样的过程。
Why? 首先,论文里面把联合分布拆解成了以下的形式。
等式后面的前面一项,是生成图片的过程,后面一项,仅作用于目标函数。其实,说到底还是因为目标相同——用新序列的情况下的最优化目标函数,和最优化 是等价的。
至于证明,论文中没有给出特别详细的过程。查遍了整个国内国外,没有一篇文章详细介绍了过程(唯一一篇张振虎的文章里面,里面介绍了 的情况)。所以目前就把它当作一个定理来看吧,不要太深究了。
ODE
上一篇文章最后留了一个坑没填。
DDIM 当 时,那么方差这一项就变成了 0. 于是原先的 stochastic 的过程就变成了 deterministic 的过程(即,已知
和
的情况下,
是一个确定的值;意味着从相同的噪音出发,将会导出相同的图片)
如果我们将 的离散情况连续化,就能得到对应的 ODE.
我们还是利用之前“将离散化的 DDPM 转化为 VP-SDE” 的思路,从 出发
假设我们一共有 N 步,然后 , 然后我们再把它压缩到一个连续的区间 [0,1] 上面去,所以
, 并且
很明显我们这里可以用 ,
来使公式变得更加简洁。
所以这里, 就变成了
.
就变成了
.最终形式就是
.
一些推荐参考的资料
推荐过N遍了😂,这里不厌其烦地再推荐一遍,一篇系统性介绍DDPM的文章:https://zhuanlan.zhihu.com/p/638442430
讲 DDIM 的文章中,经典中的经典(里面有不少跳步,建议先看一眼上面那个讲DDPM的):https://www.zhangzhenhu.com/aigc/ddim.html#equation-eq-ddim-226
非马尔可夫下的公式由来:https://zhuanlan.zhihu.com/p/627616358

填坑结束(😵)