扩散模型初探之DDPM

深度生成模型

深度生成模型已经打开了另一个人类创造力的深奥领域。通过捕捉和概括数据中的模式,我们进入了全方位人工智能创造力(AIGC)的时代。值得注意的是,扩散模型作为最重要的生成模型之一,将人类构思转化为可在多个领域实现的具体实例,包括图像、文本、语音、生物学和医疗保健等。

如何让机器拥有类似人类的想象力?深度生成模型,包括变分自动编码器(VAE)、能量基模型(EBM)、生成对抗网络(GAN)、归一化流(NF) 和扩散模型,展示了在生成逼真样本方面的显著潜力。扩散模型代表了这一领域的先进水平。这些模型有效地克服了诸如VAE中后验分布对齐的障碍、缓解GAN中固有的对抗目标的不稳定性、解决在EBM训练过程中与马尔可夫链蒙特卡洛(MCMC)方法相关的计算负担,以及施加类似NF的网络约束。因此,扩散模型在计算机视觉、自然语言处理、时间序列、音频处理、图生成 和生物信息学 等各个领域引起了极大关注。

扩散模型包括两个相互关联的过程:一个预先定义的正向过程,将数据分布映射到一个更简单的先验分布,通常是高斯分布;以及一个对应的逆过程,利用训练有素的神经网络逐渐逆转正向过程的效应,通过模拟常微分方程或随机微分方程(ODE/SDE)。正向过程类似于一个具有时间变化系数的简单布朗运动。神经网络经过训练,利用去噪得分匹配目标来估计得分函数。因此,与GAN中采用的对抗目标相比,扩散模型提供了更稳定的训练目标,并且在生成质量方面优于VAE、EBM和NF。然而,需要强调的是,与GAN和VAE相比,扩散模型本质上需要更耗时的采样过程。这是由于通过使用常微分方程/随机微分方程(ODE/SDE)或马尔可夫过程将先验分布迭代转化为复杂的数据分布,需要在逆过程中进行大量的函数评估。此外,其他挑战包括逆过程的不稳定性,与在高维欧几里得空间中训练相关的计算要求和约束,以及涉及可能性优化的复杂性。为了应对这些挑战,研究人员提出了各种解决方案。例如,提出了先进的ODE/SDE求解器来加速采样过程,同时采用了模型蒸馏策略 来实现相同的目标。此外,还引入了新颖的正向过程,以增强采样稳定性或促进降维。此外,最近的一系列研究尝试利用扩散模型有效地桥接任意分布。为了提供系统性的概览,我们将这些进展划分为四个主要领域:采样加速、扩散过程设计、可能性优化和桥接分布。

扩散模型初探

说到扩散模型,一般的文章都会提到能量模型(Energy-based Models)、得分匹配(Score Matching)、朗之万方程(Langevin Equation)等等,简单来说,是通过得分匹配等技术来训练能量模型,然后通过郎之万方程来执行从能量模型的采样。

从理论上来讲,这是一套很成熟的方案,原则上可以实现任何连续型对象(语音、图像等)的生成和采样。但从实践角度来看,能量函数的训练是一件很艰难的事情,尤其是数据维度比较大(比如高分辨率图像)时,很难训练出完备能量函数来;另一方面,通过朗之万方程从能量模型的采样也有很大的不确定性,得到的往往是带有噪声的采样结果。所以很长时间以来,这种传统路径的扩散模型只是在比较低分辨率的图像上做实验。

如今生成扩散模型的大火,则是始于2020年所提出的DDPM(Denoising Diffusion Probabilistic Model),虽然也用了“扩散模型”这个名字,但事实上除了采样过程的形式有一定的相似之外,DDPM与传统基于朗之万方程采样的扩散模型可以说完全不一样,这完全是一个新的起点、新的篇章。

准确来说,DDPM叫“渐变模型”更为准确一些,扩散模型这一名字反而容易造成理解上的误解,传统扩散模型的能量模型、得分匹配、朗之万方程等概念,其实跟DDPM及其后续变体都没什么关系。有意思的是,DDPM的数学框架其实在ICML2015的论文《Deep Unsupervised Learning using Nonequilibrium Thermodynamics》就已经完成了,但DDPM是首次将它在高分辨率图像生成上调试出来了,从而引导出了后面的火热。由此可见,一个模型的诞生和流行,往往还需要时间和机遇,

