浅析扩散模型与图像生成【理论篇】(一)——DDPM

写在最前面:近几年扩散模型已经逐步取代GAN、VAE等模型成为图像生成领域最炙手可热的研究方向,本文从基础理论的角度出发,简要的介绍一下扩散模型在图像生成领域的几个代表性工作,包括DDPM、DDIM和NCSN等。为保证文章的可读性,本文将尽可能避免具体的公式推导和证明,使用更加通俗易懂的方式来介绍相关内容。

  • DDPM
  • NCSN
  • SDE
  • DDIM
  • IDDPM

   Ho et al. [1] 和 Song et al. [2] 分别从扩散模型(DDPM)和分数模型(NCSN)的角度出发阐述了如何实现图像生成,后面我们会知道二者本质上是等价的,只相差一个系数,而且可以用随机微分方程的形式进行统一(SDE)[3]。下面,我们将从DDPM开始,介绍一下扩散模型是如何实现图像生成的。

1. DDPM

   在DDPM中,图像生成被分为两个阶段:扩散采样。所谓扩散阶段 q ( x T ∣ x 0 ) q(x_T|x_0) q(xTx0),就是对一幅图像 x 0 x_0 x0通过逐步增加噪声 ϵ \epsilon ϵ,使其最终变成一个随机噪声 x T x_T xT;而采样阶段 p θ ( x 0 ) p_{\theta}(x_0) pθ(x0),则是从一个随机噪声 x T x_T xT中通过逐步去噪,最终得到一张生成的图像 x 0 x_0 x0。无论是扩散还是采样过程,都是一个马尔可夫链,每一步的预测都依赖于上一步的输出结果。在扩散阶段我们将会训练一个神经网络(UNet),让其根据当前的时间步数 t t t和输入的噪声图像 x t x_t xt,预测一个噪声 ϵ θ ( x t , t ) \epsilon_{\theta}(x_t,t) ϵθ(xt,t),用于采样阶段中对图像进行去噪。下图很形象的表述了扩散和采样过程(图源:B站博主VictorYuki的视频“从零开始了解 Diffusion Model”),图中使用 z ~ \tilde{z} z~表示预测噪声 ϵ θ \epsilon_{\theta} ϵθ

扩散

在这里插入图片描述

采样

采样
   有了一个大致的概念后,我们来具体介绍一下扩散和采样的实现过程。首先给定一幅图像 x 0 x_0 x0,根据上面的介绍我们得知,我们可以对其添加噪声得到 x 1 x_1 x1,再对 x 1 x_1 x1添加噪声得到 x 2 x_2 x2,重复这个过程直至得到纯噪声 x T x_T xT,该过程可以表示为 q ( x 1 : T ∣ x 0 ) : = ∏ t = 1 T q ( x t ∣ x t − 1 ) (1-1) q(x_{1:T}|x_0):=\displaystyle\prod_{t=1}^{T}q(x_t|x_{t-1})\tag{1-1} q(x1:Tx0):=t=1Tq(xtxt1)(1-1)
其中
q ( x t ∣ x t − 1 ) : = N ( x t ; 1 − β t x t − 1 , β t I ) (1-2) q(x_t|x_{t-1}):=\mathcal{N}(x_t;\sqrt{1-\beta_{t}}x_{t-1},\beta_tI)\tag{1-2} q(xtxt1):=N(xt;1βt xt1,βtI)(1-2)
作者将每一步的扩散过程描述成从以 1 − β t x t − 1 \sqrt{1-\beta_{t}}x_{t-1} 1βt xt1为均值,以 β t \beta_t βt为方差的高斯分布中采样的过程,利用重参数技巧可转化为
x t = 1 − β t x t − 1 + β t ϵ , ϵ ∽ N ( 0 , I ) (1-3) x_t=\sqrt{1-\beta_{t}}x_{t-1}+\sqrt{\beta_t}\epsilon,\epsilon \backsim\mathcal{N}(0,I) \tag{1-3} xt=1βt xt1+βt ϵϵN(0,I)(1-3)
可以看到每一步的 x t x_t xt都是由上一步的输出结果 x t − 1 x_{t-1} xt1与噪声 ϵ \epsilon ϵ进行加权求和得到的,权重系数 β t \beta_t βt随着 t t t的增加而逐步增长,直至 x T x_T xT变成一个完全的随机噪声。这个过程通常要迭代成百上千次,在DDPM中 T T T取值为1000,这就导致扩散的过程十分漫长。为了解决这个问题,作者提出一种快速扩散的方法,可以由 x 0 x_0 x0直接生成任意时刻 t t t的噪声图 x t x_t xt,如下式 q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) (1-4) q(x_t|x_{0})=\mathcal{N}(x_t;\sqrt{\bar{\alpha}_{t}}x_{0},(1-\bar{\alpha}_{t})I)\tag{1-4} q(xtx0)=N(xt;αˉt x0,(1αˉt)I)(1-4)

