前言
一、DDPM为什么要采样1000次(T=1000)
💡因为 DDPM 要采样 1000 次,而其他模型比如 GAN 都可以做到一步生成,所以相比而言 DDPM 采样非常慢。 我们可以让 DDPM 不要采样那么多次吗,直接把 T 改小能不能解决问题?
答案:不能直接改小。
我们来看DDPM中xt的采样公式,首先我们根据马尔可夫性质得到了xt−1→xt的公式:
xt=αtxt−1+1−αtϵ(式1)
经过推导,我们得到了x0→xt的公式:
xt=αtˉx0+1−αtˉϵ(式2)
其中:
- αtˉ=α1∗α2∗...∗αt:αtˉ是α1连乘到αt的连乘积。
- ϵ∼N(0,I):ϵ是服从标准高斯分布的随机噪声
- αt→1 & αt<1:αt是一个趋近于1但小于1的常数,比如0.99这样子
由于我们采样的时候是要从纯噪声ϵ开始,所以我们希望正向扩散的最后一步得到的xT可以趋近于是一个纯噪声。根据式2可知,如果要使得xT→ϵ∼N(0,I),就必须让αTˉ→0。
因为αTˉ=α1∗α2∗...∗αT,而每一个αt都是趋近于1的数,要让它们连乘后趋近于0,必须得乘的足够多,即T要足够大。⇒DDPM必须采样很多次(比如1000次),不能随便减小T。
二、DDPM的采样可以跳步吗?
💡所谓跳步,就是原本采样是xT→xT−1→...→xt→xt−1→...→x0。现在我想改成xT→xT−s→...→x0,就是不一步一步的采样了,这样就可以让采样快很多,这在DDPM中是可以的吗?
先说答案:不能
首先,我们要先明确什么是马尔可夫性质(Markov Poverty),这是DDPM推导的理论基础。所谓马尔可夫性质,指的就是:
当前状态只依赖于“现在”,而与“过去的过去”无关。
在DDPM中,马尔可夫性质的体现就是:xt只依赖于xt−1,与前面的任意xt−s和x0无关。
DDPM的采样目标是拟合反向条件分布q(xt−1∣xt,x0),DDPM中的做法是使用贝叶斯公式:
q(xt−1∣xt,x0)=q(xt∣x0)q(xt∣xt−1,x0)q(xt−1∣x0)(式3)
其中:
- q(xt−1∣x0)和q(xt∣x0)这两项可以由式2得到,而式2又是由马尔可夫性质推导得到。所以可以说贝叶斯公式中的q(xt−1∣x0)和q(xt∣x0)两项都是由马尔可夫性质得到的。
- 根据马尔可夫性质,xt只与xt−1有关,所以有q(xt∣xt−1,x0)=q(xt∣xt−1),即可以直接去掉x0。而q(xt∣xt−1)由式1可知。
综上所述,我们就可以回答DDPM为什么不能跳步的问题了:
因为DDPM反向采样中的每一步的分布q(xt−1∣xt,x0)都是在假设马尔可夫性质成立的前提下定义的。如果跳过中间步骤,就违反了马尔可夫链结构。
三、DDIM如何去马尔可夫化——实现跳步
💡 DDIM的启发性思路:由于q(xt−1∣xt,x0)服从马尔可夫性质,导致无法跳步。如果我们可以定义出一个新的q,使其不依赖马尔可夫性质的成立,那是不是就可以跳步了呢?
由上面的思路出发,我们目标就是:定义一个q(xs∣xk,x0)∼non−markov ,其中0<s<k−1。
我们同样可以将其展开成贝叶斯,得:
q(xs∣xk,x0)=q(xk∣x0)q(xk∣xs,x0)q(xs∣x0)(式4)
DDIM的改进有一个前提,就是只加速DDPM的采样,而不改变DDPM的训练。由于训练中采用了q(xt∣x0)的公式也就是式2,所以式4中的q(xs∣x0)和q(xk∣x0)两项我们依旧可以通过式2得到,而且必须可以通过式2得到,不然我们就不能继续使用DDPM的训练结果了。
所以在贝叶斯公式中,已经有以下两个已知项:
- q(xs∣x0)=αsˉx0+1−αsˉϵ(式5)
- q(xk∣x0)=αkˉx0+1−αkˉϵ(式6)
另外两项暂时未知,首先我们先不管q(xk∣xs,x0),先来看q(xs∣xk,x0)。我们尝试用待定系数法求出q(xs∣xk,x0)的解析式。
在DDPM中,有:
q(xt−1∣xt,x0)∼N(1−αtˉαt(1−αt−1ˉ)xt+1−αtˉαt−1ˉβtx0, 1−αtˉ1−αt−1ˉβtI)(式7)
⇒我们不妨设q(xs∣xk,x0)∼N(μ,σ2I)
由于式7中,q(xt−1∣xt,x0)的均值是xt和x0的线性组合(加权和)的形式,所以我们不妨也把μ设成这样的形式,即:
q(xs∣xk,x0)∼N(nx0+mxk,σ2I)(n,m为常数)
那么我们就可以用x0和xk去表示xs,根据高斯分布的标准化与反标准化可以得到:
xs=(nx0+mxk)+σϵ(ϵ∼N(0,I))(式8)
将式6代入上式,可以把xk用x0的表达式代换掉:
xs=nx0+m(αkˉx0+1−αkˉϵ′)+σϵ=(n+mαkˉ)x0+(m1−αkˉϵ′+σϵ)(ϵ′,ϵ∼N(0,I))(式9)
由于ϵ′和ϵ都服从标准高斯分布,所以由高斯分布的可加性可以得到(m1−αkˉϵ′+σϵ)∼N(0,m2(1−αkˉ)+σ2),用这个结论继续化简式9,得
xs=(n+mαkˉ)x0+m(1−αkˉ)+σ2ϵ(式10)
这时我们发现式10和式5有着相同的形式,而且都代表着xs在x0条件下的分布q(xs∣x0),所以我们可以将这两个式子的系数一一对应起来,即令:
- n+mαkˉ=αsˉ
- m(1−αkˉ)+σ2=1−αsˉ
这里是两个方程,但是其实有n,m,σ三个未知量,不过没关系,我们先把n和m表示出来:
m=1−αkˉ1−αsˉ−σ2(式11)
n=αsˉ−1−αkˉ1−αsˉ−σ2αkˉ(式12)
将式11和式12代入我们定义的均值μ=nx0+mxk,经过化简可得:
q(xs∣xk,x0)∼N(αsˉx0+1−αkˉ1−αsˉ−σ2(xk−αkˉx0),σ2I)(式13)
式13是一个不遵循马尔可夫性质的采样条件分布,通过式13可以求得采样方程:
xs=αsˉx0+1−αkˉ1−αsˉ−σ2(xk−αkˉx0)+σϵ(式14)
有了式14,意味着我们可以通过x0和xk直接求得xs,意味着我们摆脱了马尔可夫性质的限制,可以不需要连续采样了,即实现了跳步。
当然,在实际的采样过程中,我们是不知道x0的,我们需要用模型预测的噪声ϵθ(xt,t)的表达式来替换掉公式里的x0。由式2我们可以反推出:
x0ˆ(t)=αtˉxt−1−αtˉϵθ(xt,t)
将这个式子代入式14可以得到实际在DDIM采样的时候使用的公式:
xs=αsˉx0ˆ(k)+1−αkˉ1−αsˉ−σ2(xk−αkˉx0ˆ(k))+σϵ(式15)
Question 1:为什么就不管q(xk∣xs,x0)了?
在上面的贝叶斯表达式式4中,我们已知q(xs∣x0)和q(xk∣x0)是高斯分布,然后我们又假设了q(xs∣xk,x0)也是高斯分布,那么根据高斯分布的性质⇒q(xk∣xs,x0)也是一个高斯分布。
不过论文中作者并没有给出q(xk∣xs,x0)的计算方式,因为完全没有用到,所以我们就不管它了。
Question 2:Diffusion的正向过程变了吗?
q(xk∣xs,x0)代表着模型在正向过程的条件分布。当我们使用DDIM的采样方法的时候,实际上模型正向扩散中的每一步的加噪过程其实是变了的,就是说xt−1→xt这中间的变化其实是跟DDPM不一样了的。但是我们为什么还是可以使用DDPM训练好的模型呢?
因为DDPM模型在训练的时候其实没有用到q(xt∣xt−1)这个每一步的变化,而是一步到位的学习了q(xt∣x0)。所以即使q(xt∣xt−1)变了,只要q(xt∣x0)没有变,我们的模型就依然可以用DDIM的方法进行采样加速。
四、标准差的选取
标准差的两种取值
在我们推导出的DDIM采样公式中,现在只剩下了σ这一个未知数,接下来我们就讨论一下σ应该取什么值。
xs=αsˉx0ˆ(k)+1−αkˉ1−αsˉ−σ2(xk−αkˉx0ˆ(k))+σϵ(式15)
有两种σ的取值方式,如下:
- 令σ=0
在式14中,只有ϵ是一个随机采样的变量,他也代表了整个采样的随机性。如果σ=0,意味着最后一项σϵ就没了,那么整个采样公式就失去了随机性,变成了一个确定的过程。
这也就是论文中所说的:一旦给定初始噪声 xT,生成的样本 x0 是唯一确定的。
论文中提到,令σ=0有以下优缺点:
- 失去了ϵ带来的每一步生成的随机性后,模型生成的图片会损失一部分多样性
- 但是σ=0的时候反而模型的效果是最好的,经过论文作者的验证
- 沿用DDPM中的标准差取值,即令
σ=1−αtˉ1−αt−1ˉβt
由于DDPM的方差中用的是t和t−1,代表着两个相邻的时间步。所以如果使用这个方差那意味着我们的s和k也要满足s=k−1的关系了。所以式15就变成了:
xt−1=αt−1ˉx0ˆ(t)+1−αtˉ1−αt−1ˉ−σ2(xt−αtˉx0ˆ(t))+σϵ(式16)
论文中提到:
如果令σ=1−αtˉ1−αt−1ˉβt,那么DDIM的采样又会变回一个依赖于马尔可夫性质的DDPM了。
但是即使我们现在公式中的两个时间步已经是相邻的了,但是他的写法也跟DDPM不一样呀,为什么会又变回DDPM了呢?我们该如何证明论文中所说的这个结论?
论文中所说的这个结论在数学上表达就是,当σ=1−αtˉ1−αt−1ˉβt,时,DDIM的q(xt−1∣xt,x0)和DDPM的p(xt−1∣xt,x0)变成了同一个分布,有着一样的均值和方差。DDPM和DDIM的采样条件分布如下:
DDPM:p(xt−1∣xt,x0)∼N(αt1(xt−1−αtˉ1−αtϵθ),1−αtˉ1−αt−1ˉβtI)
DDIM:q(xt−1∣xt,x0)∼N(αt−1ˉx0ˆ(t)+1−αtˉ1−αt−1ˉ−1−αtˉ1−αt−1ˉβt(xt−αtˉx0ˆ(t)),1−αtˉ1−αt−1ˉβtI)
由于方差已经一样,所以我们只需要证明他们的均值一样,就可以说明他们是同一个分布,即证明:qmean=pmean
qmean=αt−1ˉx0ˆ(t)+1−αtˉ1−αt−1ˉ−1−αtˉ1−αt−1ˉβt(xt−αtˉx0ˆ(t))
pmean=αt1(xt−1−αtˉ1−αtϵθ)
(经过一系列严谨的数学推导,我们确实可以证明出qmean=pmean,证明过程暂时省略。)
验证两种取值的效果
在论文中,作者通过实验对比了两种标准差取值的实验效果。其中为了方便对比,作者引入了一个变量η来控制σ的取值,作者令σ=η∗1−αtˉ1−αt−1ˉβt,则:
- 当η=0时,σ=0
- 当η=1时,σ=1−αtˉ1−αt−1ˉβt,即DDPM的标准差
刚好对应了上面的两种σ的取值。作者的对比实验结果如下图:

