一文详解Denoising Diffusion Implicit Models(DDIM)

0 前言

  上一篇博文我们介绍了目前流行的扩散模型基石DDPM ,并且给出了代码讲解,有不了解的小伙伴可以跳转到前面先学习一下(传送门)。今天我们再来介绍下DDPM的改进版本。DDPM虽然对生成任务带来了新得启发,但是他有一个致命的缺点,就是推理速度比较慢,这就导致实际工业应用中很难落地。为了解决这个问题,斯坦福大学提出了他的改进版本,实际上也不算是新的模型,只是一个新的采样方式,加快了模型的推理速度,就是我们今天要介绍的Denoising Diffusion Implicit Models(DDIM),目前流行的一些采样模型,如stable diffusionmidjourney等都是基于DDIM的采样方式。下面给出DDIM的论文和项目地址,官方版的代码是TensorFlow版本的:

  前面讲的DDPM是一个马尔科夫的过程,而DDIM是通过去马尔科夫化,但是又和DDPM有一个同样的训练目标,也就是说如果你已经有一个训练好的DDPM模型了,你就可以通过DDIM的这种采样方式来加速已经训练好的DDPM的采样,所以说DDIM更像是提出了一个新的采样方式,因为他的训练过程跟DDPM是一样的,只不过DDIM改进了采样过程。但是DDIM的这种采样方式也有一些缺点,虽然加快了模型的推理速度,但是由于DDIM的整个生成过程是确定性的(deterministic)过程,这就导致了DDIM的多样性相比于DDPM比较差(鱼和熊掌不可兼得)。

这里留两个问题,各位小伙伴们思考一下:

  • DDPM既然采样慢是因为T太大了,能不能把T调小?
  • 采样慢的第二个原因是必须逐步采样,能不能直接跳着采样?

1 DDIM

之前我们推导DDPM的时候都是基于马尔科夫的性质,即整个采样是按照下面的公式进行的:
p ( x t − 1 ∣ x t , x 0 ) ∼ M a r k o v (1) p(x_{t-1}|x_t,x_0) \sim Markov \tag{1} p(xt1xt,x0)Markov(1)
也就是说上面这个采样只能一步一步来,服从马尔科夫性质的,那么我们能不能找到一个不符合马尔科夫的采样公式,像下面这样的:
p ( x s ∣ x k , x 0 ) ∼ N o n − M a r k o v , s < k − 1 (2) p(x_{s}|x_k,x_0) \sim Non-Markov ,s<k-1 \tag{2} p(xsxk,x0)NonMarkovs<k1(2)
根据贝叶斯公式,我们可以得出下面的公式:
p ( x s ∣ x k , x 0 ) = p ( x k ∣ x s , x 0 ) p ( x s ∣ x 0 ) p ( x k ∣ x 0 ) (3) p(x_{s}|x_k,x_0) = \frac{p(x_k|x_s,x_0)p(x_s|x_0)}{p(x_k|x_0)} \tag{3} p(xsxk,x0)=p(xkx0)p(xkxs,x0)p(xsx0)(3)
  在DDPM中,根据马尔科夫性质,上面式子中的, p ( x k ∣ x s , x 0 ) , p ( x s ∣ x 0 ) , p ( x k ∣ x 0 ) p(x_k|x_s,x_0),p(x_s|x_0),p(x_k|x_0) p(xkxs,x0)p(xsx0)p(xkx0)都是已知的。但是,如果此时采样不满足马尔科夫性质了,上面三个概率分布不就都不知道了吗,这时候该怎么办?
