当前位置: 首页 > article >正文

『扩散模型』一篇文章入门DDPM

文章目录

  • 扩散模型DDPM
    • How Do Diffusion-Based Image Generation Models Work?
    • The Need For Generative Models
      • Bayesian Inference
    • What Are Diffusion Probabilistic Models?
      • Itsy-Bitsy Mathematical Details Behind Denoising Diffusion Probabilistic Models
        • Mathematical Details Of The Forward Diffusion Process
        • Mathematical Details Of The Reverse Diffusion Process
  • 参考文献

扩散模型DDPM

2022年,Stable Diffusion模型的问世标志着AI绘画行业从传统深度学习时代迈向AIGC时代。在这一转变中,扩散模型是Stable Diffusion的核心,因此深入了解扩散模型的原理显得尤为重要。
扩散模型本质上属于生成模型,生成模型的工作是“将噪声转换为具有代表性的数据样本
想要了解什么是扩散模型,我们需要先了解一下扩散的概念 ⇒ \Rightarrow 扩散:由浓度梯度驱动的粒子或分子由高浓度区域向低浓度区域的运动
接下来,我们首先从宏观层面探讨基于扩散的图像生成模型的工作原理。

How Do Diffusion-Based Image Generation Models Work?

扩散模型:存在一系列高斯噪声( T T T轮),在扩散模型的正向扩散过程中将输入图片 x 0 x_0 x0变成纯高斯噪声 x T x_T xT,然后在扩散模型的反向扩散过程中将 x T x_T xT还原回图片 x 0 x_0 x0
在这里插入图片描述
上面这张图,展示了扩散模型的正向扩散过程(从右到左)和反向扩散过程(从左到右)
Forward Diffusion:

  1. 原始图像 x 0 x_0 x0通过添加高斯噪声而被迭代地缓慢破坏(马尔可夫链)
  2. 这个过程是在 T T T个时间步长内完成的
  3. 时间步 t t t的图像: x t − 1 + ε t − 1 → x t x_{t-1}+ε_{t-1}→ x_t xt1+εt1xt
  4. 在正向扩散过程 x T x_T xT结束时,已经将数据分布转换为高斯分布

Backward Diffusion:

  1. 再次以迭代方式去除Forward Diffusion中添加的噪声
  2. 反向扩散过程的任务如下:给定时间步 t t t和噪声图像 x t x_t xt,预测在时间步 t − 1 t-1 t1添加到图像中的噪声,即 x t → M o d e l → ϵ x_t→ Model→ \epsilon xtModelϵ

在整个扩散的过程中,“图像的维度保持不变”

The Need For Generative Models

扩散模型是一个概率模型,我们可以结合正向扩散过程和反向扩散过程进行理解
在正向扩散过程中,由于是向数据中逐步添加噪声的,所以每个时间步的状态依赖于前一个时间步的状态。因此,前向扩散过程中的状态转移是基于条件概率的,条件概率描述了如何从一个状态转变为另一个状态
在反向扩散过程中,由于是从噪声数据中逐步去除噪声,而且逆向扩散与正向扩散是相反的过程,所以前一个时间步的状态依赖于当前时间步的状态。因此,逆向扩散过程中的状态转移同样基于条件概率
既然涉及到条件概率,那么贝叶斯公式肯定是不可避免的

Bayesian Inference

