理解扩散模型:Diffusion Models & DDPM

这篇具有很好参考价值的文章主要介绍了理解扩散模型:Diffusion Models & DDPM。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

在前面的博客中,我们讨论了生成模型VAE和GAN,近年来,新的生成模型——扩散模型受到越来越多的关注,因此值得好好去研究一番。扩散模型(Diffusion Models)最早由 [2] 于2015年提出,但直到2020年论文 [3] 发表之后才得到关注,本文详细梳理了 [3] 中的公式推导部分,帮助大家更好理解其中的数学原理。


数学模型

如下图所示(引自[1]), x 0 x_0 x0 是原始数据, q q q 是扩散模型,每扩散一次,都会在前一期数据的基础上添加部分噪声,当 t → ∞ t \to \infty t x T x_T xT 完全被噪声淹没,成为各向同性的高斯分布 x T ∼ N ( 0 , I ) x_T \sim \mathcal{N}(0,I) xTN(0,I) p θ p_\theta pθ 是生成模型,使用参数为 θ \theta θ 的网络来近似,将噪声恢复成有效信息,整个模型满足马尔可夫链条件。
理解扩散模型:Diffusion Models & DDPM

目标函数

本文采用自顶向下的形式进行讲解,首先说明最终关注的目标函数,然后针对其中的细节分别深入。直观来说,我们的目标是让近似分布 p θ ( x 0 ) p_\theta(x_0) pθ(x0) 尽可能接近数据的真实分布 q ( x 0 ) q(x_0) q(x0),所以目标函数可以用交叉熵来表示:
L C E = − E q ( x 0 ) l o g   p θ ( x 0 ) = − E q ( x 0 ) l o g [ ∫ p θ ( x 0 : T ) d x 1 : T ] = − E q ( x 0 ) l o g [ ∫ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) q ( x 1 : T ∣ x 0 ) d x 1 : T ] = − E q ( x 0 ) l o g [ E q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) q ( x 1 : T ∣ x 0 ) ] ≤ − E q ( x 0 : T ) l o g p θ ( x 0 : T ) q ( x 1 : T ∣ x 0 ) ,   J e n s e n   i n e q u a l i t y \begin{aligned} \mathcal{L}_{CE}&=-\mathbb{E}_{q(x_0)}log\ p_\theta(x_0)\\ &=-\mathbb{E}_{q(x_0)}log[\int p_\theta(x_{0:T})dx_{1:T}]\\ &=-\mathbb{E}_{q(x_0)}log[\int q(x_{1:T}|x_0)\frac{p_\theta(x_{0:T})}{q(x_{1:T}|x_0)}dx_{1:T}]\\ &=-\mathbb{E}_{q(x_0)}log[\mathbb{E}_{q(x_{1:T}|x_0)}\frac{p_\theta(x_{0:T})}{q(x_{1:T}|x_0)}]\\ &\le -\mathbb{E}_{q(x_{0:T})}log\frac{p_\theta(x_{0:T})}{q(x_{1:T}|x_0)},\ Jensen\ inequality \end{aligned} LCE=Eq(x0)log pθ(x0)=Eq(x0)log[pθ(x0:T)dx1:T]=Eq(x0)log[q(x1:Tx0)q(x1:Tx0)pθ(x0:T)dx1:T]=Eq(x0)log[Eq(x1:Tx0)q(x1:Tx0)pθ(x0:T)]Eq(x0:T)logq(x1:Tx0)pθ(x0:T), Jensen inequality
可以得到:
E q ( x 0 ) l o g   p θ ( x 0 ) ≥ E q ( x 0 : T ) l o g p θ ( x 0 : T ) q ( x 1 : T ∣ x 0 ) \mathbb{E}_{q(x_0)}log\ p_\theta(x_0) \ge \mathbb{E}_{q(x_{0:T})}log\frac{p_\theta(x_{0:T})}{q(x_{1:T}|x_0)} Eq(x0)log pθ(x0)Eq(x0:T)logq(x1:Tx0)pθ(x0:T)
不等式右边的项就是对数似然下界,记为 L L B \mathcal{L}_{LB} LLB,只要让其越大,不等式左边的项也就越大,交叉熵也就越小。

马克洛夫链假设

