扩散模型实战(一):基本原理介绍
扩散模型(Diffusion Model)是⼀类⼗分先进的基于物理热⼒学中的扩散思想的深度学习⽣成模型,主要包括前向扩散和反向扩散两个过程。⽣成模型除了扩散模型之外,还有出现较早的VAE(Variational Auto-Encoder,变分⾃编码器)和GAN(Generative Adversarial Net,⽣成对抗⽹络)等。
生成模型
在深度学习中,⽣成模型的⽬标是根据给定的样本(训练数据)⽣成新样本。⾸先给定⼀批训练数据X,假设其服从某种复杂的真实分布p(x),则给定的训练数据可视为从该分布中采样的观测样本x。如果能够从这些观测样本中估计出训练数据的真实分布,不就可以从该分布中源源不断地采样出新的样本了吗?⽣成模型实际上就是这么做的,它的作⽤是估计训练数据的真实分布,并将其假定为q(x)。在深度学习中,这个过程称为拟合⽹络。
那么问题来了,怎么才能知道估计的分布q(x)和真实分布p(x)的差距⼤不⼤呢?⼀种简单的思路是要求所有的训练数据样本采样⾃q(x)的概率最⼤。这种思路实际上来⾃统计学中的最⼤似然估计思想,它也是⽣成模型的基本思想之⼀,因此⽣成模型的学习⽬标就是对训练数据的分布进⾏建模。
扩散过程
最⼤似然估计思想已经在⼀些模型(如VAE)上应⽤并取得了不错的效果。扩散模型可看作⼀个更深层次的VAE。扩散模型的表达能⼒更加丰富,⽽且其核⼼在于扩散过程。
扩散的思想来⾃物理学中的⾮平衡热⼒学分⽀。⾮平衡热⼒学专⻔研究某些不处于热⼒学平衡中的物理系统,其中最为典型的研究案例是⼀滴墨⽔在⽔中扩散的过程。在扩散开始之前,这滴墨⽔会在⽔中的某个地⽅形成⼀个⼤的斑点,我们可以认为这是这滴墨⽔的初始状态,但要描述该初始状态的概率分布则很困难,因为这个概率分布⾮常复杂。随着扩散过程的进⾏,这滴墨⽔随着时间的推移逐步扩散到⽔中,⽔的颜⾊也逐渐变成这滴墨⽔的颜⾊,如图1-1所示。此时,墨⽔分⼦的概率分布将变得更加简单和均匀,这样我们就可以很轻松地⽤数学公式来描述其中的概率分布了。
在这种情况下,⾮平衡热⼒学就派上⽤场了,它可以描述这滴墨⽔随时间推移的扩散过程中每⼀个“时间步”(旨在将连续的时间过程离散化)状态的概率分布。若能够想到办法把这个过程反过来,就可以从简单的分布中逐步推断出复杂的分布。
公认最早的扩散模型DDPM(Denoising Diffusion Probabilistic Model)的扩散原理就由此⽽来,不过仅有上述条件依然很难从简单的分布倒推出复杂的分布。DDPM还做了⼀些假设,例如假设扩散过程是⻢尔可夫过程 (即每⼀个时间步状态的概率分布仅由上⼀个时间步状态的概率分布加上当前时间步的⾼斯噪声得到),以及假设扩散过程的逆过程是⾼斯分布等。

图1-1 一滴墨水在水中扩散分布的示意图
DDPM的扩散过程如图1-2和1-3所示,具体分为前向过程和反向过程两部分。扩散模型是一种潜变量模型,它使用固定的马尔可夫链映射到潜在空间。该链逐步向数据中添加噪声,以获得近似后验值,其中为与x0具有相同维数的潜变量。在下面的图中,我们可以看到这样一个马尔可夫链。

图1-2 前向过程
最后,图像逐渐变为纯高斯噪声。训练扩散模型的目标是学习逆向过程,即训练。通过沿着这条链向后遍历,我们可以生成新的数据。