我们首先考虑这样的一个问题: X X X的概率密度函数为 f ( x ∣ θ ) f(x|\theta) f(xθ),观测到一组样本 ( x 1 , x 2 , . . . , x n ) (x_1,x_2,...,x_n) (x1,x2,...,xn),此时需要估计参数 θ \theta θ
θ ^ \hat{\theta} θ^满足“ θ = θ ^ \theta=\hat{\theta} θ=θ^时,该组观测样本 ( x 1 , x 2 , . . . , x n ) (x_1,x_2,...,x_n) (x1,x2,...,xn)更容易被观测到” ⇒ \Rightarrow θ ^ \hat{\theta} θ^ θ \theta θ的极大似然估计值, θ ^ \hat{\theta} θ^使得事件 ( x 1 , x 2 , . . . , x n ) (x_1,x_2,...,x_n) (x1,x2,...,xn)发生的可能性最大
极大似然估计的数学描述: L ( θ ∣ x ) = f ( x ∣ θ ) = f ( x 1 , x 2 , . . . , x n ∣ θ ) = ∏ i = 1 n f ( x i ∣ θ ) L(\theta|x)=f(x|\theta)=f(x_1,x_2,...,x_n|\theta)=\prod^{n}_{i=1}f(x_i|\theta) L(θx)=f(xθ)=f(x1,x2,...,xnθ)=i=1nf(xiθ) ⇒ \Rightarrow θ ^ = a r g m a x θ L ( θ ∣ x ) \hat{\theta}=argmax_{\theta}L(\theta|x) θ^=argmaxθL(θx)(如果有时间的话,笔者会专门写一起关于极大似然估计的文章,对极大似然估计进行介绍)
上述介绍的扩散模型和极大似然估计都与条件概率密切相关,而条件概率又与贝叶斯公式息息相关。
贝叶斯公式的数学描述:

  • 离散变量: P ( B i ∣ A ) = P ( B i ) P ( A ∣ B i ) P ( A ) = P ( B i ) P ( A ∣ B i ) ∑ j = 1 n P ( B j ) P ( A ∣ B j ) P(B_i|A)=\frac{P(B_i)P(A|B_i)}{P(A)}=\frac{P(B_i)P(A|B_i)}{\sum_{j=1}^nP(B_j)P(A|B_j)} P(BiA)=P(A)P(Bi)P(ABi)=j=1nP(Bj)P(ABj)P(Bi)P(ABi),其中 P ( B i ∣ A ) P(B_i|A) P(BiA)是后验概率、 P ( B i ) P(B_i) P(Bi)是先验概率、 P ( A ∣ B i ) P(A|B_i) P(ABi)是似然函数、 P ( A ) P(A) P(A)是边缘概率
  • 连续变量: p ( z ∣ x ) = p ( z ) p ( x ∣ z ) ∫ p ( z ) p ( x ∣ z ) d z p(z|x)=\frac{p(z)p(x|z)}{\int p(z)p(x|z)dz} p(zx)=p(z)p(xz)dzp(z)p(xz),其中 p ( z ∣ x ) p(z|x) p(zx)是后验概率、 p ( z ) p(z) p(z)是先验概率、 p ( x ∣ z ) p(x|z) p(xz)是似然函数、 ∫ p ( z ) p ( x ∣ z ) d z \int p(z)p(x|z)dz p(z)p(xz)dz是边缘概率 ⇔ \Leftrightarrow π ( θ ∣ x ) = f ( x ∣ θ ) π ( θ ) m ( x ) = f ( x ∣ θ ) π ( θ ) ∫ f ( x ∣ θ ) π ( θ ) d ( θ ) \pi(\theta|x)=\frac{f(x|\theta)\pi(\theta)}{m(x)}=\frac{f(x|\theta)\pi(\theta)}{\int f(x|\theta)\pi(\theta)d(\theta)} π(θx)=m(x)f(xθ)π(θ)=f(xθ)π(θ)d(θ)f(xθ)π(θ),其中 π ( θ ) \pi(\theta) π(θ)是参数 θ \theta θ的先验分布,表示对 θ \theta θ的主观认识; π ( θ ∣ x ) \pi(\theta|x) π(θx)是参数 θ \theta θ的后验概率; m ( x ) m(x) m(x)是观测数据 x x x的边际似然函数,边际似然函数是一个用来归一化后验概率分布的因子,确保后验概率的总和(或积分)等于1

贝叶斯估计可以看作是,在假定 θ \theta θ服从 π ( θ ) \pi(\theta) π(θ)的先验分布的前提下,根据样本信息去校正先验分布,得到后验分布 π ( θ ∣ x ) \pi(\theta|x) π(θx)
最大后验估计(Maximum A Posteriori estimation,MAP): θ ^ m a p = a r g m a x θ π ( θ ∣ x ) = a r g m a x θ f ( x ∣ θ ) π ( θ ) m ( x ) = a r g m a x θ f ( x ∣ θ ) π ( θ ) \hat{\theta}_{map}=argmax_{\theta}\pi(\theta|x)=argmax_{\theta}\frac{f(x|\theta)\pi(\theta)}{m(x)}=argmax_{\theta}f(x|\theta)\pi(\theta) θ^map=argmaxθπ(θx)=argmaxθm(x)f(xθ)π(θ)=argmaxθf(xθ)π(θ),由于 m ( x ) m(x) m(x) θ \theta θ无关,因此简化了计算
贝叶斯最大后验就是把极大似然加了一个先验信息

