Denoising Diffusion Probabilistic Models 全过程概述 + 论文总结

标题:Denoising(🌟去噪)Diffusion Probabilistic Models(扩散概率模型)

论文(NeurIPS会议 CCF A 类):Denoising Diffusion Probabilistic Models

源码:hojonathanho/diffusion: Denoising Diffusion Probabilistic Models (github.com)

推荐课程:大白话AI | 图像生成模型DDPM | 扩散模型 | 生成模型 | 概率扩散去噪生成模型_哔哩哔哩_bilibili

论文铺垫:

1、高斯正态分布函数(正态分布)

如下图所示,为正态分布的概率密度曲线,俗称 "钟形曲线" : 

其中, f(x) 为概率密度(无实际含义),x 为随机变量。e 和 π 为常量(就是那两个值)。μ 为随机变量的平均值,名为期望,是钟形曲线的 "对称轴"。σ 为为随机变量的标准差,名为方差。μ 和 σ 决定了钟形曲线的位置和形状,因此只需要确定μ 和 σ 就可以确定正态分布函数的概率密度函数。所以,正态分布函数也常表示为 N(\mu, \sigma^2) ,N表示 Normal(正态)。概率密度曲线和x轴之间合围的面积区域表示随机变量区间内发生的概率

2. 高斯噪声

期望 μ 为0,方差 σ 为1的正态分布,为标准正态分布 N(0,1) 。从一个标准正态分布中 "随机抽取" 样本,生成一组符合该分布的随机变量值,这样一组变量就叫做 "标准正态分布随机变量" ,在用于制造向数据中添加的噪声时,也叫做 "高斯噪声"。这样一组随机变量值,即是 "高斯噪声值"。

3. 扩散现象和扩散模型 

当一滴墨水滴入水中时,随着时间的推移,由于分子之间的碰撞和热运动,墨水分子开始向周围扩散。

扩散模型受到这种现象的启发,通过逐步向图片中添加高斯噪声来模拟这种现象(最终图像会变成一张符合N(0,1) 的纯噪声),并通过逆向过程逐步从噪声中生成图像(通过模型学习去噪过程)。

这样做的好处在于,一个训练好的完备的模型可以通过逆向过程从任意的符合 N(0,1) 的纯噪声中生成图像,使得生成样本具有较高的质量和多样性。

4. 扩散模型的前向过程(加噪过程)

那么,扩散模型 的具体加噪过程,应该怎么实现呢?

首先,为加噪图片创造出一张等大小的高斯噪声图片。

通过以下公式实现高斯噪声图片与输入图像的混合:

其中,x 为输入图像,ϵ 为等大小的高斯噪声图片 ,β 为产生 x 和 ϵ 系数的参数值(β 仅仅只是一个参数值,用于调和高斯噪声和输入图像的混合比例)。

如上图所示,加噪的过程是一个连续的,具有稳定时间步数的过程,且每一步加噪结果仅依赖于上一步的样本,这便是一个马尔可夫链。(  简述马尔可夫链【通俗易懂】)

以上图为例,可以得到一个🌟新的公式,如下所示:

其中,加噪所使用的噪声 \epsilon _t 是基于标准正态分布 \epsilon_t\sim N(0,1) 随机采样得来的。\beta_t \in (1,0) 并且随着步数逐渐增大,因为扩散速度是越来越快的。

5. 高斯函数叠加 和 重参数化技巧(扩散模型的前向过程的继续推导)

在得出上述公式之后,我们仅需要知道高斯函数叠加公式( \epsilon _t 符合标准高斯分布 \epsilon_t\sim N(0,1) ),就能知道最终加噪结果。

简单来讲,🌟给定两个高斯分布 X\sim N(\mu_{1} , \sigma_{1} ^{2}) 和 Y\sim N(\mu_{2} , \sigma_{2} ^{2}) 进行叠加,则它们叠加后的分布 aX+bY 满足:


