【论文精读】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.rhkb.cn/news/278082.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

玩转C语言——数组初探

一、前言 通过前面的学习,我们已了解C语言的结构变量、分支结构和循环结构。今天,我们一起来认识C语言的另一知识点——数组。先赞后看,养成习惯。 二、数组概念 学习数组,我们要明白数组是什么。在我看来:数组是⼀组…

jenkins 使用k8s插件连接k8s集群

jenkins 安装k8s 插件 配置k8s节点 填写k8s 配置信息 如果不是买的https证书 切记不检查https Kubenetes 服务证书key 的获取 登录 k8s 服务器 查看地址 Kubernetes 服务证书 key cat /root/..kube/config 查看秘钥 对秘钥进行base64 位 加密 echo "秘钥内容&…

JavaWeb后端——分层解耦 IOC DI

分层/三层架构概述 三层架构:Controller、Service、Dao 解耦/IOC&DI概述 分层解耦 容器称为:IOC容器/Spring容器 IOC 容器中创建,管理的对象,称为:bean 对象 IOC&DI入门 实现 IOC&DI 需要的注解&#…

分布式搜索引擎(3)

1.数据聚合 **[聚合(](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html)[aggregations](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html)[)](https://www.ela…

使用HttpRequest工具类调用第三方URL传入普通以及文件参数并转换MultipartFile成File

使用HttpRequest工具类调用第三方URL传入普通以及文件参数 一、依赖及配置二、代码1、模拟第三方服务2、调用服务3、效果实现 一、依赖及配置 <!--工具依赖--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId&g…

Linux进程管理:(六)SMP负载均衡

文章说明&#xff1a; Linux内核版本&#xff1a;5.0 架构&#xff1a;ARM64 参考资料及图片来源&#xff1a;《奔跑吧Linux内核》 Linux 5.0内核源码注释仓库地址&#xff1a; zhangzihengya/LinuxSourceCode_v5.0_study (github.com) 1. 前置知识 1.1 CPU管理位图 内核…

windows文档格式转换的实用工具

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

CSDN 编辑器设置图片缩放和居中

CSDN 编辑器设置图片缩放和居中 文章目录 CSDN 编辑器设置图片缩放和居中对齐方式比例缩放 对齐方式 Markdown 编辑器插入图片的代码格式为 ![图片描述](图片路径)CSDN 的 Markdown 编辑器中插入图片&#xff0c;默认都是左对齐&#xff0c;需要设置居中对齐的话&#xff0c;…

如何写好Stable Diffusion的prompt

Stable Diffusion是一种强大的文本到图像生成模型&#xff0c;其效果在很大程度上取决于输入的提示词&#xff08;Prompt&#xff09;。以下是一些关于如何编写有效的Stable Diffusion Prompt的秘诀&#xff1a; 明确描述&#xff1a;尽量清晰地描述你想要的图像内容。使用具体…

论文阅读——SpectralGPT

SpectralGPT: Spectral Foundation Model SpectralGPT的通用RS基础模型&#xff0c;该模型专门用于使用新型3D生成预训练Transformer&#xff08;GPT&#xff09;处理光谱RS图像。 重建损失由两个部分组成&#xff1a;令牌到令牌和频谱到频谱 下游任务&#xff1a;

SQL日期函数

文章目录 1.获取日期时间函数1.1 获取当前日期时间1.2 获取当前日期1.3 获取当前时间 2.日期格式化★★★2.1 日期转指定格式字符串2.2 字符串转日期 3.日期间隔3.1 增加日期间隔 ★★★3.2 减去一个时间间隔★★★3.3 日期相差天数&#xff08;天&#xff09;3.4 相差时间&…

FFmpeg-aac、h264封装flv及时间转换

文章目录 时间概念流程api核心代码 时间概念 dts: 解码时间戳, 表示压缩帧的解码时间 pts: 显示时间戳, 表示将压缩帧解码后得到的原始帧的显示时间 时间基: time_base &#xff0c; 通常以ms为单位 时间戳: timestamp , 多少个时间基 真实时间&#xff1a;time_base * timest…

谷歌(edge)浏览器过滤,只查看后端发送的请求

打开F12 调试工具 选择Network 这是我们会发现 什么图片 文件 接口的请求很多很多&#xff0c;我们只需要查看我们后端发送的请求是否成功就好了 正常情况我们需要的都是只看接口 先点击这里这个 过滤 我们只需要点击 Fetch/XHR 即可过滤掉其他请求信息的展示 这样烦恼的问题就…

vulhub中GitLab 远程命令执行漏洞复现(CVE-2021-22205)

GitLab是一款Ruby开发的Git项目管理平台。在11.9以后的GitLab中&#xff0c;因为使用了图片处理工具ExifTool而受到漏洞CVE-2021-22204的影响&#xff0c;攻击者可以通过一个未授权的接口上传一张恶意构造的图片&#xff0c;进而在GitLab服务器上执行任意命令。 环境启动后&am…

ChatGPT提示词方法的原理

关于提示词&#xff0c;我之前的一些文章可以参考&#xff1a; 【AIGC】AI作图最全提示词prompt集合&#xff08;收藏级&#xff09;https://giszz.blog.csdn.net/article/details/134815245?ydrefereraHR0cHM6Ly9tcC5jc2RuLm5ldC9tcF9ibG9nL21hbmFnZS9hcnRpY2xlP3NwbT0xMDExL…

Tomcat Seeion 集群

部署&#xff1a;nginx服务器&#xff1a;11-11&#xff1b;tomcat1:11-3; tomcat2:11-6 nginx服务器11-11做搭建&#xff1a; [rootmcb-11 ~]# systemctl stop firewalld [rootmcb-11 ~]# setenforce 0 [rootmcb-11 ~]# yum install epel-release.noarch -y [rootmcb…

华为三层交换机:ACL的基本实验

实验要求&#xff1a; PC1不允许访问PC3&#xff0c;PC3可以访问PC1 分析问题&#xff1a; PC1不允许访问PC3&#xff0c;问题中含有“目标地址”则我们需要设置目标地址&#xff0c;这样基本ACL是不行的&#xff0c;必须使用高级ACL [sw1]acl ? INTEGER<2000-2999>…

Flutter 多语言自动化本地化生成器

Flutter 多语言自动化本地化生成器 这是一个为Flutter设计的插件&#xff0c;通过从Excel表格提取的CSV文件自动生成Dart本地化文件&#xff0c;以简化应用程序本地化的流程。这个工具通过自动化创建多语言资源文件&#xff0c;简化了开发人员和翻译人员的工作流程。 录屏2024…

网络学习:邻居发现协议NDP

目录 前言&#xff1a; 一、报文内容 二、地址解析----NS/NA 目标的被请求组播IP地址 邻居不可达性检测&#xff1a; 重复地址检测 路由器发现 地址自动配置 默认路由器优先级和路由信息发现 重定向 前言&#xff1a; 邻居发现协议NDP&#xff08;Neighbor Discovery…

论文阅读——Rein

Stronger, Fewer, & Superior: Harnessing Vision Foundation Models for Domain Generalized Semantic Segmentation 一、引言 是一个对Domain Generalized Semantic Segmentation (DGSS)任务的视觉大模型的微调方法&#xff0c;即Rein。 Rein 专为 DGSS 任务量身定制&a…