What Are Diffusion Probabilistic Models?

让我们回过头来看什么是扩散概率模型
我们可以使用马尔可夫链将一种分布逐渐转换为另一种分布”—《Deep Unsupervised Learning using Nonequilibrium Thermodynamics》(ICML2015、CCF-A)
马尔可夫链简单理解就是:“未来独立于过去,而只依赖于当下”(如果有时间的话,笔者会专门写一起关于马尔可夫链的文章,对马尔可夫链进行介绍)
回到扩散模型,扩散模型由两个相反的过程组成,即正向和反向扩散过程

Itsy-Bitsy Mathematical Details Behind Denoising Diffusion Probabilistic Models

在这里插入图片描述
箭头上提到了两个术语:

  1. q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1):定义了在正向扩散过程中时间步 t t t时图像的概率密度函数
  2. p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1}|x_t) pθ(xt1xt):定义了在反向扩散过程中时间步 t − 1 t-1 t1时图像的概率密度函数
Mathematical Details Of The Forward Diffusion Process

将前向扩散过程中的分布 q q q定义为马尔可夫链(前向过程每个时刻 t t t只与时刻 t − 1 t-1 t1相关),由下式给出:
q ( x 1 , … , x T ∣ x 0 ) : = ∏ t = 1 T q ( x t ∣ x t − 1 ) ( 1 ) q ( x t ∣ x t − 1 ) : = N ( x t ; 1 − β t x t − 1 , β t I ) ( 2 ) \begin{aligned} q(x_{1},\ldots,x_{T}|x_{0})& :=\prod_{t=1}^{T}q(x_{t}|x_{t-1}) && (1) \\ q(x_{t}|x_{t-1})& :=\mathcal{N}(x_{t};\sqrt{1-\beta_{t}}x_{t-1},\beta_{t}I) && (2) \end{aligned} q(x1,,xTx0)q(xtxt1):=t=1Tq(xtxt1):=N(xt;1βt xt1,βtI)(1)(2),其中高斯分布方差的超参数 { β t ∈ ( 0 , 1 ) } t = 1 T \{\beta_{t}\in(0,1)\}_{t=1}^T {βt(0,1)}t=1T

  1. 首先从数据集中获取一张图像 x 0 ∼ q ( x ) x_0\sim q(x) x0q(x),数据集中的图像分布满足 q ( x ) q(x) q(x)
  2. 从时间步 1 1 1 T T T的所有中间噪声被称为latents,latents的大小与原始图像相同
  3. 正向扩散过程的概率密度函数是正态分布
  4. 在每一个时间步 t t t,定义图像 x t x_t xt分布的参数:均值 1 − β t x t − 1 \sqrt{1-\beta_{t}}x_{t-1} 1βt xt1、方差 β t I \beta_{t}I βtI
  5. β \beta β被称为扩散率,使用方差调度器预先计算
  6. 在每个时间步对原始图像添加少量的高斯噪声,得到 x 1 , x 2 , . . . , x T x_1,x_2,...,x_T x1,x2,...,xT,添加的噪声量由调度器进行调节。随着 t t t的增大, x t x_t xt越来越接近纯噪声,当 T → ∞ T\to\infty T时, x T x_T xT完全的高斯噪声(与均值系数 1 − β t \sqrt{1-\beta_{t}} 1βt 的选择相关),且实际中 β t \beta_t βt随着 t t t增大是递增的,即 β 1 < β 2 < … < β T \beta_{1}<\beta_{2}<\ldots<\beta_{T} β1<β2<<βT

N ( x t ; 1 − β t x t − 1 , β t I ) \mathcal{N}(x_{t};\sqrt{1-\beta_{t}}x_{t-1},\beta_{t}I) N(xt;1βt xt1,βtI):一个多变量的正态分布

  • 1 − β t x t − 1 \sqrt{1-\beta_{t}}x_{t-1} 1βt xt1 x t x_t xt的条件均值,表示 x t x_t xt的期望是 x t − 1 x_{t-1} xt1的一个加权版本 ⇒ \Rightarrow 1 − β t \sqrt{1-\beta_{t}} 1βt 描述了从前一个状态 x t − 1 x_{t-1} xt1到当前状态 x t x_t xt的直接传递的强度,如果 β t \beta_t βt接近 0,这意味着 x t − 1 x_{t-1} xt1 x t x_t xt有很强的相关性;如果 β t \beta_t βt接近 1,这意味着 x t − 1 x_{t-1} xt1 x t x_t xt的相关性较弱
  • β t I \beta_tI βtI β t \beta_t βt控制了新状态 x t x_t xt与旧状态 x t − 1 x_{t-1} xt1之间的相似度,以及新状态的噪声水平; I I I是单位矩阵

