DDIM与加速采样

DDPM Recap

前向过程

设有一列 noise schedule:,记 . 定义一个向输入逐渐添加噪声的马尔可夫过程如下: 则可以推得从输入到任意一步加噪的转移概率分布为: 也就是说我们可以用 和一个高斯随机变量 的线性组合来表达 逆向过程

在给定 的条件下,从 生成 的概率分布为: 但由于 实际未知,我们用 去近似 其中均值 参数化为: 方差可以选择为 .

损失函数

与 VAE 类似,我们优化 ELBO: 该式可以变换为: 代入 ,并简化系数,可得最终损失函数:

Respaced Timesteps

在 Improved DDPM[1]中,作者阐述了一种直接简便的加速采样方法,即不要一步一步地走逆向过程,而是跳着走。受益于 DDPM 前向过程的特殊构造,运用从 式推导出 式的思想,我们能轻松地导出任意两个 timesteps 之间的转移概率: 因此,我们可以选取一个子序列 ,构建一个新的 步马尔可夫链:

由于新马尔可夫链更短(),所以在其上采样即可达到加速采样的目的。另外,由于新马尔可夫链是原马尔可夫链的一个子序列,原来的训练本就包括了对子序列的训练,所以我们可以直接加载训练好的 DDPM 模型。

对比 式与 式,容易知道新马尔可夫链对应的 序列为: 为与原来的 作区分,这里用紫色来表示新的 . 以新的 为基础,重新定义一套新的参数: 那么原来的所有结论在新的参数下都适用。(其实 是一样的,毕竟新的 就是用 定义出来的。换句话说, 才是决定扩散过程的最本质的参数。)

在具体实现上,我们有两种方案:

  1. 第一种方案是 Improved DDPM GitHub repo 所采用的。我们继承原来的 DDPM 类,更新 序列为新的 序列并重新初始化其他参数,就可以直接调用原本 DDPM 的方法了。值得注意的一点是,给到模型的 timestep 要映射回原来的 timestep,见 repo 中的 _WrappedModel 类。

  2. 第二种方案是 DDIM GitHub repo 所采用的,更加简单粗暴,即直接在采样时重新计算 等参数。

DDIM

Idea

在 DDPM 中,我们先定义了 ,然后推导出 ,最后利用贝叶斯公式推导出 论文[2]的作者敏锐地发现,DDPM 的损失函数和采样过程只依赖于 ,与 无关。因此,虽然 是一切的根源,但是它最后并没有直接发挥作用。于是我们大胆地猜想——能否不从 出发,而是直接定义 呢?

首先,为了与 DDPM 对齐,保持 不变: 其次,考虑 ,我们发现仅从已定义的 是无法唯一确定下 的(无视掉 的条件能看得更明显),只要它们俩满足以下关系式就行:

论文给出的一族满足条件的解是: 这里给 加上了下标 来明确地表示 是关于 的一族解,改变 就能改变 .

推导过程:论文的发展顺序是先直接给出了 ,然后用数学归纳法证明 满足我们的定义。按这样的顺序写论文比较方便,但显然与人的正常思考过程相反,不具有参考意义。参考资料[3]使用了待定系数法求解 .

有如下形式: 其中 为未知系数。那么将上式和 式均写作采样的形式,有: 将第二行代入第一行得: 对比第三行有: 因此: 即得到 式。

根据 ​ 式,我们从不同于 DDPM 的角度定义了一个新的扩散/去噪过程。特别地,我们回过来算一下这个新扩散过程的一个前向步是什么: 其具体形式不重要,重要的是现在 同时依赖于 ,所以不再是一个马尔可夫过程了,如下图所示:

在实际采样时,我们依旧用 去近似 ​:

虽然 DDIM 与 DDPM 的 形式不同,但是损失函数仍然基本保持一致。这是因为两同方差正态分布的 KL 散度正比于二者均值相减的平方,又两个均值有着相同的形式,所以最后都能归约到 ,仅仅系数有差别。尽管后续的研究表明系数对训练效果有一定影响,但一般认为我们可以直接加载 DDPM 训练好的模型而无需重新训练

Two Special Cases

式是关于 的一族解,现在我们考虑两种特殊的选取方案:

第一种方案,取 . 代入 式,会发现化简后的结果与 式完全一致,即得到了 DDPM. 因此,DDPM 是新扩散过程的一个特例

第二种方案,取 . 这意味着逆向过程变成了一个确定性过程 代入模型,即: 作者称之为 Denoising Diffusion Implicit Models (DDIM).