DDPM模型概述

DDPM包括两个过程:前向过程(forward process)反向过程(reverse process),其中前向过程又称为扩散过程(diffusion process),如下图所示。无论是前向过程还是反向过程都是一个参数化的马尔可夫链(Markov chain),其中反向过程可以用来生成数据。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

前向过程(Diffusion Process)

前向过程是指对数据逐渐增加高斯噪音直至数据变成随机噪音的过程。对于原始数据 x 0 ∼ q ( x 0 ) x_0\sim q(x_0) x0q(x0),总共包含 T T T步的扩散过程的每一步都是对上一步得到的数据 x t − 1 x_{t-1} xt1按如下方式增加高斯噪音
q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) (1a) q({x_t}|{x_{t-1}})=\mathcal{N}({x_t};\sqrt{1-\beta_t}{x_{t-1}},\sqrt{\beta_{t}}{I})\tag{1a} q(xtxt1)=N(xt;1βt xt1,βt I)(1a)
该式同样可写为:
x t = 1 − β t x t − 1 + β t ε t , ε t ∼ N ( 0 , I ) (1b) {x_t}=\sqrt{1-\beta_t}{x_{t-1}}+\sqrt{\beta_t}\varepsilon_t, \qquad\varepsilon_t\sim\mathcal{N}(0,{I})\tag{1b} xt=1βt xt1+βt εt,εtN(0,I)(1b)
其中 { β t } t = 1 T \{\beta_t\}^T_{t=1} {βt}t=1T为每一步所采用的方差,介于0到1之间。对于扩散模型,我们往往称不同step的方差设定为variance schedule或者noise schedule,通常情况下,越后面的step会采用更大的方差,即满足 β 1 < β 2 < ⋯ < β T \beta_1<\beta_2<\cdots<\beta_T β1<β2<<βT。在一个设计好的variance schedule下,如果step数 T T T足够大,那么最终得到的 x t x_t xt就完全丢失了原始数据而变成了一个随机噪音。扩散过程的每一步都生成一个带噪音的数据 x t x_t xt,整个扩散过程也就是一个马尔科夫链:
q ( x 1 : T ∣ x 0 ) = ∏ t = 1 T q ( x t ∣ x t − 1 ) (2) q(x_{1:T}|x_0)=\prod^T_{t=1}q(x_t|x_{t-1})\tag{2} q(x1:Tx0)=t=1Tq(xtxt1)(2)
实际上,任意时刻的 q ( x t ) q(x_t) q(xt)推导也可以完全基于 x 0 x_0 x0 β t \beta_t βt来计算,无需迭代:
x t = 1 − β t x t − 1 + β t ε t = 1 − β t ( 1 − β t − 1 x t − 1 + β t − 1 ε t − 1 ) + β t ε t = 1 − β t 1 − β t − 1 x t − 1 + 1 − β t β t − 1 ε t − 1 + β t ε t = 1 − β t 1 − β t − 1 x t − 1 + β t ( 1 − β t − 1 ) + β t − 1 ε t ˉ = 1 − β t 1 − β t − 1 x t − 1 + 1 − ( 1 − β t ) ( 1 − β t − 1 ) ε t ˉ = ⋯ = 1 − β ˉ t x 0 + β ˉ t ε \begin{aligned} {x_t}=&\sqrt{1-\beta_t}{x_{t-1}}+\sqrt{\beta_t}\varepsilon_t \\ =&\sqrt{1-\beta_t}(\sqrt{1-\beta_{t-1}}{x_{t-1}}+\sqrt{\beta_{t-1}}\varepsilon_{t-1})+\sqrt{\beta_t}\varepsilon_t\\ =&\sqrt{1-\beta_t}\sqrt{1-\beta_{t-1}}{x_{t-1}}+\sqrt{1-\beta_t}\sqrt{\beta_{t-1}}\varepsilon_{t-1}+\sqrt{\beta_t}\varepsilon_t\\ =&\sqrt{1-\beta_t}\sqrt{1-\beta_{t-1}}{x_{t-1}}+\sqrt{\beta_t(1-\beta_{t-1})+\beta_{t-1}}\bar{\varepsilon_t}\\ =&\sqrt{1-\beta_t}\sqrt{1-\beta_{t-1}}{x_{t-1}}+\sqrt{1-(1-\beta_t)(1-\beta_{t-1})}\bar{\varepsilon_t}\\ =&\cdots\\ =&\sqrt{1-\bar\beta_t}{x_{0}}+\sqrt{\bar\beta_t}\varepsilon \end{aligned} xt=======1βt xt1+βt εt1βt (1βt1 xt1+βt1 εt1)+βt εt1βt 1βt1 xt1+1βt βt1 εt1+βt εt1βt 1βt1 xt1+βt(1βt1)+βt1 εtˉ1βt 1βt1 xt1+1(1βt)(1βt1) εtˉ1βˉt x0+βˉt ε