为了让 L L B \mathcal{L}_{LB} LLB 便于优化,需要补充一些知识。前面提到,模型满足马克洛夫链条件(Markov Chain),即当前状态 x t x_t xt 仅与上一状态 x t − 1 x_{t-1} xt1 有关,假设马克洛夫关系为 A → B → C A \to B \to C ABC,可以得到性质:
p ( B , C ∣ A ) = p ( B , C , A ) p ( A , B ) p ( A ) p ( A , B ) = p ( B ∣ A ) p ( C ∣ A , B ) = p ( B ∣ A ) p ( C ∣ B ) (1) \begin{aligned} p(B,C|A)&=\frac{p(B,C,A)p(A,B)}{p(A)p(A,B)}=p(B|A)p(C|A,B)\\ &=p(B|A)p(C|B)\tag{1} \end{aligned} p(B,CA)=p(A)p(A,B)p(B,C,A)p(A,B)=p(BA)p(CA,B)=p(BA)p(CB)(1)
利用公式(1),可以得到:
q ( x 1 : T ∣ x 0 ) = ∏ t = 1 T q ( x t ∣ x t − 1 ) p θ ( x 0 : T ) = p θ ( x T ) ∏ t = 1 T p θ ( x t − 1 ∣ x t ) (2) \tag{2} q(x_{1:T}|x_0)=\prod^T_{t=1}q(x_t|x_{t-1})\\ p_\theta(x_{0:T})=p_\theta(x_T)\prod^T_{t=1}p_\theta(x_{t-1}|x_t) q(x1:Tx0)=t=1Tq(xtxt1)pθ(x0:T)=pθ(xT)t=1Tpθ(xt1xt)(2)
将公式(2)代入 L L B \mathcal{L}_{LB} LLB,可以得到:
L L B = E q ( x 0 : T ) [ l o g q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] = E q [ l o g ∏ t = 1 T q ( x t ∣ x t − 1 ) p θ ( x T ) ∏ t = 1 T p θ ( x t − 1 ∣ x t ) ] = E q [ − l o g   p θ ( x T ) + ∑ t = 1 T l o g q ( x t ∣ x t − 1 ) p θ ( x t − 1 ∣ x t ) ] = E q [ − l o g   p θ ( x T ) + ∑ t = 2 T l o g q ( x t ∣ x t − 1 ) p θ ( x t − 1 ∣ x t ) + l o g q ( x 1 ∣ x 0 ) p θ ( x 0 ∣ x 1 ) ] = E q [ − l o g   p θ ( x T ) + ∑ t = 2 T l o g q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) ⋅ q ( x t ∣ x 0 ) q ( x t − 1 ∣ x 0 ) + l o g q ( x 1 ∣ x 0 ) p θ ( x 0 ∣ x 1 ) ] = E q [ − l o g   p θ ( x T ) + ∑ t = 2 T l o g q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) + ∑ t = 2 T l o g q ( x t ∣ x 0 ) q ( x t − 1 ∣ x 0 ) + l o g q ( x 1 ∣ x 0 ) p θ ( x 0 ∣ x 1 ) ] = E q [ − l o g   p θ ( x T ) + ∑ t = 2 T l o g q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) + l o g q ( x T ∣ x 0 ) q ( x 1 ∣ x 0 ) + l o g q ( x 1 ∣ x 0 ) p θ ( x 0 ∣ x 1 ) ] = E q [ l o g q ( x T ∣ x 0 ) p θ ( x T ) + ∑ t = 2 T l o g q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) − l o g   p θ ( x 0 ∣ x 1 ) ] (3) \tag{3} \begin{aligned} \mathcal{L}_{LB}&=\mathbb{E}_{q(x_{0:T})}[log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}]\\ &=\mathbb{E}_{q}[log\frac{\prod^T_{t=1}q(x_t|x_{t-1})}{p_\theta(x_T)\prod^T_{t=1}p_\theta(x_{t-1}|x_t)}]\\ &=\mathbb{E}_{q}[-log\ p_\theta(x_T)+\sum^T_{t=1}log\frac{q(x_t|x_{t-1})}{p_\theta(x_{t-1}|x_t)}]\\ &=\mathbb{E}_{q}[-log\ p_\theta(x_T)+\sum^T_{t=2}log\frac{q(x_t|x_{t-1})}{p_\theta(x_{t-1}|x_t)}+log\frac{q(x_1|x_0)}{p_\theta(x_0|x_1)}]\\ &=\mathbb{E}_{q}[-log\ p_\theta(x_T)+\sum^T_{t=2}log\frac{q(x_{t-1}|x_t,x_0)}{p_\theta(x_{t-1}|x_t)} \cdot \frac{q(x_t|x_0)}{q(x_{t-1}|x_0)}+log\frac{q(x_1|x_0)}{p_\theta(x_0|x_1)}]\\ &=\mathbb{E}_{q}[-log\ p_\theta(x_T)+\sum^T_{t=2}log\frac{q(x_{t-1}|x_t,x_0)}{p_\theta(x_{t-1}|x_t)}+\sum^T_{t=2}log\frac{q(x_t|x_0)}{q(x_{t-1}|x_0)}+log\frac{q(x_1|x_0)}{p_\theta(x_0|x_1)}]\\ &=\mathbb{E}_{q}[-log\ p_\theta(x_T)+\sum^T_{t=2}log\frac{q(x_{t-1}|x_t,x_0)}{p_\theta(x_{t-1}|x_t)}+log\frac{q(x_T|x_0)}{q(x_1|x_0)}+log\frac{q(x_1|x_0)}{p_\theta(x_0|x_1)}]\\ &=\mathbb{E}_{q}[log\frac{q(x_T|x_0)}{p_\theta(x_T)}+\sum^T_{t=2}log\frac{q(x_{t-1}|x_t,x_0)}{p_\theta(x_{t-1}|x_t)}-log\ p_\theta(x_0|x_1)] \end{aligned} LLB=Eq(x0:T)[logpθ(x0:T)q(x1:Tx0)]=Eq[logpθ(xT)t=1Tpθ(xt1xt)t=1Tq(xtxt1)]=Eq[log pθ(xT)+t=1Tlogpθ(xt1xt)q(xtxt1)]=Eq[log pθ(xT)+t=2Tlogpθ(xt1xt)q(xtxt1)+logpθ(x0x1)q(x1x0)]=Eq[log pθ(xT)+t=2Tlogpθ(xt1xt)q(xt1xt,x0)q(xt1x0)q(xtx0)+logpθ(x0x1)q(x1x0)]=Eq[log pθ(xT)+t=2Tlogpθ(xt1xt)q(xt1xt,x0)+t=2Tlogq(xt1x0)q(xtx0)+logpθ(x0x1)q(x1x0)]=Eq[log pθ(xT)+t=2Tlogpθ(xt1xt)q(xt1xt,x0)+logq(x1x0)q(xTx0)+logpθ(x0x1)q(x1x0)]=Eq[logpθ(xT)q(xTx0)+t=2Tlogpθ(xt1xt)q(xt1xt,x0)log pθ(x0x1)](3)
将公式(3)的最后一行化成 KL 散度的形式:
E q ( x 0 ) D K L [ q ( x T ∣ x 0 ) ∣ ∣ p θ ( x T ) ] + E q ( x 0 , x t ) ∑ t = 2 T D K L [ q ( x t − 1 ∣ ∣ x 0 , x t ) ∣ ∣ p θ ( x t − 1 ∣ x t ) ] − E q ( x 0 , x 1 ) l o g   p θ ( x 0 ∣ x 1 ) (4) \tag{4} \mathbb{E}_{q(x_0)}D_{KL}[q(x_T|x_0)||p_\theta(x_T)]+\\ \mathbb{E}_{q(x_0,x_t)}\sum^T_{t=2}D_{KL}[q(x_{t-1}||x_0,x_t)||p_\theta(x_{t-1}|x_t)]-\\ \mathbb{E}_{q(x_0,x_1)}log\ p_\theta(x_0|x_1) Eq(x0)DKL[q(xTx0)∣∣pθ(xT)]+Eq(x0,xt)t=2TDKL[q(xt1∣∣x0,xt)∣∣pθ(xt1xt)]Eq(x0,x1)log pθ(x0x1)(4)
公式(4)第一项对应 VAE 中的正则化损失 D K L ( q ϕ ( z ∣ x ) ∣ ∣ p θ ( z ) ) D_{KL}(q_\phi(z|x)||p_\theta(z)) DKL(qϕ(zx)∣∣pθ(z)),第三项对应于重建损失 E q ϕ ( z ∣ x ) [ l o g ( p θ ( x ∣ z ) ) ] \mathbb{E}_{q_\phi(z|x)}[log(p_\theta(x|z))] Eqϕ(zx)[log(pθ(xz))],第二项是多个 KL 散度的和,每个度量 p p p 后验分布和 q q q 已知 x 0 x_0 x0 后验分布的距离。