在这里插入图片描述
如果从某个分布(高斯分布)中随机采样一个样本,这个过程是无法反向传播梯度的,而这个通过高斯噪声采样得到 x t x_t xt的过程在diffusion中到处都是,因此我们需要通过重参数技巧来使得它可微(如果有时间的话,笔者会专门写一起关于重参数化的文章,对重参数化进行介绍)
最通常的做法是把随机性通过一个独立的随机变量 ϵ \epsilon ϵ引导过去。举个例子,如果要从高斯分布 z ∼ N ( z ; μ θ , σ θ 2 I ) z\sim{\mathcal N}(z;\mu_{\theta},\sigma_{\theta}^{2}\mathbf{I}) zN(z;μθ,σθ2I)采样一个 z z z,可以写成 z = μ θ + σ θ ⊙ ϵ , ϵ ∼ N ( 0 , I ) z=\mu_\theta+\sigma_\theta\odot\epsilon,\epsilon\sim\mathcal{N}(0,\mathbf{I}) z=μθ+σθϵ,ϵN(0,I)
上式的 z z z依旧是有随机性的, 且满足均值为 μ θ \mu_{\theta} μθ、方差为 σ θ 2 \sigma_{\theta}^2 σθ2的高斯分布,这里的 μ θ \mu_{\theta} μθ σ θ 2 \sigma_{\theta}^2 σθ2可以是由参数 θ \theta θ的神经网络推断得到的。整个“采样”过程依旧梯度可导,随机性被转嫁到了 ϵ \epsilon ϵ
How do we get image x t x_t xt from x t − 1 x_{t-1} xt1 and how is noise added at each time step?
从正态分布中对图像 x t x_t xt进行采样: x t = 1 − β t x t − 1 + β t ϵ ;where  ϵ ∼ N ( 0 , I ) \begin{aligned}x_t=\sqrt{1-\beta_t}x_{t-1}+\sqrt{\beta_t}\epsilon\quad\\\text{;where}\ \epsilon\sim\mathcal{N}(0,I)\end{aligned} xt=1βt xt1+βt ϵ;where ϵN(0,I)

  1. ϵ \epsilon ϵ是从标准高斯分布中随机采样的“噪声”
  2. 以上述方式,从 x 0 x_0 x0开始,原始图像从 t = 1... t t=1...t t=1...t迭代破坏

DDPM的作者使用“线性方差调度器”并定义 β \beta β [ 0.001 , 0.02 ] [0.001,0.02] [0.0010.02]范围内,并设置总时间步 T = 1000 T=1000 T=1000
每当需要在时间步 t t t的潜在样本 x t x_t xt时,我们必须在马尔可夫链中执行 t − 1 t-1 t1个步骤
在这里插入图片描述
为了解决这个问题,DDPM的作者提出:在这个过程中直接从时间步 0 0 0(即从原始图像)到时间步 t t t
在这里插入图片描述

