当前位置:   article > 正文

【论文精读】DDPM:Denoising Diffusion Probabilistic Models 去噪扩散概率模型_ddpm论文

ddpm论文


一、背景

(一)生成模型

变分自动编码器(VAE) 结合了自动编码器和变分推断的思想。它主要包括编码器和解码器两个部分。

  • 编码器将输入数据映射到潜在空间的概率分布参数,通常是均值和方差。
  • 解码器则从潜在空间的采样中重构原始数据。

VAE能够学习数据的潜在表示,并生成具有相似分布的新样本。在训练过程中,VAE的目标是最大化数据的边际似然,同时使潜在表示与先验分布(通常是高斯分布)的KL散度最小化。
在这里插入图片描述
生成对抗网络(GAN): 由生成器和判别器组成。

  • 生成器尝试生成与真实数据样本相似的假数据
  • 判别器则尝试区分真实数据和生成器生成的假数据。

在训练过程中,生成器和判别器相互对抗、相互提升,最终使得生成器能够生成逼真的数据,判别器则很难区分真假数据。
在这里插入图片描述
流模型(Flow-based Models) 是一类生成模型,旨在学习数据的概率分布以生成新的样本。

  • 核心思想是设计一个可逆的变换,将高维输入空间映射到高维输出空间,并确保该变换在变换和逆变换时都具有可导性。
  • 与传统的生成模型如GAN(生成对抗网络)或VAE(变分自编码器)不同,流模型试图通过可逆的变换从一个简单的先验分布(如高斯分布)生成数据,而不是通过从隐变量空间中抽样。

在这里插入图片描述

(二)数学理论基础

  1. 先验概率和后验概率
    • 先验概率:根据以往经验和分析得到的概率,往往作为“由因求果“问题中的“因"出现,如 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1)
    • 后验概率:指在得到“结果“的信息后重新修正的概率,是“执果寻因“问题中的“因",如 p ( x t − 1 ∣ x t ) p(x_{t-1}|x_t) p(xt1xt)
  2. 条件概率的一般形式
    P ( A , B , C ) = P ( C ∣ B , A ) P ( B , A ) = P ( C ∣ B , A ) P ( B ∣ A ) P ( A ) P ( B , C ∣ A ) = P ( B ∣ A ) P ( C ∣ A , B ) P(A,B,C)=P(C|B,A)P(B,A)=P(C|B,A)P(B|A)P(A)\\ P(B,C|A)=P(B|A)P(C|A,B) P(A,B,C)=P(CB,A)P(B,A)=P(CB,A)P(BA)P(A)P(B,CA)=P(BA)P(CA,B)
  3. 马尔科夫链条件概率形式(马尔可夫链指当前状态的概率至于上一时刻有关)

P ( A , B , C ) = P ( C ∣ B , A ) P ( B , A ) = P ( C ∣ B ) P ( B ∣ A ) P ( A ) P ( B , C ∣ A ) = P ( B ∣ A ) P ( C ∣ B ) P(A,B,C)=P(C|B,A)P(B,A)=P(C|B)P(B|A)P(A)\\ P(B,C|A)=P(B|A)P(C|B) P(A,B,C)=P(CB,A)P(B,A)=P(CB)P(BA)P(A)P(B,CA)=P(BA)P(CB)

  1. 高斯分布的KL散度公式
    两个单一变量的高斯分布 p p p q q q的KL散度为: K L ( p , q ) = l o g σ 2 σ 1 + σ 2 + ( μ 1 − μ 2 ) 2 2 σ 2 2 − 1 2 KL(p,q)=log\frac{\sigma_2}{\sigma_1}+\frac{\sigma^2+(\mu_1-\mu_2)^2}{2\sigma_2^2}-\frac{1}{2} KL(p,q)=logσ1σ2+2σ22σ2+(μ1μ2)221
  2. 重参数化
    以高斯分布为例:原本需要从 N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2)中采样得到 z z z,重参数化技巧将其转化为了从正态分布 N ( 0 , 1 ) N(0,1) N(0,1)中采样得到 ε \varepsilon ε,从而 z = μ + ε σ z=\mu+\varepsilon \sigma z=μ+εσ,从而把随机性转移出了计算图,解决了采样导致梯度不可传递的问题,整个过程可以通过梯度下降来进行优化。

(三)扩散模型的三种生成范式

扩散模型(Diffusion Model)是一种新兴的生成式模型,其首先向数据分布中逐步添加随机噪声到预设的先验分布,然后通过学习其逆过程来重建新的数据样本。通常而言,扩散模型具有三种生成范式:

  • Score Matching with Langevin Dynamics (SMLD),
  • Denoising Diffusion Probabilistic Model (DDPM)
  • Score-based Generative Model (SGM)

二、文章概览

(一)核心思想