重参数化

利用重参数化技巧可以让公式(4)中的 x t x_t xt 可解,进一步简化 L L B \mathcal{L}_{LB} LLB。给定真实数据 x 0 ∼ q ( x ) x_0 \sim q(x) x0q(x),扩散过程的每一步可以表示为:
q ( x t ∣ x t − 1 ) = N ( x t ;   1 − β t x t − 1 , β t I ) (5) q(x_t|x_{t-1})=\mathcal{N}(x_t;\ \sqrt{1-\beta_t}x_{t-1},\beta_tI)\tag{5} q(xtxt1)=N(xt; 1βt xt1,βtI)(5)
其中 β t \beta_t βt 是一个超参数。利用重参数化技巧,可以使用 x 0 x_0 x0 直接计算任意时间点 t 上的 x t x_t xt,不需要一步步迭代。假设 α t = 1 − β t , α t ‾ = ∏ i = 1 t α i , ϵ t ∼ N ( 0 , I ) \alpha_t=1-\beta_t,\overline{\alpha_t}=\prod^t_{i=1}\alpha_i,\epsilon_t \sim \mathcal{N}(0,I) αt=1βt,αt=i=1tαi,ϵtN(0,I)
x t = α t x t − 1 + 1 − α t ϵ t − 1 = α t [ α t − 1 x t − 2 + 1 − α t − 1 ϵ t − 2 ] + 1 − α t ϵ t − 1 = α t α t − 1 x t − 2 + α t − α t α t − 1 ϵ t − 2 + 1 − α t ϵ t − 1 = α t α t − 1 x t − 2 + 1 − α t α t − 1 ϵ ‾ t − 2 = . . . = α ‾ t x 0 + 1 − α ‾ t ϵ ∴ q ( x t ∣ x 0 ) = N ( x t ;   α ‾ t x 0 , ( 1 − α ‾ t ) I ) (6) \tag{6} \begin{aligned} x_t&=\sqrt{\alpha_t}x_{t-1}+\sqrt{1-\alpha_t}\epsilon_{t-1}\\ &=\sqrt{\alpha_t}[\sqrt{\alpha_{t-1}}x_{t-2}+\sqrt{1-\alpha_{t-1}}\epsilon_{t-2}]+\sqrt{1-\alpha_t}\epsilon_{t-1}\\ &=\sqrt{\alpha_t\alpha_{t-1}}x_{t-2}+\sqrt{\alpha_t-\alpha_t\alpha_{t-1}}\epsilon_{t-2}+\sqrt{1-\alpha_t}\epsilon_{t-1}\\ &=\sqrt{\alpha_t\alpha_{t-1}}x_{t-2}+\sqrt{1-\alpha_t\alpha_{t-1}}\overline{\epsilon}_{t-2}\\ &=...\\ &=\sqrt{\overline{\alpha}_t}x_0+\sqrt{1-\overline{\alpha}_t}\epsilon\\ &\therefore q(x_t|x_0)=\mathcal{N}(x_t;\ \sqrt{\overline{\alpha}_t}x_0,(1-\overline{\alpha}_t)I) \end{aligned} xt=αt xt1+1αt ϵt1=αt [αt1 xt2+1αt1 ϵt2]+1αt ϵt1=αtαt1 xt2+αtαtαt1 ϵt2+1αt ϵt1=αtαt1 xt2+1αtαt1 ϵt2=...=αt x0+1αt ϵq(xtx0)=N(xt; αt x0,(1αt)I)(6)
其中 α t − α t α t − 1 ϵ t − 2 + 1 − α t ϵ t − 1 ∼ N ( 0 , 1 − α t α t − 1 ) \sqrt{\alpha_t-\alpha_t\alpha_{t-1}}\epsilon_{t-2}+\sqrt{1-\alpha_t}\epsilon_{t-1} \sim \mathcal{N}(0,1-\alpha_t\alpha_{t-1}) αtαtαt1 ϵt2+1αt ϵt1N(0,1αtαt1),从而得到 ϵ ‾ t − 2 \overline{\epsilon}_{t-2} ϵt2。进一步,可以计算 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 ∣ x t − 1 , x 0 ) q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) ∝ e x p [ − 1 2 ( ( x t − α t x t − 1 ) 2 β t + ( x t − 1 − α ‾ t − 1 x 0 ) 2 1 − α ‾ t − 1 − ( x t − α ‾ t x 0 ) 2 1 − α ‾ t ) ] = e x p [ − 1 2 ( ( α t β t + 1 1 − α ‾ t − 1 ) x t − 1 2 − ( 2 α t β t x t + 2 α ‾ t − 1 1 − α ‾ t − 1 x 0 ) x t − 1 + C ( x t , x 0 ) ) ] (7) \tag{7} \begin{aligned} q(x_{t-1}|x_t,x_0)&=q(x_t|x_{t-1},x_0)\frac{q(x_{t-1}|x_0)}{q(x_t|x_0)}\\ &\propto exp[-\frac{1}{2}(\frac{(x_t-\sqrt{\alpha_t}x_{t-1})^2}{\beta_t}+\frac{(x_{t-1}-\sqrt{\overline{\alpha}_{t-1}}x_0)^2}{1-\overline{\alpha}_{t-1}}-\frac{(x_t-\sqrt{\overline{\alpha}_t}x_0)^2}{1-\overline{\alpha}_t})]\\ &=exp[-\frac{1}{2}((\frac{\alpha_t}{\beta_t}+\frac{1}{1-\overline{\alpha}_{t-1}})x^2_{t-1}-(\frac{2\sqrt{\alpha_t}}{\beta_t}x_t+\frac{2\sqrt{\overline{\alpha}_{t-1}}}{1-\overline{\alpha}_{t-1}}x_0)x_{t-1}+C(x_t,x_0))] \end{aligned} q(xt1xt,x0)=q(xtxt1,x0)q(xtx0)q(xt1x0)exp[21(βt(xtαt xt1)2+1αt1(xt1αt1 x0)21αt(xtαt x0)2)]=exp[21((βtαt+1αt11)xt12(βt2αt xt+1αt12αt1 x0)xt1+C(xt,x0))](7)
我们知道, a x 2 + b x ax^2+bx ax2+bx 可以化成 a ( x + b 2 a ) 2 + c a(x+\frac{b}{2a})^2+c a(x+2ab)2+c,那么对于指数项是 a x 2 + b x ax^2+bx ax2+bx 这种格式的高斯分布, μ = − b 2 a , σ 2 = 1 a \mu=-\frac{b}{2a},\sigma^2=\frac{1}{a} μ=2ab,σ2=a1。设 q ( x t − 1 ∣ x t , x 0 ) = N ( x t − 1 ;   μ ~ ( x t , x 0 ) , β ~ t I ) q(x_{t-1}|x_t,x_0)=\mathcal{N}(x_{t-1};\ \tilde{\mu}(x_t,x_0),\tilde{\beta}_tI) q(xt1xt,x0)=N(xt1; μ~(xt,x0),β~tI),代入公式(7)有:
β ~ t = 1 − α ‾ t − 1 1 − α ‾ t ⋅ β t μ ~ t ( x t , x 0 ) = α t ( 1 − α ‾ t − 1 ) 1 − α ‾ t x t + α ‾ t − 1 β t 1 − α ‾ t x 0 (8) \tag{8} \begin{aligned} \tilde{\beta}_t&=\frac{1-\overline{\alpha}_{t-1}}{1-\overline{\alpha}_t}\cdot\beta_t\\ \tilde{\mu}_t(x_t,x_0)&=\frac{\sqrt{\alpha_t}(1-\overline{\alpha}_{t-1})}{1-\overline{\alpha}_t}x_t+\frac{\sqrt{\overline{\alpha}_{t-1}}\beta_t}{1-\overline{\alpha}_t}x_0 \end{aligned} β~tμ~t(xt,x0)=1αt1αt1βt=1αtαt (1αt1)xt+1αtαt1 βtx0(8)
根据公式(6),将 x 0 = 1 α ‾ t ( x t − 1 − α ‾ t ϵ t ) x_0=\frac{1}{\sqrt{\overline{\alpha}_t}}(x_t-\sqrt{1-\overline{\alpha}_t}\epsilon_t) x0=αt 1(xt1αt ϵt) 代入公式(8),可以进一步化简 μ ~ t ( x t , x 0 ) \tilde{\mu}_t(x_t,x_0) μ~t(xt,x0)
μ ~ t ( x t , x 0 ) = 1 α t ( x t − 1 − α t 1 − α ‾ t ϵ t ) (9) \tilde{\mu}_t(x_t,x_0)=\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{1-\alpha_t}{\sqrt{1-\overline{\alpha}_t}}\epsilon_t)\tag{9} μ~t(xt,x0)=αt 1(xt1αt 1αtϵt)(9)

