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

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

文章目录


一、背景

(一)生成模型

变分自动编码器(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 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满足如下的高斯分布:
在这里插入图片描述

(二)反向生成过程

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、证明负对数似然的上界表达式

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:
在这里插入图片描述网络的输入是一张和噪声线性组合的图片,然后要估计出来这个噪声:
在这里插入图片描述

参考:
54、Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读
【生成模型】DDPM概率扩散模型(原理+代码)
DDPM交叉熵损失函数推导
DDPM(Denoising Diffusion Probabilistic Models)扩散模型简述
扩散模型(Diffusion Model)奠基之作:DDPM 论文解读
一文解释 Diffusion Model (一) DDPM 理论推导


http://www.kler.cn/a/272066.html

相关文章:

  • Picsart美易照片编辑器和视频编辑器
  • 简识JVM私有内存区域栈、数据结构
  • Spring Boot整合Thymeleaf、JDBC Template与MyBatis配置详解
  • GD32L233RB 驱动数码管
  • 等变即插即用图像重建
  • Java 8 实战 书籍知识点散记
  • 每日OJ题_简单多问题dp④_力扣LCR 091. 粉刷房子
  • ROS2+NAV2如何快捷的在docker中使用主机的CAN
  • WPF中使用LiveCharts绘制散点图
  • 如何降低云计算成本?
  • 数字后端 EDA 软件分享
  • Find My游戏机|苹果Find My技术与游戏机结合,智能防丢,全球定位
  • Linux 块设备驱动
  • 算法第二十九天-森林中的兔子
  • LGB2028 反向输出一个三位数
  • 动态规划题目集一(代码 注解)
  • 继承 ResponseEntityExceptionHandler
  • 2024云服务器安装MySQL,连接Navicat保姆级教程
  • Realtek PCIE Ethenter - PG Tool 使用操作說明
  • SpringBoot整合ElasticSearch应用
  • python中pdf转图片的操作方法二
  • “城市绿肺诊断:集成GIS、RS、VORS模型、CCDM模型、geodetecto、GWR模型技术深入解析生态系统与城镇化协调发展“
  • 接口幂等性问题和常见解决方案
  • LLM之RAG实战(二十九)| 探索RAG PDF解析
  • Flutter开发进阶之使用工具效率开发
  • 京东云主机+京美建站SaaS版