文章提出的扩散概率模型(diffusion probabilistic models)是使用变分推理训练的参数化马尔可夫链,以在有限时间后生成与数据匹配的样本。

  • 这个马尔可夫链包括前向过程和反向过程,前向过程就是不断往图像上加噪声直到图像变成一个纯噪声,后向过程就是从纯噪声生成一张图像的过程。

在这里插入图片描述

(二)前向过程

前向过程是加噪的过程,前向过程中图像 x t x_t xt只和上一时刻的 x t − 1 x_{t-1} xt1有关, q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1)表示的就是前向过程。

扩散模型的前向过程是有具体的表达式可以计算的,满足:

  • 左式:表示整个前向过程,是一个后验估计,由右式累乘得到
  • 右式:在前向过程中,单步转移概率定义为关于 x t − 1 x_{t-1} xt1的高斯分布,均值和协方差是 x t − 1 x_{t-1} xt1 β t \beta_t βt的函数
    在这里插入图片描述

(三)后向过程

后向过程是去噪的过程,公式表达为 q ( x t − 1 ∣ x t ) q(x_{t-1}|x_t) q(xt1xt)。DDPM的后向过程是利用神经网络 P θ ( x t − 1 ∣ x t ) P_\theta(x_{t-1}|x_t) Pθ(xt1xt)来拟合 q ( x t − 1 ∣ x t ) q(x_{t-1}|x_t) q(xt1xt)

  • 左式:表示反向过程的联合概率密度
  • 右式:在后向过程中,转移概率分布函数为关于 x t − 1 x_{t-1} xt1的高斯分布,均值和协方差是 x t x_t xt t t t的函数

在这里插入图片描述

(四)模型训练

马尔可夫链的前向过程是有具体的表达式可以计算的,后向过程是利用神经网络来学习的。因此模型训练主要集中在后向过程(逆扩散过程)。训练扩散模型的目标是学习正向的反过程,也就是训练概率分布 p θ ( x t − 1 ∣ x t ) p_\theta(x_{t-1}|x_t) pθ(xt1xt),通过沿着马尔科夫链向后遍历,可以重新生成新的数据 x 0 x_0 x0

从数学表达式来看,训练生成模型的过程就是最大似然估计的过程,即对 p θ ( x 0 ) p_\theta(x_0) pθ(x0)的最大似然估计进行优化,论文给出了负对数似然的上界表达式
在这里插入图片描述

训练算法:

  • 从数据中抽取一个样本;
  • 从1-T中随机选取一个时间t;
  • 在GaussionDiffusion中采样一个随机噪声,加到 x 0 x_0 x0生成 x t x_t xt
  • 神经网络利用 x 0 x_0 x0 t t t以及生成的 x t x_t xt预测噪声;
  • 将神经网络Unet预测的噪声与之前GaussionDiffusion采样的随机噪声求L2损失,计算梯度,更新权重;
  • 重复以上步骤,直到网络训练完成。

在这里插入图片描述
采样算法:

  • 从标准正态分布采样出 x T x_T xT​;
  • T , T − 1 , . . . , 2 , 1 T,T-1,...,2,1 T,T1,...,2,1依次重复以下步骤:
    (1)从标准正态分布采样 z z z
    (2)利用重参数化技巧得到 x t − 1 x_{t-1} xt1
  • 循环结束后返回 x 0 x_0 x0

三、数学推导

(一)前向扩散过程

1、证明扩散模型的前向过程是有具体的表达式可以计算的

由于在前向过程中,单步转移概率定义为关于 x t − 1 x_{t-1} xt1的高斯分布,均值和协方差是 x t − 1 x_{t-1} xt1 β t \beta_t βt的函数,即:
在这里插入图片描述
可以利用重参数化技巧,将其改写成下面的式子:(就可以很直观的看到前向过程的噪声是怎么加的)

重参数化技巧:从高斯分布 N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2)中采样一个噪声 ε \varepsilon ε,等价于先从标准正态分布 N ( 0 , 1 ) N(0,1) N(0,1)中采样得到一个噪声 z z z,然后乘以标准差 σ \sigma σ之后加上均值 μ \mu μ。在本文中, x t x_t xt是从高斯分布 N ( 1 − β t x t − 1 , β t I ) N(\sqrt{1-\beta_t}x_{t-1},\beta_tI) N(1βt xt1,βtI)中采样出的噪声,因此可以得到下边的式子。

在这里插入图片描述所以可以知道前向过程中得到的每一步的数据是怎样的。

2、证明可以通过一次计算就得到加噪任意 t t t次之后的 x t x_t xt

由上一个证明可以知道: x t = 1 − β t x t − 1 + β t z t − 1 x_t=\sqrt{1-\beta_t}x_{t-1}+\sqrt{\beta_t}z_{t-1} xt=1βt xt1+βt zt1,此时我们令 α t = 1 − β t \alpha_t=1-\beta_t αt=1βt,即可进行如下推导:
在这里插入图片描述