其中, ε ˉ t \bar\varepsilon_t εˉt是通过高斯分布混合得到的。对 N ( 0 , σ 1 2 I ) \mathcal{N}({0},\sigma^2_1{I}) N(0,σ12I) N ( 0 , σ 2 2 I ) \mathcal{N}({0},\sigma^2_2{I}) N(0,σ22I)两个高斯分布进行混合,得到新的分布: N ( 0 , ( σ 1 2 + σ 2 2 ) I ) \mathcal{N}({0},(\sigma^2_1+\sigma^2_2){I}) N(0,(σ12+σ22)I),其中对应的标准差为: β t ( 1 − β t − 1 ) + β t − 1 = β t ( 1 − β t − 1 ) − ( 1 − β t − 1 ) + 1 = 1 − ( 1 − β t ) ( 1 − β t − 1 ) \sqrt{\beta_t(1-\beta_{t-1})+\beta_{t-1}}=\sqrt{\beta_t(1-\beta_{t-1})-(1-\beta_{t-1})+1}=\sqrt{1-(1-\beta_t)(1-\beta_{t-1})} βt(1βt1)+βt1 =βt(1βt1)(1βt1)+1 =1(1βt)(1βt1)

q ( x t ∣ x 0 ) = N ( x t ; β ˉ t x 0 , ( 1 − α ˉ t ) I ) q({x_t}|{x_0})=\mathcal{N}({x_t};\sqrt{\bar\beta_t}{x_0},(1-\bar\alpha_t){I}) q(xtx0)=N(xt;βˉt x0,(1αˉt)I),其中 β ˉ t = β 1 β 2 ⋯ β t \bar\beta_t=\beta_1\beta_2\cdots\beta_t βˉt=β1β2βt

逆向过程(Reverse Process)

