【AICG】2、扩散模型 | 到底什么是扩散模型?
文章目录
- 一、什么是扩散模型
- 二、扩散模型相关定义
- 2.1 符号和定义
- 2.2 问题规范化
- 三、可以提升的点
参考论文:A Survey on Generative Diffusion Model
github:https://github.com/chq1155/A-Survey-on-Generative-Diffusion-Model
一、什么是扩散模型
已经有大量的方法证明深度生成模型能够模拟人类的想象思维,生成人类难以分辨真伪的内容,主要方法如下:
- VAE:依赖于替代损失
- EBM
- GAN:因其对抗性训练性质而以潜在的不稳定训练和较少的生成多样性而闻名
- diffusion model

我们主要介绍扩散模型,扩散模型背后的直觉来源于物理学:
- 在物理学中,气体分子从高浓度区域扩散到低浓度区域
- 这与由于噪声的干扰而导致的信息丢失是相似的
- 通过引入噪声,然后尝试去噪来生成图像,模型每次在给定一些噪声输入的情况下学习生成新图像。
扩散模型可以用到哪些任务上:
- 计算机视觉
- 语言模型
- 声音模型
- AI for science
扩散模型的应用场景:
- 图文生成
- 视频生成
- 分子结构生成
- AI 绘画
- AI 制药
- …
扩散模型的工作原理:
- 学习由于噪声引起的信息衰减,然后使用学习到的模式来生成图像
扩散模型的结构:
- 扩散模型定义了一个扩散步骤的马尔可夫链,慢慢地向数据中添加随机噪声,然后学习反向扩散过程,从噪声中构建所需的数据样本
- 前向扩散过程:为输入图像 x0x_0x0 引入一系列的随机噪声,也就是对样本点分 T 步添加高斯噪声,随着噪声的引入,x0x_0x0 最终会失去区分特性,
- 反向恢复过程:从高斯先验出发,从有大量随机噪声的图中学习恢复原图
前向过程:

扩散模型相比 GAN 或 VAE 的缺点:
- 速度慢:扩散模型是基于马尔科夫过程来实现的,在训练和推理的时候都需要很多步骤

二、扩散模型相关定义
2.1 符号和定义
1、State:状态
State 是能够描述整个扩散模型过程的一系列数据:
- 初始状态:starting state x0x_0x0
- prior state:离散时为 xTx_TxT,连续时为 x1x_1x1
- 中间状态:intermediate state xtx_txt
2、Process 和 Transition Kernel
- Forward/Diffusion 过程 FFF:将初始状态转换到有噪声的状态
- Reverse/Denoised 过程 RRR:和前向过程方向相反,从有噪声的图像中逐步复原原图的过程
- Transition Kernel:在上面的两个过程中,每两个 state 的变换都是通过 transition kernel 来实现的,
前向和逆向的过程如下所示:

对于非离散情况,任何时间 0<=t<s<10<=t<s<10<=t<s<1 的前向过程如下:

- FtF_tFt 和 RtR_tRt 分别是 ttt 时刻从状态 xt−1x_{t-1}xt−1 转换成状态 xtx_txt 的前向 transition kernel 和逆向 transition kernel
- σt\sigma_tσt 是噪声尺度
- 最常用的 transition kernel 是 Markov kernel,因为其具有较好的任意性和可控性
3、Pipeline:
假设定义 sampled data 为 x~0\widetilde{x}_0x0,则整个过程可以描述如下:

4、离散和连续过程
与离散过程相比,连续过程能够从任何时间状态中提取任何信息
如果扰动核的变化足够小,则连续过程有更好的理论支撑
5、训练目标
扩散模型是生成模型的一个子类,和 VAE 的目标函数类似,目标是让初始分布 x0x_0x0 和采样分布 x~0\widetilde{x}_0x0 尽可能的接近。
通过最大化如下 log-likelihood 公式来实现,其中 σ~\widetilde{\sigma}σ 在前向和逆向过程中是不同的:

