DDIM:Denoising Diffusion Implicit Models

去躁步进可以比 1 大,生成图片更快
(图片)-> 噪声 -> 随机图片,随机图片

DDIM 如何看待 DDPM?

  • DDPM 的加噪和去噪操作其实都是在某个正态分布中采样。因此,我们可以用概率 q,pq,p 分别表示加噪和去噪的分布,DDPM 中去躁的目的是使得 p(xt1xt)p(x_{t-1}|x_t) 尽可能和 q(xtxt1)q(x_t|x_{t-1}) 互逆
  • 但是,「互逆」并不是一个严格的数学表述。更具体地,我们应该让分布 p(xt1xt)p(x_{t-1}|x_t)q(xt1xt)q(x_{t-1}|x_t) 尽可能相似,q(xt1xt)q(x_{t-1}|x_t) 是不好求得的,但在给定了输入数据 x0x_0q(xt1xt,x0)q(x_{t-1}|x_t,x_0) 可使用贝叶斯公式求

q(xt1xt,x0)=q(xtxt1,x0)q(xt1x0)q(xtx0)q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)=q(\mathbf{x}_t|\mathbf{x}_{t-1},\mathbf{x}_0)\frac{q(\mathbf{x}_{t-1}|\mathbf{x}_0)}{q(\mathbf{x}_t|\mathbf{x}_0)}

  • 在 DDPM 中,q(xtxt1)q(x_t|x_{t-1}) 是已经确定的分布,以上式子右边是:

q(xtxt1,x0)=N(xt;1βtxt1,βtI)q(xtx0)=N(xt;αˉtx0,(1αˉt)I)q(xt1x0)=N(xt1;αˉt1x0,(1αˉt1)I)\begin{aligned}q(\mathbf{x}_{t}|\mathbf{x}_{t-1},\mathbf{x}_{0})& =\mathcal{N}(\mathbf{x}_{t};\sqrt{1-\beta_{t}}\mathbf{x}_{t-1},\beta_{t}\mathbf{I}) \\q(\mathbf{x}_{t}|\mathbf{x}_{0})& =\mathcal{N}(\mathbf{x}_{t};\sqrt{\bar{\alpha}_{t}}\mathbf{x}_{0},(1-\bar{\alpha}_{t})\mathbf{I}) \\q(\mathbf{x}_{t-1}|\mathbf{x}_{0})& =\mathcal{N}(\mathbf{x}_{t-1};\sqrt{\bar{\alpha}_{t-1}}\mathbf{x}_{0},(1-\bar{\alpha}_{t-1})\mathbf{I}) \\\end{aligned}

  • 根据两个高斯分布相除、相乘的规则,并根据公式 q(xtx0)q(\mathbf{x}_{t}|\mathbf{x}_{0})xt1x_{t-1} 换算为 x0x_0,其 q(xt1xt,x0)q(x_{t-1}|x_t,x_0) 结果如下,其中参数 βt\beta_t 是可调的,α\overline\alpha 是根据 βt\beta_t 算出来的,即 αt=1βt,αˉt=i=1tαi\alpha_{t}=1-\beta_{t},\bar{\alpha}_{t}=\prod_{i=1}^{t}\alpha_{i}

q(xt1xt,x0)=N(xt1;αt(1αˉt1)1αˉtxt+αˉt1βt1αˉtx0,1αˉt11αˉtβtI)q(\mathbf{x}_{t-1}|\mathbf{x}_{t},\mathbf{x}_{0})=\mathcal{N}(\mathbf{x}_{t-1};\frac{\sqrt{\alpha_{t}}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_{t}}\mathbf{x}_{t}+\frac{\sqrt{\bar{\alpha}_{t-1}}\beta_{t}}{1-\bar{\alpha}_{t}}\mathbf{x}_{0},\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_{t}}\cdot\beta_{t}\mathbf{I})

  • 对比 DDPM 的原始去躁公式(以下),可知上式中,只有 x0x_0 是未知的,在实际使用中,通过 xt,tx_t,t 两个输入的神经网络去预测 xtx_tx0x_0 的噪声(当然不是一步完成的,而是多次迭代),即 DDPM 的 ϵθ(xt,t)\epsilon_\theta(x_t,t) 的过程

pθ(xt1xt)=N(xt1;μθ(xt,t),σt2I)μθ(xt,t)=1αt(xtβt1αtˉϵθ(xt,t))\begin{aligned}p_\theta(x_{t-1}|x_t)& =\mathcal{N}\left(x_{t-1};\mu_\theta(x_t,t),\sigma_t^2\mathbf{I}\right) \\\mu_\theta(x_t,t)& =\frac1{\sqrt{\alpha_t}}\Big(x_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha_t}}}\epsilon_\theta(x_t,t)\Big) \end{aligned}

什么是 DDIM ?

  • 根据 DDPM,已知学习目标如下:

