Diffusion Model (扩散生成模型)的基本原理详解(三)Stochastic Differential Equation(SDE)

这篇具有很好参考价值的文章主要介绍了Diffusion Model (扩散生成模型)的基本原理详解(三)Stochastic Differential Equation(SDE)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本篇是《Diffusion Model (扩散生成模型)的基本原理详解(二)Score-Based Generative Modeling(SGM)》的续写,继续介绍有关diffusion的另一个相关模型,同理,参考文献和详细内容与上一篇相同,读者可自行查阅,本篇为Diffusion入门基础介绍的完结篇,本篇来着重介绍Stochastic Differential Equation(SDE)的部分。本文的理论大部分来源于Song Yang et al的SDE原文,链接请点击。
本篇内容需要具有前置知识《随机过程》的学习。

3、Stochastic Differential Equation(SDE)

我们注意到,不论是DDPM,还是SGM而言,它们都存在一个共同的特性:加噪链和去噪过程都是离散化的,即他们按照时间步 1 ~ T 1~T 1T被打散,我们已经强调过,当然时间 T T T 需要足够大,才可以保证我们最终加噪后的样本趋近于标准正态分布(如果不懂的请看第一节介绍)。事实上,这是一个随机的过程,SDE的思想是想将这个离散的随机控制过程连续化,那么就要涉及随机微分方程(随机控制)的理论和原理了。Song Yang et al.详细的对这个过程进行了可视化的描述(从图中我们可以看出想要通过一个连续的过程来描述该问题)。
Diffusion Model (扩散生成模型)的基本原理详解(三)Stochastic Differential Equation(SDE)

3.1、Forward Brownian motion SDE(正时序加噪布朗运动随机微分方程)

首先给出该正时序随机微分方程的公式,其中 f ( x , t ) f(x,t) f(x,t)称为 x ( t ) x(t) x(t)的漂移系数, g ( t ) g(t) g(t)称为 x ( t ) x(t) x(t)的扩散系数。 w w w为正时序标准布朗运动。
d x = f ( x , t ) d t + g ( t ) d w dx=f(x,t)dt+g(t)dw dx=f(x,t)dt+g(t)dw
下面我们来证明不管是DDPM还是SGM,他们都是作为SDE的离散化版本。

3.1.1、DDPM与Forward Brownian motion SDE等价性

我们已经从(一)中知道,针对DDPM而言,一个长度链为 N N N的加噪过程为:
x i = 1 − β i x i − 1 + β i z i − 1 x_i=\sqrt{1-\beta_i}x_{i-1}+\sqrt{\beta_i}z_{i-1} xi=1βi xi1+βi zi1
β i ^ = β i N \hat{\beta_i}=\frac{\beta_i}{N} βi^=Nβi,令 β ( i N ) = β i ^ \beta(\frac{i}{N})=\hat{\beta_i} β(Ni)=βi^ x ( i N ) = x i x(\frac{i}{N})=x_i x(Ni)=xi z ( i N ) = z i z(\frac{i}{N})=z_i z(Ni)=zi
则上式可被改写为:
x ( i N ) = 1 − 1 N β ( i N ) x ( i − 1 N ) + 1 N β ( i N ) z ( i − 1 N ) x(\frac{i}{N})=\sqrt{1-\frac{1}{N}\beta(\frac{i}{N})}x(\frac{i-1}{N})+\sqrt{\frac{1}{N}\beta(\frac{i}{N})}z(\frac{i-1}{N}) x(Ni)=1N1β(Ni) x(Ni1)+N1β(Ni) z(Ni1)
若将 i N \frac{i}{N} Ni视为一个离散小步长,那么我们可以认为这等价于:
x ( t i ) = 1 − △ t β ( t i ) x ( t i − 1 ) + △ t β ( t i ) z ( t i − 1 ) x( t_i)=\sqrt{1-\bigtriangleup t\beta( t_i)}x( t_{i-1})+\sqrt{\bigtriangleup t\beta( t_i)}z( t_{i-1}) x(ti)=1(ti) x(ti1)+(ti) z(ti1)
将其连续化: t i − 1 + △ t = t i t_{i-1}+\bigtriangleup t=t_i ti1+t=ti
x ( t + △ t ) = 1 − △ t β ( t + △ t ) x ( t ) + △ t β ( t + △ t ) z ( t ) x(t+\bigtriangleup t)=\sqrt{1-\bigtriangleup t\beta(t+\bigtriangleup t)}x(t)+\sqrt{\bigtriangleup t\beta(t+\bigtriangleup t)}z( t) x(t+t)=1(t+t) x(t)+(t+t) z(t)
将其Taylor近似进行展开
x ( t + △ t ) ≈ [ 1 − 1 2 △ t β ( t + △ t ) ] x ( t ) + △ t β ( t + △ t ) z ( t ) —— [ D D P M ] x(t+\bigtriangleup t)\approx[1-\frac{1}{2}\bigtriangleup t\beta(t+\bigtriangleup t)]x(t)+\sqrt{\bigtriangleup t\beta(t+\bigtriangleup t)}z( t)——[DDPM] x(t+t)[121(t+t)]x(t)+(t+t) z(t)——[DDPM]
x ( t + △ t ) − x ( t ) ≈ − 1 2 △ t β ( t ) x ( t ) + △ t β ( t ) z ( t ) —— [ D D P M ] x(t+\bigtriangleup t)-x(t)\approx-\frac{1}{2}\bigtriangleup t\beta(t)x(t)+\sqrt{\bigtriangleup t\beta(t)}z(t)——[DDPM] x(t+t)x(t)21(t)x(t)+(t) z(t)——[DDPM]
而这即:
d x = − 1 2 β ( t ) x ( t ) d t + β ( t ) d w —— [ S D E ] ≈ [ D D P M ] dx=-\frac{1}{2}\beta(t)x(t)dt+\sqrt{\beta(t)}dw——[SDE]\approx[DDPM] dx=21β(t)x(t)dt+β(t) dw——[SDE][DDPM]