2.2 问题规范化
1、Denoised Diffusion Probabilistic Model(DDPM):去噪扩散概率模型
NIPS 2021 的论文 ‘Denoising diffusion probabilistic models’ 中对扩散概率模型进行了改进,提出了 DDPM:
- 使用固定的方差回归均值
- 用和噪声表示,通过均值预测网络重参数化,将关于均值的差改写为噪声预测网络与噪声的差,将目标函数改写为噪声预测的方式
- 对高斯噪声进行回归预测
- 对扩散模型的架构也进行了相应的改进,使用 U-Net 形式的架构,引入了跳跃连接,更适合于像素级别的预测任务
DDPM Forward Process:
-
DDPM 使用一系列的噪声系数 β1\beta_1β1、β2\beta_2β2 … βT\beta_TβT 作为不同时刻的 Markov trasition kernel。
-
一般都使用常数、线性规则、cosine 规则 来选择噪声系数,而且 [68] 中也证明了不同的噪声系数在实验中也没有明显的影响
-
DDPM 的前向过程定义如下:

-
根据从 x0x_0x0 到 xTx_TxT 的扩散步骤, Forward Diffusion Process 如下:

DDPM Reverse Process:
-
逆向过程使用可学习的 Gaussian trasition 参数 θ\thetaθ 来定义如下:

-
逐步从 xTx_TxT 复原到 x0x_0x0 的过程如下,假设过程为 p(xT)=N(xT;0,I)p(x_T) = N(x_T;\ 0, I)p(xT)=N(xT; 0,I):

-
所以,pθ(x0)=∫pθ(x0:T)dx1:Tp_{\theta}(x_0)=\int p_{\theta}(x_{0:T})dx_{1:T}pθ(x0)=∫pθ(x0:T)dx1:T 的分布就是 x~0\widetilde{x}_0x0 的分布
Diffusion Training Objective:为了最小化 negative log-likelihood (NLL),则最小化问题转换为:

- LTL_TLT:prior loss
- L0L_0L0:reconstruction loss
- L1:T−1L_{1:T-1}L1:T−1:consistent loss
下图是 PPDM 的 pipeline:

2、Score Matching Formulation
score matching 模型是为了解决原始数据分布的估计问题,通过近似数据的梯度 ∇xlogp(x)\nabla_xlogp(x)∇xlogp(x) 来实现,这也称为 score。
两个相邻状态的 transition kernel 为:

Score matching 过程:
score matching 的核心是训练一个得分估计网络 sθ(x,σ)s_{\theta}(x, \sigma)sθ(x,σ) 来预测得分。

DSM:


三、可以提升的点
尽管扩散模型目前取得了很好的生成效果,到其逐步去噪的过程涉及非常多的迭代步骤,故此扩散模型的加速是很重要的研究课题。