图1-3 反向过程
1)前向过程
前向过程是给数据添加噪声的过程。假设给定一批训练数据,数据分布为,其中,0表示初始,即还没有开始扩散。如前所述,将前向加噪过程分为离散的多个时间步 T ,在每一个时间步 t ,给上一个时间步t-1的数据
;添加高斯噪声,从而生成带有噪声(简称"带噪")的数据
,同时数据
,也会被送入下个时间步 t +1以继续添加噪声。其中,噪声的方差是由一个位于区间(0,1)的固定值
确定的,均值则由固定值
和当前时刻"带噪"的数据分布确定。在反复迭代和加噪(即添加噪声) T 次之后,只要 T 足够大,根据马尔可夫链的性质,最终就可以得到纯随机噪声分布的数据,即类似稳定墨水系统的状态。
接下来,我们用简单的公式描述一下上述过程。从时间步 t -1到时间步 t 的单步扩散加噪过程的数学表达式如下:
![]()
最终的噪声分布数学表达式如下:

2)反向过程
前向过程是将数据噪声化的过程,反向过程则是"去噪"的过程,即从随机噪声中迭代恢复出清晰数据的过程。
要从采样自高斯噪声的一个随机噪声中恢复出原始数据
,就需要道反向过程中每一步的图像分布状态转移。类似地, DDPM 也将反向过程定义为一个马尔可夫链,只不过这个马尔可夫链是由一系列用神经网络参数化的高斯分布组成的,也就是需要训练的扩散模型。
从时间步 t 到时间步 t -1的单步反向"去噪"过程的数学表达式如下:
![]()
由于反向过程的每一步都是参数化的高斯分布,因此可以分别求高斯分布的均值和方贝叶斯公式推导的过程,最终得到时间步 t -1的高斯分布 ,的均值和方差的数学公式如下:

