当前位置: 首页 > news >正文

【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_tFtRtR_tRt 分别是 ttt 时刻从状态 xt−1x_{t-1}xt1 转换成状态 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_0x0xTx_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}L1T1: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 问题规范化三、可以提升的点参考论文&#xff1a;A Survey on Generative Diffusion Model github&#xff1a;https://github.com/chq1155/A-Survey-on-Generative-Diffusion-Model 一、什么是扩散模型 已…...

高等数学——多元函数微分学

文章目录多元函数微分学多元函数的极限多元函数的连续性偏导数定义高阶偏导数全微分定义全微分存在的必要条件全微分存在的充分条件多元函数的微分法复合函数微分法隐函数微分法多元函数的极值与最值无约束极值条件极值及拉格朗日乘数法最大值最小值二重积分概念性质计算利用直…...

一文打通Sleuth+Zipkin 服务链路追踪

1、为什么用 微服务架构是一个分布式架构&#xff0c;它按业务划分服务单元&#xff0c;一个分布式系统往往有很多个服务单元。由于服务单元数量众多&#xff0c;业务的复杂性&#xff0c;如果出现了错误和异常&#xff0c;很难去定位。主要体现在&#xff0c;一个请求可能需要…...

牛客刷题第一弹

1.异常处理 都是Throwable的子类&#xff1a; ①.Exception&#xff08;异常&#xff09;:是程序本身可以处理的异常。 ②.Error&#xff08;错误&#xff09;: 是程序无法处理的错误。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时&#xff0c;一般不需…...

K8s:通过 Kubeshark 体验 大白鲨(Wireshark)/TCPDump 监控 Kubernetes 集群

写在前面 分享一个 k8s 集群流量查看器很轻量的一个工具&#xff0c;监控方便博文内容涉及&#xff1a; Kubeshark 简单介绍Windows、Linux 下载运行监控DemoKubeshark 特性功能介绍 理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。…...

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跑一遍就明白了

文章目录拉格朗日方程推导方程组微分方程算法化求解画图动图绘制温馨提示&#xff0c;只想看图的画直接跳到最后一节拉格朗日方程 此前所做的一切三体和太阳系的动画&#xff0c;都是基于牛顿力学的&#xff0c;而且直接对微分进行差分化&#xff0c;从而精度非常感人&#xf…...

Golang-Hello world

目录 安装 Go(如果尚未安装) 编写Hello world 使用Golang的外部包 自动下载需要的外部包...

this指针C++

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章 &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下定决心去做” &#x1…...

SpringBoot+WebSocket实时监控异常

# 写在前面此异常非彼异常&#xff0c;标题所说的异常是业务上的异常。最近做了一个需求&#xff0c;消防的设备巡检&#xff0c;如果巡检发现异常&#xff0c;通过手机端提交&#xff0c;后台的实时监控页面实时获取到该设备的信息及位置&#xff0c;然后安排员工去处理。因为…...

Baumer工业相机堡盟相机如何使用自动曝光功能(自动曝光优点和行业应用)(C++)

项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机&#xff0c;可用于各种应用场景&#xff0c;如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能&#xff0c;可以实时传输高分辨率图像。此外&#xff0c;该相机还具…...

HTML、CSS学习笔记7(移动适配:rem、less)

一、移动适配 rem&#xff1a;目前多数企业在用的解决方案vw / vh&#xff1a;未来的解决方案 1.rem&#xff08;单位&#xff09; 1.1使用rem单位设置尺寸 px单位或百分比布局可以实现吗&#xff1f; ————不可以 网页的根字号——HTML标签 1.2.rem移动适配 写法&#x…...

STM32感应开关盖垃圾桶

目录 项目需求 项目框图 ​编辑 硬件清单 sg90舵机介绍及实战 sg90舵机介绍 角度控制 SG90舵机编程实现 超声波传感器介绍及实战 超声波传感器介绍 超声波编程实战 项目设计及实现 项目需求 检测靠近时&#xff0c;垃圾桶自动开盖并伴随滴一声&#xff0c;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的功能&#xff0c;之前一直在弄图片识别追踪的功能&#xff0c;发现其强大的功能还有脸部识别和追踪的功能&#xff0c;就基于其面部网格的例子修改了一个国粹京剧的换脸程序。如果你不了解MindAR的环境配置可以先参考这篇文章&#xff1a;基于Mi…...

动态规划思路

拉勾教育版权所有&#xff1a;https://kaiwu.lagou.com/course/courseInfo.htm?courseId3 动态规划思路 1.最优子结构 2.重复计算子机构 3.依靠递归&#xff0c;层层向上传值&#xff0c;所以编程时初始化子结构很重要 动态规划步骤 1.判断动态规划的类型 1.线性规划 >&…...

HTTPS关键词语解释和简单通讯流程

1、 什么是HTTPS HTTPS是基于HTTP的上层添加了一个叫做TLS的安全层&#xff0c;对数据的加密等操作都是在这个安全层中进行处理的&#xff0c;其底层还是应用的HTTP。 2、 什么是对称加密&#xff1b; 加密和解密都是用同一个秘钥 3、 什么是非对称加密&#xff1b; 加密和…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址&#xff1a;LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂&#xff0c;正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...