前言

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

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

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

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

经过推导,我们得到了 x 0 → x t x_0 \to x_t x0xt的公式:

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

其中:

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

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

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

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

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

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

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

在DDPM中,马尔可夫性质的体现就是: x t x_t xt只依赖于 x t − 1 x_{t-1} xt1,与前面的任意 x t − s x_{t-s} xts x 0 x_0 x0无关。

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

q ( x t − 1 ∣ x t , x 0 ) = q ( x t ∣ x t − 1 , x 0 ) q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) (式 3 ) q(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(xt1xt,x0)=q(xtx0)q(xtxt1,x0)q(xt1x0)(式3

其中:

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

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

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

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

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

由上面的思路出发,我们目标就是:定义一个 q ( x s ∣ x k , x 0 ) ∼ n o n − m a r k o v q(x_s|x_k,x_0) \sim non-markov q(xsxk,x0)nonmarkov ,其中 0 < s < k − 1 0<s<k-1 0<s<k1

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

q ( x s ∣ x k , x 0 ) = q ( x k ∣ x s , x 0 ) q ( x s ∣ x 0 ) q ( x k ∣ x 0 ) (式 4 ) q(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(xsxk,x0)=q(xkx0)q(xkxs,x0)q(xsx0)(式4

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

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

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

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

在DDPM中,有:

q ( x t − 1 ∣ x t , x 0 ) ∼ N ( α t ( 1 − α t − 1 ˉ ) 1 − α t ˉ x t + α t − 1 ˉ β t 1 − α t ˉ x 0 ,   1 − α t − 1 ˉ 1 − α t ˉ β t I ) (式 7 ) q(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(xt1xt,x0)N(1αtˉαt (1αt1ˉ)xt+1αtˉαt1ˉ βtx0, 1αtˉ1αt1ˉβtI)(式7

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

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

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

那么我们就可以用 x 0 x_0 x0 x k x_k xk去表示 x s x_s xs,根据高斯分布的标准化与反标准化可以得到:

x s = ( n x 0 + m x k ) + σ ϵ ( ϵ ∼ N ( 0 , I ) )(式 8 ) x_s=(nx_0+mx_k)+\sigma\epsilon (\epsilon\sim N(0,I))(式8) xs=(nx0+mxk)+σϵϵN(0,I))(式8

式6代入上式,可以把 x k x_k xk x 0 x_0 x0的表达式代换掉:

x s = n x 0 + m ( α k ˉ x 0 + 1 − α k ˉ ϵ ′ ) + σ ϵ = ( n + m α k ˉ ) x 0 + ( m 1 − α k ˉ ϵ ′ + σ ϵ ) ( ϵ ′ , ϵ ∼ N ( 0 , I ) )(式 9 ) x_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) xs=nx0+m(αkˉ x0+1αkˉ ϵ)+σϵ=(n+mαkˉ )x0+(m1αkˉ ϵ+σϵ)ϵ,ϵN(0,I))(式9

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

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

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

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

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

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

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

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

q ( x s ∣ x k , x 0 ) ∼ N ( α s ˉ x 0 + 1 − α s ˉ − σ 2 1 − α k ˉ ( x k − α k ˉ x 0 ) , σ 2 I ) (式 13 ) q(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) q(xsxk,x0)N(αsˉ x0+1αkˉ 1αsˉσ2 (xkαkˉ x0),σ2I)(式13

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

x s = α s ˉ x 0 + 1 − α s ˉ − σ 2 1 − α k ˉ ( x k − α k ˉ x 0 ) + σ ϵ (式 14 ) x_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) xs=αsˉ x0+1αkˉ 1αsˉσ2 (xkαkˉ x0)+σϵ(式14

有了式14,意味着我们可以通过 x 0 x_0 x0 x k x_k xk直接求得 x s x_s xs,意味着我们摆脱了马尔可夫性质的限制,可以不需要连续采样了,即实现了跳步。

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

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

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

x s = α s ˉ x 0 ˆ ( k ) + 1 − α s ˉ − σ 2 1 − α k ˉ ( x k − α k ˉ x 0 ˆ ( k ) ) + σ ϵ (式 15 ) x_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) xs=αsˉ x0ˆ(k)+1αkˉ 1αsˉσ2 (xkαkˉ x0ˆ(k))+σϵ(式15

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

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

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

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

四、标准差的选取

标准差的两种取值

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

x s = α s ˉ x 0 ˆ ( k ) + 1 − α s ˉ − σ 2 1 − α k ˉ ( x k − α k ˉ x 0 ˆ ( k ) ) + σ ϵ (式 15 ) x_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) xs=αsˉ x0ˆ(k)+1αkˉ 1αsˉσ2 (xkαkˉ x0ˆ(k))+σϵ(式15

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

  1. σ = 0 \sigma=0 σ=0

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

这也就是论文中所说的:一旦给定初始噪声 x T x_T xT,生成的样本 x 0 x_0 x0唯一确定的。

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

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

σ = 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

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

x t − 1 = α t − 1 ˉ x 0 ˆ ( t ) + 1 − α t − 1 ˉ − σ 2 1 − α t ˉ ( x t − α t ˉ x 0 ˆ ( t ) ) + σ ϵ (式 16 ) x_{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) xt1=αt1ˉ x0ˆ(t)+1αtˉ 1αt1ˉσ2 (xtαtˉ x0ˆ(t))+σϵ(式16

论文中提到:

如果令 σ = 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 ,那么DDIM的采样又会变回一个依赖于马尔可夫性质的DDPM了。

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

论文中所说的这个结论在数学上表达就是,当 σ = 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 ,时,DDIM的 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt1xt,x0)和DDPM的 p ( x t − 1 ∣ x t , x 0 ) p(x_{t-1}|x_t,x_0) p(xt1xt,x0)变成了同一个分布,有着一样的均值和方差。DDPM和DDIM的采样条件分布如下:

D D P M : p ( x t − 1 ∣ x t , x 0 ) ∼ N ( 1 α t ( x t − 1 − α t 1 − α t ˉ ϵ θ ) , 1 − α t − 1 ˉ 1 − α t ˉ β t I ) 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) DDPMp(xt1xt,x0)N(αt 1(xt1αtˉ 1αtϵθ),1αtˉ1αt1ˉβtI)

D D I M : q ( x t − 1 ∣ x t , x 0 ) ∼ N ( α t − 1 ˉ x 0 ˆ ( t ) + 1 − α t − 1 ˉ − 1 − α t − 1 ˉ 1 − α t ˉ β t 1 − α t ˉ ( x t − α t ˉ x 0 ˆ ( t ) ) , 1 − α t − 1 ˉ 1 − α t ˉ β t I ) 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) DDIMq(xt1xt,x0)N(αt1ˉ x0ˆ(t)+1αtˉ 1αt1ˉ1αtˉ1αt1ˉβt (xtαtˉ x0ˆ(t)),1αtˉ1αt1ˉβtI)

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

q m e a n = α t − 1 ˉ x 0 ˆ ( t ) + 1 − α t − 1 ˉ − 1 − α t − 1 ˉ 1 − α t ˉ β t 1 − α t ˉ ( x t − α t ˉ x 0 ˆ ( 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)) qmean=αt1ˉ x0ˆ(t)+1αtˉ 1αt1ˉ1αtˉ1αt1ˉβt (xtαtˉ x0ˆ(t))

p m e a n = 1 α t ( x t − 1 − α t 1 − α t ˉ ϵ θ ) p_{mean}=\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha_t}}}\epsilon_{\theta}) pmean=αt 1(xt1αtˉ 1αtϵθ)

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