再次根据重参数化技巧,可以得到任意时刻的 x t x_t xt满足如下的高斯分布:(当 T T T足够大时, x T x_T xT可以认为服从一个标准正态分布。)
在这里插入图片描述

(二)反向生成过程

1、求解神经网络 P θ ( x t − 1 ∣ x t ) P_\theta(x_{t-1}|x_t) Pθ(xt1xt)

DDPM的后向过程是利用神经网络 P θ ( x t − 1 ∣ x t ) P_\theta(x_{t-1}|x_t) Pθ(xt1xt)来拟合 q ( x t − 1 ∣ x t ) q(x_{t-1}|x_t) q(xt1xt)
在这里插入图片描述
在论文中,作者把条件概率 p θ ( x t − 1 ∣ x t ) p_\theta(x_{t-1}|x_t) pθ(xt1xt)的方差直接取成了 β t \beta_t βt,而不是上面的需要网络估计的 Σ θ ( x t , t ) Σ_θ(x_t, t) Σθ(xt,t),所以在下面对于逆转过程的概率分布 q ( x t − 1 ∣ x t ) q(x_{t-1}|x_t) q(xt1xt)的解析形式的求解,只需要估计均值即可。

2、求解逆转过程的概率分布 q ( x t − 1 ∣ x t ) q(x_{t-1}|x_t) q(xt1xt)的解析形式

虽然我们无法得到逆转过程的概率分布 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)就可以直接写出:
在这里插入图片描述
利用贝叶斯公式可以进行如下推导:
在这里插入图片描述
结合马尔可夫公式可以求得均值和方差:
在这里插入图片描述

由于 x 0 x_0 x0 x t x_t xt之间的关系已知,所以可以进一步将均值化简为:
在这里插入图片描述
因此,在给定 x 0 x_0 x0 的条件下,后验条件高斯分布的均值只和超参数、 x t x_t xt ε t ε_t εt 有关,方差只与超参数有关。通过以上的方差和均值,就可以得到 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t, x_0) q(xt1xt,x0)的解析形式。

(三)训练生成模型的过程就是最大似然估计的过程

在训练阶段,DDPM通过最大化训练数据的似然来学习扩散过程的参数。训练是通过优化负对数似然的常见变分界限来执行的:
在这里插入图片描述

1、证明优化目标表达式

DDPM的本质作用,就是学习训练数据的分布,产出尽可能符合训练数据分布的真实图片。所以DDPM的目标就是:使得生成的图片尽可能符合训练数据分布。而求两个分布之间的相似性,我们自然而然想到了KL散度。因此DDPM的目标函数应该为: a r g m i n θ K L ( P d a t a ∣ ∣ P θ ) argmin_{\theta}KL(P_{data}||P_{\theta}) argminθKL(Pdata∣∣Pθ)

对这个目标函数进行转换:
在这里插入图片描述
此时目标函数就变成了 a r g m i n θ ∏ i = 1 m P θ ( x i ) argmin_{\theta} \prod_{i=1}^m P_{\theta}(x_i) argminθi=1mPθ(xi),而这个的本质就是使得连乘中的每一项最大,也就是使得 l o g P θ ( x i ) logP_{\theta}(x_i) logPθ(xi)最大。因此也就有了文章中的负对数似然的上界表达式。

2、证明负对数似然的上界表达式

KL 散度是一种不对称统计距离度量,用于衡量一个概率分布 P 与另外一个概率分布 Q 的差异程度。由于KL散度具有恒大于等于0的性质,因此:
在这里插入图片描述

进一步可以对上式的交叉熵的上界进行化简:
在这里插入图片描述

  • 对于 L T L_T LT:由于前向过程 q q q没有可学习的参数, x T x_T xT是纯高斯噪声,因此可以当做常量忽略
  • 对于 L 0 L_0 L0:当 t t t为1时,第二项中 L t − 1 L_{t-1} Lt1得到的结果就是后面那一项 L 0 L_0 L0
  • 所以整个的优化过程可以变成直接对于 L t − 1 L_{t-1} Lt1的优化:
    在这里插入图片描述

如果有两个分布 p,q 都是高斯分布,则他们的KL散度为:
在这里插入图片描述

第二项 L t − 1 L_{t-1} Lt1中的两个分布都是高斯分布,而且这两个分布的方差全是常数,和优化无关,所以其实优化目标就是两个分布均值的二范数:

分布 q ( x t − 1 ∣ x T , x 0 ) q(x_{t-1}|x_T,x_0) q(xt1xT,x0)是一个高斯分布,均值和方差在之前已经证明得到;分布 p θ ( x t − 1 ∣ x t ) p_\theta(x_{t-1}|x_t) pθ(xt1xt)是网络期望拟合的目标分布,均值用网络估计,方差设置成了和 β t \beta_t βt有关的常数。