3.1.2、SGM与Forward Brownian motion SDE等价性

我们已经从(二)中知道,针对SGM而言,一个长度链为 N N N的加噪过程为:
x i ~ N ( x 0 , σ i 2 I ) , x i − 1 ~ N ( x 0 , σ i − 1 2 I ) x_i~N(x_0,\sigma_i^2I),x_{i-1}~N(x_0,\sigma_{i-1}^2I) xiN(x0,σi2I)xi1N(x0,σi12I)
x i x_i xi可以视为从 x i − 1 x_{i-1} xi1处加上了一个独立的 N ( 0 , ( σ i 2 − σ i − 1 2 ) I ) N(0,(\sigma_i^2-\sigma_{i-1}^2)I) N(0,(σi2σi12)I)来获得。

x i = x i − 1 + ( σ i 2 − σ i − 1 2 ) z i − 1 x_i=x_{i-1}+\sqrt{(\sigma_i^2-\sigma_{i-1}^2)}z_{i-1} xi=xi1+(σi2σi12) zi1
x ( i N ) = x i , σ ( i N ) = σ i , z ( i N ) = z i , x i = x i − 1 + △ t x(\frac{i}{N})=x_i,\sigma(\frac{i}{N})=\sigma_i,z(\frac{i}{N})=z_i,x_i=x_{i-1}+\bigtriangleup t x(Ni)=xiσ(Ni)=σiz(Ni)=zixi=xi1+t
上式变成了:
x ( t + △ t ) = x ( t ) + ( σ 2 ( t + △ t ) − σ 2 ( t ) ) z t x(t+\bigtriangleup t)=x(t)+\sqrt{(\sigma^2(t+\bigtriangleup t)-\sigma^2(t))}z_{t} x(t+t)=x(t)+(σ2(t+t)σ2(t)) zt
x ( t + △ t ) − x ( t ) = ( σ 2 ( t + △ t ) − σ 2 ( t ) ) △ t △ t z t t —— [ S G M ] x(t+\bigtriangleup t)-x(t)=\sqrt{\frac{(\sigma^2(t+\bigtriangleup t)-\sigma^2(t))}{\bigtriangleup t}\bigtriangleup t}z_{t}t——[SGM] x(t+t)x(t)=t(σ2(t+t)σ2(t))t ztt——[SGM]
x ( t + △ t ) − x ( t ) ≈ d ( σ 2 ( t ) ) d t △ t z t —— [ S G M ] x(t+\bigtriangleup t)-x(t)\approx\sqrt{\frac{d(\sigma^2(t))}{dt}\bigtriangleup t}z_t——[SGM] x(t+t)x(t)dtd(σ2(t))t zt——[SGM]
而这即:
d x = d ( σ 2 ( t ) ) d t d w —— [ S D E ] ≈ [ S G M ] dx=\sqrt{\frac{d(\sigma^2(t))}{dt}}dw——[SDE]\approx[SGM] dx=dtd(σ2(t)) dw——[SDE][SGM]

