论文阅读_扩散模型_DM

news2024/12/23 23:05:19

英文名称: Deep Unsupervised Learning using Nonequilibrium Thermodynamics
中文名称: 使用非平衡热力学原理的深度无监督学习
论文地址: http://arxiv.org/abs/1503.03585
代码地址: https://github.com/Sohl-Dickstein/Diffusion-Probabilistic-Models
时间: 2015-11-18
作者: Jascha Sohl-Dickstein, 斯坦福大学
引用量: 1813

读后感

论文目标是建立灵活且易用数据生成模型。它利用非平衡统计物理学原理:通过扩散过程(少量加噪)系统地、缓慢地破坏数据分布中的结构;然后,学习反向扩散过程,恢复数据结构。

介绍

扩散模型与变分模型

扩散模型与变分模型原理类似,都是将图片拆成一系列高斯分布的均值和方差,而扩散模型是一个逐步变化的过程,主要差别如下:

  • 原理不同:扩散模型使用物理学、准静态过程和退火采样的思想。由于任何平滑目标分布都存在扩散过程,因此理论上该方法可以捕获任意形式的数据分布。
  • 展示了用简单的乘法,将一个分布逐步转换为另一分布的过程。
  • 解决了推理模型和生成模型之间目标的不对称性,将正向(推理)过程限制为简单的函数形式,反向(生成)过程将具有相同的函数形式。
  • 可训练具有数**千层(时间步)**的模型。
  • 精细控制每层中熵产生的上限和下限。

方法

请记住图中这些符号,很多后续文章都延用了这些符号的定义。

向前轨迹

其中蓝色是扩散过程,从左往右看,总共T步,每步加一点高斯噪声,将瑞士卷图扩散成了高斯分布,扩展过程设为q。每步都根据上一步数据而来:
q ( x ( 0 ⋯ T ) ) = q ( x ( 0 ) ) ∏ t = 1 T q ( x ( t ) ∣ x ( t − 1 ) ) q\left(\mathbf{x}^{(0 \cdots T)}\right)=q\left(\mathbf{x}^{(0)}\right) \prod_{t=1}^{T} q\left(\mathbf{x}^{(t)} \mid \mathbf{x}^{(t-1)}\right) q(x(0T))=q(x(0))t=1Tq(x(t)x(t1))

反向轨迹

中间红色部分是扩散的逆过程,从右往左看,图片逐步恢复,恢复过程设为p;在训练过程中,通过学习高斯扩散的逆过程,使数据转换回原分布,从而生成数据。
p ( x ( 0 ⋯ T ) ) = p ( x ( T ) ) ∏ t = 1 T p ( x ( t − 1 ) ∣ x ( t ) ) p\left(\mathbf{x}^{(0 \cdots T)}\right)=p\left(\mathbf{x}^{(T)}\right) \prod_{t=1}^{T} p\left(\mathbf{x}^{(t-1)} \mid \mathbf{x}^{(t)}\right) p(x(0T))=p(x(T))t=1Tp(x(t1)x(t))
最后一行展示了反向扩散过程的漂移项。fμ (x(t), t) 是高斯逆马尔可夫转移的均值和协方差的函数。

扩散的原理是通过马尔可夫链逐渐将一种分布转换为另一种分布。最终,估计概率分布的任务简化为对高斯序列的均值和协方差函数的回归任务(这里的0状态指的是原始图,T状态指高斯分布图);由于扩散链中的每个步骤都具有可分析评估的概率(对比正向和反向变化中每一步数据的相似度),因此也可以对整个链进行分析评估。

模型概率

计算将图像恢复成原图的概率,可拆解成每一步变化的累积。
p ( x ( 0 ) ) = ∫ d x ( 1 ⋯ T ) p ( x ( 0 ⋯ T ) ) q ( x ( 1 ⋯ T ) ∣ x ( 0 ) ) q ( x ( 1 ⋯ T ) ∣ x ( 0 ) ) = ∫ d x ( 1 ⋯ T ) q ( x ( 1 ⋯ T ) ∣ x ( 0 ) ) p ( x ( 0 ⋯ T ) ) q ( x ( 1 ⋯ T ) ∣ x ( 0 ) ) = ∫ d x ( 1 ⋯ T ) q ( x ( 1 ⋯ T ) ∣ x ( 0 ) ) p ( x ( T ) ) ∏ t = 1 T p ( x ( t − 1 ) ∣ x ( t ) ) q ( x ( t ) ∣ x ( t − 1 ) ) \begin{aligned} p\left(\mathbf{x}^{(0)}\right)= & \int d \mathbf{x}^{(1 \cdots T)} p\left(\mathbf{x}^{(0 \cdots T)}\right) \frac{q\left(\mathbf{x}^{(1 \cdots T)} \mid \mathbf{x}^{(0)}\right)}{q\left(\mathbf{x}^{(1 \cdots T)} \mid \mathbf{x}^{(0)}\right)} \\ = & \int d \mathbf{x}^{(1 \cdots T)} q\left(\mathbf{x}^{(1 \cdots T)} \mid \mathbf{x}^{(0)}\right) \frac{p\left(\mathbf{x}^{(0 \cdots T)}\right)}{q\left(\mathbf{x}^{(1 \cdots T)} \mid \mathbf{x}^{(0)}\right)} \\ = & \int d \mathbf{x}^{(1 \cdots T)} q\left(\mathbf{x}^{(1 \cdots T)} \mid \mathbf{x}^{(0)}\right) \\ & p\left(\mathbf{x}^{(T)}\right) \prod_{t=1}^{T} \frac{p\left(\mathbf{x}^{(t-1)} \mid \mathbf{x}^{(t)}\right)}{q\left(\mathbf{x}^{(t)} \mid \mathbf{x}^{(t-1)}\right)} \end{aligned} p(x(0))===dx(1T)p(x(0T))q(x(1T)x(0))q(x(1T)x(0))dx(1T)q(x(1T)x(0))q(x(1T)x(0))p(x(0T))dx(1T)q(x(1T)x(0))p(x(T))t=1Tq(x(t)x(t1))p(x(t1)x(t))