at any time x t x_t xt can be represented by x 0 x_0 x0 and β \beta β,我们接下来从数学层面进行推导
首先假设 α t = 1 − β t \alpha_t=1-\beta_t αt=1βt,并且 α ‾ t = ∏ i = 1 T α i \overline{\alpha}_t=\prod_{i=1}^T\alpha_i αt=i=1Tαi,展开 x t x_t xt可以得到: x t = a t x t − 1 + 1 − α t z 1 w h e r e z 1 , z 2 , … ∼ N ( 0 , I ) ; = a t ( a t − 1 x t − 2 + 1 − α t − 1 z 2 ) + 1 − α t z 1 = a t a t − 1 x t − 2 + ( a t ( 1 − α t − 1 ) z 2 + 1 − α t z 1 ) = a t a t − 1 x t − 2 + 1 − α t α t − 1 z ‾ 2 w h e r e z ‾ 2 ∼ N ( 0 , I ) ; = … = α ‾ t x 0 + 1 − α ‾ t z ‾ t . \begin{aligned} x_{t}& =\sqrt{a_t}x_{t-1}+\sqrt{1-\alpha_t}z_1\quad\mathrm{where}\quad z_1,z_2,\ldots\sim\mathcal{N}(0,\mathbf{I}); \\ &=\sqrt{a_t}(\sqrt{a_{t-1}}x_{t-2}+\sqrt{1-\alpha_{t-1}}z_2)+\sqrt{1-\alpha_t}z_1 \\ &=\sqrt{a_ta_{t-1}}x_{t-2}+(\sqrt{a_t(1-\alpha_{t-1})}z_2+\sqrt{1-\alpha_t}z_1) \\ &=\sqrt{a_{t}a_{t-1}}x_{t-2}+\sqrt{1-\alpha_{t}\alpha_{t-1}}\overline{z}_{2}\quad\mathrm{where}\quad\overline{z}_{2}\sim\mathcal{N}(0,\mathbf{I}); \\ &=\ldots \\ &=\sqrt{\overline{\alpha}_{t}}x_{0}+\sqrt{1-\overline{\alpha}_{t}}\overline{z}_{t}. \end{aligned} xt=at xt1+1αt z1wherez1,z2,N(0,I);=at (at1 xt2+1αt1 z2)+1αt z1=atat1 xt2+(at(1αt1) z2+1αt z1)=atat1 xt2+1αtαt1 z2wherez2N(0,I);==αt x0+1αt zt.
由于独立高斯分布可加性,即 N ( 0 , σ 1 2 I ) + N ( 0 , σ 2 2 I ) ∼ N ( 0 , ( σ 1 2 + σ 2 2 ) I ) \mathcal{N}(0,\sigma_1^2\mathbf{I})+\mathcal{N}(0,\sigma_2^2\mathbf{I})\sim\mathcal{N}(0,(\sigma_1^2+\sigma_2^2)\mathbf{I}) N(0,σ12I)+N(0,σ22I)N(0,(σ12+σ22)I),所以 a t ( 1 − α t − 1 ) z 2 ∼ N ( 0 , a t ( 1 − α t − 1 ) I ) 1 − α t z 1 ∼ N ( 0 , ( 1 − α t ) I ) a t ( 1 − α t − 1 ) z 2 + 1 − α t z 1 ∼ N ( 0 , [ α t ( 1 − α t − 1 ) + ( 1 − α t ) ] I ) = N ( 0 , ( 1 − α t α t − 1 ) I ) . \begin{aligned} &\sqrt{a_{t}(1-\alpha_{t-1})}z_{2}\sim\mathcal{N}(0,a_{t}(1-\alpha_{t-1})\mathbf{I}) \\ &\sqrt{1-\alpha_{t}}z_{1}\sim\mathcal{N}(0,(1-\alpha_{t})\mathbf{I}) \\ &\sqrt{a_{t}(1-\alpha_{t-1})}z_{2}+\sqrt{1-\alpha_{t}}z_{1}\sim\mathcal{N}(0,[\alpha_{t}(1-\alpha_{t-1})+(1-\alpha_{t})]\mathbf{I}) \\ &=\mathcal{N}(0,(1-\alpha_{t}\alpha_{t-1})\mathbf{I}). \end{aligned} at(1αt1) z2N(0,at(1αt1)I)1αt z1N(0,(1αt)I)at(1αt1) z2+1αt z1N(0,[αt(1αt1)+(1αt)]I)=N(0,(1αtαt1)I).
因此可以混合两个高斯分布得到标准差为 1 − α t α t − 1 \sqrt{1-\alpha_{t}\alpha_{t-1}} 1αtαt1 的混合高斯分布, z ‾ t \overline{z}_{t} zt仍然是高斯分布,而任意时刻的 x t x_t xt满足 q ( x t ∣ x 0 ) = N ( x t ; a ‾ t x 0 , ( 1 − a ‾ t ) I ) q(x_t|x_0)=\mathcal{N}(x_t;\sqrt{\overline{a}_t}x_0,(1-\overline{a}_t)\mathbf{I}) q(xtx0)=N(xt;at x0,(1at)I) ⇒ \Rightarrow x t = α ˉ t x 0 + 1 − α ˉ t ϵ x_t=\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\epsilon xt=αˉt x0+1αˉt ϵ
使用上述公式,可以在马尔可夫链中的任意时间步 t t t进行采样

Mathematical Details Of The Reverse Diffusion Process

