公式推导|一文看懂DDIM加速扩散模型采样的神奇原理

0 阅读3分钟

前言

一、DDPM为什么要采样1000次(T=1000)

💡因为 DDPM 要采样 1000 次,而其他模型比如 GAN 都可以做到一步生成,所以相比而言 DDPM 采样非常慢。 我们可以让 DDPM 不要采样那么多次吗,直接把 T 改小能不能解决问题? 答案:不能直接改小。

我们来看DDPM中xtx_t的采样公式,首先我们根据马尔可夫性质得到了xt1xtx_{t-1} \to x_t的公式:

xt=αtxt1+1αtϵ(式1x_t=\sqrt{\alpha_t}x_{t-1}+\sqrt{1-\alpha_t}\epsilon(式1)

经过推导,我们得到了x0xtx_0 \to x_t的公式:

xt=αtˉx0+1αtˉϵ(式2x_t=\sqrt{\bar{\alpha_t}}x_0+\sqrt{1-\bar{\alpha_t}}\epsilon(式2)

其中:

  • αtˉ=α1α2...αt\bar{\alpha_t}=\alpha_1*\alpha_2*...*\alpha_tαtˉ\bar{\alpha_t}α1\alpha_1连乘到αt\alpha_t的连乘积。
  • ϵN(0,I)\epsilon \sim N(0,I)ϵ\epsilon是服从标准高斯分布的随机噪声
  • αt1\alpha_t \to 1 & αt<1\alpha_t<1αt\alpha_t是一个趋近于1但小于1的常数,比如0.99这样子

由于我们采样的时候是要从纯噪声ϵ\epsilon开始,所以我们希望正向扩散的最后一步得到的xTx_T可以趋近于是一个纯噪声。根据式2可知,如果要使得xTϵN(0,I)x_T \to \epsilon \sim N(0,I),就必须让αTˉ0\bar{\alpha_T} \to 0

因为αTˉ=α1α2...αT\bar{\alpha_T}=\alpha_1*\alpha_2*...*\alpha_T,而每一个αt\alpha_t都是趋近于1的数,要让它们连乘后趋近于0,必须得乘的足够多,即TT要足够大。⇒DDPM必须采样很多次(比如1000次),不能随便减小T。

二、DDPM的采样可以跳步吗?

💡所谓跳步,就是原本采样是xTxT1...xtxt1...x0x_T \to x_{T-1} \to ... \to x_t \to x_{t-1} \to ... \to x_0。现在我想改成xTxTs...x0x_T \to x_{T-s} \to ... \to x_0,就是不一步一步的采样了,这样就可以让采样快很多,这在DDPM中是可以的吗? 先说答案:不能

首先,我们要先明确什么是马尔可夫性质(Markov Poverty),这是DDPM推导的理论基础。所谓马尔可夫性质,指的就是:

当前状态只依赖于“现在”,而与“过去的过去”无关。

在DDPM中,马尔可夫性质的体现就是:xtx_t只依赖于xt1x_{t-1},与前面的任意xtsx_{t-s}x0x_0无关。

DDPM的采样目标是拟合反向条件分布q(xt1xt,x0)q(x_{t-1}|x_t,x_0),DDPM中的做法是使用贝叶斯公式:

q(xt1xt,x0)=q(xtxt1,x0)q(xt1x0)q(xtx0)(式3q(x_{t-1}|x_t,x_0)=\frac{q(x_t|x_{t-1},x_0)q(x_{t-1}|x_0)}{q(x_t|x_0)}(式3)

其中:

  • q(xt1x0)q(x_{t-1}|x_0)q(xtx0)q(x_t|x_0)这两项可以由式2得到,而式2又是由马尔可夫性质推导得到。所以可以说贝叶斯公式中的q(xt1x0)q(x_{t-1}|x_0)q(xtx0)q(x_t|x_0)两项都是由马尔可夫性质得到的。
  • 根据马尔可夫性质,xtx_t只与xt1x_{t-1}有关,所以有q(xtxt1,x0)=q(xtxt1)q(x_t|x_{t-1},x_0)=q(x_t|x_{t-1}),即可以直接去掉x0x_0。而q(xtxt1)q(x_t|x_{t-1})式1可知。

综上所述,我们就可以回答DDPM为什么不能跳步的问题了:

因为DDPM反向采样中的每一步的分布q(xt1xt,x0)q(x_{t-1}|x_t,x_0)都是在假设马尔可夫性质成立的前提下定义的。如果跳过中间步骤,就违反了马尔可夫链结构。

三、DDIM如何去马尔可夫化——实现跳步

💡 DDIM的启发性思路:由于q(xt1xt,x0)q(x_{t-1}|x_t,x_0)服从马尔可夫性质,导致无法跳步。如果我们可以定义出一个新的qq,使其不依赖马尔可夫性质的成立,那是不是就可以跳步了呢?

由上面的思路出发,我们目标就是:定义一个q(xsxk,x0)nonmarkovq(x_s|x_k,x_0) \sim non-markov ,其中0<s<k10<s<k-1

我们同样可以将其展开成贝叶斯,得:

q(xsxk,x0)=q(xkxs,x0)q(xsx0)q(xkx0)(式4q(x_s|x_k,x_0)=\frac{q(x_k|x_s,x_0)q(x_s|x_0)}{q(x_k|x_0)}(式4)

DDIM的改进有一个前提,就是只加速DDPM的采样,而不改变DDPM的训练。由于训练中采用了q(xtx0)q(x_t|x_0)的公式也就是式2,所以式4中的q(xsx0)q(x_s|x_0)q(xkx0)q(x_k|x_0)两项我们依旧可以通过式2得到,而且必须可以通过式2得到,不然我们就不能继续使用DDPM的训练结果了。

所以在贝叶斯公式中,已经有以下两个已知项:

  • q(xsx0)=αsˉx0+1αsˉϵ(式5q(x_s|x_0)=\sqrt{\bar{\alpha_s}}x_0+\sqrt{1-\bar{\alpha_s}}\epsilon(式5)
  • q(xkx0)=αkˉx0+1αkˉϵ(式6q(x_k|x_0)=\sqrt{\bar{\alpha_k}}x_0+\sqrt{1-\bar{\alpha_k}}\epsilon(式6)

另外两项暂时未知,首先我们先不管q(xkxs,x0)q(x_k|x_s,x_0),先来看q(xsxk,x0)q(x_s|x_k,x_0)我们尝试用待定系数法求出q(xsxk,x0)q(x_s|x_k,x_0)的解析式。

在DDPM中,有:

q(xt1xt,x0)N(αt(1αt1ˉ)1αtˉxt+αt1ˉβt1αtˉx0, 1αt1ˉ1αtˉβtI)(式7q(x_{t-1}|x_t,x_0) \sim N(\frac{\sqrt{\alpha_t}(1-\bar{\alpha_{t-1}})}{1-\bar{\alpha_t}}x_t+\frac{\sqrt{\bar{\alpha_{t-1}}}\beta_t}{1-\bar{\alpha_t}}x_0,~ \frac{1-\bar{\alpha_{t-1}}}{1-\bar{\alpha_t}}\beta_tI)(式7)

我们不妨设q(xsxk,x0)N(μ,σ2I)q(x_s|x_k,x_0) \sim N(\mu, \sigma^2I)

由于式7中,q(xt1xt,x0)q(x_{t-1}|x_t,x_0)的均值是xtx_tx0x_0的线性组合(加权和)的形式,所以我们不妨也把μ\mu设成这样的形式,即:

q(xsxk,x0)N(nx0+mxk,σ2I)n,m为常数)q(x_s|x_k,x_0) \sim N(nx_0+mx_k, \sigma^2I)(n,m为常数)

那么我们就可以用x0x_0xkx_k去表示xsx_s,根据高斯分布的标准化与反标准化可以得到:

xs=(nx0+mxk)+σϵϵN(0,I))(式8x_s=(nx_0+mx_k)+\sigma\epsilon (\epsilon\sim N(0,I))(式8)

式6代入上式,可以把xkx_kx0x_0的表达式代换掉:

xs=nx0+m(αkˉx0+1αkˉϵ)+σϵ=(n+mαkˉ)x0+(m1αkˉϵ+σϵ)ϵ,ϵN(0,I))(式9x_s=nx_0+m(\sqrt{\bar{\alpha_k}}x_0+\sqrt{1-\bar{\alpha_k}}\epsilon')+\sigma\epsilon =(n+m\sqrt{\bar{\alpha_k}})x_0+(m\sqrt{1-\bar{\alpha_k}}\epsilon'+\sigma\epsilon) (\epsilon',\epsilon \sim N(0,I))(式9)

由于ϵ\epsilon'ϵ\epsilon都服从标准高斯分布,所以由高斯分布的可加性可以得到(m1αkˉϵ+σϵ)N(0,m2(1αkˉ)+σ2)(m\sqrt{1-\bar{\alpha_k}}\epsilon'+\sigma\epsilon) \sim N(0,m^2(1-\bar{\alpha_k})+\sigma^2),用这个结论继续化简式9,得

xs=(n+mαkˉ)x0+m(1αkˉ)+σ2ϵ(式10x_s=(n+m\sqrt{\bar{\alpha_k}})x_0+\sqrt{m(1-\sqrt{\bar{\alpha_k}})+\sigma^2}\epsilon(式10)

这时我们发现式10式5有着相同的形式,而且都代表着xsx_sx0x_0条件下的分布q(xsx0)q(x_s|x_0),所以我们可以将这两个式子的系数一一对应起来,即令:

  • n+mαkˉ=αsˉn+m\sqrt{\bar{\alpha_k}}=\sqrt{\bar{\alpha_s}}
  • m(1αkˉ)+σ2=1αsˉ\sqrt{m(1-\sqrt{\bar{\alpha_k}})+\sigma^2}=\sqrt{1-\bar{\alpha_s}}

这里是两个方程,但是其实有n,m,σn,m,\sigma三个未知量,不过没关系,我们先把nnmm表示出来:

m=1αsˉσ21αkˉ(式11m=\frac{\sqrt{1-\bar{\alpha_s}-\sigma^2}}{\sqrt{1-\bar{\alpha_k}}}(式11)
n=αsˉ1αsˉσ21αkˉαkˉ(式12n=\sqrt{\bar{\alpha_s}}-\frac{\sqrt{1-\bar{\alpha_s}-\sigma^2}}{\sqrt{1-\bar{\alpha_k}}}\sqrt{\bar{\alpha_k}}(式12)

式11式12代入我们定义的均值μ=nx0+mxk\mu=nx_0+mx_k,经过化简可得:

q(xsxk,x0)N(αsˉx0+1αsˉσ21αkˉ(xkαkˉx0),σ2I)(式13q(x_s|x_k,x_0) \sim N(\sqrt{\bar{\alpha_s}}x_0+\frac{\sqrt{1-\bar{\alpha_s}-\sigma^2}}{\sqrt{1-\bar{\alpha_k}}}(x_k-\sqrt{\bar{\alpha_k}}x_0),\sigma^2I)(式13)

式13是一个不遵循马尔可夫性质的采样条件分布,通过式13可以求得采样方程:

xs=αsˉx0+1αsˉσ21αkˉ(xkαkˉx0)+σϵ(式14x_s=\sqrt{\bar{\alpha_s}}x_0+\frac{\sqrt{1-\bar{\alpha_s}-\sigma^2}}{\sqrt{1-\bar{\alpha_k}}}(x_k-\sqrt{\bar{\alpha_k}}x_0)+\sigma\epsilon (式14)

有了式14,意味着我们可以通过x0x_0xkx_k直接求得xsx_s,意味着我们摆脱了马尔可夫性质的限制,可以不需要连续采样了,即实现了跳步。

当然,在实际的采样过程中,我们是不知道x0x_0的,我们需要用模型预测的噪声ϵθ(xt,t)\epsilon_{\theta}(x_t,t)的表达式来替换掉公式里的x0x_0。由式2我们可以反推出:

x0ˆ(t)=xt1αtˉϵθ(xt,t)αtˉ\^{x_0}(t)=\frac{x_t-\sqrt{1-\bar{\alpha_t}}\epsilon_{\theta}(x_t,t)}{\sqrt{\bar{\alpha_t}}}

将这个式子代入式14可以得到实际在DDIM采样的时候使用的公式:

xs=αsˉx0ˆ(k)+1αsˉσ21αkˉ(xkαkˉx0ˆ(k))+σϵ(式15x_s=\sqrt{\bar{\alpha_s}}\^{x_0}(k)+\frac{\sqrt{1-\bar{\alpha_s}-\sigma^2}}{\sqrt{1-\bar{\alpha_k}}}(x_k-\sqrt{\bar{\alpha_k}}\^{x_0}(k))+\sigma\epsilon (式15)

Question 1:为什么就不管q(xkxs,x0)q(x_k|x_s,x_0)了? 在上面的贝叶斯表达式式4中,我们已知q(xsx0)q(x_s|x_0)q(xkx0)q(x_k|x_0)是高斯分布,然后我们又假设了q(xsxk,x0)q(x_s|x_k,x_0)也是高斯分布,那么根据高斯分布的性质⇒q(xkxs,x0)q(x_k|x_s,x_0)也是一个高斯分布。 不过论文中作者并没有给出q(xkxs,x0)q(x_k|x_s,x_0)的计算方式,因为完全没有用到,所以我们就不管它了。

Question 2:Diffusion的正向过程变了吗?

q(xkxs,x0)q(x_k|x_s,x_0)代表着模型在正向过程的条件分布。当我们使用DDIM的采样方法的时候,实际上模型正向扩散中的每一步的加噪过程其实是变了的,就是说xt1xtx_{t-1} \to x_t这中间的变化其实是跟DDPM不一样了的。但是我们为什么还是可以使用DDPM训练好的模型呢?

因为DDPM模型在训练的时候其实没有用到q(xtxt1)q(x_t|x_{t-1})这个每一步的变化,而是一步到位的学习了q(xtx0)q(x_t|x_0)。所以即使q(xtxt1)q(x_t|x_{t-1})变了,只要q(xtx0)q(x_t|x_0)没有变,我们的模型就依然可以用DDIM的方法进行采样加速。

四、标准差的选取

标准差的两种取值

在我们推导出的DDIM采样公式中,现在只剩下了σ\sigma这一个未知数,接下来我们就讨论一下σ\sigma应该取什么值。

xs=αsˉx0ˆ(k)+1αsˉσ21αkˉ(xkαkˉx0ˆ(k))+σϵ(式15x_s=\sqrt{\bar{\alpha_s}}\^{x_0}(k)+\frac{\sqrt{1-\bar{\alpha_s}-\sigma^2}}{\sqrt{1-\bar{\alpha_k}}}(x_k-\sqrt{\bar{\alpha_k}}\^{x_0}(k))+\sigma\epsilon (式15)

有两种σ\sigma的取值方式,如下:

  1. σ=0\sigma=0

在式14中,只有ϵ\epsilon是一个随机采样的变量,他也代表了整个采样的随机性。如果σ=0\sigma=0,意味着最后一项σϵ\sigma\epsilon就没了,那么整个采样公式就失去了随机性,变成了一个确定的过程。

这也就是论文中所说的:一旦给定初始噪声 xTx_T,生成的样本 x0x_0唯一确定的。

论文中提到,令σ=0\sigma=0以下优缺点:

  • 失去了ϵ\epsilon带来的每一步生成的随机性后,模型生成的图片会损失一部分多样性
  • 但是σ=0\sigma=0的时候反而模型的效果是最好的,经过论文作者的验证
  1. 沿用DDPM中的标准差取值,即令
σ=1αt1ˉ1αtˉβt\sigma=\sqrt{\frac{1-\bar{\alpha_{t-1}}}{1-\bar{\alpha_t}}\beta_t}

由于DDPM的方差中用的是ttt1t-1,代表着两个相邻的时间步。所以如果使用这个方差那意味着我们的sskk也要满足s=k1s=k-1的关系了。所以式15就变成了:

xt1=αt1ˉx0ˆ(t)+1αt1ˉσ21αtˉ(xtαtˉx0ˆ(t))+σϵ(式16x_{t-1}=\sqrt{\bar{\alpha_{t-1}}}\^{x_0}(t)+\frac{\sqrt{1-\bar{\alpha_{t-1}}-\sigma^2}}{\sqrt{1-\bar{\alpha_t}}}(x_t-\sqrt{\bar{\alpha_t}}\^{x_0}(t))+\sigma\epsilon (式16)

论文中提到:

如果令σ=1αt1ˉ1αtˉβt\sigma=\sqrt{\frac{1-\bar{\alpha_{t-1}}}{1-\bar{\alpha_t}}\beta_t},那么DDIM的采样又会变回一个依赖于马尔可夫性质的DDPM了。

但是即使我们现在公式中的两个时间步已经是相邻的了,但是他的写法也跟DDPM不一样呀,为什么会又变回DDPM了呢?我们该如何证明论文中所说的这个结论?

论文中所说的这个结论在数学上表达就是,当σ=1αt1ˉ1αtˉβt\sigma=\sqrt{\frac{1-\bar{\alpha_{t-1}}}{1-\bar{\alpha_t}}\beta_t},时,DDIM的q(xt1xt,x0)q(x_{t-1}|x_t,x_0)和DDPM的p(xt1xt,x0)p(x_{t-1}|x_t,x_0)变成了同一个分布,有着一样的均值和方差。DDPM和DDIM的采样条件分布如下:

DDPMp(xt1xt,x0)N(1αt(xt1αt1αtˉϵθ),1αt1ˉ1αtˉβtI)DDPM:p(x_{t-1}|x_t,x_0) \sim N(\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha_t}}}\epsilon_{\theta}), \frac{1-\bar{\alpha_{t-1}}}{1-\bar{\alpha_t}}\beta_tI)
DDIMq(xt1xt,x0)N(αt1ˉx0ˆ(t)+1αt1ˉ1αt1ˉ1αtˉβt1αtˉ(xtαtˉx0ˆ(t)),1αt1ˉ1αtˉβtI)DDIM:q(x_{t-1}|x_t,x_0) \sim N(\sqrt{\bar{\alpha_{t-1}}}\^{x_0}(t)+\frac{\sqrt{1-\bar{\alpha_{t-1}}-\frac{1-\bar{\alpha_{t-1}}}{1-\bar{\alpha_t}}\beta_t}}{\sqrt{1-\bar{\alpha_t}}}(x_t-\sqrt{\bar{\alpha_t}}\^{x_0}(t)), \frac{1-\bar{\alpha_{t-1}}}{1-\bar{\alpha_t}}\beta_tI)

由于方差已经一样,所以我们只需要证明他们的均值一样,就可以说明他们是同一个分布,即证明:qmean=pmeanq_{mean}=p_{mean}

qmean=αt1ˉx0ˆ(t)+1αt1ˉ1αt1ˉ1αtˉβt1αtˉ(xtαtˉx0ˆ(t))q_{mean}=\sqrt{\bar{\alpha_{t-1}}}\^{x_0}(t)+\frac{\sqrt{1-\bar{\alpha_{t-1}}-\frac{1-\bar{\alpha_{t-1}}}{1-\bar{\alpha_t}}\beta_t}}{\sqrt{1-\bar{\alpha_t}}}(x_t-\sqrt{\bar{\alpha_t}}\^{x_0}(t))
pmean=1αt(xt1αt1αtˉϵθ)p_{mean}=\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha_t}}}\epsilon_{\theta})

(经过一系列严谨的数学推导,我们确实可以证明出qmean=pmeanq_{mean}=p_{mean},证明过程暂时省略。)

验证两种取值的效果

在论文中,作者通过实验对比了两种标准差取值的实验效果。其中为了方便对比,作者引入了一个变量η\eta来控制σ\sigma的取值,作者令σ=η1αt1ˉ1αtˉβt\sigma=\eta * \sqrt{\frac{1-\bar{\alpha_{t-1}}}{1-\bar{\alpha_t}}\beta_t},则:

  • η=0\eta=0时,σ=0\sigma=0
  • η=1\eta=1时,σ=1αt1ˉ1αtˉβt\sigma=\sqrt{\frac{1-\bar{\alpha_{t-1}}}{1-\bar{\alpha_t}}\beta_t},即DDPM的标准差

刚好对应了上面的两种σ\sigma的取值。作者的对比实验结果如下图:

DDIM论文原图

其中:

  • η=1\eta=1S=1000S=1000的时候,就是完整的DDPM
  • η=1\eta=1S<1000S<1000的时候,模型是跳步的DDPM
  • η=0\eta=0的时候,模型是DDIM

通过不同η\eta取值的结果对比可以看出,η\eta越小,结果是越好的,而且当η=0\eta=0的时候结果是最好的。另外,如果看η=1\eta=1的那一行会发现,当η=1\eta=1S<1000S<1000也就是使用DDPM标准差且跳步的情况下,模型的效果是会变差很多的。

  • 相反DDIM的跳步跳的多了之后,虽然效果会变差,但没有变差那么多——采样50步和1000步的效果并没有太大差距。
  • 还有一点是,DDIM采样50步的效果居然比采样1000步的完整DDPM效果更好!

这就意味着,DDIM真的可以很有效的提升图像生成的速度,而且生成的效果不降反增。

五、总结

DDPM的拟合目标q(xt1xt,x0)Markovq(x_{t-1}|x_t,x_0) \sim Markov,所以必须step by step采样。→所以我们试图找出一个q(xsxk,x0)nonMarkovq(x_s|x_k,x_0) \sim non-Markov,来实现跳步。

然后我们利用贝叶斯展开q(xsxk,x0)q(x_s|x_k,x_0),得到:

q(xsxk,x0)=q(xkxs,x0)q(xsx0)q(xkx0)(式4q(x_s|x_k,x_0)=\frac{q(x_k|x_s,x_0)q(x_s|x_0)}{q(x_k|x_0)}(式4)

其中q(xsx0)q(x_s|x_0)q(xkx0)q(x_k|x_0)要继续沿用DDPM中的公式,因为他们参与了模型训练。

然后我们假设:

q(xsxk,x0)N(nx0+mxk,σ2I)n,m为常数)q(x_s|x_k,x_0) \sim N(nx_0+mx_k, \sigma^2I)(n,m为常数)

通过待定系数法,经过一通复杂的计算,我们求得了nnmm两个参数的表达式,于是得到了采样公式:

xs=αsˉx0ˆ(k)+1αsˉσ21αkˉ(xkαkˉx0ˆ(k))+σϵ(式15x_s=\sqrt{\bar{\alpha_s}}\^{x_0}(k)+\frac{\sqrt{1-\bar{\alpha_s}-\sigma^2}}{\sqrt{1-\bar{\alpha_k}}}(x_k-\sqrt{\bar{\alpha_k}}\^{x_0}(k))+\sigma\epsilon (式15)

接下来我们又分析了σ\sigma的取值,其中当σ=0\sigma=0时,扩散过程变成了一个确定性的过程:给定一个xTN(0,I)x_T \sim N(0,I),就可以唯一确定一个生成图像x0x_0

在这种情况下,DDIM的速度大幅上升了,质量也上升了。