0%

论文阅读 [精读]-DENOISING DIFFUSION IMPLICIT MODELS

今天读了一篇编译,接下来回到老本行,来一篇 diffusion model。这篇工作很有名,有点碰瓷 DDPM 的意思,其中 “IMPLICIT” 的意思是隐含。和 DDPM 的 “probabilistic” 相比,意思是减少随机性,加速采样。作者自己在 AI Time 上有个报告,好挺好的。

宋佳铭 DDIM 报告

这篇工作和别的 diffusion model 工作一样,比较数学,很多推导我就不详细写了,可以从附录里看。

Introduction

大概意思就是:

  • GAN 很好,但今年的 DDPM 也不差

21 年有一篇 OpenAI 的 BEAT GANS,用了 DDIM,关注度很高,意思就是 DDPM 真的比 GAN 好

  • DDPM 的问题是慢
    • 在 CIFAR-10 做 32x32 要 20h
    • 在 CIFAR-10 做 256x256 要 1000h
  • 本文解决这个问题,通过一个非马尔科夫的过程

Background

作者先讲了一般的 DDPM 是怎么搞的,这个叙述方式挺好的,讲讲重点

有一个公式: q(x1:T|x0):=t=1Tq(xt|xt1)q(xt|xt1):=N(αtαt1xt1,(1αtαt1)I) 也就是说,正常的 DDPM 是一个马尔科夫过程,想要从 X0 得到后面,需要一步一步加噪声。这个噪声是一个高斯分布,其均值和 Xt1 有关,是 sample 出来的。

反向的公式是: q(xt1|xt,x0)=N(xt1;μt(xt,x0),βt^I), 其中 均值:μt(xt,x0)=αt1βt1αtx0+αt(1αt1)1αtxt方差:βt^=1αt11αtβt

另一方面,由于这个高斯分布的传递性,我们可以把 xt 视为单位高斯分布和 x0 的线性叠加: xt=α^tx0+1α^tϵ,ϵN(0,I) 我们在训练时我们想要让 logpθ(x0)logq(x0),也就是说,我们想要优化: Lt1=Eq[12σ2||μt(xt,x0)μθ(xt,t)||2] 其中

  • 左边是实际马尔科夫链对 xt1 的估计,可计算

  • 右边是我们的去噪模型 θ xt1 的估计,可计算

这里我们套入上面 xt 的公式,看做 xt,ϵ 的函数,进行一波化简,最终得到 Lt1=C12σ2||ϵμθ(α^tx0+1α^t,t)||2 忽略常数 C,同时对所有的 L 进行优化: Lsimple=t=1TLt 就能学出 DDPM 模型了

VARIATIONAL INFERENCE FOR NON-MARKOVIAN FORWARD PROCESSES

上面全是 DDPM 的数学推导。接下来,作者讲了他的贡献。它发现:

  • DDPM 中的 lossLλ 只依赖于 q(xt|x0),和 q(x1:T|x0) 无关。这样符合边缘分布的可能性有很多,作者选取了一个非马尔科夫的过程

qσ(x1:T|x0):=q(xT|x0)t=2Tqσ(xt1|xt,x0)qσ(xt1|xt,x0)=N(αt1x0+1αt1σt2×xtαtx01αt,σt2I)

接下来,对于 x0q(x0),ϵtN(0,I) 我们可以获取其对应的 Xt,由 xt=α^tx0+1α^tϵt 如果我们有一个对 ϵt 的预测器 ϵθ(t)(xt) 输入不含 X0。我们可以用他来预测 X0f(t)(xt):=(xt1αt·ϵ(t)(xt))/αt 由此,这个去噪的过程可以看做: pθ(t)(xt1|xt)=qσ(xt1|xt,f(t)(xt)) 式子右边只和 xt,ϵ 有关

作者接下来证明了这个算法的 train 过程用到的 loss 和 DDPM 是等价的 (差一个常数)。也就是说,训好的 DDPM 模型可以认为是训好的 DDIM 模型

sample

这个模型是怎么 infer 的呢?

进一步展开、化简刚才的 pθ(t)(xt1|xt),我们可以得到

这个式子里面只有最右边的部分是带有随机成分的。而且当 σt=(1αt1)/(1αt)1αt/αt1 时退化为 DDPM

如果我们取 σt=0。式子有确定性的输出,这个模型称作 DDIM。

ACCELERATED GENERATION PROCESSES

说完了采样,那么加速在哪呢?

作者证明了:

  • 上面的逆过程不需要从 T,T1,...,1,0 一路下降,其实选取一个递减的子集也是可以的!

实验

实验部分,作者实际上选取了: σt=η(1αt1)/(1αt)1αt/αt1 其中 η 是超参,0 代表是 DDIM,1 代表是 DDPM。另一个变量是选取的子集 S 的大小 (|S|=1000 代表没有简化),跑了这个图:

可以看出,DDIM 在步数少的时候表现最好。最下面那个 σ^ 代表原始的 DDPM 祖先采样。可以看出,衰减非常明显

作者还提到了这个方法的另一个优势:

  • 由于确定性的增加,相同的初始噪声映射到基本相同的结果。可以方便做图片的修改。

我的思考

  • 虽然证明和数学过程很复杂,但结论却是惊人的简单:同样的 DDPM,换一个采样方法,就能加速 50 倍
  • 这个感觉是对上面论文 ODE 的一种实现?作者在论文里也用一小节说了这事。
论文阅读 - SCORE-BASED-GENERATIVE-MODELING-THROUGH-STOCHASTIC-DIFFERENTIAL-EQUATIONS
  • 有个后文 DPM-Solver,10 步就能媲美 DDPM-1000 步,过两天笔记整上
Powered By Valine
v1.5.2