在这里插入图片描述
由于 x t x_t xt μ θ \mu_\theta μθ的输入,其他量是常数,所以未知量为 ε \varepsilon ε,此时可以将 μ θ ( x t , t ) \mu_\theta(x_t,t) μθ(xt,t)定义为:
在这里插入图片描述
这样就可以不用网络直接预测 μ θ ( x t , t ) \mu_\theta(x_t,t) μθ(xt,t),而是用网络 ε θ ( x t , t ) \varepsilon_\theta(x_t,t) εθ(xt,t)先预测噪声 ε \varepsilon ε,然后带入到表达式计算出预测的均值。
在这里插入图片描述
最终作者经过这样一番推导之后得到了如下的L2 loss:
在这里插入图片描述网络的输入是一张和噪声线性组合的图片,然后要估计出来这个噪声:
在这里插入图片描述

四、推导过程的完整逻辑链

(一)前向扩散过程的推导逻辑链

  1. 首先引入一个马尔科夫链的加噪过程,并且认为每次加噪都服从一个高斯分布,通过证明可以发现当 T T T足够大时, x T x_T xT可以认为服从一个标准正态分布。
  2. 通过两个高斯分布叠加的这个性质,可以推导出 q ( x t ∣ x 0 ) q(x_t|x_0) q(xtx0)也服从一个正态分布。

(二)反向生成过程的推导逻辑链

我们的目标是希望通过一个高斯分布来逼近逆扩散过程中的每一步,然而通过证明可以发现后验的扩散条件概率 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt1xt,x0)是可以用公式表达的,所以我们只需要让 p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1}|x_t) pθ(xt1xt)与其越接近越好。

(三)目标函数推导的逻辑链

  1. DDPM的总体优化目标是让模型产生的图片和真实图片的分布尽量相似,也就是使得两个分布的KL散度最小化: a r g m i n θ K L ( P d a t a ∣ ∣ P θ ) argmin_{\theta}KL(P_{data}||P_{\theta}) argminθKL(Pdata∣∣Pθ)
  2. 由于我们假设真实世界的图片符合高斯分布: P d a t a P_{data} Pdata~ N ( μ d a t a , σ d a t a ) N(\mu_{data},\sigma_{data}) N(μdata,σdata),因此我们的目标就是要让 P θ P_{\theta} Pθ学到 μ d a t a , σ d a t a \mu_{data},\sigma_{data} μdata,σdata。但是由于这两个客观存在的真值是未知的,因此需要我们将KL散度不断拆解直到能够用确定的形式表达出来。
  3. 对KL散度进行拆解之后将优化目标转变成了最大化 l o g P θ ( x i ) logP_{\theta}(x_i) logPθ(xi)。进一步进行拆解,可以将优化目标转化为最大化下界ELBO。
  4. 继续拆解,可以将优化目标拆解成 L T L_T LT L t − 1 L_{t-1} Lt1 L 0 L_0 L0三项​。其中, L T L_T LT是常量,当 t t t为1时,第二项中 L t − 1 L_{t-1} Lt1得到的结果就是后面那一项 L 0 L_0 L0​,因此整个的优化过程可以变成直接对于 L t − 1 L_{t-1} Lt1的优化。
  5. 第二项 L t − 1 L_{t-1} Lt1中的两个分布都是高斯分布,而且这两个分布的方差全是常数,和优化无关,所以其实优化目标就是两个分布均值的二范数,因此只需要学习均值即可。
  6. 经过一系列变换,均值项可以写成 1 α t ( x t − 1 − α t 1 − α t ‾ ε ) \frac{1}{\sqrt{\alpha_t}}(x_t-\frac{1-\alpha_t}{\sqrt{1- \overline{\alpha_t}}}\varepsilon) αt 1(xt1αt 1αtε),这样就可以不用模型直接预测 μ θ ( x t , t ) \mu_\theta(x_t,t) μθ(xt,t),而是用模型 ε θ ( x t , t ) \varepsilon_\theta(x_t,t) εθ(xt,t)先预测噪声 ε \varepsilon ε,然后带入到表达式计算出预测的均值,即可实现最终目的。

参考:
54、Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读
【生成模型】DDPM概率扩散模型(原理+代码)
DDPM交叉熵损失函数推导
DDPM(Denoising Diffusion Probabilistic Models)扩散模型简述
扩散模型(Diffusion Model)奠基之作:DDPM 论文解读
一文解释 Diffusion Model (一) DDPM 理论推导
深入浅出扩散模型(Diffusion Model)系列:基石DDPM(人人都能看懂的数学原理篇)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/664120
推荐阅读
相关标签
  

闽ICP备14008679号