回想一下DDPM的训练过程,我们通过 x 0 x_0 x0可以一步生成 x t x_t xt,即满足 p ( x t ∣ x 0 ) p(x_t|x_0) p(xtx0),也就是说上面两个式子只有一个是未知的,即 p ( x k ∣ x s , x 0 ) p(x_k|x_s,x_0) p(xkxs,x0),这也就回答了我们为什么在前言里面说DDIM实际上是一个采样方法,他的训练也是DDPM。那么还剩下的一项怎么解决?这一项在DDPM 中对应的是 p ( x t ∣ x t − 1 ) p(x_t|x_{t-1}) p(xtxt1),这一项在训练中根本没用到,训练的时候直接根据 p ( x t ∣ x 0 ) p(x_t|x_0) p(xtx0)来加噪,既然这一项没用到,说明他不重要,我们就先不管,那接下来应该怎么办?于是大牛们就开始想办法了,想着如果不知道 p ( x k ∣ x s , x 0 ) p(x_k|x_s,x_0) p(xkxs,x0),就没办法计算 p ( x s ∣ x k , x 0 ) p(x_{s}|x_k,x_0) p(xsxk,x0),那如果自己假设一个 p ( x s ∣ x k , x 0 ) p(x_{s}|x_k,x_0) p(xsxk,x0)分布,这个假设的分布需要满足一定的条件,即 x T = α T ˉ x 0 + 1 − α T ˉ ε x_T=\sqrt{\bar{\alpha_T}}x_0+\sqrt{1-\bar{\alpha_T}}\varepsilon xT=αTˉ x0+1αTˉ ε这个条件仍然是成立的,因为在前向训练的时候用的就是这个公式,你假设一个概率分布总不能违反之前的训练约束对吧。这样的话,问题就变得简单多了。 假设 p ( x s ∣ x k , x 0 ) p(x_{s}|x_k,x_0) p(xsxk,x0)的分布如下,直接假设为正态分布:
p ( x s ∣ x k , x 0 ) ∼ N ( k x 0 + m x k , σ 2 I ) (4) p(x_{s}|x_k,x_0) \sim N(kx_0+mx_k,\sigma^2I) \tag{4} p(xsxk,x0)N(kx0+mxk,σ2I)(4)
上面的分布有三个未知数,我们现在要做的就是求出他们,根据参数化技术,采样一个 x t − 1 x_{t-1} xt1
x s = k x 0 + m x k + σ ε (5) x_{s}=kx_0+mx_k+\sigma\varepsilon \tag{5} xs=kx0+mxk+σε(5)
我们刚才说了,该式子是满足 x t = α t ˉ x 0 + 1 − α t ˉ ε ′ x_t=\sqrt{\bar{\alpha_t}}x_0+\sqrt{1-\bar{\alpha_t}}\varepsilon^{\prime} xt=αtˉ x0+1αtˉ ε的,带入求解,可以得出:
x s = k x 0 + m ( α k ˉ x 0 + 1 − α k ˉ ε ′ ) + σ ε (6) x_s=kx_0+m(\sqrt{\bar{\alpha_k}}x_0+\sqrt{1-\bar{\alpha_k}}\varepsilon^{\prime})+\sigma\varepsilon \tag{6} xs=kx0+m(αkˉ x0+1αkˉ ε)+σε(6)
合并同类项,有
x s = ( k + m α ˉ k ) x 0 + ( m 1 − α ˉ k ) ϵ ′ + σ ϵ (7) x_s=\left(k+m \sqrt{\bar{\alpha}_k}\right) x_0+\left(m \sqrt{1-\bar{\alpha}_k}\right) \epsilon^{\prime}+\sigma \epsilon \tag{7} xs=(k+mαˉk )x0+(m1αˉk )ϵ+σϵ(7)

由于 ϵ , ϵ ′ \epsilon, \epsilon^{\prime} ϵ,ϵ 都服从标准正态分布,因此两者可合并为同一个正态分布且服从 N ( 0 , m 2 ( 1 − α ˉ k ) + σ 2 ) N\left(0, m^2\left(1-\bar{\alpha}_k\right)+\sigma^2\right) N(0,m2(1αˉk)+σ2) 。于是上面的式可改写成
x s = ( k + m α ˉ k ) x 0 + m 2 ( 1 − α ˉ k ) + σ 2 ϵ (8) x_s=\left(k+m \sqrt{\bar{\alpha}_k}\right) x_0+\sqrt{m^2\left(1-\bar{\alpha}_k\right)+\sigma^2} \epsilon \tag{8} xs=(k+mαˉk )x0+m2(1αˉk)+σ2 ϵ(8)