其中:
- 当η=1,S=1000的时候,就是完整的DDPM
- 当η=1,S<1000的时候,模型是跳步的DDPM
- 当η=0的时候,模型是DDIM
通过不同η取值的结果对比可以看出,η越小,结果是越好的,而且当η=0的时候结果是最好的。另外,如果看η=1的那一行会发现,当η=1且S<1000也就是使用DDPM标准差且跳步的情况下,模型的效果是会变差很多的。
- 相反DDIM的跳步跳的多了之后,虽然效果会变差,但没有变差那么多——采样50步和1000步的效果并没有太大差距。
- 还有一点是,DDIM采样50步的效果居然比采样1000步的完整DDPM效果更好!
这就意味着,DDIM真的可以很有效的提升图像生成的速度,而且生成的效果不降反增。
五、总结
DDPM的拟合目标q(xt−1∣xt,x0)∼Markov,所以必须step by step采样。→所以我们试图找出一个q(xs∣xk,x0)∼non−Markov,来实现跳步。
然后我们利用贝叶斯展开q(xs∣xk,x0),得到:
q(xs∣xk,x0)=q(xk∣x0)q(xk∣xs,x0)q(xs∣x0)(式4)
其中q(xs∣x0)和q(xk∣x0)要继续沿用DDPM中的公式,因为他们参与了模型训练。
然后我们假设:
q(xs∣xk,x0)∼N(nx0+mxk,σ2I)(n,m为常数)
通过待定系数法,经过一通复杂的计算,我们求得了n和m两个参数的表达式,于是得到了采样公式:
xs=αsˉx0ˆ(k)+1−αkˉ1−αsˉ−σ2(xk−αkˉx0ˆ(k))+σϵ(式15)
接下来我们又分析了σ的取值,其中当σ=0时,扩散过程变成了一个确定性的过程:给定一个xT∼N(0,I),就可以唯一确定一个生成图像x0。
在这种情况下,DDIM的速度大幅上升了,质量也上升了。