3.1.3、新性能SDE

由于上述讨论我们已经知道了如下的等价性:
d x = − 1 2 β ( t ) x ( t ) d t + β ( t ) d w —— [ S D E ] ≈ [ D D P M ] dx=-\frac{1}{2}\beta(t)x(t)dt+\sqrt{\beta(t)}dw——[SDE]\approx[DDPM] dx=21β(t)x(t)dt+β(t) dw——[SDE][DDPM]
d x = d ( σ 2 ( t ) ) d t d w —— [ S D E ] ≈ [ S G M ] dx=\sqrt{\frac{d(\sigma^2(t))}{dt}}dw——[SDE]\approx[SGM] dx=dtd(σ2(t)) dw——[SDE][SGM]
Song等人提出了一种表现性能更好的SDE方法作为代替:
d x = − 1 2 β ( t ) x ( t ) d t + β ( t ) ( 1 − 2 e − 2 ∫ o t β ( s ) d s ) d w —— [ N S D E ] dx=-\frac{1}{2}\beta(t)x(t)dt+\sqrt{\beta(t)(1-2e^{-2\int_o^t\beta(s)ds})}dw——[NSDE] dx=21β(t)x(t)dt+β(t)(12e2otβ(s)ds) dw——[NSDE]

通过3.1.2和3.1.1的简要证明,我们给出了SDE与DDPM/SGM在加噪链的等价性,说明了DDPM与SGM在加噪过程是一种离散化的SDE过程。SDE则为上述二者的连续加噪推广综合考虑二者的缺陷和有点,作者提出了一种NSDE方法。

3.2、Reverse Brownian motion SDE(逆时序去噪布朗运动随机微分方程)

3.2.1、Reverse Brownian motion SDE

正向加噪过程的逆过程被Anderson指出仍然也是一个随机微分方程。Song等人给出了这一部分的详细说明,公式如下,其中 f ( x , t ) f(x,t) f(x,t)称为 x ( t ) x(t) x(t)的漂移系数, g ( t ) g(t) g(t)称为 x ( t ) x(t) x(t)的扩散系数。 w ^ \hat{w} w^为逆时序标准布朗运动, p t ( x ) p_t(x) pt(x) x ( t ) x(t) x(t)分布密度函数。
d x = [ f ( x , t ) − g 2 ( t ) ∇ x l o g ( p t ( x ) ) ] d t + g ( t ) d w ^ dx=[f(x,t)-g^2(t)\nabla_xlog(p_t(x))]dt+g(t)d\hat{w} dx=[f(x,t)g2(t)xlog(pt(x))]dt+g(t)dw^

3.2.2、Probability Flow ODE(概率流常微分方程)与SDE的轨迹等价性。

Song等人证明了对于任何逆时序去噪声布朗运动随机微分方程的过程而言,存在着相应的确定性概率流常微分方程,相应的公式如下,由于证明比较复杂繁琐,限于长度限制,这里较难写下,笔者这里直接给出结论,详细证明请看原文的附录,需要利用随机过程和概率论的知识。
d x = [ f ( x , t ) − 1 2 g 2 ( t ) ∇ x l o g ( p t ( x ) ) ] d t dx=[f(x,t)-\frac{1}{2}g^2(t)\nabla_xlog(p_t(x))]dt dx=[f(x,t)21g2(t)xlog(pt(x))]dt
该ODE公式与SDE公式具有相同的边缘密度 p t ( x ) p_t(x) pt(x)

3.3、 SDE训练

不论是3.2.1中的SDE还是3.2.2中的ODE,这都说明了,在任意时间 t t t时刻,一旦我们已经知道了它的Stevin得分(见第二节) ∇ x l o g ( p t ( x ) ) \nabla_xlog(p_t(x)) xlog(pt(x)),那么我们可以该逆向随机微分方程采用相应的数值方法根据时间逆向生成样本数据,相比于SGM而言,它可以采用几种办法:

①采用Langevin Monte Carlo迭代更新+采样(SGM,SDE均适用)(不懂请见第二讲)
②Numerical SDE solvers(数值SDE求解)(仅适用SDE)
③Numerical ODE solvers(数值ODE求解)(仅适用SDE)