x t = α ˉ t x 0 + 1 − α ˉ t ϵ , ϵ ∽ N ( 0 , I ) (1-5) x_t=\sqrt{\bar{\alpha}_{t}}x_{0}+\sqrt{1-\bar{\alpha}_{t}}\epsilon,\epsilon \backsim\mathcal{N}(0,I)\tag{1-5} xt=αˉt x0+1αˉt ϵϵN(0,I)(1-5)
其中 α t = 1 − β t , α ˉ t = ∏ s = 1 t α s \alpha_{t}=1-\beta_{t},\bar{\alpha}_{t}=\prod^t_{s=1}\alpha_s αt=1βt,αˉt=s=1tαs
   介绍完扩散过程,我们再来看一下采样过程。采样过程(也叫重建过程)是一个逆扩散过程,即从随机采样得到的噪声 X T X_T XT逐步去噪直至生成一个图像 x 0 x_0 x0,表示为
p θ ( x 0 : T ) : = p ( x T ) ∏ t = 1 T p θ ( x t − 1 ∣ x t ) (1-6) p_{\theta}(x_{0:T}):=p(x_T)\prod^{T}_{t=1}p_{\theta}(x_{t-1}|x_{t})\tag{1-6} pθ(x0:T):=p(xT)t=1Tpθ(xt1xt)(1-6)
其中 p ( x T ) = N ( 0 , I ) , p θ ( x t − 1 ∣ x t ) : = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) p(x_T)=\mathcal{N}(0,I),p_{\theta}(x_{t-1}|x_{t}):=\mathcal{N}(x_{t-1};\mu_{\theta}(x_t,t),\Sigma_{\theta}(x_t,t)) p(xT)=N(0,I),pθ(xt1xt):=N(xt1;μθ(xt,t),Σθ(xt,t))。分布 p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1}|x_{t}) pθ(xt1xt)实际上是未知的,而逆转后的扩散过程的分布 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt1xt,x0)是可以利用贝叶斯公式计算出来的,因此作者使用神经网络模型去拟合一个分布,使其逼近 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt1xt,x0)
q ( x t − 1 ∣ x t , x 0 ) = N ( x t − 1 ; μ ~ t ( x t , x 0 ) , β ~ t I ) (1-8) q(x_{t-1}|x_t,x_0)=\mathcal{N}(x_{t-1};\tilde{\mu}_t(x_t,x_0),\tilde{\beta}_tI)\tag{1-8} q(xt1xt,x0)=N(xt1;μ~t(xt,x0),β~tI)(1-8)
其中
μ ~ t ( x t , x 0 ) : = α ˉ t − 1 β t 1 − α ˉ t x 0 + α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t , β ~ t : = 1 − α ˉ t − 1 1 − α ˉ t β t (1-9) \tilde{\mu}_t(x_t,x_0):=\frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1-\bar{\alpha}_{t}}x_0+\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_{t}}x_t,\tilde{\beta}_t:=\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_{t}}\beta_t\tag{1-9} μ~t(xt,x0):=1αˉtαˉt1 βtx0+1αˉtαt (1αˉt1)xt,β~t:=1αˉt1αˉt1βt(1-9)
训练的目标函数为
L V L B = E q [ D K L ( q ( x T ∣ x 0 ) ∣ ∣ p ( x T ) ) ⏟ L T + ∑ t > 1 D K L ( q ( x t − 1 ∣ x t , x 0 ) ∣ ∣ p θ ( x x − 1 ∣ x t ) ) ⏟ L t − 1 − log ⁡ p θ ( x 0 ∣ x 1 ) ⏟ L 0 ] (1-10) \mathcal{L}_{VLB}=\mathbb{E}_q\left[ \underbrace{D_{KL}(q(x_T|x_0)||p(x_T))}_{L_T} + \sum_{t>1}\underbrace{D_{KL}(q(x_{t-1}|x_t,x_0)||p_{\theta}(x_{x-1}|x_t))}_{L_{t-1}} \underbrace{ -\log{p_{\theta}(x_0|x_1)}}_{L_0}\right]\tag{1-10} LVLB=Eq LT DKL(q(xTx0)∣∣p(xT))+t>1Lt1 DKL(q(xt1xt,x0)∣∣pθ(xx1xt))L0 logpθ(x0x1) (1-10)
该目标函数也就是所谓的变分下界(variational lower bound,VLB),其中第一项 L T L_T LT不包含可训练的参数,因此在训练时通常忽略,而对于第三项 L 0 L_{0} L0,作者构建了一个离散化的分段积分累乘方法来计算,此处不再展开介绍,感兴趣的可阅读原文[1]。我们重点关注第二项 L t − 1 L_{t-1} Lt1
   对于分布 p θ ( x x − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) p_{\theta}(x_{x-1}|x_t)=\mathcal{N}(x_{t-1};\mu_{\theta}(x_t,t),\Sigma_{\theta}(x_t,t)) pθ(xx1xt)=N(xt1;μθ(xt,t),Σθ(xt,t)),当 0 < t ≤ T 0< t\leq T 0<tT时,作者令方差项为一个无需训练只与时间 t t t有关的常数,即 Σ θ ( x t , t ) = σ t 2 I \Sigma_{\theta}(x_t,t)=\sigma_t^2I Σθ(xt,t)=σt2I,其中 σ t 2 = β t \sigma_t^2=\beta_t σt2=βt σ t 2 = β ~ t = 1 − α ˉ t − 1 1 − α ˉ t β t \sigma_t^2=\tilde{\beta}_t=\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_{t}}\beta_t σt2=β~t=1αˉt1αˉt1βt。实验结果表明两种取值方式并没有显著差别, Σ θ ( x t , t ) \Sigma_{\theta}(x_t,t) Σθ(xt,t)也可以作为一个可训练参数,但本文的实验表示这会使得训练不稳定。利用多元高斯分布的KL散度求解公式, L t − 1 L_{t-1} Lt1可以写为