q(xt1xt,x0)=q(xtxt1,x0)q(xt1x0)q(xtx0)q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)=q(\mathbf{x}_t|\mathbf{x}_{t-1},\mathbf{x}_0)\frac{q(\mathbf{x}_{t-1}|\mathbf{x}_0)}{q(\mathbf{x}_t|\mathbf{x}_0)}

  • 根据这一推理过程,DDIM 论文的作者想到,假如我们把贝叶斯公式中的 tt 替换成 t2t_2, t1t-1 替换成 t1t_1,其中 t2t_2 是比 t1t_1 大的任一时刻,比如令 t2=t1+10t_2=t_1+10,意味着只需一步去躁就可顶上 DDPM 的 10

q(xt1xt2,x0)=q(xt2xt1,x0)q(xt1x0)q(xt2x0)q(\mathbf{x}_{t_1}|\mathbf{x}_{t_2},\mathbf{x}_0)=q(\mathbf{x}_{t_2}|\mathbf{x}_{t_1},\mathbf{x}_0)\frac{q(\mathbf{x}_{t_1}|\mathbf{x}_0)} {q(\mathbf{x}_{t_2}|\mathbf{x}_0)}

  • 上式的 q(xt1x0),q(xt2x0)q(x_{t_1}|x_0),q(x_{t_2}|x_0) 很好求,直接代入 DDPM 的前向加躁公式即可,但是 q(xt1xt2,x0)q(\mathbf{x}_{t_1}|\mathbf{x}_{t_2},\mathbf{x}_0) 如何求呢?已知 DDPM 步长为 1 时的去躁公式为:q(xtxt1,x0)=N(xt;1βtxt1,βtI)q(\mathbf{x}_{t}|\mathbf{x}_{t-1},\mathbf{x}_{0})=\mathcal{N}(\mathbf{x}_{t};\sqrt{1-\beta_{t}}\mathbf{x}_{t-1},\beta_{t}\mathbf{I}),现在步长为 t2t1t_2-t_1,其去躁公式能直接使用吗?
  • 假如我们能把公式中的 βt\beta_t ​换成一个由 t 和 t−1 决定的变量,我们就能把 tt 换成 t2t_2t1t−1 换成t1t_1,如此就可以直接利用 DDPM 去躁公式,得到 DDIM 的采样公

q(xt1xt2,x0)=N(xt1;αt1x0+1αt1σt22xt2αt2x01αt2,σt22I)q(\mathbf{x}_{t_1}|\mathbf{x}_{t_2},\mathbf{x}_0)=\mathcal{N}\left(x_{t_1};\sqrt{\overline{\alpha}_{t_1}}x_{0}+\sqrt{1-\overline{\alpha}_{t_1}-\sigma_{t_2}^{2}}\frac{x_{t_2}-\sqrt{\overline{\alpha}_{t_2}}x_{0}}{\sqrt{1-\overline{\alpha}_{t_2}}},\sigma_{t_2}^{2}\mathbf{I}\right)

  • 以上公式这意味着我们可以先照着原 DDPM 的方法训练,再用 DDIM 这种更快速的方式采样

DDIM 的特点?

  • DDIM 不用每一步从高斯噪声中采样,然后去躁,这就意味着扩散模型的反向过程变成了一个没有噪声的确定性过程。给定随机噪声 xTx_T,我们只能得到唯一的采样结果 x0x_0。这种结果确定的概率模型被称为隐式概率模型(implicit probabilistic model)
  • 特别地,作者把方差为 0 的这种扩散模型称为 DDIM(Denoising Diffusion Implicit Model)

DDIM 的采样一致性 (sample consistency)?

  • DDIM 将采样高斯 σt\sigma_t 设置为 0,这让采样过程是确定的,只受 xTx_T 影响。作者发现,当给定 xTx_T ,不同的的采样时间序列 T 所生成图片都很相近,xTx_T 似乎可以视作生成图片的隐编码信息
  • 有个小 trick,我们在实际的生成中可以先设置较小的采样步长进行生成,若生成的图片是我们想要的,则用较大的步长重新生成高质量的图片

DDIM 的语义插值效应?(sementic interpolation effect)

  • 即然 xTx_T 可能是生成图片的隐空间编码,那么它是否具备其它隐概率模型 (如 GAN) 所观察到的语义插值效应呢?
  • 首先从高斯分布采样两个随机变量 xT(0),xT(1)x^{(0)}_T,x^{(1)}_T ​,并用他们做图像生成得到下图最左侧与最右侧的结果。随后用球面线性插值方法(spherical linear interpolation,Slerp)对它们进行插值,得到一系列中间结果。

xT(α)=sin((1α)θ)sin(θ)xT(0)+sin(αθ)sin(θ)xT(1)x_{T}^{(\alpha)}=\frac{\sin((1-\alpha)\theta)}{\sin(\theta)}x_{T}^{(0)}+\frac{\sin(\alpha\theta)}{\sin{(\theta)}}x_{T}^{(1)}

参考:

  1. DDIM 简明讲解与 PyTorch 实现:加速扩散模型采样的通用方法 - 知乎
  2. diffusion model(二)—— DDIM(将 diffusion model 提速 50 倍!) - 知乎