相关文章:
【AICG】2、扩散模型 | 到底什么是扩散模型?
文章目录一、什么是扩散模型二、扩散模型相关定义2.1 符号和定义2.2 问题规范化三、可以提升的点参考论文:A Survey on Generative Diffusion Model github:https://github.com/chq1155/A-Survey-on-Generative-Diffusion-Model 一、什么是扩散模型 已…...
高等数学——多元函数微分学
文章目录多元函数微分学多元函数的极限多元函数的连续性偏导数定义高阶偏导数全微分定义全微分存在的必要条件全微分存在的充分条件多元函数的微分法复合函数微分法隐函数微分法多元函数的极值与最值无约束极值条件极值及拉格朗日乘数法最大值最小值二重积分概念性质计算利用直…...
一文打通Sleuth+Zipkin 服务链路追踪
1、为什么用 微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元。由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很难去定位。主要体现在,一个请求可能需要…...
牛客刷题第一弹
1.异常处理 都是Throwable的子类: ①.Exception(异常):是程序本身可以处理的异常。 ②.Error(错误): 是程序无法处理的错误。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,一般不需…...
K8s:通过 Kubeshark 体验 大白鲨(Wireshark)/TCPDump 监控 Kubernetes 集群
写在前面 分享一个 k8s 集群流量查看器很轻量的一个工具,监控方便博文内容涉及: Kubeshark 简单介绍Windows、Linux 下载运行监控DemoKubeshark 特性功能介绍 理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。…...
MySQL查询索引原则
文章目录 等值匹配原则最左前缀匹配原则范围查找规则等值匹配+范围查找Order By + limit 优化分组查询优化总结MySQL 是如何帮我们维护非主键索引的等值匹配原则 我们现在已经知道了如果是【主键索引】,在插入数据的时候是根据主键的顺序依次往后排列的,一个数据页不够就会分…...
布谷鸟优化算法C++
#include <iostream> #include <vector> #include <cmath> #include <random> #include <time.h> #include <fstream> #define pi acos(-1) //5只布谷鸟 constexpr int NestNum 40; //pi值 //规定X,Y 的取值范围 constexpr double X_…...
三体到底是啥?用Python跑一遍就明白了
文章目录拉格朗日方程推导方程组微分方程算法化求解画图动图绘制温馨提示,只想看图的画直接跳到最后一节拉格朗日方程 此前所做的一切三体和太阳系的动画,都是基于牛顿力学的,而且直接对微分进行差分化,从而精度非常感人…...
Golang-Hello world
目录 安装 Go(如果尚未安装) 编写Hello world 使用Golang的外部包 自动下载需要的外部包...
this指针C++
🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章 🔥座右铭:“不要等到什么都没有了,才下定决心去做” …...
SpringBoot+WebSocket实时监控异常
# 写在前面此异常非彼异常,标题所说的异常是业务上的异常。最近做了一个需求,消防的设备巡检,如果巡检发现异常,通过手机端提交,后台的实时监控页面实时获取到该设备的信息及位置,然后安排员工去处理。因为…...
Baumer工业相机堡盟相机如何使用自动曝光功能(自动曝光优点和行业应用)(C++)
项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具…...
HTML、CSS学习笔记7(移动适配:rem、less)
一、移动适配 rem:目前多数企业在用的解决方案vw / vh:未来的解决方案 1.rem(单位) 1.1使用rem单位设置尺寸 px单位或百分比布局可以实现吗? ————不可以 网页的根字号——HTML标签 1.2.rem移动适配 写法&#x…...
STM32感应开关盖垃圾桶
目录 项目需求 项目框图 编辑 硬件清单 sg90舵机介绍及实战 sg90舵机介绍 角度控制 SG90舵机编程实现 超声波传感器介绍及实战 超声波传感器介绍 超声波编程实战 项目设计及实现 项目需求 检测靠近时,垃圾桶自动开盖并伴随滴一声,2秒后关盖…...
进程跟线程的区别
进程跟线程的区别 文章目录进程跟线程的区别前言一.什么线程二.线程与进程的联系三.线程与进程有什么不同前言 现代所有计算机都能同时做几件事情,当一个用户程序正在运行时,计算机还能同时读取磁盘,并向屏幕打印输出正文.在一个多道操作程序中,cpu由一道程序向另外一道程的切…...
[ICLR 2016] Unsupervised representation learning with DCGANs
目录 IntroductionModel ArchitectureReferencesIntroduction 作者提出了用 CNN 搭建 GAN,使得 GAN 训练更加稳定的一系列准则,并将满足这些设计理念的模型称为 DCGANs (Deep Convolutional GANs). 此外,作者将 trained discriminators 用于图像分类任务,相比于其他无监督算…...
QT编程从入门到精通之十五:“第五章:Qt GUI应用程序设计”之“5.1 UI文件设计与运行机制”之“5.1.2 项目管理文件”
目录 第五章:Qt GUI应用程序设计 5.1 UI文件设计与运行机制 5.1.2 项目管理文件 第五章:Qt GUI应用程序设计 在“Qt 程序创建基础”上,本章将继续深入地介绍Qt Creator设计GUI应用程序的方法...
基于Three.js和MindAR实现的网页端WebAR人脸识别追踪功能的京剧换脸Demo(含源码)
前言 近段时间一直在玩MindAR的功能,之前一直在弄图片识别追踪的功能,发现其强大的功能还有脸部识别和追踪的功能,就基于其面部网格的例子修改了一个国粹京剧的换脸程序。如果你不了解MindAR的环境配置可以先参考这篇文章:基于Mi…...
动态规划思路
拉勾教育版权所有:https://kaiwu.lagou.com/course/courseInfo.htm?courseId3 动态规划思路 1.最优子结构 2.重复计算子机构 3.依靠递归,层层向上传值,所以编程时初始化子结构很重要 动态规划步骤 1.判断动态规划的类型 1.线性规划 >&…...
HTTPS关键词语解释和简单通讯流程
1、 什么是HTTPS HTTPS是基于HTTP的上层添加了一个叫做TLS的安全层,对数据的加密等操作都是在这个安全层中进行处理的,其底层还是应用的HTTP。 2、 什么是对称加密; 加密和解密都是用同一个秘钥 3、 什么是非对称加密; 加密和…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