3.3.1、SDE训练方法

读到这里,读者们应该已经意识到了SDE和SGM的区别在于一个处理的是连续型,一个处理的是离散型,SDE为SGM和DDPM的推广,更一般的模型,我们意识到,若能够训练一个网络,给予任意时间 T T T(注意,不同于SGM,此时间可以不为整数),若能够很好的估计 ∇ x l o g ( p t ( x ) ) \nabla_xlog(p_t(x)) xlog(pt(x)),那么便可以采用反向SDE求解或反向ODE求解来数值模拟生成,因此目标仍旧要学习一个网络 s θ ( x t , t ) s_\theta(x_t,t) sθ(xt,t)
L o s s = E t ∈ [ 0 , T ] , x 0 , x t [ ∣ ∣ s θ ( x t , t ) − ∇ x l o g ( p 0 ~ t ( x t ∣ x 0 ) ) ∣ ∣ 2 ] Loss=E_{t\in[0,T],x_0,x_t}[||s_\theta(x_t,t)-\nabla_xlog(p_{0~t}(x_t|x_0))||^2] Loss=Et[0,T],x0,xt[∣∣sθ(xt,t)xlog(p0t(xtx0))2]其中 p 0 ~ t ( x t ∣ x 0 ) ) p_{0~t}(x_t|x_0)) p0t(xtx0))的获取通过对Forward Brownian motion SDE求解获得, t t t [ 0 , T ] [0,T] [0,T]中进行均匀采样,并不要求为整数
训练好该网络后,SDE便可通过利用 s θ ( x t , t ) s_\theta(x_t,t) sθ(xt,t)来代替进行反向的采样过程,在每个时间t时刻,向前进行逆向生成的过程满足如下 ( 1 ) (1) (1)或者 ( 2 ) (2) (2)进行生成:
d x = [ f ( x , t ) − 1 2 g 2 ( t ) s θ ( x t , t ) ] d t —— ( 1 ) dx=[f(x,t)-\frac{1}{2}g^2(t)s_\theta(x_t,t)]dt——(1) dx=[f(x,t)21g2(t)sθ(xt,t)]dt——(1)
d x = [ f ( x , t ) − g 2 ( t ) s θ ( x t , t ) ] d t + g ( t ) d w ^ —— ( 2 ) dx=[f(x,t)-g^2(t)s_\theta(x_t,t)]dt+g(t)d\hat{w}——(2) dx=[f(x,t)g2(t)sθ(xt,t)]dt+g(t)dw^——(2)
其中如何采样的办法可以采用3.3提到的①②③进行。

4、Diffusion-Summary

到这里为止,笔者已经介绍了目前Diffusion的基础三个模型。完全足够读者进行Diffusion的入门学习,后续深入内容请读者根据兴趣自行选择原文阅读。

总结一下,笔者对Diffusion的基础进行了(一)(二)(三)的介绍,其中(二)(三)为相关的Score-Function方法。(一)为类似端对端的DDPM直接预测法,希望这些内容可以为初学Diffusion的读者们提供更多的启示。当然笔者介绍的远不及原文详细。若想更好的理解内容,建议直接阅读这三篇文章。笔者均给予了链接,目前Diffusion的研究现状基于这三个基础模型的数据部分,算法部分,高效采样办法和更新参数方法,参数-损失加权法,和一些其他部分等进行改进,但主体思想基本是基本与这三模型相同的。看完(一)~(三)的内容,希望各位对Diffusion有了基础的理解和兴趣,并希望能够启发大家未来的研究和应用。

所有公式均为手打,并且笔者并不是专门研究Diffusion的学者,这些内容仅代表笔者自行的学习笔记和理解,当然很可能会出现一些小错误或者推导不严谨的地方。若发现错误或不严谨之处,笔者非常欢迎大家进行多多指正和批评。笔者希望与大家进行一起探索ML更多的发展现状和前景,同时笔者也在实时跟进目前ML和RL的发展现状和新型研究成果,后续若有时间,笔者将更新这三模型的代码部分,谢谢大家!文章来源地址https://www.toymoban.com/news/detail-486634.html

