Diffusion Models: 方法和应用的综合调查 【01】Diffusion Models基础

news2025/1/16 3:42:57

Diffusion Models: 方法和应用的综合调查 【01】Diffusion Models基础

原文链接:Diffusion Models: 方法和应用的综合调查 【01】Diffusion Models基础
GitHub: https://github.com/YangLing0818/Diffusion-Models-Papers-Survey-Taxonomy.
Paper: https://arxiv.org/abs/2209.00796

目录

文章目录

  • Diffusion Models: 方法和应用的综合调查 【01】Diffusion Models基础
    • 01 概述
    • 02 Diffusion Models基础
      • 去噪扩散概率模型(DDPMs)
      • 基于分数的生成模型(SGMs)
      • 随机微分方程(Score SDEs)
    • 02 高效采样的Diffusion Models

(更多内容后续会陆续发表)

01 概述

在本调查中,我们概述了扩散模型快速发展的工作主体,并将研究分为三个关键领域:

  • efficient sampling ,
  • improved likelihood estimation ,
  • methods for handling data with special structures.

我们还讨论了将扩散模型与其他生成模型相结合的可能性,以增强结果。具体包括:

  • variational autoencoders (VAEs) [135, 225],
  • generative adversarial networks (GANs) [77],
  • normalizing flows [53, 55, 199, 227],
  • autoregressive models [271],
  • energy-based models (EBMs)

我们进一步回顾了扩散模型在计算机视觉、自然语言处理、时间数据建模以及其他科学学科的跨学科应用等领域的广泛应用。 对于每个任务,我们提供了一个定义,描述了如何使用扩散模型来解决它,并总结了相关的先前工作。

本调查旨在为扩散模型的状态提供一个情境化的、深入的观察,确定重点领域,并指出进一步探索的潜在领域。

Fig 1. 内容结构

02 Diffusion Models基础

扩散模型(Diffusion Models)是一组概率生成模型,它通过注入噪声逐步破坏数据,然后学习反转这个过程来生成样本。

Fig 2. 扩散模型通过添加噪声平滑地扰动数据,然后将这一过程反过来从噪声中生成新数据。反向过程中的每个去噪步骤通常都需要估计分数函数(见右图),分数函数是指向具有较高似然性和较少噪声的数据方向的梯度。

目前关于扩散模型的研究主要基于三个主要公式:

  • 去噪扩散概率模型(DDPMs)[90, 166, 215],
  • 基于分数的生成模型(SGMs)[220, 221]
  • 随机微分方程(Score SDEs)[219, 225]。

下面将分别介绍这三部分内容。

去噪扩散概率模型(DDPMs)

去噪扩散概率模型(denoising diffusion probabilistic model, DDPM)[90,215]利用了两条马尔可夫链:将数据扰动为噪声的正向链和将噪声转换回数据的反向链。前者通常是手工设计的,目的是将任何数据分布转换为简单的先验分布(例如,标准高斯分布),而后者的马尔可夫链通过学习由深度神经网络参数化的转移核来逆转前者。通过首先从先验分布中抽样一个随机向量,然后通过反向马尔可夫链进行祖先抽样,从而生成新的数据点[125]。

x 0 x_0 x0为条件的联合分布 x 1 , x 2 , . . . , x T x_1,x_2,...,x_T x1,x2,...,xT,即 q ( x 1 , x 2 , . . . , x T ∣ x 0 ) q(x_1,x_2,...,x_T | x_0) q(x1,x2,...,xTx0) 可以表示为:

在DDPM中,我们手工制作转换内核 q ( x t ∣ x t − 1 ) q(x_t|x_{t−1}) q(xtxt1),以增量方式将数据分布 q ( x 0 ) q(x_0) q(x0)转换为可处理的先验分布。