在反向扩散过程中,任务是学习有限时间(在 T T T时间步内)正向扩散过程的反转
在这里插入图片描述
反向扩散的马尔可夫链从正向过程结束的地方开始,即在时间步 T T T q ( x T ) ≈ N ( x t ; 0 , I ) p ( x T ) : = N ( x t ; 0 , I ) \begin{aligned}q(x_T)&\approx\mathcal{N}(x_t;0,I)\\p(x_T)&:=\mathcal{N}(x_t;0,I)\end{aligned} q(xT)p(xT)N(xt;0,I):=N(xt;0,I)
反向扩散过程是从纯噪声 x T x_T xT开始的数据样本的所有可能路径的“积分”: p θ ( x 0 ) : = ∫ p θ ( x 0 : T ) d x 1 : T p_\theta(x_0):=\int p_\theta(x_{0:T})dx_{1:T} pθ(x0):=pθ(x0:T)dx1:T ⇒ \Rightarrow 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}(\mathbf{x}_{0;T}):=p(\mathbf{x}_{T})\prod_{t=1}^{T}p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t}),\quad p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t}):=\mathcal{N}(\mathbf{x}_{t-1};\mathbf{\mu}_{\theta}(\mathbf{x}_{t},t),\mathbf{\Sigma}_{\theta}(\mathbf{x}_{t},t)) pθ(x0;T):=p(xT)t=1Tpθ(xt1xt),pθ(xt1xt):=N(xt1;μθ(xt,t),Σθ(xt,t))
如果说正向过程(forward)是加噪的过程,那么反向过程(reverse)就是diffusion的去噪推断过程
无法简单推断 p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1}|x_{t}) pθ(xt1xt),因此使用深度学习模型(参数 θ \theta θ,目前主流是U-Net+attention的结构)去预测这样的一个反向的分布 p θ p_{\theta} pθ 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 ) ) . \begin{aligned} p_{\theta}(X_{0:T}) =p(x_T)\prod_{t=1}^Tp_\theta(x_{t-1}|x_t);\\ p_\theta(x_{t-1}|x_t) =\mathcal{N}(x_{t-1};\mu_\theta(x_t,t),\Sigma_\theta(x_t,t)). \end{aligned} pθ(X0:T)=p(xT)t=1Tpθ(xt1xt);pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t)).(如果有时间的话,笔者会专门写一起关于UNet的文章,对UNet进行介绍)
虽然我们无法得到逆转后的分布 q ( x t − 1 ∣ x t ) q(x_{t-1}|x_{t}) q(xt1xt),但是如果知道 x 0 x_0 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 ; μ ~ ( 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}_t\mathbf{I}) q(xt1xt,x0)=N(xt1;μ~(xt,x0),β~tI)
在给定条件 C C C下的贝叶斯: P ( A ∣ B , C ) = P ( B ∣ A , C ) ⋅ P ( A ∣ C ) P ( B ∣ C ) P(A|B,C)=\frac{P(B|A,C)\cdot P(A|C)}{P(B|C)} P(AB,C)=P(BC)P(BA,C)P(AC)
推导过程如下:

  1. 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 ) = p ( x t ∣ x t − 1 ) ⋅ p ( x t − 1 ∣ x 0 ) p ( x t ∣ x 0 ) p(x_{t-1}|x_t,x_0)=\frac{p(x_t|x_{t-1},x_0)\cdot p(x_{t-1}|x_0)}{p(x_t|x_0)}=\frac{p(x_t|x_{t-1})\cdot p(x_{t-1}|x_0)}{p(x_t|x_0)} p(xt1xt,x0)=p(xtx0)p(xtxt1,x0)p(xt1x0)=p(xtx0)p(xtxt1)p(xt1x0)由于马尔可夫链的性质, p ( x t ∣ x t − 1 , x 0 ) p(x_t|x_{t-1},x_0) p(xtxt1,x0)中的 x 0 x_0 x0可以被直接抹除掉)
  2. p ( x t − 1 ∣ x 0 ) = α ˉ t − 1 x 0 + 1 − α ˉ t − 1 ϵ ∼ N ( α ˉ t − 1 x 0 , 1 − α ˉ t − 1 ) p(x_{t-1}|x_0)=\sqrt{\bar{\alpha}_{t-1}}x_0+\sqrt{1-\bar{\alpha}_{t-1}}\epsilon\sim\mathcal{N}(\sqrt{\bar{\alpha}_{t-1}}x_0,1-\bar{\alpha}_{t-1}) p(xt1x0)=αˉt1 x0+1αˉt1 ϵN(αˉt1 x0,1αˉt1)
  3. p ( x t ∣ x 0 ) = α ˉ t x 0 + 1 − α ˉ t ϵ ∼ N ( α ˉ t x 0 , 1 − α ˉ t ) p(x_t|x_0)=\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\epsilon\sim\mathcal{N}(\sqrt{\bar{\alpha}_t}x_0,1-\bar{\alpha}_t) p(xtx0)=αˉt x0+1αˉt ϵN(αˉt x0,1αˉt)
  4. p ( x t ∣ x t − 1 ) = α t x t − 1 + 1 − α t ϵ ∼ N ( α t x t − 1 , 1 − α t ) p(x_t|x_{t-1})=\sqrt{\alpha_t}x_{t-1}+\sqrt{1-\alpha_t}\epsilon\sim\mathcal{N}(\sqrt{\alpha_t}x_{t-1},1-\alpha_t) p(xtxt1)=αt xt1+1αt ϵN(αt xt1,1αt)
  5. 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 1 − α ˉ t − 1 − ( x t − α t x 0 ) 2 1 − α ˉ t ) p(x_{t-1}|x_t,x_0)\propto exp(-\frac12(\frac{(x_t-\sqrt{\alpha_t}x_{t-1})^2}{\beta_t})+\frac{(x_{t-1}-\sqrt{\alpha}_{t-1}x_0)^2}{1-\bar{\alpha}_{t-1}}-\frac{(x_t-\sqrt{\alpha}_tx_0)^2}{1-\bar{\alpha}_t}) p(xt1xt,x0)exp(21(βt(xtαt xt1)2)+1αˉt1(xt1α t1x0)21αˉt(xtα tx0)2)(正态分布: e x p ( − ( x − μ ) 2 2 σ 2 ) = e x p ( − 1 2 ( 1 σ 2 x 2 − 2 μ σ 2 x + μ 2 σ 2 ) ) exp(-\frac{(x-\mu)^2}{2\sigma^2})=exp(-\frac12(\frac1{\sigma^2}x^2-\frac{2\mu}{\sigma^2}x+\frac{\mu^2}{\sigma^2})) exp(2σ2(xμ)2)=exp(21(σ21x2σ22μx+σ2μ2))
  6. σ 2 = β t ( 1 − α ˉ t − 1 ) α t ( 1 − α ˉ t − 1 ) + β t \sigma^{2}=\frac{\beta_{t}(1-\bar{\alpha}_{t-1})}{\alpha_{t}(1-\bar{\alpha}_{t-1})+\beta_{t}} σ2=αt(1αˉt1)+βtβt(1αˉt1) μ = α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t + α t − 1 β t 1 − α ˉ t x 0 \mu=\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}x_t+\frac{\sqrt{\alpha_{t-1}}\beta_t}{1-\bar{\alpha}_t}x_0 μ=1αˉtαt (1αˉt1)xt+1αˉtαt1 βtx0
  7. 但是在反向过程中, x 0 x_0 x0是未知的, x 0 = 1 α ˉ t ( x t − 1 − α ˉ t ϵ t ) x_0=\frac1{\sqrt{\bar{\alpha}_t}}(x_t-\sqrt{1-\bar{\alpha}_t}\epsilon_t) x0=αˉt 1(xt1αˉt ϵt),将 x 0 x_0 x0代入 μ \mu μ中, μ = 1 α t ( x t − β t 1 − α ˉ t ϵ ) \mu=\frac1{\sqrt{\alpha_t}}(x_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon) μ=αt 1(xt1αˉt βtϵ)
  8. 因为 ϵ \epsilon ϵ是个噪音,用神经网络去拟合,表示为 ϵ θ ( x t , t ) \epsilon_{\theta}(x_t,t) ϵθ(xt,t),从而可以得到要优化的目标,就是拟合出每一步的噪音, ∣ ∣ ϵ t − ϵ θ ( x t , t ) ∣ ∣ 2 ||\epsilon_t-\epsilon_{\theta}(x_t,t)||^2 ∣∣ϵtϵθ(xt,t)2 ⇒ \Rightarrow 损失函数:噪声之间的均方差 ∣ ∣ ϵ t − ϵ θ ( x t , t ) ∣ ∣ 2 ||\epsilon_t-\epsilon_{\theta}(x_t,t)||^2 ∣∣ϵtϵθ(xt,t)2 ⇒ \Rightarrow E x 0 , ϵ ∼ N ( 0 , I ) [ ∥ ϵ − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) ∥ 2 ] \mathbb{E}_{\mathbf{x}_{0},\epsilon\sim\mathcal{N}(\mathbf{0},\mathbf{I})}\left[\|\epsilon-\epsilon_{\theta}\left(\sqrt{\bar{\alpha}_{t}}\mathbf{x}_{0}+\sqrt{1-\bar{\alpha}_{t}}\epsilon,t\right)\|^{2}\right] Ex0,ϵN(0,I)[ϵϵθ(αˉt x0+1αˉt ϵ,t)2]
  9. DDPM最后的采样公式: x t − 1 = 1 α t ( x t − β t 1 − α ˉ t ϵ θ ( x t , t ) ) + σ t ϵ   ϵ ∼ N ( 0 , I ) x_{t-1}=\frac1{\sqrt{\alpha_t}}(x_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_\theta(x_t,t))+\sigma_t\epsilon~\epsilon\sim\mathcal{N}(0,I) xt1=αt 1(xt1αˉt βtϵθ(xt,t))+σtϵ ϵN(0,I)