训练

具体方法是计算熵 H 和 KL 散度。其推导与变分贝叶斯方法中对数似然界限的推导类似。DK散度描述了每一时间步数据分布的差异,熵描述了数据的混乱程度。
L ≥ K K = − ∑ t = 2 T ∫ d x ( 0 ) d x ( t ) q ( x ( 0 ) , x ( t ) ) . D K L ( q ( x ( t − 1 ) ∣ x ( t ) , x ( 0 ) ) ∥ p ( x ( t − 1 ) ∣ x ( t ) ) ) + H q ( X ( T ) ∣ X ( 0 ) ) − H q ( X ( 1 ) ∣ X ( 0 ) ) − H p ( X ( T ) ) . \begin{aligned} L & \geq K \\ K= & -\sum_{t=2}^{T} \int d \mathbf{x}^{(0)} d \mathbf{x}^{(t)} q\left(\mathbf{x}^{(0)}, \mathbf{x}^{(t)}\right) . \\ & D_{K L}\left(q\left(\mathbf{x}^{(t-1)} \mid \mathbf{x}^{(t)}, \mathbf{x}^{(0)}\right) \| p\left(\mathbf{x}^{(t-1)} \mid \mathbf{x}^{(t)}\right)\right) \\ & +H_{q}\left(\mathbf{X}^{(T)} \mid \mathbf{X}^{(0)}\right)-H_{q}\left(\mathbf{X}^{(1)} \mid \mathbf{X}^{(0)}\right)-H_{p}\left(\mathbf{X}^{(T)}\right) . \end{aligned} LK=Kt=2Tdx(0)dx(t)q(x(0),x(t)).DKL(q(x(t1)x(t),x(0))p(x(t1)x(t)))+Hq(X(T)X(0))Hq(X(1)X(0))Hp(X(T)).
设置扩散率 βt
热力学中,在平衡分布之间移动时所采取的时间表决定了损失多少自由能。简单地说,就是如何设置每一步变化的大小。一般情况下,第一步β设成一个很小的常数,以防过拟合,然后2-T步逐步扩大。将在之后的DDPM中详述。

乘以分布计算后验

对大多数模型而言,乘以分布计算量大,而在扩散模型中则比较简单,第二个分布可以被视为扩散过程中每个步骤的小扰动。

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

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

相关文章

Mqtt学习笔记--交叉编译移植(1)

简述 Mqtt目前在物联网行业的应用比较多,mqtt属于应用层的一个中间件,这个中间件实现消息的订阅发布机制。网上介绍Mqtt的实现原来的比较多,这里不细介绍。 其实在我们之前的产品中,自己也开发的有类似的中间件,除了具…

第 3 章 栈和队列 (算法 3.5,汉诺塔问题递归解法)

1. 背景说明 假设有 3 个分别命名为 X、Y 和 Z 的塔座,在塔座 X 上插有 n 个直径大小各不相同、依小到大编号为 1, 2,…,n 的圆盘。现要求将 X 轴上的 n 个圆 盘移至塔座 Z 上并仍按同样顺序叠排,圆盘移动时必须遵循下列规则&…

面试官问我MySQL和MariaDB的联系和区别,这我能不知道?

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师…

重装Windows10系统

以前清理电脑我一般是重置电脑的,但是重置电脑会清理C盘,新系统又遗留有以前的系统文件,导致后面配置环境遇到了棘手的问题,所以我打算重装系统。 第一次重装windows10系统,踩了很多坑,搞了两天才配回原来的…

Intel 80386运行模式

Intel 80386运行模式 一般CPU只有一种运行模式,能够支持多个程序在各自独立的内存空间中并发执行, 且有用户特权级和内核特权级的区分,让一般应用不能破坏操作系统内核和执行特权指令。 80386处理器有四种运行模式:实模式、保护模…

Day53|动态规划part14: 1143.最长公共子序列、1035. 不相交的线、53. 最大子序和