高斯分布的 KL 散度

重参数化技巧使能够解析计算 x t x_t xt q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt1xt,x0),除此之外,当前分布为高斯分布时,KL 散度的计算也能得到简化,考虑一维高斯分布 a ∼ N ( μ 1 , σ 1 2 ) , b ∼ N ( μ 2 , σ 2 2 ) a \sim \mathcal{N}(\mu_1,\sigma^2_1),b \sim \mathcal{N}(\mu_2,\sigma^2_2) aN(μ1,σ12),bN(μ2,σ22),它们的 KL 散度为(同理可以扩展到多维高斯分布):
D K L ( a ∣ ∣ b ) = E a l o g   a b = E a [ l o g σ 2 σ 1 + ( x − μ 2 ) 2 2 σ 2 2 + ( x − μ 1 ) 2 2 σ 1 2 ] = l o g σ 2 σ 1 + 1 2 E a [ ( x − μ 2 ) 2 σ 2 2 + ( x − μ 1 ) 2 σ 1 2 ] = l o g σ 2 σ 1 + 1 2 E a [ ( 1 σ 2 2 − 1 σ 1 2 ) x 2 + ( 2 μ 1 σ 1 2 − 2 μ 2 σ 2 2 ) x + μ 2 2 σ 2 2 − μ 1 2 σ 1 2 ] = l o g σ 2 σ 1 + σ 1 2 + ( μ 1 − μ 2 ) 2 2 σ 2 2 − 1 2 (10) \tag{10} \begin{aligned} D_{KL}(a||b)&=\mathbb{E}_alog\ \frac{a}{b}\\ &=\mathbb{E}_a[log\frac{\sigma_2}{\sigma_1}+\frac{(x-\mu_2)^2}{2\sigma^2_2}+\frac{(x-\mu_1)^2}{2\sigma^2_1}]\\ &=log\frac{\sigma_2}{\sigma_1}+\frac{1}{2}\mathbb{E}_a[\frac{(x-\mu_2)^2}{\sigma^2_2}+\frac{(x-\mu_1)^2}{\sigma^2_1}]\\ &=log\frac{\sigma_2}{\sigma_1}+\frac{1}{2}\mathbb{E}_a[(\frac{1}{\sigma^2_2}-\frac{1}{\sigma^2_1})x^2+(\frac{2\mu_1}{\sigma^2_1}-\frac{2\mu_2}{\sigma^2_2})x+\frac{\mu^2_2}{\sigma^2_2}-\frac{\mu^2_1}{\sigma^2_1}]\\ &=log\frac{\sigma_2}{\sigma_1}+\frac{\sigma^2_1+(\mu_1-\mu_2)^2}{2\sigma^2_2}-\frac{1}{2} \end{aligned} DKL(a∣∣b)=Ealog ba=Ea[logσ1σ2+2σ22(xμ2)2+2σ12(xμ1)2]=logσ1σ2+21Ea[σ22(xμ2)2+σ12(xμ1)2]=logσ1σ2+21Ea[(σ221σ121)x2+(σ122μ1σ222μ2)x+σ22μ22σ12μ12]=logσ1σ2+2σ22σ12+(μ1μ2)221(10)