接下来,我们来求解 k , m k, m k,m ,因为我们必须要满足式 x t = α t ˉ x 0 + 1 − α t ˉ ε ′ x_t=\sqrt{\bar{\alpha_t}}x_0+\sqrt{1-\bar{\alpha_t}}\varepsilon^{\prime} xt=αtˉ x0+1αtˉ ε,因此我们要满足
k + m α ˉ k = α ˉ s  和  m 2 ( 1 − α ˉ k ) + σ 2 = 1 − α ˉ s (9) k+m \sqrt{\bar{\alpha}_k}=\sqrt{\bar{\alpha}_{s}} \text { 和 } m^2\left(1-\bar{\alpha}_k\right)+\sigma^2=1-\bar{\alpha}_{s} \tag{9} k+mαˉk =αˉs   m2(1αˉk)+σ2=1αˉs(9)

通过初等运算,我们可以轻松得出
m = 1 − α ˉ s − σ 2 1 − α ˉ k  和  k = α ˉ s − 1 − α ˉ s − σ 2 α ˉ k 1 − α ˉ k (10) m=\frac{\sqrt{1-\bar{\alpha}_{s}-\sigma^2}}{\sqrt{1-\bar{\alpha}_k}} \text { 和 } k=\sqrt{\bar{\alpha}_{s}}-\sqrt{1-\bar{\alpha}_{s}-\sigma^2} \frac{\sqrt{\bar{\alpha}_k}}{\sqrt{1-\bar{\alpha}_k}} \tag{10} m=1αˉk 1αˉsσ2   k=αˉs 1αˉsσ2 1αˉk αˉk (10)

最终,我们可以得到我们新的 p ( x s ∣ x k , x 0 ) p(x_{s}|x_k,x_0) p(xsxk,x0)分布,即
p ( x s ∣ x k , x 0 ) = N ( α ˉ s x 0 + 1 − α ˉ s − σ 2 x k − α ˉ k x 0 1 − α ˉ k , σ 2 I ) (11) p(x_{s}|x_k,x_0)=N\left(\sqrt{\bar{\alpha}_{s}} x_0+\sqrt{1-\bar{\alpha}_{s}-\sigma^2} \frac{x_k-\sqrt{\bar{\alpha}_k} x_0}{\sqrt{1-\bar{\alpha}_k}}, \sigma^2 I\right) \tag{11} p(xsxk,x0)=N(αˉs x0+1αˉsσ2 1αˉk xkαˉk x0,σ2I)(11)

这就是得到的新的反向生成分布,也就是要去拟合的 “终极目标”。
  到这里,不知道给位小伙伴们有没有什么疑问,我们假设的DDIM方法,实际上对应的前向加噪过程已经变了,为什么还能用呢?核心就是因为模型在训练的时候没有用到每一步的训练方式,直接一步到位(直接使用 x 0 x_0 x0-> x − t x-t xt的公式,没有使用马尔科夫约束推导了),也就是说即使之前的等式 p ( x k ∣ x s , x 0 ) p(x_k|x_s,x_0) p(xkxs,x0)已经发生了变化,但是 p ( x t ∣ x 0 ) p(x_t|x_0) p(xtx0)没有变化,模型仍然是能用的,即可以使用DDIM这种方式加速。不得不佩服大牛们是真的厉害。

有了上面的概率分布,我们就可以采样了:
x s = α ˉ s x 0 + 1 − α ˉ s − σ 2 x k − α ˉ k x 0 1 − α ˉ k + σ ε (12) x_s=\sqrt{\bar{\alpha}_{s}} x_0+\sqrt{1-\bar{\alpha}_{s}-\sigma^2} \frac{x_k-\sqrt{\bar{\alpha}_k} x_0}{\sqrt{1-\bar{\alpha}_k}}+ \sigma\varepsilon \tag{12} xs=αˉs x0+1αˉsσ2 1αˉk xkαˉk x0+σε(12)