逆向过程是从高斯噪声中回复原始数据,我们可以假设它也是一个高斯分布,但是无法逐步地去拟合分布,所以需要构建一个参数分布来做估计。即根据上述信息中求出逆向过程所需要的 p ( x t − 1 ∣ x t ) p(x_{t-1}|x_t) p(xt1xt),从而实现从任意一个 x T = z x_T=z xT=z出发,逐步采样出 x T − 1 , x T − 2 , ⋯   , x 1 x_{T-1},x_{T-2},\cdots,x_1 xT1,xT2,,x1,最后得到随机生成的样本数据 x 0 = x x_0=x x0=x。逆扩散过程仍然是一个马尔科夫链过程。
p θ ( x 0 : T ) = p ( x T ) ∏ t = 1 T p θ ( x t − 1 ∣ x t ) , p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , ∑ θ ( x t , t ) ) p_\theta(x_{0:T})=p(x_T)\prod^T_{t=1}p_\theta(x_{t-1}|x_t),\qquad p_\theta(x_{t-1}|x_t)=\mathcal{N}(x_{t-1};\mu_\theta(x_t,t),\textstyle\sum_\theta(x_t,t)) pθ(x0:T)=p(xT)t=1Tpθ(xt1xt),pθ(xt1xt)=N(xt1;μθ(xt,t),θ(xt,t))
根据贝叶斯定理有:
p ( x t − 1 ∣ x t ) = p ( x t ∣ x t − 1 ) p ( x t − 1 ) p ( x t ) p(x_{t-1}|x_t)=\frac{p(x_t|x_{t-1})p(x_{t-1})}{p(x_t)} p(xt1xt)=p(xt)p(xtxt1)p(xt1)
由于 q ( x t − 1 ) , q ( x t ) q(x_{t-1}),q(x_t) q(xt1),q(xt)是未知的,因此可以在给定的 x 0 x_0 x0的条件下使用贝叶斯定理:
p ( x t − 1 ∣ x t , x 0 ) = p ( x t ∣ x t − 1 , x 0 ) p ( x t − 1 ∣ x 0 ) p ( x t ∣ x 0 ) (3) p(x_{t-1}|x_t,x_0)=\frac{p(x_t|x_{t-1},x_0)p(x_{t-1}|x_0)}{p(x_t|x_0)}\tag{3} p(xt1xt,x0)=p(xtx0)p(xtxt1,x0)p(xt1x0)(3)
其中 p ( x t ∣ x t − 1 , x 0 ) , p ( x t − 1 ∣ x 0 ) , p ( x t ∣ x 0 ) p(x_t|x_{t-1},x_0),p(x_{t-1}|x_0),p(x_t|x_0) p(xtxt1,x0),p(xt1x0),p(xtx0)均是已知的,代入各自的表达式得到:
p ( x t − 1 ∣ 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 α ˉ 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 ) ) ) (4) \begin{aligned} p(x_{t-1}|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{\bar\alpha_{t-1}}x_{0})^2}{\bar\alpha_{t-1}}-\frac{(x_t-\sqrt{\bar\alpha_t}x_{0})^2}{1-\bar\alpha_t}))\\ &=exp(-\frac{1}{2}((\frac{\alpha_t}{\beta_t}+\frac{1}{1-\bar\alpha_{t-1}})x^2_{t-1}-(\frac{2\sqrt{\alpha_t}}{\beta_t}x_t+\frac{2\sqrt{\bar\alpha_{t-1}}}{1-\bar\alpha_{t-1}}x_0)x_{t-1}+C(x_t,x_0)))\tag{4} \end{aligned} p(xt1xt,x0)exp(21(βt(xtαt xt1)2+αˉ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)))(4)
其中, C ( x t , x 0 ) C(x_t,x_0) C(xt,x0)是与 x t − 1 x_{t-1} xt1无关的项。

