Diffusion Model (扩散生成模型)的基本原理(二Score-Based Generative Modeling(SGM)
2、Score-Based Generative Models(SGM)
不同于DDPM,这是一个基于分数的Model,换而言之通过预测评分来获取最终的信息。在阅读本篇之前,这样我们显然会产生两个问题:
一、Network应该以什么为基准的评分?
二、DDPM网络是一个可以直接给出的后验分布(去噪链),那么如果我得到了一个基于评分的网络,如何进行所谓的“采样”,这里没有直接对分布进行所谓的预测。
下面开始进入正题介绍,先从评分函数讲起。
2.1、Score-Function(评分函数)
SGMS的核心思想在于评分函数的定义,让我们来一起看一下它的Score-Function的定义是怎么样定义的,以下是它的定义:
假若有一个概率密度函数 p ( x ) p(x) p(x),定义“Stein-ScoreFunction”如下:
S t e i n − S c o r e F u n c t i o n = ∇ x l o g ( p ( x ) ) Stein-ScoreFunction=\nabla_xlog(p(x)) Stein−ScoreFunction=∇xlog(p(x))显然的,该score表示了概率密度函数增长的快慢程度。
2.2、SGM forward Markov Chain(加噪链)—— q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xt∣xt−1)
我们仍旧假设原始数据 x 0 x_0 x0是从某一分布 x 0 ~ q ( x 0 ) x_0~q(x_0) x0~q(x0)中采样得到。不同于之前DDPM,SGM使用另外一种更直接化的分布来进行采样,具体操作如下:假设生成噪声步长为 T T T,给予一组逐步弱化的噪声: [ σ 1 , σ 2 , σ 3 ⋅ ⋅ ⋅ σ T ] [\sigma_1,\sigma_2,\sigma_3···\sigma_T] [σ1,σ2,σ3⋅⋅⋅σT],则会有如下结论:
在第 i i i步噪声数据 x i x_i xi满足从如下分布中进行采样:
x i ~ N ( x 0 , σ i 2 I ) ⟺ q ( x i ∣ x 0 ) = N ( x 0 , σ i 2 I ) ⟺ q ( x i ) = ∫ q ( x i ∣ x 0 ) q ( x 0 ) d ( x 0 ) x_i~N(x_0,\sigma_i^2I)\iff q(x_i|x_0)=N(x_0,\sigma_i^2I)\iff q(x_i)=\int q(x_i|x_0)q(x_0)d(x_0) xi~N(x0,σi2I)⟺q(xi∣x0)=N(x0,σi2I)⟺q(xi)=∫q(xi∣x0)q(x0)d(x0)
2.3、Score-Network—— s θ ( x t , t ) s_\theta(x_t,t) sθ(xt,t)
2.3.1、SGM与DDPM的一致性&Loss-Function
不同于DDPM,这里并不是直接训练出一个去噪链直接解决问题并生成数据,我们的目的是想训练出一个可以模拟Score-Function的良好网络,再基于该Score-Function进行反向的采样,即想要设计一个Network : s θ ( x t , t ) s_\theta(x_t,t) sθ(xt,t)用来模拟当前的Score-Function: ∇ x t l o g ( q ( x t ∣ x 0 ) ) \nabla_{x_{t}} log(q(x_t|x_0)) ∇xtlog(q(xt∣x0))。那么显然地,目标函数变为:
L o s s = ∣ ∣ ∇ x t l o g ( q ( x t ∣ x 0 ) ) − s θ ( x t , t ) ∣ ∣ 2 Loss=||\nabla_{x_{t}} log(q(x_t|x_0))-s_\theta(x_t,t)||^2 Loss=∣∣∇xtlog(q(xt∣x0))−sθ(xt,t)∣∣2
而我们已经知道了 q ( x t ∣ x 0 ) = N ( x 0 , σ t 2 I ) = 1 2 π σ t e − ( x t − x 0 ) 2 2 σ t 2 q(x_t|x_0)=N(x_0,\sigma_t^2I)=\frac{1}{\sqrt{2\pi}\sigma_t}e^{-\frac{(x_t-x_0)^2}{2\sigma_t^{2}}} q(xt∣x0)=N(x0,σt2I)=2π σt1e−2σt2(xt−x0)2
那么显然地,我们会有 ∇ x t l o g [ q ( x t ∣ x 0 ) ] = − x t − x 0 σ t 2 \nabla_{x_{t}}log[q(x_t|x_0)]=-\frac{x_t-x_0}{\sigma_t^{2}} ∇xtlog[q(xt∣x0)]=−σt2xt−x0
则会有当前优化目标可以视为如下的函数
L o s s = ∣ ∣ − x t − x 0 σ t 2 − s θ ( x t , t ) ∣ ∣ 2 Loss=||-\frac{x_t-x_0}{\sigma_t^{2}}-s_\theta(x_t,t)||^2 Loss=∣∣−σt2xt−x0−sθ(xt,t)∣∣2
注意到第一项,这可视为从正态分布进行的采样,差了一个非网络参数 σ t \sigma_t σt即:
L o s s ∗ = σ t 2 L o s s = ∣ ∣ x t − x 0 σ t σ t s θ ( x t , t ) ∣ ∣ 2 Loss^*=\sigma_t^2Loss=||\frac{x_t-x_0}{\sigma_t} \sigma_ts_\theta(x_t,t)||^2 Loss∗=σt2Loss=∣∣σtxt−x0 σtsθ(xt,t)∣∣2
令 − σ t s θ ( x t , t ) = z θ ( x t , t ) -\sigma_ts_\theta(x_t,t)=z_\theta(x_t,t) −σtsθ(xt,t)=zθ(xt,t)
L o s s ∗ = σ t 2 L o s s = ∣ ∣ z − z θ ∣ ∣ 2 Loss^*=\sigma_t^2Loss=||z-z_\theta||^2 Loss∗=σt2Loss=∣∣z−zθ∣∣2
如果读者已经度过了笔者写过的(一)DDPM部分,读者会惊奇的发现,这与DDPM的优化目标是一致的,从原理上,它们的目的是相同的。
2.3.2、SGM-Sampling(Langevin Monte Carlo)
SGM的采样办法有很多种,不同于DDPM的那种“一步一步”反向估计后验估计的办法,这里首先介绍使用Langevin Monte Carlo(基于Langevin Dynamics的一种办法)进行采样,这里介绍算法过程,有关Langevin Monte Carlo理论部分的介绍可见随机过程中的Important-Sampling等会有一些介绍,笔者之后会给予一些简单的补充资料来对Langevin Monte Carlo理论进行说明,这里读者可以认为它的目的是去模拟原始分布 q ( x 0 ) q(x_0) q(x0),然后直接用该分布采样生成数据。
先来介绍Langevin Monte Carlo采样算法的过程:
假设我们已经训练好了一个网络 s θ ( x t , t ) s_\theta(x_t,t) sθ(xt,t),它可以作为 ∇ x t l o g ( q ( x t ∣ x 0 ) ) \nabla_{x_{t}} log(q(x_t|x_0)) ∇xtlog(q(xt∣x0))的近似,我们下面要利用该网络进行分布预估:给定比步长(固定)为 s ∗ s^* s∗ ( s ∗ (s^* (s∗足够小 ) ) ),迭代次数为 N N N。下面进行反向生成过程,笔者将其总结为SGM算法:
SGM算法(Langevin Monte Carlo法):
①、随机采样一个样本 x T 0 ~ N ( 0 , 1 ) x_T^{0}~N(0,1) xT0~N(0,1) ( T (T (T足够大 ) ) ),记录当前时间 t = T t=T t=T
②、迭代 x t i 1 = x t i 1 2 s ∗ s θ ( x t i , t ) s ∗ z x_t^{i 1}=x_t^{i} \frac{1}{2}s^*s_\theta(x_t^{i},t) \sqrt{s^*}z xti 1=xti 21s∗sθ(xti,t) s∗ z 直到 i = N i=N i=N
③、 x t − 1 0 = x t T , t = t − 1 x_{t-1}^{0}=x_{t}^T,t=t-1 xt−10=xtT,t=t−1
④、重复②~③直到 t = 0 t=0 t=0
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgcgebf
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01