L t − 1 = E q [ 1 2 σ t 2 ∥ μ ~ t ( x t , x 0 ) − μ θ ( x t , t ) ∥ 2 ] + C (1-11) L_{t-1}=\mathbb{E}_q\left [\frac{1}{2\sigma^2_t}\left \| \tilde{\mu}_t(x_t,x_0)-\mu_{\theta}(x_t,t)\right \|^2\right]+C\tag{1-11} Lt1=Eq[2σt21μ~t(xt,x0)μθ(xt,t)2]+C(1-11)
则训练目标转化为训练一个网络根据输入的噪声图 x t x_t xt和时间 t t t输出对应的均值 μ θ ( x t , t ) \mu_{\theta}(x_t,t) μθ(xt,t)使其接近 μ ~ t ( x t , x 0 ) \tilde{\mu}_t(x_t,x_0) μ~t(xt,x0)。利用公式(1-5),我们可以得到
x 0 = 1 α t ( x t − 1 − α ˉ t ϵ ) (1-12) x_0=\frac{1}{\sqrt{\alpha_t}}(x_t-\sqrt{1-\bar{\alpha}_t}\epsilon)\tag{1-12} x0=αt 1(xt1αˉt ϵ)(1-12)
将其带入 μ ~ t ( x t , x 0 ) \tilde{\mu}_t(x_t,x_0) μ~t(xt,x0)的表达式中可得
μ ~ t ( x t , x 0 ) = 1 α t ( x t − β t 1 − α ˉ t ϵ ) (1-13) \tilde{\mu}_t(x_t,x_0)=\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon)\tag{1-13} μ~t(xt,x0)=αt 1(xt1αˉt βtϵ)(1-13)其中 x t , α t , β t x_t,\alpha_t,\beta_t xt,αt,βt都是已知量,只有噪声 ϵ \epsilon ϵ是一个随机变量,因此预测 μ θ ( x t , t ) \mu_{\theta}(x_t,t) μθ(xt,t)进一步转化为根据当前的输入 x t x_t xt和时间 t t t预测一个噪声 ϵ θ ( x t , t ) \epsilon_{\theta}(x_t,t) ϵθ(xt,t),即
μ θ ( x t , t ) = μ ~ t ( x t , 1 α t ( x t − β t 1 − α ˉ t ϵ θ ( x t ) ) ) = 1 α t ( x t − β t 1 − α ˉ t ϵ θ ( x t , t ) ) (1-14) \mu_{\theta}(x_t,t)=\tilde{\mu}_t\left (x_t,\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_{\theta}(x_t))\right)=\frac{1}{\sqrt{\alpha_t}}\left(x_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_{\theta}(x_t,t)\right)\tag{1-14} μθ(xt,t)=μ~t(xt,αt 1(xt1αˉt βtϵθ(xt)))=αt 1(xt1αˉt βtϵθ(xt,t))(1-14)
则训练目标可以进一步的写为
L t − 1 = E x 0 , ϵ [ β t 2 2 σ t 2 α t ( 1 − α ˉ t ) ∥ ϵ − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) ∥ 2 ] (1-15) L_{t-1}=\mathbb{E}_{x_0,\epsilon}\left [\frac{\beta^2_t}{2\sigma^2_t\alpha_t(1-\bar{\alpha}_t)}\left \|\epsilon-\epsilon_{\theta}(\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\epsilon,t)\right \| ^2\right ]\tag{1-15} Lt1=Ex0,ϵ[2σt2αt(1αˉt)βt2 ϵϵθ(αˉt x0+1αˉt ϵ,t) 2](1-15)
结合 L t − 1 L_{t-1} Lt1 L 0 L_0 L0,最终的目标函数 L V L B \mathcal{L}_{VLB} LVLB简化为
L s i m p l e ( θ ) : = E t , x 0 , ϵ [ ∥ ϵ − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) ∥ 2 ] (1-16) L_{simple}(\theta):=\mathbb{E}_{t,x_0,\epsilon}\left [\left \|\epsilon-\epsilon_{\theta}(\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\epsilon,t)\right \| ^2\right ]\tag{1-16} Lsimple(θ):=Et,x0,ϵ[ ϵϵθ(αˉt x0+1αˉt ϵ,t) 2](1-16)
利用扩散过程中输入的 x 0 x_0 x0和每次随机采样的噪声 ϵ \epsilon ϵ就能训练得到一个噪声预测模型 ϵ θ ( x t , t ) \epsilon_{\theta}(x_t,t) ϵθ(xt,t)。最后在采样阶段,根据 x t − 1 ∽ p θ ( x t − 1 ∣ x t ) x_{t-1}\backsim p_{\theta}(x_{t-1}|x_t) xt1pθ(xt1xt)可得
x t − 1 = μ θ ( x t , t ) + σ t z = 1 α t ( x t − β t 1 − α ˉ t ϵ θ ( x t , t ) ) + σ t z , z ∽ N ( 0 , I ) (1-17) x_{t-1}=\mu_{\theta}(x_t,t)+\sigma_tz=\frac{1}{\sqrt{\alpha_t}}\left(x_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_{\theta}(x_t,t)\right)+\sigma_tz,z\backsim \mathcal{N}(0,I)\tag{1-17} xt1=μθ(xt,t)+σtz=αt 1(xt1αˉt βtϵθ(xt,t))+σtz,zN(0,I)(1-17)
当模型训练完成时, μ θ ( x t , t ) \mu_{\theta}(x_t,t) μθ(xt,t)是一个确定过程,只与输入的 x t x_t xt有关,而在每次重建时都会随机采样一个 z z z来增加一定的随机性,使得生成样本具有更大的多样性。我们再看一下作者给出的训练和采样阶段的算法流程
在这里插入图片描述
  训练阶段,首先采样得到一个图像样本 x 0 x_0 x0,然后从 { 1 , . . . , T } \{1,...,T\} {1,...,T}中均匀采样一个时间 t t t,并按照标准正态分布采样一个噪声 ϵ \epsilon ϵ,利用目标函数(1-16)训练一个UNet模型用于预测 ϵ θ ( x t , t ) \epsilon_{\theta}(x_t,t) ϵθ(xt,t)。在采样阶段,在标准正态分布中采样得到初始的噪声图 x T x_T xT,并且在每一步都采样一个随机变量 z z z,然后按照公式(1-17),由 T T T到1逐步预测 x t − 1 x_{t-1} xt1,直至得到 x 0 x_0 x0。值得注意的是当 t = 1 t=1 t=1时,也就是最后一步预测时,随机变量 z = 0 z=0 z=0
  至此,我们对DDPM的扩散和采样过程,以及训练目标进行了一个相对完整的介绍。我们只给出了结论性的公式,如果要了解具体推导和证明步骤,可参考原文及附录,这篇博客和这个视频也给出了更加详细的分析。受篇幅限制,本文仅对DDPM进行了介绍,其他的方法将在后续的文章中分别介绍。

参考文献
[1] Ho, J., Jain, A., & Abbeel, P. (2020). Denoising diffusion probabilistic models. Advances in neural information processing systems, 33, 6840-6851.
[2] Song Y, Ermon S. Generative modeling by estimating gradients of the data distribution[J]. Advances in neural information processing systems, 2019, 32.
[3] Song, Y., Sohl-Dickstein, J., Kingma, D. P., Kumar, A., Ermon, S., & Poole, B. (2020). Score-based generative modeling through stochastic differential equations. arXiv preprint arXiv:2011.13456.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深视

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值