由高斯分布的概率密度函数以及平方和公式
f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 a x 2 + b x = a ( x + b 2 a ) 2 + C \begin{aligned} &f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}}\\ &ax^2+bx=a(x+\frac{b}{2a})^2+C \end{aligned} f(x)=2π σ1e2σ2(xμ)2ax2+bx=a(x+2ab)2+C
可得,式(4)中 p ( x t − 1 ∣ x t , x 0 ) p(x_{t-1}|x_t,x_0) p(xt1xt,x0)的均值和方差为:
μ ˉ ( x t , x 0 ) = μ = − b 2 a = ( α t β t + α ˉ t 1 − α ˉ t x 0 ) / ( α t β t + 1 1 − α ˉ t − 1 ) = α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t + α ˉ t − 1 β t 1 − α ˉ t x 0 β ˉ t = σ 2 = 1 a = 1 / ( α t β t + 1 1 − α ˉ t − 1 ) = 1 − α ˉ t − 1 1 − α ˉ t ⋅ β t (5) \begin{aligned} \bar\mu(x_t,x_0)=\mu=-\frac{b}{2a}&=(\frac{\sqrt{\alpha_t}}{\beta_t}+\frac{\sqrt{\bar\alpha_t}}{1-\bar\alpha_t}x_0)/(\frac{\alpha_t}{\beta_t}+\frac{1}{1-\bar\alpha_{t-1}})\\ &=\frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})}{1-\bar\alpha_t}x_t+\frac{\sqrt{\bar\alpha_{t-1}}\beta_t}{1-\bar\alpha_t}x_0 \tag{5}\\ \bar\beta_t=\sigma^2=\frac{1}{a}&=1/(\frac{\alpha_t}{\beta_t}+\frac{1}{1-\bar\alpha_{t-1}})=\frac{1-\bar\alpha_{t-1}}{1-\bar\alpha_t}\cdot\beta_t \end{aligned} μˉ(xt,x0)=μ=2abβˉt=σ2=a1=(βtαt +1αˉtαˉt x0)/(βtαt+1αˉt11)=1αˉtαt (1αˉt1)xt+1αˉtαˉt1 βtx0=1/(βtαt+1αˉt11)=1αˉt1αˉt1βt(5)
至此,我们得到了完整的 p ( x t − 1 ∣ x t , x 0 ) p(x_{t-1}|x_t,x_0) p(xt1xt,x0)表达式,即
p ( x t − 1 ∣ x t , x 0 ) = N ( x t − 1 ; α t β t x t + α ˉ t − 1 β t 2 β ˉ t 2 x 0 , β ˉ t − 1 β t 2 β ˉ t 2 I ) (6) p(x_{t-1}|x_t,x_0)=\mathcal{N}(x_{t-1};\frac{\sqrt{\alpha_t}}{\beta_t}x_t+\frac{\bar\alpha_{t-1}\beta^2_{t}}{\bar\beta^2_t}x_0,\frac{\bar\beta_{t-1}\beta^2_{t}}{\bar\beta^2_t}I)\tag{6} p(xt1xt,x0)=N(xt1;βtαt xt+βˉt2αˉt1βt2x0,βˉt2βˉt1βt2I)(6)
此时,我们得到了 p ( x t − 1 ∣ x t , x 0 ) p(x_{t-1}|x_t,x_0) p(xt1xt,x0),但这并非我们期望的最终答案,我们的目的是通过 x t x_t xt来预测 x t − 1 x_{t-1} xt1,而不能依赖 x 0 x_0 x0 x 0 x_0 x0是我们最终想要生成的结果。

如果我们能够通过 x t x_t xt来预测 x 0 x_0 x0,那么就可以使得 p ( x t − 1 ∣ x t , x 0 ) p(x_{t-1}|x_t,x_0) p(xt1xt,x0)仅依赖于 x t x_t xt