1143. 最长公共子序列 leetcode链接:力扣题目链接 视频链接:动态规划子序列问题经典题目 | LeetCode:1143.最长公共子序列 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。 如果不存在 公共子序列 …

在工具提示中使用自绘修改字体

在上一篇文章中,我们学习了如何在应用程序中添加工具提示。在之前的例子代码中,我们通过简单地为创建的工具提示设置了目标字体,这种方法很简单,因为自始至终,我们都只创建了一个工具提示。 但是,如果在应…

【数据结构】2015统考真题 6

题目描述 【2015统考真题】求下面的带权图的最小(代价)生成树时,可能是Kruskal算法第2次选中但不是Prim算法(从v4开始)第2次选中的边是(C) A. (V1, V3) B. (V1, V4) C. (V2, V3) D. (V3, V4) …

亚马逊,eBay,速卖通买家账号是如何实现高权重,高存活率的

现在测评,补单机构越来越多,看似寻常的便捷渠道也潜藏着很大的风险,尤其是当大量机器代替人工、各种质量参差不齐的测评机构被曝光,跨境卖家“踩坑遇骗”的情况也就屡屡出现。很多卖家都选择自己注册买家账号,自己做测…

YOKOGAWA CP461-50处理器模块

数据处理能力: CP461-50 处理器模块具有强大的数据处理能力,用于执行各种控制和数据处理任务。 多通道支持: 该模块通常支持多通道输入和输出,允许与多个传感器和执行器进行通信。 通信接口: CP461-50 处理器模块通常…

一文了解气象站是什么,作用有哪些?

气象站被广泛应用于气象、农业、交通、能源、水利、环保等领域,是一种用于收集、分析和处理气象数据的设备,能够为人们提供及时、准确的气象数据和决策支持。 气象站一般由传感器、环境监控主机和监控平台组成。传感器能够测量各种气象要素,…

【leetcode 力扣刷题】数学题之数的开根号:二分查找

用二分查找牛顿迭代解决开根号 69. x的平方根367. 有效的完全平方数 69. x的平方根 题目链接:69. x的平方根 题目内容: 题意是要我们求一个数的算数平方根,但是不能使用内置函数,那么我们就暴力枚举。我们知道如果y>2的话&am…

2023-9-2 Kruskal算法求最小生成树

题目链接&#xff1a;Kruskal算法求最小生成树 #include <iostream> #include <algorithm>using namespace std;const int N 200010;// 与并查集中的p含义相同 int p[N];struct Edge {int a, b, w;bool operator< (const Edge & W)const{return w < W.w…

广场舞音乐制作软件,FL Studio怎么做广场舞音乐

广场舞一直以来都是许多人日常的消遣方式之一&#xff0c;富有节奏感的音乐能够让人沉浸其中&#xff0c;这也说明了音乐的重要性。那么如果我们想自己制作一个广场舞风格的音乐&#xff0c;需要具备哪些条件呢&#xff1f;今天我们就来说一说广场舞音乐制作软件&#xff0c;FL…

分页功能实现

大家好 , 我是苏麟 , 今天聊一聊分页功能 . Page分页构造器是mybatisplus包中的一个分页类 . Page分页 引入依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</ver…

指针结构体题

目录 初阶指针_指针的概念 1.使用指针打印数组内容 2.字符串逆序 3.整形数组和字符串数组 4.打印菱形 5.打印水仙花数 6.计算求和 结构体 7.喝汽水问题 8.程序死循环解释 9.选择题总结tips 今天是重点是指针&结构体题题目。&#x1f197;&#x1f197;&#x…

(超简单)将图片转换为ASCII字符图像

将一张图片转换为ASCII字符图像 原图&#xff1a; 效果图&#xff1a; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileWriter; import java.io.IOException;public class ImageToASCII {/*** 将图片转换为A…

dlopen “libnvcuvid.so“ failed!

在使用NVIDIA DALI库进行视频数据处理时&#xff0c;出现了以上打开libnvcuvid.so动态库错误的问题&#xff0c;如下图所示&#xff1a; libnvcuvid.so是使用CUDA进行硬编解码需要的一个库&#xff0c;使用NVIDIA DALI进行视频处理时会依赖它。 本人是在Docker容器中运行的程序…

Flink实时计算中台Kubernates功能改造点

背景 平台为数据开发人员提供基本的实时作业的管理功能,其中包括jar、sql等作业的在线开发;因此中台需要提供一个统一的SDK支持平台能够实现flink jar作业的发布;绝大多数情况下企业可能会考虑Flink On Yarn的这个发布模式,但是伴随云原生的呼声越来越大,一些企业不希望部…

肖sir__linux详解__002(系统命令)

linux系统命令 1、df 查看磁盘使用情况 &#xff08;1&#xff09;df 查看磁盘使用情况&#xff08;按kb单位显示&#xff09; &#xff08;2&#xff09;df -h 按单位显示磁盘使用情况 2、top 实时查看动态进程 &#xff08;1&#xff09;top 详解&#xff1a; 第一行&…