在这里插入图片描述
DDPM论文中 β t \beta_t βt的生成是将一个给定范围均匀的时间步分成 T T T份,然后每个时间步对应其中的某个点:

betas = torch.linspace(start=0.0001, end=0.02, steps=1000)

采用这种方式生成 β t \beta_t βt致的问题:前向扩散过程中靠后的时间步噪声加的很多,这些噪声在反向生成采样的过程中没有产生太大的贡献,即使跳过也不会对结果产生多大的影响
在这里插入图片描述
DDPM的训练过程:随机选择一个训练样本 → \rightarrow 从时间步 1 1 1到时间步 T T T随机抽样一个 t t t → \rightarrow 随机产生噪声 → \rightarrow 计算当前带噪声的数据 → \rightarrow 输入网络预测噪声 → \rightarrow 计算产生的噪声和预测的噪声的L2损失 → \rightarrow 计算梯度并更新网络
DDPM的采样过程:从一个随机噪声开始 → \rightarrow 使用训练好的网络预测噪声 → \rightarrow 计算条件分布的均值 → \rightarrow 用均值加标准差乘以一个随机噪声,直至 t = 0 t=0 t=0完成新样本的生成(最后一步不加噪声)

参考文献

1、An In-Depth Guide to Denoising Diffusion Probabilistic Models – From Theory to Implementation
2、Diffusion Models for Image Generation – A Comprehensive Guide
3、由浅入深了解Diffusion Model
4、The Annotated Diffusion Model
5、DDPM和DDIM公式推导
6、扩散模型之DDPM