优化目标函数

公式(4)中的第一项是常数,第三项可以看作是第二项 t = 1 t=1 t=1 时的结果,所以我们主要考虑第二项。设 p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ;   μ θ ( x t , t ) , σ t 2 I ) p_\theta(x_{t-1}|x_t)=\mathcal{N}(x_{t-1};\ \mu_\theta(x_t,t),\sigma^2_tI) pθ(xt1xt)=N(xt1; μθ(xt,t),σt2I),根据公式(10),第二项可以化简为:
L t − 1 = E q [ 1 2 σ t 2 ∣ ∣ μ ~ t ( x t , x 0 ) − μ θ ( x t , t ) ∣ ∣ 2 ] + C (11) L_{t-1}=\mathbb{E}_q[\frac{1}{2\sigma^2_t}||\tilde{\mu}_t(x_t,x_0)-\mu_\theta(x_t,t)||^2]+C\tag{11} Lt1=Eq[2σt21∣∣μ~t(xt,x0)μθ(xt,t)2]+C(11)
将公式(9)代入公式(11)可以得到:
L t − 1 = E x t , ϵ [ 1 2 σ t 2 ∣ ∣ 1 α t ( x t − β t 1 − α ‾ t ϵ ) − μ θ ( x t , t ) ∣ ∣ 2 ] (12) L_{t-1}=\mathbb{E}_{x_t,\epsilon}[\frac{1}{2\sigma^2_t}||\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{\beta_t}{\sqrt{1-\overline{\alpha}_t}}\epsilon)-\mu_\theta(x_t,t)||^2]\tag{12} Lt1=Ext,ϵ[2σt21∣∣αt 1(xt1αt βtϵ)μθ(xt,t)2](12)
[3]作者进行了参数化 μ θ ( x t , t ) = 1 α t ( x t − β t 1 − α ‾ t ϵ θ ( x t , t ) ) \mu_\theta(x_t,t)=\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{\beta_t}{\sqrt{1-\overline{\alpha}_t}}\epsilon_\theta(x_t,t)) μθ(xt,t)=αt 1(xt1αt βtϵθ(xt,t)),相当于网络拟合的是每个时间点的噪声(为什么选择这样参数化我还没明白),同时代入公式(6),公式(12)进一步化简为:
L t − 1 = E x 0 , ϵ [ β t 2 2 σ t 2 α t ( 1 − α ‾ t ) ∣ ∣ ϵ − ϵ θ ( α ‾ t x 0 + 1 − α ‾ t ϵ , t ) ∣ ∣ 2 ] L_{t-1}=\mathbb{E}_{x_0,\epsilon}[\frac{\beta^2_t}{2\sigma^2_t\alpha_t(1-\overline{\alpha}_t)}||\epsilon-\epsilon_\theta(\sqrt{\overline{\alpha}_t}x_0+\sqrt{1-\overline{\alpha}_t}\epsilon,t)||^2] Lt1=Ex0,ϵ[2σt2αt(1αt)βt2∣∣ϵϵθ(αt x0+1αt ϵ,t)2]
[3]作者发现,将前面的系数丢掉,训练更加稳定,因此得到最终的损失:
L s i m p l e = E t , x 0 , ϵ [ ∣ ∣ ϵ − ϵ θ ( α ‾ t x 0 + 1 − α ‾ t ϵ , t ) ∣ ∣ 2 ] L_{simple}=\mathbb{E}_{t,x_0,\epsilon}[||\epsilon-\epsilon_\theta(\sqrt{\overline{\alpha}_t}x_0+\sqrt{1-\overline{\alpha}_t}\epsilon,t)||^2] Lsimple=Et,x0,ϵ[∣∣ϵϵθ(αt x0+1αt ϵ,t)2]