可以看出,方差是一个定量(扩散过程参数固定),而均值是一个依赖于 和
的函数,因此需要使用扩散模型来优化参数。
3)优化目标
扩散模型预测的是噪声残差,即要求后向过程中预测的噪声分布与前向过程中噪声分布的“距离”最小。
下面我们从另一个角度来看看扩散模型。如果把中间产生的变量看成隐变量的话,那么扩散模型其实是一种包含 T 个隐变量的模型,因此可以看成更深层次的 VAE ,而 VAE 的损失函数可以使用变分推断来得到变分下界( variational lower bound )。
扩散模型的最终优化目标的数学表达式如下:
![]()
可以看出,在训练 DDPM 时,只要用一个简单的 MSE ( Mean Squared Error ,均方误差)损失来最小化时向过程施加的噪声分布和后向过程预测的噪声分布,就能实现最终的优化目标。
相关文章:
扩散模型实战(一):基本原理介绍
扩散模型(Diffusion Model)是⼀类⼗分先进的基于物理热⼒学中的扩散思想的深度学习⽣成模型,主要包括前向扩散和反向扩散两个过程。⽣成模型除了扩散模型之外,还有出现较早的VAE(Variational Auto-Encoder,…...
解决npm ERR! code ERESOLVE -npm ERR! ERESOLVE could not resolve
当使用一份vue源码开发项目时,npm install 报错了 npm ERR! code ERESOLVEnpm ERR! ERESOLVE could not resolvenpm ERR!npm ERR! While resolving: vue-admin-template4.4.0npm ERR! Found: webpack4.46.0npm ERR! node_modules/webpacknpm ERR! webpack"^4.0…...
HttpServletRequest和HttpServletResponse的获取与使用
相关笔记:【JavaWeb之Servlet】 文章目录 1、Servlet复习2、HttpServletRequest的使用3、HttpServletResponse的使用4、获取HttpServletRequest和HttpServletResponse 1、Servlet复习 Servlet是JavaWeb的三大组件之一: ServletFilter 过滤器Listener 监…...
css在线代码生成器
这里收集了许多有意思的css效果在线代码生成器适合每一位前端开发者 布局,效果类: 网格生成器https://cssgrid-generator.netlify.app/ CSS Grid Generator可帮助开发人员使用CSS Grid创建复杂的网格布局。网格布局是创建Web页面的灵活和响应式设计的强…...
在java中如何使用openOffice进行格式转换,word,excel,ppt,pdf互相转换
1.首先需要下载并安装openOffice,下载地址为: Apache OpenOffice download | SourceForge.net 2.安装后,可以测试下是否可用; 3.build.gradle中引入依赖: implementation group: com.artofsolving, name: jodconverter, version:…...
手机变电脑2023之虚拟电脑droidvm
手机这么大的内存,装个app来模拟linux,还是没问题的。 app 装好后,手指点几下确定按钮,等几分钟就能把linux桌面环境安装好。 不需要敲指令, 不需要对手机刷机, 不需要特殊权限, 不需要找驱…...
HDFS中的sequence file
sequence file序列化文件 介绍优缺点格式未压缩格式基于record压缩格式基于block压缩格式 介绍 sequence file是hadoop提供的一种二进制文件存储格式一条数据称之为record(记录),底层直接以<key, value>键值对形式序列化到文件中 优…...
【MySQL】检索数据使用数据处理函数
函数 与其他大多数计算机语言一样,SQL支持利用函数来处理数据。函数一般是在数据上执行的,它给数据的转换和处理提供了方便。 函数没有SQL的可移植性强:能运行在多个系统上的代码称为可移植的。多数SQL语句是可移植的,而函数的可…...
【嵌入式学习笔记】嵌入式入门6——定时器TIMER
1.定时器概述 1.1.软件定时原理 使用纯软件(CPU死等)的方式实现定时(延时)功能有诸多缺点,如CPU死等、延时不精准。 void delay_us(uint32_t us) {us * 72;while(us--); }1.2.定时器定时原理 使用精准的时基&#…...
GD32F103输入捕获
GD32F103输入捕获程序,经过多次测试,终于完成了。本程序将TIMER2_CH2通道映射到PB0引脚,捕获PB0引脚低电平脉冲时间宽度。PB0是一个按钮,第1次按下采集一个值保存到TIMER2_CountValue1中,第2次按下采集一个值保存到TIM…...
[RT-Thread]基于ARTPI的文件系统认识与搭建
[写作为了记忆,个人最终输出的内容往往是遗忘后最容易捡起的内容,故以此作文] 目录 [写作为了记忆,个人最终输出的内容往往是遗忘后最容易捡起的内容,故以此作文] 前提 内容 认识 基于ARTPI的文件系统的挂载 ROMFS与LFS. (默认自动挂载,romfs可读不可写) 搭…...
动态规划+二分查找
题目描述:给定一个区间数组,[[1,2,3],[3,4,2],[2,4,4]],每个区间有价值,求在获取k个区间的条件下面,求获得的最大的价值,关键是dp的定义和二分查找的写法(小于tar额最右下标) import…...
8.2小非农ADP数据来袭黄金将会如何表现?
近期有哪些消息面影响黄金走势?黄金多空该如何研判? 黄金消息面解析: 周二(8月1日)现货黄金价格回落,原因是美元指数升创7月10日以来新高至102.43.美联储官员乐观言论夯实美国经济软着陆预期。此外,中国刺激措施将…...
linux启动oracle
一、启动方法 方法1: Sql代码 cd $ORACLE_HOME/bin #进入到oracle的安装目录 ./dbstart #重启服务器 ./lsnrctl start #重启监听器 ----------------------------------- 方法2: (1) 以oracle身份登录数据库&am…...
AssetBundleBrowser导入报错解决方案
第一次导入AssetBundleBrowser遇到报错有 Assets\Scenes\AssetBundles-Browser-master\AssetBundles-Browser-master\Tests\Editor\ABModelTests.cs(13,7): error CS0246: The type or namespace name Boo could not be found (are you missing a using directive or an assem…...
vue-baidu-map-3x 使用记录
在 Vue3 TypeScript 项目中,为了采用 标签组件 的方式,使用百度地图组件,冲浪发现了一个开源库 ovo,很方便!喜欢的朋友记得帮 原作者 点下 star ~ vue-baidu-map-3xbaidu-map的vue3/vue2版本(支持v2.0、v…...
《GPU并行计算与CUDA编程》笔记
第一个GPU程序 #include <stdio.h>__global__ void square(float* d_out,float* d_in){int idx threadIdx.x;float f d_in[idx];d_out[idx] f * f; }int main(int argc,char** argv){const int ARRAY_SIZE 8;const int ARRAY_BYTES ARRAY_SIZE * sizeof(float);// …...
Shell编程基础(十二)函数
函数 概念定义调用函数综合脚本 概念 和其他编程语言一样,函数作为一种封装代码块,以提高代码复用性和可维护性的存在。 记住一点,先定义,再使用 定义 shell 函数的创建方式 function 函数名 空格{ xxxx return 返回码&#x…...
【雕爷学编程】MicroPython动手做(33)——物联网之天气预报3
天气(自然现象) 是指某一个地区距离地表较近的大气层在短时间内的具体状态。而天气现象则是指发生在大气中的各种自然现象,即某瞬时内大气中各种气象要素(如气温、气压、湿度、风、云、雾、雨、闪、雪、霜、雷、雹、霾等ÿ…...
Screens 4 for mac VNC客户端 强大的远程控制工具
Screens 4 for Mac 是一款功能强大的 VNC 客户端软件,为 Mac 用户提供了便捷的远程访问和控制解决方案。无论您是需要远程管理服务器、办公电脑,还是需要远程协助他人解决问题,Screens 4 都是您的理想选择。 Screens 4 for Mac具备简洁直观的…...
Logisim实战:从零构建学号音乐盒的数字系统设计
1. Logisim与数字系统设计入门 第一次打开Logisim时,我盯着满屏的逻辑门和导线有点发懵。这个看起来像电路板绘图工具的家伙,真能做出会唱歌的音乐盒?经过两周的折腾,我不仅用学号显示音乐播放的完整系统交上了课程作业࿰…...
STM32开发方式对比与HAL库深度解析
1. STM32开发方式概述对于刚接触STM32的开发者来说,选择合适的开发方式是首要问题。目前主要有三种开发方式:直接操作寄存器、使用标准库(Standard Peripheral Library)和使用HAL库(Hardware Abstraction Layer&#x…...
使用vue3+ts构建企业级文件传输管理系统:状态管理、性能优化与用户体验的深度实践
使用vue3+ts构建企业级文件传输管理系统:状态管理、性能优化与用户体验的深度实践 在现代企业应用中,文件传输是核心功能之一。一个高效的传输管理系统不仅需要处理大量文件,还需提供直观的状态反馈、灵活的操作选项和流畅的用户体验。今天,我将分享一个基于Vue 3和TypeSc…...
Javase(三)三大特性之封装
封装现实生活中,比如鼠标,我们知道它是全部装在一个装置里面,只暴露出一个接口能够我们充电或连接电脑,里面的设计、电路等都不暴露给我们这些使用者看,这样子能很好的保护里面的东西不被破坏。在Java中也是如此&#…...
多元化团队从多元化投资机构开始
初创企业往往口头上重视多元化,但在实际招聘实践中却行动缓慢。对于成长阶段的公司来说,从熟悉的硅谷人才渠道招聘是阻力最小的路径,但如果创始人想要一个多元化的团队,就必须从第一个员工开始将这一价值观付诸实践。Taskrabbit创…...
OpenClaw 从翻车到迎来上百项更新:MiniMax、腾讯、阿里、有道 8 位专家拆解OpenClaw本土化实战解法
责编 | 梦依丹出品 | CSDN(ID:CSDNnews)3 月 24 日,行业顶流 OpenClaw 在迎来号称自诞生以来的最大更新之后,却始料未及地上演了一段“装虾五分钟,修 Bug 两小时”的升级翻车大事故。由于强行将插件生态迁移…...
FF14副本动画跳过插件:5分钟终极配置指南,告别冗长等待
FF14副本动画跳过插件:5分钟终极配置指南,告别冗长等待 【免费下载链接】FFXIV_ACT_CutsceneSkip 项目地址: https://gitcode.com/gh_mirrors/ff/FFXIV_ACT_CutsceneSkip FF14副本动画跳过插件是专为《最终幻想14》国服玩家设计的智能工具&#…...
软件开发常见骗局有哪些?
虚假高薪招聘陷阱以“零经验高薪入职”“包就业”为噱头,要求求职者付费培训。实际培训内容质量低下,承诺的就业机会无法兑现,甚至诱导贷款支付培训费用。外包项目诈骗谎称有高额预算项目外包,要求开发者支付“保证金”或“预付款…...
提升开发效率:用快马一键生成自动化twitter x数据采集工具
今天想和大家分享一个提升开发效率的小技巧——如何快速搭建一个自动化采集Twitter X数据的工具。作为一个经常需要分析社交媒体数据的人,我发现手动收集数据实在太费时间了,于是研究了一下如何用Python实现自动化采集。 需求分析 首先明确我们需要实现的…...
2026届最火的降重复率工具实际效果
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 维普平台针对AIGC技术的引入,制定了严谨的检测规范,在当前学术场景里…...