验证两种取值的效果

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

  • η = 0 \eta=0 η=0时, σ = 0 \sigma=0 σ=0
  • η = 1 \eta=1 η=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 ,即DDPM的标准差

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

DDIM论文原图

其中:

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

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

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

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

五、总结

DDPM的拟合目标 q ( x t − 1 ∣ x t , x 0 ) ∼ M a r k o v q(x_{t-1}|x_t,x_0) \sim Markov q(xt1xt,x0)Markov,所以必须step by step采样。→所以我们试图找出一个 q ( x s ∣ x k , x 0 ) ∼ n o n − M a r k o v q(x_s|x_k,x_0) \sim non-Markov q(xsxk,x0)nonMarkov,来实现跳步。

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

q ( x s ∣ x k , x 0 ) = q ( x k ∣ x s , x 0 ) q ( x s ∣ x 0 ) q ( x k ∣ x 0 ) (式 4 ) q(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(xsxk,x0)=q(xkx0)q(xkxs,x0)q(xsx0)(式4

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

然后我们假设:

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

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

x s = α s ˉ x 0 ˆ ( k ) + 1 − α s ˉ − σ 2 1 − α k ˉ ( x k − α k ˉ x 0 ˆ ( k ) ) + σ ϵ (式 15 ) x_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) xs=αsˉ x0ˆ(k)+1αkˉ 1αsˉσ2 (xkαkˉ x0ˆ(k))+σϵ(式15

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

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

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