确定性意味着每个图像 都唯一对应了一个隐变量 ,因此可以对隐变量插值来获取平滑变化的图像。但是这里有一个小 trick:作者采用的不是一般的线性插值,而是球面线性插值: 其中, 是两向量 的夹角。

球面线性插值(Spherical Linear Interpolation,Slerp)

设有单位向量 ,夹角为 ,以 为变量对夹角角度做插值,对应该角度的单位向量 即是插值结果:

可以表达为 的线性组合 ,所以我们想解出系数 . 两边同时点乘 得: 同理,两边同时点乘 得: 联立两式,解得: 为例化简分子: 因此: 同理可得: 所以球面线性插值公式为: 特别地,当 时,Slerp 趋近于线性插值。

至于作者为什么要用球面线性插值而不是一般的线性插值,我其实也不是很清楚,作者似乎也没提……

Update 2023.03.10:在生成模型中使用 Slerp 应该最先是在论文[5]中阐述的,在后来的 StyleGAN 等生成模型里也有应用。论文认为 Slerp 插值出的隐变量更符合先验分布,但是并没有说服 ICLR 2017 的审稿人,最后也没中,可以在 openreview 上看审稿意见。但是就其引用量而言,论文提出的许多可视化方法还是受到了人们的广泛认可。

Faster Sampling

截至目前,我们似乎并没有看出 DDIM 有什么加速之处。其实,DDIM 的加速采样思想和上一节是类似的,即取子序列 ,只做 步采样。具体而言,新的采样过程为: 那为什么人们每每提到 DDIM,总会想到加速采样呢?因为实验发现,当采样步数小于 100 步时(假设训练是 1000 步),DDIM 的采样质量比 DDPM 显著更好;特别是在 50 到 100 步左右时,人眼其实不怎么看得出和 1000 步的区别。

Neural ODE

在「扩散模型的SDE与ODE描述」一文中,我们介绍了如何将离散时间的 DDPM 连续化为 SDE 形式,同时还说明了每个 SDE 都对应着一个确定性的 ODE. 而 DDIM 恰是一种确定性情形,所以我们自然会想到——能不能用 ODE 来描述一个 DDIM 呢?答案是肯定的。

首先,我们把 式中的 也换做 表示:

两边均减去 ,得: ,将 换成 并令 ,得: 这就是 DDIM 的 ODE 描述[6]

事实上,该 ODE 与「扩散模型的SDE与ODE描述」一文的结果是等价的。回顾当时我们得到的 ODE 为: 在 DDPM 的设置下,有 ,代入得: 通过解 SDE 的高斯转移概率并与 DDPM 相比较,可以知道 有关系 ;另外我们也知道 score model 和噪声预测模型有关系 ,代入上式即可重新推得 ​ 式。

另外,如果对 式做变量替换 ,则整理后得: 这正是 DDIM 原论文中给出的 ODE 形式。综上, 式都是 DDIM 的等价的 ODE 形式。

DDIM Inversion

前文提及,DDIM 使得每个图像都唯一对应了一个隐变量,但并没有说明如何求这个隐变量。现在有了 ODE,事情就变得简单了。如果说采样过程是沿着 的时间求解 ODE,那么反过来,沿着 的时间解同一个 ODE 就是逆过程,这种技术被称作 DDIM inversion. 实现上,只需要将 式中的 替换为 即可:

References

  1. Nichol, Alexander Quinn, and Prafulla Dhariwal. Improved denoising diffusion probabilistic models. In International Conference on Machine Learning, pp. 8162-8171. PMLR, 2021. ↩︎
  2. Song, Jiaming, Chenlin Meng, and Stefano Ermon. Denoising Diffusion Implicit Models. In International Conference on Learning Representations. 2020. ↩︎
  3. 苏剑林. (Jul. 27, 2022). 《生成扩散模型漫谈(四):DDIM = 高观点DDPM 》[Blog post]. Retrieved from https://kexue.fm/archives/9181 ↩︎
  4. 四元数插值与均值(姿态平滑). https://www.cnblogs.com/21207-iHome/p/6952004.html ↩︎
  5. White, Tom. Sampling generative networks. arXiv preprint arXiv:1609.04468 (2016). ↩︎
  6. Liu, Luping, Yi Ren, Zhijie Lin, and Zhou Zhao. Pseudo numerical methods for diffusion models on manifolds. arXiv preprint arXiv:2202.09778 (2022). ↩︎

DDIM与加速采样
https://xyfjason.github.io/blog-main/2022/12/14/DDIM与加速采样/
作者
xyfJASON
发布于
2022年12月14日
许可协议