到了这里,关于Diffusion Model (扩散生成模型)的基本原理详解(三)Stochastic Differential Equation(SDE)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Stable Diffusion生成式扩散模型代码实现原理

    Stable Diffusion可以使用PyTorch或TensorFlow等深度学习框架来实现。这些框架提供了一系列的工具和函数,使得开发者可以更方便地构建、训练和部署深度学习模型。因此可以使用PyTorch或TensorFlow来实现Stable Diffusion模型。 安装PyTorch:确保您已经安装了PyTorch,并具备基本的PyTorch使用

    2024年03月13日
    浏览(47)
  • 由浅入深理解latent diffusion/stable diffusion(2):扩散生成模型的工作原理

    Diffusion Models专栏文章汇总:入门与实战 前言: 关于如何使用stable diffusion的文章已经够多了,但是由浅入深探索stable diffusion models背后原理,如何在自己的科研中运用stable diffusion预训练模型的博客少之又少。本系列计划写5篇文章,和读者一起遨游diffusion models的世界!本文主

    2024年02月08日
    浏览(54)
  • 扩散模型(Diffusion model)代码详细解读

    代码地址:denoising-diffusion-pytorch/denoising_diffusion_pytorch.py at main · lucidrains/denoising-diffusion-pytorch (github.com) 前向过程和后向过程的代码都在 GaussianDiffusion ​这个类中。​ 有问题可以一起讨论! Why self-conditioning? · Issue #94 · lucidrains/denoising-diffusion-pytorch (github.com) \\\"pred_x0\\\" preforms

    2024年01月25日
    浏览(50)
  • 【CV】Latent diffusion model 扩散模型体验

    稳定扩散模型(Stable Diffusion Model)是一种用于描述信息传播和创新扩散的数学模型。它基于经典的扩散方程,但引入了长尾分布以捕捉现实中存在的大量异常事件。 在稳定扩散模型中,假设某个创新或信息被一个人采纳后,它会以一定的概率被其他人采纳,并通过社交网络

    2024年02月02日
    浏览(46)
  • DiffIR: Efficient Diffusion Model for Image Restoration 利用扩散模型进行图像重建

    •我们提出了DiffIR,一种强大、简单、高效的基于扩散模型的的图像修复方法。与图像生成不同的是,输入图像的大部分像素都是给定的。因此,我们利用DM强大的映射能力来估计一个紧凑的IPR(IR Prior Representation,图像修复的先验表示)来引导图像修复,从而提高DM在图像修

    2024年02月08日
    浏览(52)
  • 轨迹预测Leapfrog Diffusion Model for Stochastic Trajectory Prediction

    CVPR2023 暂时没有上传的开源代码:https://github.com/mediabrain-sjtu/led 解决实时性问题,扩散模型用在扩散生成当中,虽然取得了很好的预测效果,但是由于扩散模型预测阶段耗时高,影响了未来轨迹预测的实时性。因此作者采用蛙跳的方式加速这个过程。 总体架构上面提出了哪些

    2024年02月02日
    浏览(47)
  • 扩散模型DDPM开源代码的剖析【对应公式与作者给的开源项目,diffusion model】

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

    2023年04月08日
    浏览(40)
  • 【扩散模型Diffusion Model系列】0-从VAE开始(隐变量模型、KL散度、最大化似然与AIGC的关系)

    VAE(Variational AutoEncoder),变分自编码器,是一种无监督学习算法,被用于压缩、特征提取和生成式任务。相比于GAN(Generative Adversarial Network),VAE在数学上有着更加良好的性质,有利于理论的分析和实现。 生成式模型(Generative Model)的目标是学习一个模型,从 一个简单的分布 p (

    2024年02月03日
    浏览(53)
  • AIGC原理:扩散模型diffusion综述一:面向视觉计算的扩散模型研究进展

    论文地址:State of the Art on Diffusion Models for Visual Computing 👉 贴一幅SGM(Score-based Generative Model)的原因是宋飏博士将他2019年提出的SMLD模型和2020年Jonathan Ho提出的DDPM采用SDE进行一统这两大极为相似的生成式模型。殊途同归,基于概率的扩散模型DDPM和基于分数的扩散模型SMLD都是

    2024年02月05日
    浏览(53)
  • 扩散模型实战(十):Stable Diffusion文本条件生成图像大模型

     扩散模型实战(一):基本原理介绍 扩散模型实战(二):扩散模型的发展 扩散模型实战(三):扩散模型的应用 扩散模型实战(四):从零构建扩散模型 扩散模型实战(五):采样过程 扩散模型实战(六):Diffusers DDPM初探 扩散模型实战(七):Diffusers蝴蝶图像生成实

    2024年02月03日
    浏览(62)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包