参考

[1] Understanding Diffusion Models: A Unified Perspective
[2] Deep Unsupervised Learning using Nonequilibrium Thermodynamics
[3] Denoising Diffusion Probabilistic Models
[4] What are Diffusion Models?
[5] Probabilistic Diffusion Model概率扩散模型理论文章来源地址https://www.toymoban.com/news/detail-403121.html

到了这里,关于理解扩散模型:Diffusion Models & DDPM的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 扩散模型DDPM开源代码的剖析【对应公式与作者给的开源项目,diffusion model】

    论文地址:https://proceedings.neurips.cc/paper/2020/hash/4c5bcfec8584af0d967f1ab10179ca4b-Abstract.html 项目地址:

    2023年04月08日
    浏览(36)
  • AI绘画能力的起源:通俗理解VAE、扩散模型DDPM、DETR、ViT/Swin transformer

    2018年我写过一篇博客,叫:《一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD》,该文相当于梳理了2019年之前CV领域的典型视觉模型,比如 2014 R-CNN 2015 Fast R-CNN、Faster R-CNN 2016 YOLO、SSD 2017 Mask R-CNN、YOLOv2 2018 YOLOv3 随着2019 CenterNet的发布,特别是2020发布的DETR(End-to-End

    2024年02月06日
    浏览(47)
  • Diffusion Models扩散模型简单讲解与简单实现

    图中: x 0 x_0 x 0 ​ 为图像, z z z 为采样自正态分布的噪音 扩散模型**是受非平衡热力学的启发。它们定义一个扩散步骤的马尔可夫链,逐渐向数据添加随机噪声,然后学习逆扩散过程,从噪声中构建所需的数据样本。与VAE或流动模型不同,扩散模型是用固定的程序学习的,

    2023年04月08日
    浏览(40)
  • SegDiff: Image Segmentation with Diffusion Probabilistic Models 基于扩散模型的图像语义分割模型

    目录 Diffusion models是生成模型的一种,同样的还有GAN,VAE,Flow模型等 Abstract 2、related work 3、背景 前向扩散表达: 反向生成过程: 4、理论 5、实验   论文地址:https://arxiv.org/pdf/2112.00390.pdf 代码:截至今天还未公开。 随着人工智能在图像生成,文本生成以及多模态生成等领域

    2024年02月02日
    浏览(51)
  • ICLR2022/扩散模型/语义分割:基于扩散模型的标签高效语义分割Label-efficient semantic segmentation with diffusion models

    论文下载 开源代码 去噪扩散概率模型最近受到了大量关注,因为它们优于其他方法,如GAN,并且目前提供了最先进的生成性能。扩散模型的卓越性能使其在多个应用中成为一个有吸引力的工具,包括绘画、超分辨率和语义编辑。在本文中,我们证明了扩散模型也可以作为语

    2023年04月08日
    浏览(37)
  • 扩散模型相关论文阅读,扩散模型和知识蒸馏的结合提升预测速度:Progressive Distillation for Fast Sampling of Diffusion Models

    谷歌research的成果,ICLR 2022 https://arxiv.org/abs/2202.00512 tenserflow官方开源代码: https://github.com/google-research/google-research/tree/master/diffusion_distillation pytorch非官方代码:https://github.com/lucidrains/imagen-pytorch 1.扩散模型虽然取得了很好的效果,但是预测速度慢。 2.作者提出了一种逐步蒸馏

    2024年02月16日
    浏览(37)
  • High-Resolution Image Synthesis with Latent Diffusion Models 稳定扩散模型论文笔记

    一、研究现状        早期图像生成方法主要是变分自动编码器(Variational Autoencoders, VAEs),该算法利用编码器和解码器以及变分推断的方法学习隐空间到真实图像空间的映射从而完成图像的生成。其优势是特征空间可迁移并且训练较为稳定,但是不容易进行模型评估,当输入

    2024年02月20日
    浏览(42)
  • 【扩散模型】2、DDPM | 去噪扩散概率模型开山之作

    论文:Denoising Diffusion Probabilistic Models 代码:https://github.com/hojonathanho/diffusion stable diffusion 代码实现:https://github.com/CompVis/stable-diffusion/blob/main/ldm/models/diffusion/ddpm.py 出处:伯克利 时间:2020.06 假设均值为 0,方差为 1 的高斯分布,则对应的噪声示例如下,就是在 0 附近分布的

    2024年02月07日
    浏览(43)
  • 【扩散模型】DDPM,DDIM

    ddpm是一类生成模型,其工作原理是逐渐向数据中添加噪声,然后学习如何逆转这一过程。这个想法是通过一个称为扩散的过程将一个简单的分布(通常是高斯噪声)转换成一个复杂的数据分布(如图像或音频),然后反向生成新的样本。 简单的过程可以描述如下: 从数据分布中的

    2024年01月17日
    浏览(43)
  • 扩散模型之DDPM

    最原文链接(英文):What are Diffusion Models? 原文链接:Diffusion扩散模型大白话讲解,看完还不懂?不可能 原文链接:DDPM解读(一)| 数学基础,扩散与逆扩散过程和训练推理方法 hugging face diffusers(扩散模型包):huggingface diffusers code 本文并非全部是个人理解,是觉得其他作者

    2024年02月10日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包