为了实现这个目的,我们通过 μ ˉ ( x t ) \bar\mu(x_t) μˉ(xt)来预估 x 0 x_0 x0,损失函数为 ∣ ∣ x 0 − μ ˉ ( x t ) ∣ ∣ 2 ||x_0-\bar\mu(x_t)||^2 ∣∣x0μˉ(xt)2。训练完成后,我们认为:
p ( x t − 1 ∣ x t ) ≈ p ( x t − 1 ∣ x t , x 0 = μ ˉ ( x t ) ) = N ( x t − 1 ; α t β t x t + α ˉ t − 1 β t 2 β ˉ t 2 μ ˉ ( x t ) , β ˉ t − 1 β t 2 β ˉ t 2 I ) p(x_{t-1}|x_t)\approx p(x_{t-1}|x_t,x_0=\bar\mu(x_t))=\mathcal{N}(x_{t-1};\frac{\sqrt{\alpha_t}}{\beta_t}x_t+\frac{\bar\alpha_{t-1}\beta^2_{t}}{\bar\beta^2_t}\bar\mu(x_t),\frac{\bar\beta_{t-1}\beta^2_{t}}{\bar\beta^2_t}I) p(xt1xt)p(xt1xt,x0=μˉ(xt))=N(xt1;βtαt xt+βˉt2αˉt1βt2μˉ(xt),βˉt2βˉt1βt2I)
由前向过程推导可知 x 0 x_0 x0 x t x_t xt的关系:
x 0 = 1 α ˉ t ( x t − 1 − α ˉ t ε ) x_0=\frac{1}{\sqrt{\bar\alpha_t}}(x_t-\sqrt{1-\bar\alpha_t}\varepsilon) x0=αˉt 1(xt1αˉt ε)
代入式(5)可得:
μ ˉ ( x t ) = α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t + α ˉ t − 1 β t 1 − α ˉ t x 0 = α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t + α ˉ t − 1 β t 1 − α ˉ t ⋅ 1 α ˉ t ( x t − 1 − α ˉ t ε ) = [ α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t + α ˉ t − 1 β t / α ˉ t 1 − α ˉ t ] x t − α ˉ t − 1 β t 1 − α ˉ t α ˉ t 1 − α ˉ t ε = [ α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t + β t / α t 1 − α ˉ t ] x t − β t α t 1 − α ˉ t ε = α t ( 1 − α ˉ t − 1 ) + β t α t ( 1 − α ˉ t ) x t − β t α t 1 − α ˉ t ε = α t − α ˉ t + β t α t ( 1 − α ˉ t ) x t − β t α t 1 − α ˉ t ε = 1 − α ˉ t α t ( 1 − α ˉ t ) x t − β t α t 1 − α ˉ t ε = 1 α t ( x t − β t 1 − α ˉ t ε ) (7) \begin{aligned} \bar\mu(x_t)&=\frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})}{1-\bar\alpha_t}x_t+\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+\frac{\sqrt{\bar\alpha_{t-1}}\beta_t}{1-\bar\alpha_t}\cdot\frac{1}{\sqrt{\bar\alpha_t}}(x_t-\sqrt{1-\bar\alpha_t}\varepsilon)\\ &=[\frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})}{1-\bar\alpha_t}+\frac{\sqrt{\bar\alpha_{t-1}}\beta_t/\sqrt{\bar\alpha_t}}{1-\bar\alpha_t}]x_t-\frac{\sqrt{\bar\alpha_{t-1}}\beta_t\sqrt{1-\bar\alpha_t}}{\sqrt{\bar\alpha_t}1-\bar\alpha_t}\varepsilon\\ &=[\frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})}{1-\bar\alpha_t}+\frac{\beta_t/\sqrt{\alpha_t}}{1-\bar\alpha_t}]x_t-\frac{\beta_t}{\sqrt{\alpha_t}\sqrt{1-\bar\alpha_t}}\varepsilon\\ &=\frac{\alpha_t(1-\bar\alpha_{t-1})+\beta_t}{\sqrt{\alpha_t}(1-\bar\alpha_t)}x_t-\frac{\beta_t}{\sqrt{\alpha_t}\sqrt{1-\bar\alpha_t}}\varepsilon\\ &=\frac{\alpha_t-\bar\alpha_{t}+\beta_t}{\sqrt{\alpha_t}(1-\bar\alpha_t)}x_t-\frac{\beta_t}{\sqrt{\alpha_t}\sqrt{1-\bar\alpha_t}}\varepsilon\\ &=\frac{1-\bar\alpha_{t}}{\sqrt{\alpha_t}(1-\bar\alpha_t)}x_t-\frac{\beta_t}{\sqrt{\alpha_t}\sqrt{1-\bar\alpha_t}}\varepsilon\\ &=\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{\beta_t}{\sqrt{1-\bar\alpha_t}}\varepsilon)\tag{7} \end{aligned} μˉ(xt)=1αˉtαt (1αˉt1)xt+1αˉtαˉt1 βtx0=1αˉtαt (1αˉt1)xt+1αˉtαˉt1 βtαˉt 1(xt1αˉt ε)=[1αˉtαt (1αˉt1)+1αˉtαˉt1 βt/αˉt ]xtαˉt 1αˉtαˉt1 βt1αˉt ε=[1αˉtαt (1αˉt1)+1αˉtβt/αt ]xtαt 1αˉt βtε=αt (1αˉt)αt(1αˉt1)+βtxtαt 1αˉt βtε=αt (1αˉt)αtαˉt+βtxtαt 1αˉt βtε=αt (1αˉt)1αˉtxtαt 1αˉt βtε=αt 1(xt1αˉt βtε)(7)
则损失函数变为:
∣ ∣ x 0 − μ ˉ ( x t ) ∣ ∣ 2 = β ˉ t α ˉ t ∣ ∣ ε − ϵ θ ( α ˉ t x 0 + β ˉ t ε , t ) ∣ ∣ 2 ||x_0-\bar\mu(x_t)||^2=\frac{\bar\beta_t}{\bar\alpha_t}||\varepsilon-\epsilon_\theta(\sqrt{\bar\alpha_t}x_0+\sqrt{\bar\beta_t}\varepsilon,t)||^2 ∣∣x0μˉ(xt)2=αˉtβˉt∣∣εϵθ(αˉt x0+βˉt ε,t)2

