个人笔记Github地址:https://github.com/xuekt98/readed-papers.git
本文提出了一种结合Diffusion和GAN的生成模型, 在CIFAR-10数据集上能够比DDPM快2000倍, 同时与传统的GAN相比, 又可以生成质量相近有具有多样性的结果. 作者指出DiffusionGAN是第一个可以把Diffusion采样步骤降低到可以被应用到实际当中的模型.
本文提出了一种比较贴切的说法叫做:生成学习的三元悖论(The Generative Learning Trilemma). 现有的各种各样的生成模型都需要满足三个方面的需求:
如图所示, 可以直观的看出, 现有的四大类的生成模型:
Diffusion模型, 包括DDPM模型, 都包含了前向过程和反向过程. 而且前向过程和反向过程中间数据的分布都被建模为了高斯分布.
前向过程:
那么, Diffusion模型优化的目标本质上是将前向的真实的去噪过程的数据分布(true denoising distribution)与反向过程参数化之后去噪过程的数据分布(parameterized denoising distribution)对齐:
注意到这里的形式与之前在介绍DDPM的笔记里边的两种形式都不太一样, 主要区别在于q的分布的表示形式. 由于 q ( x t ∣ x t − 1 ) = q ( x t − 1 ∣ x t ) q ( x t ) q ( x t − 1 ) q(x_t | x_{t-1}) = \frac{q(x_{t-1} | x_t)q(x_t)}{q(x_{t-1})} q(xt∣xt−1)=q(xt−1)q(xt−1∣xt)q(xt) , 这三种形式是等价的, 而相比之下, 本文这种表示形式更能体现Diffusion模型的本质. 也就是反向的去噪过程是在模拟前向过程所对应的真实的去噪过程.
Diffusion模型基于两个重要的假设:
首先来看什么时候真实的去噪过程的分布 q ( x t − 1 ∣ x t ) q(x_{t-1} | x_t) q(xt−1∣xt) 是高斯分布. 根据贝叶斯法则, q ( x t − 1 ∣ x t ) ∝ q ( x t ∣ x t − 1 ) q ( x t − 1 ) q(x_{t-1} | x_t) \varpropto q(x_t | x_{t-1})q(x_{t-1}) q(xt−1∣xt)∝q(xt∣xt−1)q(xt−1) 其中前向过程的分布 q ( x t ∣ x t − 1 ) q(x_t | x_{t-1}) q(xt∣xt−1) 服从高斯分布. 那么可以证明在如下两种情形下, 真实的去噪过程的分布服从高斯分布的形式:
为了能在数据的边缘分布不是高斯分布的情况下, 也能减少采样的步数, 这种情况下既然真实的去噪过程的分布 q ( x t − 1 ∣ x t ) q(x_{t-1} | x_t) q(xt−1∣xt) 不再服从高斯分布的形式, 那么将反向过程的分布 p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1} | x_t) pθ(xt−1∣xt) 也不再建模为高斯分布的形式, 而是通过Conditional GAN来使得两个分布对齐, 而不是显式地去学习高斯分布的均值和方差. 这也就是本文的基本思路.
相应的, 优化的目标也就变成了:
那么GAN包括两个部分, 生成器generator G G G 和判别器 discriminator D D D . 那么对于生成器就是 x t − 1 = G ( x t , z , t ) x_{t-1} = G(x_t, z, t) xt−1=G(xt,z,t) 其中引入的噪声 z 是为了模型的结果能有良好的多样性.
相应的, GAN的Discriminator也应该与步骤 t t t 有关, 其输入除了数据 x t x_t xt 外, 还要包括 t t t .
但是判别器还需要真实的去噪分布的数据, 这个数据怎么得到? 作者在这里进行了简单的转换.
简单的来表述就是, DDPM为代表的Diffusion模型, 反向过程是在其去噪的分布是高斯分布的前提下,利用 x t x_t xt 来得到 t − 1 t-1 t−1 的均值和方差, 再来计算得到 x t − 1 x_{t-1} xt−1 , 而本文的DiffusionGAN则不再有去噪的分布是高斯分布的假设, 利用 x t x_t xt 直接通过生成器 G ( x t , z , t ) G(x_t, z, t) G(xt,z,t) 得到 x t − 1 x_{t-1} xt−1 .
一个自然而然的问题就是, 为什么不用一步的GAN而要这样用多步的GAN呢? 这样做相比一步直接得到结果的GAN有什么好处呢? 作者给出了如下解释:
作者的一个主要的实验就是在CIFAR-10数据集上比较了不同模型的采样质量(FID和IS); 采样多样性(Recall Score); 采样的时间(NFE和Clock Time)
其他的实验结果可以直接参考原文.