其中,上面的式子严格满足 s < k s<k s<k 。于是,我们就可以从时间序列 { 0 , . . . , T } \{0,...,T\} {0,...,T}中随机取一个长度为 l l l的升序子序列,通过上面的式子迭代采样 l l l次最终得到我们想要的 x 0 x_0 x0。但是,还有一个问题,上面的式子还有一个未知量 σ 2 \sigma^2 σ2怎么办?我们可以想到两种最简单的值,一个就是直接让他等于0,这时候就变成了确定性的过程了,就变成了固定的生成过程了。第二种取值可以直接参考DDPM的取值,即 σ = η 1 − α t − 1 ˉ 1 − α t ˉ β t , η ∈ [ 0 , 1 ] \sigma=\eta\sqrt{\frac{1-\bar{\alpha_{t-1}}}{1-\bar{\alpha_t}}\beta_t},\eta \in [0,1] σ=η1αtˉ1αt1ˉβt η[0,1],论文中提到,如果令 σ = 1 − α t − 1 ˉ 1 − α t ˉ β t \sigma=\sqrt{\frac{1-\bar{\alpha_{t-1}}}{1-\bar{\alpha_t}}\beta_t} σ=1αtˉ1αt1ˉβt ,也就是 η = 1 \eta=1 η=1,这个过程就变成了马尔科夫的过程了,有兴趣的可以自己证明一下,即证明上面的采样公式的均值和DDPM的均值一样即可(注意脚标换一下: k , s = t , t − 1 k,s=t,t-1 k,s=t,t1)。当 η = 0 \eta=0 η=0时,就是DDIM,所以说DDIM仅仅是一个采样方式,而当 η = 0 \eta=0 η=0 时,由于式(11)中唯一具有随机性的 σ ϵ \sigma\epsilon σϵ此时亦为0,因此采样过程不再具有随机性,每个 x T x_T xT对应了确定的(deterministic) x 0 x_0 x0.
  作者在文章中指出,当步数 l l l很小时, η = 0 \eta=0 η=0效果最好,并且当 η = 0 \eta=0 η=0时,20步的生成结果与100步的生成结果一致性很强,这是显然的,因为此时模型变为了确定性模型(deterministic),但是这里面值得关注的是,由于当 η = 0 \eta=0 η=0时,每个 x T x_T xT对应唯一的 x 0 x_0 x0,这有点类似GAN和VAE,那我们可以认为此时的 x T x_T xT就是一个high-level的图像编码向量,里面可能蕴涵了大量的信息特征,也许可以用于其他下游任务。最后,作者论述了当 η = 0 \eta=0 η=0时,式(12)可以写成常微分方程的形式,因此可以理解为模型是在用欧拉法近似从 x 0 x_0 x0 x T x_T xT的编码函数。

2 总结

  我们来总结一下,顺便回答一下上面提出的两个问题。DDPM是根据马尔科夫链建立起来的前向过程-逆向过程,所以他不能通过“跳步”实现图像生成;为了满足 x T ∼ N ( 0 , 1 ) x_T \sim N(0,1) xTN(0,1),所以 T T T不能太小,这就导致了采样速度比较慢。
  DDIM通过自己设计的优化了目标 p ( x t − 1 ∣ x t , x 0 ) p(x_{t-1}|x_t,x_0) p(xt1xt,x0),取消了马尔科夫的限制,在不影响DDPM的边界分布( x t = α t ˉ x 0 + 1 − α t ˉ ε x_t=\sqrt{\bar{\alpha_t}}x_0+\sqrt{1-\bar{\alpha_t}}\varepsilon xt=αtˉ x0+1αtˉ ε)的条件下极大的缩短了采样的步数。所以,训练好的DDPM可以直接拿来通过DDIM的采样方法进行采样,不需要再去训练一次。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I松风水月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值