其中 β t ∈ ( 0 , 1 ) \beta_t \in (0,1) βt(0,1)是在模型训练之前选择的超参数。指定 α t : = 1 − β t , α ^ t : = ∏ s = 0 t α s \alpha_t :=1-\beta_t, \hat{\alpha}_t:=\prod^t_{s=0} \alpha_s αt:=1βt,α^t:=s=0tαs, 则可推导出:


给定 x 0 x_0 x0,我们可以很容易地通过对高斯向量 ϵ ∼ N ( 0 , I ) \epsilon \sim N (0, I) ϵN(0,I)进行采样并应用变换来获得 x t x_t xt的样本:

其中, α ^ T ≈ 0 \hat{\alpha}_T \approx 0 α^T0.

反向马尔可夫链参数化为先验分布 p ( x T ) = N ( x T ; 0 , I ) p(x_T)= N (x_T;0, I) p(xT)=N(xT;0,I)和可学习转换内核 p ( x t − 1 ∣ x t ) p(x_{t−1} | x_t) p(xt1xt),具体的形式如下:

其中, θ \theta θ为模型参数,均值 u θ ( x t , t ) u_{\theta}(x_t,t) uθ(xt,t)和方差 Σ θ ( x t , t ) \Sigma_{\theta}(x_t,t) Σθ(xt,t)用深度神经网络参数化。有了这个反向马尔可夫链,我们可以通过首先对噪声向量 x T ∼ p ( x T ) x_T \sim p(x_T) xTp(xT)进行采样,然后从可学习的转换核 x t − 1 ∼ p ( x t − 1 ∣ x t ) x_{t−1} \sim p(x_{t−1} | x_t) xt1p(xt1xt)迭代采样,直到𝑡= 1,来生成数据样本 x 0 x_0 x0.

训练目标如下:

基于分数的生成模型(SGMs)

基于分数的生成模型[252,253]的核心是(Stein)分数(又称分数或分数函数)的概念[108]。给定一个概率密度函数𝑝(x),其得分函数定义为对数概率密度的梯度 ∇ x l o g p ( x ) ∇xlogp(x) xlogp(x)。 基于分数的生成模型(SGMs)[220]的关键思想是用一系列增强的高斯噪声扰动数据,并通过训练一个以噪声水平为条件的深度神经网络模型(在[220]中称为噪声条件分数网络,NCSN),共同估计所有噪声数据分布的分数函数。样本是通过使用基于分数的采样方法(包括Langevin Monte Carlo[81、110、176、220、225]、随机微分方程[109、225]、常微分方程[113、146、219、225、277]以及它们的各种组合[225]),在降低噪声水平下链接分数函数来生成的。