文生图应用初窥

基于原始的扩散模型,利用文本图像对进行文生图训练。在使用Noise Predicter进行Denoise时,将文本输入到Noise Predicter模块进行约束。为了将文本输入到模型中,并让模型效率更高,基于LLM进行自然语言文本的编码,经过Text Encoder后得到向量化的文本,基于扩散模型得到结果后,使用Decoder得到最终的图像。其中,Decoder一般是一个将图像放大的模块,从而实现在生成模型中使用较小特征图进行推理,将推理结果使用decoder得到目标图片。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考文献

https://t.bilibili.com/700526762586538024

https://kexue.fm/archives/9164

https://zhuanlan.zhihu.com/p/637815071

https://zhuanlan.zhihu.com/p/563661713

https://medium.com/@gitau_am/a-friendly-introduction-to-denoising-diffusion-probabilistic-models-cc76b8abef25

https://arxiv.org/abs/2209.02646

  • 18
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 扩散动力学模型(Diffusion Dynamics Model, DDPM)是一种用于研究扩散过程的数学模型。通常,DDPM 模型用来描述信息、病毒、情绪、偏见等在社会网络中的传播。 DDPM 模型通常使用下列方程来描述扩散过程: 对于网络中的每个节点 i,定义 x_i 为节点 i 的状态(例如,可以为感染、未感染、中立等)。 则有: dx_i/dt = (1 - x_i) * sum(a_ij * x_j) - x_i * sum(b_ij * x_j) 其中,a_ij 和 b_ij 分别表示从节点 j 到节点 i 的影响力(即,节点 i 在节点 j 影响下的变化率)。 通常,a_ij 和 b_ij 都是函数,可以根据节点 i 和 j 的相关属性(例如,年龄、性别、关系等)来计算。 例如,a_ij 可以表示为: a_ij = w_ij * f(x_j) 其中,w_ij 表示节点 j 对节点 i 的影响力,f(x_j) 表示节点 j 的状态对节点 i 的影响。 可以使用数值积分或动态规划等方法来求解 DDPM 模型。 希望这些信息对你有帮助。如果你有其他问题,欢迎随时问 ### 回答2: DDPM是深度概率的生成模型之一,用于对数据进行建模和生成。它基于概率密度传播机制,可以通过迭代的方式逐步逼近数据分布。 DDPM的核心思想是使用生成网络来模拟数据分布,并通过对抗训练的方式进行参数优化。具体来说,DDPM使用生成器网络来生成样本,同时使用判别器网络来评估生成样本与真实样本之间的差异。生成器网络的目标是生成以数据分布为目标的样本,而判别器网络的目标是区分生成样本和真实样本。 扩散模型具体指的是DDPM中的生成网络是通过对各个层进行可逆扩散操作来生成样本的。在每一次迭代中,生成器网络会通过扩散过程对随机噪声进行迭代扩散,从而逐渐逼近目标数据分布。这种扩散机制可以通过类似蒙特卡洛方法的采样和反向传播过程来实现。通过不断的迭代优化,生成器网络可以逐渐生成符合目标数据分布的样本。 为了保证生成样本质量,DDPM中使用了判别器网络对生成样本和真实样本进行区分。判别器网络的目标是尽可能准确地判断生成样本的真实性。生成器网络则通过最小化判别器对生成样本的评价来进行优化。 总结来说,DDPM是一种使用扩散模型进行数据建模和生成的深度概率模型。它通过迭代的方式逐步逼近数据分布,同时使用判别器网络对生成样本进行评估和优化。这种模型可以用于生成各种类型的数据,例如图像、音频等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值