http://www.kler.cn/news/364833.html

相关文章:

  • 3D、VR、AR技术的应用,对家电品牌营销有哪些影响?
  • 线性代数学习
  • JAVA Maven 的安装与配置
  • Vue 3 对接保利威云点播播放器实践
  • 震撼叶珂“假胸”引发热议黄晓明无辜躺枪
  • 在xml 中 不等式 做转义处理的问题
  • 学习docker第三弹------Docker镜像以及推送拉取镜像到阿里云公有仓库和私有仓库
  • 舍伍德业务安全架构(Sherwood Applied Business Security Architecture, SABSA)
  • 面试应该问什么?
  • 基于深度学习的图像修复系统设计与实现(PyQt5、CodeFormer ffhq-dataset数据集)
  • 贝锐花生壳内网穿透:无需公网IP,远程访问自建WebDAV文件共享
  • 数据分析与查询:矩量与辐角。
  • OpenCV高级图形用户界面(20)更改窗口的标题函数setWindowTitle()的使用
  • 基于LSTM-Transformer混合模型实现股票价格多变量时序预测(PyTorch版)
  • 数字后端零基础入门系列 | Innovus零基础LAB学习Day4
  • 3.swoole安装【Docker】
  • 微前端架构新选择:micro-app 框架一文全解析
  • IDEA开发工具使用技巧积累
  • Agilent4339B高阻计测试仪HP4339B原装二手详情资料
  • 1-17课程总结
  • Docker 的网络模式 + 容器间通讯 + TC 流量控制工具
  • 现场总是发生急停,很可能是PLC和设置间网络中断
  • 供电电压和逻辑电压
  • Linux:文件IO
  • Unity-Shader-Tags
  • el-select实现模糊搜索、远端搜索