SGMs的一个典型例子涉及将数据点 x 0 x_0 x0扰动到 x t x_t xt通过高斯噪声分布 q ( x t ∣ x 0 = N ( x t ; x 0 , σ t 2 I ) q(x_t| x_0 = \mathcal{N}(x_t;x_0,\sigma^2_t I) q(xtx0=N(xt;x0,σt2I). 这就产生了一系列噪声数据密度 q ( x 1 ) 、 q ( x 2 ) , ⋅ ⋅ ⋅ , q ( x T ) q(x_1)、q(x_2),···,q(x_T) q(x1)q(x2)⋅⋅⋅q(xT), 其中,
q ( x t ) : = ∫ q ( x t ) q ( x 0 ) d x 0 q(x_t):= \int q(x_t) q(x_0) d x_0 q(xt):=q(xt)q(x0)dx0.

训练目标如下:


很明显,DDPM和SGM的训练目标是一致的,当我们设定了 ϵ θ ( x , t ) = − σ t s θ ( x , t ) \epsilon_{\theta}(x,t) = −\sigma_ts_{\theta}(x,t) ϵθ(x,t)=σtsθ(x,t).

对于样本生成,SGMs利用迭代方法生成样本。由于SGMs中训练和推理的解耦,存在许多采样方法,其中一些将在下一节中讨论。这里我们介绍了SGMs的第一种采样方法,称为退火朗格万动力学(ALD)[220]。

随机微分方程(Score SDEs)

DDPM 和 SGM 可以进一步推广到无限时间步或噪声水平的情况,其中扰动和去噪过程是随机微分方程 (SDE) 的解。我们将此公式称为 Score SDE [225],因为它利用 SDE 进行噪声扰动和样本生成,去噪过程需要估计噪声数据分布的得分函数。

Score SDE 使用由以下随机差分方程 (SDE) [2,25] 控制的扩散过程将数据扰动为噪声:


其中 f ( x , t ) f (x, t) f(x,t) g ( t ) g(t) g(t) 是 SDE 的传播和漂移函数, w w w是标准Wiener过程(又名布朗运动)。DDPM 和 SGM 中的前向过程都是这个 SDE 的离散化。如Song 等人所示, 对于 DDPM,对应的 SDE 为:

对于SGMs,对应的SDE由下式给出:

至关重要的是,对于任何以等式(15)的形式扩散过程。Anderson [ 4 ] 表明可以通过求解以下reverse-time SDE 来反转它:

训练目标如下:

Table 1. 在连续和离散设置下,列出了三种类型的扩散模型以及相应的文章和年份。

02 高效采样的Diffusion Models

(后续内容会陆续发表……)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL学习基础篇(一)

一、数据库概述 1. 为什么要使用数据库 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通…

程序员编程效率的大敌:中断与上下文切换

程序员编程效率的大敌:中断与上下文切换 首先解释一下中断和上下文切换: 中断: 编程时被打断, 比如被聊天软件/电子邮件/电话/当面打断等;上下文切换:即任务的切换,有自己主动切换,有伴随中断的新任务&am…

C# 静态构造函数学习

静态构造函数用于初始化类中的静态数据或执行仅需一次的特定操作,静态构造函数将在创建第一个实例或引用类中的静态成员之前自动调用。 静态构造函数具有以下特点: 静态构造函数不使用访问权限修饰符修饰或不具有参数; 类或结构体中…

Proxmox VE 8 发布 - 开源虚拟化管理平台

Proxmox VE 8 发布 - 开源虚拟化管理平台 请访问原文链接:https://sysin.org/blog/proxmox-ve-8/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 宣布 Proxmox 虚拟环境的主要版本 8.0!它基于出色的 De…

SkyWalking--用代码手动获取traceId的方法

原文网址&#xff1a;SkyWalking--用代码手动获取traceId的方法_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Java项目如何用代码手动获取SkyWalking的traceId。 引入依赖 <dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-tool…

【PCB专题】如何使用Assign color在 Allegro 中快速区别不同网络?

在PCB Layout中经常要查看网络走线,比如电源路径是否合理,线宽是否合适,网络是否形成环路等等。一般我们使用的是高亮网络来查看。 困扰 如果是单一网络这样做是没有什么问题的,但如果是多条网络,就一种颜色会很难看清。就算不同的网络是不同的条纹,在布线比较密集的时…

JavaScript 手写代码 第三期

文章目录 1. 为什么要手写代码&#xff1f;2. 手写代码2.1 函数柯里化2.1.1 基本使用2.1.2 手写实现 2.2 sleep函数2.2.1 简单使用2.2.2 手写实现 2.3 Object.assign() 方法2.3.1 基本使用2.3.2 具体示例2.3.3 具体思路2.3.4 具体实现 1. 为什么要手写代码&#xff1f; 我们在…

ChatGPT底层架构Transformer技术及源码实现(三)

ChatGPT底层架构Transformer技术及源码实现(三) 贝叶斯Bayesian Transformer数学推导论证过程全生命周期详解及底层神经网络物理机制剖析 Gavin大咖微信:NLP_Matrix_Space 从数学的角度来讲,线性转换 其中函数g联合了所有头的操作结果,每个头的产生是采用一个f_att的…

RedHat红帽认证---RHCE

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; RHCE 1.安装和配置 Ansible 安装和配置 Ansible按照下方所述&#xff0c;在控制节点 control 上安装和配置 Ansible&#xff1a;安装所需的软件包创建名为 /home/gre…

认识区块链

文章目录 前言从交易说起线下交易&线上交易存在的隐患线上交易隐患引发的思考 货币发展史解决线上交易存在的隐患比特币的诞生比特币价值的产生 比特币&区块链 前言 我想大多数的 IT 人&#xff0c;即便不是 IT 人&#xff0c;或多说少都听说过“比特币”“区块链”这…

InceptionNext:当Inception遇到ConvNeXt

摘要 https://arxiv.org/pdf/2303.16900.pdf 受 Vision Transformer 长距离依赖关系建模能力的启发&#xff0c;大核卷积最近被广泛研究和采用&#xff0c;以扩大感受野和提高模型性能&#xff0c;如采用77深度卷积的杰出工作connext。虽然这种深度算子只消耗少量的flop&…

初识mysql数据库之数据库介绍

目录 一、什么是数据库 1. 数据库的概念 2. 为什么要有数据库 3. 数据库样例 二、 主流数据库 三、服务器、数据库和表之间的关系 四、mysql存储架构 五、sql语句分类 一、什么是数据库 1. 数据库的概念 如果大家现在已经安装好了mysql&#xff0c;想必大家应该也都知…

数字逻辑与模拟电子技术-部分知识点(1)——模电部分-半导体二极管,半导体的基础知识、本征半导体、杂质半导体、PN结的形成、PN结的特性、二极管的伏安特性

目录 半导体二极管 半导体的基础知识 本征半导体(经过加工处理) 杂质半导体 PN结的形成 PN结的特性 二极管的伏安特性 半导体二极管 半导体的基础知识 半导体器件的材料主要是硅&#xff08;Si&#xff09;、锗&#xff08;Ge&#xff09;和砷化镓&#xff08;GaAs&…

Airtest框架和Poco框架常见问题

Airtest 报告可以导出发给别人看吗 Airtest的报告是可以打包发给别人看的。 ① 想要导出报告发给别人观看&#xff0c;我们需要生成报告的命令中传入 --export 参数&#xff0c;这样就可以将 包含静态资源文件和图片文件的报告 导出到一个指定的文件夹内&#xff0c;之后直接…

Qt绘图(线条、椭圆、矩形、图片滚动)

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();//绘图事件void paintEvent(QPaintE…

XML系列篇之dtd约束

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于xml的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.XML 是什么 &#x1f4a1;辉辉小贴士&a…

STM32时钟系统

时钟 时钟是具有周期性的脉冲信号&#xff0c;最常用的是占空比50%的方波。 时钟是单片机的脉搏。 时钟树 HSE&#xff1a;高速外部振荡器&#xff0c;4~16MHz&#xff0c;&#xff08;晶体&#xff0c;陶瓷&#xff09;LSE&#xff1a;低速外部振荡器&#xff0c;32.768KHz…

ADC0808/ADC0809引脚图及功能和工作原理介绍

ADC0808芯片有28条引脚&#xff0c;采用双列直插式封装。如图所示&#xff1a; . . . 各引脚功能如下&#xff1a; 1-5和26-28&#xff08;IN0-IN7&#xff09;&#xff1a;8路模拟量输入端。 8、14、15和17-21&#xff1a;8位数字量输出端。 22&#xff08;ALE&#xff09…

深度学习代码环境配置(编译器, git, anaconda)

内容 编译器 gcc&#xff1a;GNU编译器套装C builderMicrosoft Visual C&#xff08;MSVC&#xff09;&#xff1a;微软的VC编译器MinGW&#xff08;Minimalist GNU on Windows&#xff09;&#xff1a;可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合&…