那么继续 扩散模型的前向过程 的推导,首先,为了方便计算,令 β =1 - α :

代入 X_{t-1} : 

已知 \epsilon_t\sim N(0,1) ,根据高斯函数叠加公式:

🌟重参数化,得

(没错,这便是重参数化,在数学中仅仅只是一个将高斯函数简式表示重整为等式的方法。但是在梯度传播过程中,由于 \epsilon _t 是随机采样得来的,那么与之对应的加噪样本 X_{t} 也是随机生成的,这样的样本在 前向过程 的每个阶段都存在,导致梯度无法传播。通过重参数化,随机采样的噪声 \epsilon _t 被压缩到只有一个 \epsilon ,这样一个随机噪声生成之后不会再变,与之对应的加噪样本也不会再变,对梯度传播不会产生影响 

重复上述过程可得: 

其中a_t a_{t-1} a_{t-2}...a1很长,为了方便表达,用 \bar{\alpha }_t 代替:

最后,我们得到了最终加噪结果。

不难看出,最终加噪结果 xt 是由 x0 直接得出而来的(重参数化)。这是"迫于"随机采样导致梯度无法传播而做的选择。(也不好说,这种做法,说不定效果更优呢)。

 6. 贝叶斯公式和反向过程

贝叶斯公式,如下: 

其中,A、B 表示随机事件A和随机事件B。P(A) 和 P(B) 表示事件A和事件B发生的概率。P(B|A) 表示A事件发生的情况下B事件发生的概率。P(A|B) 表示B事件发生的情况下A事件发生的概率。贝叶斯公式强调 “已知结果找原因”。P(A) 是先验概率,P(A|B) 是后验概率。

(🌟同样,贝叶斯是可以求取后验概率分布,因为某一类的概率和某一类的概率分布只是定义上不同,本质上都是概率对不同事件的划分)


反向过程推导 

🌟由于在前向过程中从前一时刻向后一时刻加入的是根据正态分布随机采样的噪声,所以从 X_t 到 X_{t-1}也应该是一个随机过程,我们无法简单地预测 X_t 到 X_{t-1}的样本和具体的噪声值,但是我们可以通过贝叶斯公式大致地推测出给定 X_t 条件下 X_{t-1} 噪声的概率分布。(注意,这里已知的X_t 条件,是指最终加噪结果X_t 的噪声的概率分布 \epsilon \sim N(0,1 - \bar{\alpha} ) )

由贝叶斯公式得:

表示为由x0原图 “得到” 作为条件,得:

其中,P(x_{t-1}| x_t,x_0) 表示在给定Xt的情况下得到X_{t-1}的概率(反向过程中),P(x_t| x_{t-1},x_0) 表示在给定X_{t-1}的情况下得到Xt的概率(正向过程中),P(x_t|x_0) 从X0原图得到Xt的概率,P(x_{t-1}| x_0) 从X0原图得到X_{t-1}的概率。(这里概率都指的得到对应概率分布的概率)。

由正向过程给出的推断式可得,P(x_t| x_{t-1},x_0)P(x_t|x_0)P(x_{t-1}| x_0) 对应正态分布表达式分别如下所示:

代入 高斯正态分布函数 可得:

代回贝叶斯公式,得

这样,我们就可以推测出给定 X_t 条件下 X_{t-1} (包含噪声)的概率分布。其中 X_t 是正向过程中最终得加噪结果,\bar{\alpha } 和 \beta 是无实际含义的参数,\epsilon 是从一个标准正态分布中 "随机抽取" 的噪声样本。🌟而 \epsilon 是图像去噪的关键,只有找到与正向过程一致或接近的随机采样噪声值(噪声的概率分布已推测出)才能顺利还原图像,🌟 \epsilon 由神经网络模型进行学习输出(只学习这个值)。

 

 

不断重复上述过程,最终得到原图像 X0 的概率分布。如下图所示(该图只是一个大概过程,并不符合事实):

在推测出每个阶段的噪声的概率分布后,神经网络模型不断地学习优化 \epsilon 。 

一、摘要

研究动机:本文提出使用扩散概率模型得到高质量图像的合成结果,这是一类受非平衡热力学考虑启发的潜在变量模型。

主要工作:本文的最佳结果是通过在 加权变分界 上进行训练获得的,该变分界是根据 扩散概率模型 和与Langevin动力学匹配的 去噪分数 之间的新联系设计的,并且本文的模型自然地允许 渐进有损解压缩方案 ,可以解释为自回归解码的推广。(目标函数:变分推断,KL散度 + 模型:扩散概率模型和去噪分数 + 采样方式:渐进式编码和渐进式解码

实验结果:在CIFAR10数据集上,本文方法获得了9.46的Inception分数和3.17的最新FID分数。在256x256 LSUN上,本文方法获得了类似ProgressiveGAN的样品质量。

二、引言

相关工作概述( 生成对抗网络(gan)、自回归模型、流和变分自编码器(VAEs) ) —> 扩散概率模型概述( “扩散模型”是一个参数化的马尔可夫链,使用变分推理进行训练 + 正向过程概述 + 反向过程概述 )—> 模型效果概述+ 扩散模型某些参数化设计 +采样方式概述

三、主要方法

扩散模型是形式为 p_\theta (x_0):= \int p_\theta (x_{0:T}) dx_{1:T} 的隐变量模型,其中x1,…,xT是与数据x0 ~ q(x0)相同维数的潜变量。

反向过程定义(逆扩散过程)联合分布 p_\theta (x_{0:T}) 被称为反向过程,它被定义为一个马尔可夫链,其中学习高斯转移从 p(x_T) = N(x_T;0, I) 开始:

p_\theta 表示噪声的概率分布。这里左半部分 p_\theta (x_{0:T}) 是 的简化,是 x0,…,xT 的联合密度函数,表示给定xT ,…, x1条件下x0 噪声的概率分布(这是一个逆向推断的过程,推理到x0时,xT ,…, x1的噪声的概率分布已全部给定)。右半部分 p_\theta (x_{t-1}|x_t):= N(x_{t-1};\mu _\theta (x_t, t),\Sigma _\theta(x_T,T)) 表示给定 X_t 条件下 X_{t-1} 噪声的概率分布

前向过程定义(扩散过程):扩散模型与其他类型的隐变量模型的区别在于,近似后验 q(x_{1:T}|x_0) ,称为前向过程或扩散过程,固定在一个马尔可夫链中,逐渐向数据中添加高斯噪声根据方差 β1, . . ., βT:

 β 表示原图与噪声的混合比例(详情看论文铺垫部分)。

优化函数:在训练过程中使用负对数似然的变分界限进行优化:

 对𝑝𝜃(𝑥0) 的最大似然估计进行优化。

任意时刻的 xt 可以由 x0 和 β 表示:正向过程的一个显著特性是,它允许在任意时间步长 t 上以闭合形式对 xt 进行采样:使用符号 \alpha _t:= 1-\beta_t 和 \bar{\alpha }_t:=\sum^t _{s=1} \alpha _s ,有

 对应论文铺垫前向过程中最后一部分。由重参数化实现。

四、实验

实验细节:为所有实验设置T = 1000,以便采样期间所需的神经网络评估数量与之前的工作相匹配。将正向过程方差设置为常数,从\beta_1 = 10^{-4}到 \beta_T = 10^{-4} 线性增加。在实验中 L_T = D_{KL}(q(x_T|x_0) || N(0, I)) \approx 10^5  。为了表示反向过程,使用类似于未掩码的PixelCNN+的U-Net骨干,并始终进行group normalization。参数是跨时间共享的,使用Transformer正弦位置嵌入对网络进行指定。在16 × 16特征图分辨率上使用自注意力。

4.1 图片生成质量

在 CIFAR10 数据集上, 在训练集上,无条件模型 FID 分数达到 3.17;在测试集上 FID 分数为5.24,图片质量超过其他模型。

4.2 损失函数比较

简化损失函数的影响,结果如下表:

五、结论

1. 主要工作:本文发现了扩散模型和变分推断之间的联系,用于训练马尔可夫链、去噪分数匹配、自回归模型和渐进损耗压缩。

2. 实验效果:在 CIFAR10 数据集上, 在训练集上,无条件模型 FID 分数达到 3.17。在测试集上 FID 分数为5.24,图片质量超过其他模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/647266.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

通过unsplash引入图片素材

如果您还没听说过——当您需要无版权费的照片用于项目时,无论是否用于商业目的,Unsplash 都是您的不二之选。我自己也经常用它来获取大型背景图像。 虽然他们为开发者提供了出色的 API,但他们还为您提供了通过 URL 直接访问随机图片的选项。…

《python编程从入门到实践》day39加更

# 昨日知识点回顾 添加主题、条目 # 今日知识点学习 19.1.3 编辑条目 1.URL模式edit——entry # learning_logs/urls.py ---snip---# 用于编辑条目的页面path(edit_entry/<int:entry_id>/, views.edit_entry, nameedit_entry), ] 2.视图函数edit_entry() # views.py fr…

《计算机网络微课堂》1-2:因特网概述

1-2&#xff1a;因特网概述 网络、互连网&#xff08;互联网&#xff09;和因特网因特网发展的三个阶段因特网的标准化工作因特网的组成 ‍ 网络、互连网&#xff08;互联网&#xff09;和因特网 我们首先介绍网络、互联网&#xff08;互连网&#xff09;因特网的基本概念&a…

linuxwindows硬件信息midecod和wmic命令

1、命令dmidecode -t实例 1.1命令格式 dmidecode -t [类型代码或名称 ] 指令 1.2获取系统信息 [rootlala docker]# dmidecode -t 1 1.3获取主板信息&#xff1a; [rootshanghai docker]# dmidecode -t 2 1.4获取CPU ID dmidecode -t 4 | grep ID 1.5获取系统序列号 …

C++STL---string知识汇总

前言 我们现在开始CSTL的学习&#xff0c;从这时开始我们就要锻炼自己查看英文文档的能力&#xff0c;每种数据结构都有上百个接口函数&#xff0c;我们把他们全部记下来是不可能的&#xff0c;所以我们只记最常见的20几个接口&#xff0c;其他的大概熟悉有什么功能&#xff0…

奇舞周刊第529期:万字长文入门前端全球化

周五快乐&#xff08;图片由midjourney生成&#xff09; 奇舞推荐 ■ ■ ■ 万字长文入门前端全球化 目前国内企业正积极开拓国际市场&#xff0c;国际化已成为重要的发展方向&#xff0c;因此产品设计和开发更需考虑国际化。本文介绍了语言标识、文字阅读顺序等诸多知识。然后…

卡特兰数-

是组合数学中一种常出现于各种计数问题中的数列。 一、简单介绍 卡特兰数是一个数列&#xff0c;其前几项为&#xff08;从第零项开始&#xff09; : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 47763…

LeetCode:279.完全平方数

class Solution:def numSquares(self, n: int) -> int:dp[i for i in range(n1)]for i in range(2,n1):for j in range(1,int(i**(0.5))1):dp[i]min(dp[i],dp[i-j*j]1)return dp[-1]代码解释 初始化 DP 数组&#xff1a; dp [i for i in range(n1)] 这里&#xff0c;dp[i]…

OpenAI策略:指令层级系统让大模型免于恶意攻击

现代的大模型&#xff08;LLMs&#xff09;不再仅仅是简单的自动完成系统&#xff0c;它们有潜力赋能各种代理应用&#xff0c;如网页代理、电子邮件秘书、虚拟助手等。然而&#xff0c;这些应用广泛部署的一个主要风险是敌手可能诱使模型执行不安全或灾难性的行动&#xff0c;…

探索集合python(Set)的神秘面纱:它与字典有何不同?

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、集合&#xff08;Set&#xff09;与字典&#xff08;Dictionary&#xff09;的初识 1. …

元组的创建和删除

目录 使用赋值运算符直接创建元组 创建空元组 创建数值元组 删除元组 自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 元组&#xff08;tuple&#xff09;是Python中另一个重要的序列结构&#…

太空几乎没有阻力,飞船理论上能一直加速,为何还说星际旅行很难

太空几乎没有阻力&#xff0c;飞船理论上能一直加速&#xff0c;为何还说星际旅行很难&#xff1f; 答案 现代科学认为&#xff0c;我们的地球诞生于46亿年前&#xff0c;也就是太阳系诞生初期&#xff0c;在太阳系中一共有八大行星&#xff0c;而地球是唯一一颗诞生了生命的…

性能测试学习之基本概念和认识(一)

一、概念 1.性能测试&#xff1a;使用自动化工具&#xff0c;模拟不同场景&#xff0c;对软件各项性能指标进行测试和评估的过程 2.包括&#xff1a;a.后台处理程序的性能&#xff1b;b.应用服务器、数据库、架构设计是否存在瓶颈&#xff1b;c.服务器资源消耗(CPU、内存、磁…

游戏行业 2024 Q1报告 | 国内同比上升7.6%,海外收入同比环比双增长,码住!

作为中国音像与数字出版协会主管的中国游戏产业研究院的战略合作伙伴&#xff0c;伽马数据发布了《2024年1—3月中国游戏产业季度报告》。 数据显示&#xff0c; 2024年1—3月&#xff0c;中国游戏市场实际销售收入726.38亿元&#xff0c;同比增长7.60%&#xff0c;主要受移动游…

Linux防火墙之iptables(二)

一.SNAT策略概述 1.SNAT 策略的典型应用环境 局域网主机共享单个公网IP地址接入Internet&#xff08;私有IP不能在Internet中正常路由&#xff09; 局域共享上网 2.SNAT 策略的原理 源地址转换&#xff0c;Source Network Address Translation 修改数据包的源地址 未作SNAT转换…

一.架构设计

架构采用 ddd 架构&#xff0c;不同于传统简单的三层的架构&#xff0c;其分层的思想对于大家日后都是很有好处的&#xff0c;会给大家的思想层级&#xff0c;提高很多。 传统的项目 现有的架构 采取ddd架构&#xff0c;给大家在复杂基础上简化保留精髓&#xff0c;一步步进行…

TOTP 算法实现:双因素认证的基石(C/C++代码实现)

双因素认证&#xff08;Two-Factor Authentication, 2FA&#xff09;扮演着至关重要的角色。它像是一道额外的防线&#xff0c;确保即便密码被窃取&#xff0c;不法分子也难以轻易突破。在众多双因素认证技术中&#xff0c;基于时间的一次性密码&#xff08;Time-Based One-Tim…

【古董技术】ms-dos应用程序的结构

序 制定一个MS-DOS应用程序计划需要认真分析程序的大小。这种分析可以帮助程序员确定MS-DOS支持的两种程序风格中哪一种最适合该应用程序。.EXE程序结构为大型程序提供了好处&#xff0c;因为所有.EXE文件之前都有额外的512字节&#xff08;或更多&#xff09;的文件头。另一方…

【MinIO学习】

OSS Docker podman MinIO服务器 MinIO客户端 Bucket Object 时间同步 The difference between the request time and the servers time is too large。 URL

AGI系列(1):掌握AI大模型提示词优化术,提问准确率飙升秘籍

当我们向AI大模型提问时&#xff0c;通常人们的做法是有什么问题&#xff0c;就直接去问&#xff0c;得到大模型的回复结果&#xff0c;时好时坏&#xff0c;完全没有可控性。 那么有没有一种方式或是一套方法&#xff0c;可以让我们向大模型提问时&#xff0c;得到的结果更准确…