扩散模型原理记录
1 扩散模型原理记录
参考资料:
[1]【54、Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读】 https://www.bilibili.com/video/BV1b541197HX/?share_source=copy_web&vd_source=7771b17ae75bc5131361e81a50a0c871
[2] https://t.bilibili.com/700526762586538024?spm_id_from=333.999.0.0
以下内容为对上述资料的补充理解,理解不对的地方,请多指教。
以下序号与资料中的章节序号一致。
七、目标数据分布的似然函数
扩散模型本质为生成模型,所以最本质的目标是最大化对数据分布真值的预测概率。
这里可以假设成一个分类问题,不同的类别表示不同的数据分布,其中包括与数据分布真值相近的和不相近的。模型会预测不同数据分布的概率。我们的目标是,使网络对数据分布真值对应的类别的预测概率最高。
用公式表示: m a x p θ ( x 0 ) max~p_{\theta}(x_0) max pθ(x0),其中, p θ ( x 0 ) p_{\theta}(x_0) pθ(x0)为模型对数据分布真值预测的概率分布(注意模型不只是网络,在扩散模型里,网络是模型的一部分,模型还包括对网络输出结果的后处理,因此网络输出值可能多种多样)。
但是 p θ ( x 0 ) p_{\theta}(x_0) pθ(x0)范围是 0 − 1 0-1 0−1,直接最大化不好计算,因此一般转化为最小化对数似然函数: − l o g p θ ( x 0 ) -log~p_{\theta}(x_0) −log pθ(x0)。直接最小化 − l o g p θ ( x 0 ) -log~p_{\theta}(x_0) −log pθ(x0)也不好求,所以扩散模型转而最小化 − l o g p θ ( x 0 ) -log~p_{\theta}(x_0) −log pθ(x0)的上界,这个上界就是 L V L B L_{VLB} LVLB(需要乘 q ( x 0 ) q(x_0) q(x0))。
下面的目标就是最小化 L V L B L_{VLB} LVLB。
L V L B L_{VLB} LVLB最终转化为 L V L B = E q [ L T + L t − 1 ] L_{VLB}=E_q[L_T+L_{t-1}] LVLB=Eq[LT+Lt−1]( L 0 L_0 L0与 L t − 1 L_{t-1} Lt−1合并到一起了),其中, L T L_T LT和 L t − 1 L_{t-1} Lt−1都是两个高斯分布的KL散度,结果只与两个高斯分布的均值和方差有关。 L T L_T LT中两个分布的均值和方差都是已知(在 x 0 x_0 x0分布已知的情况下已知)且不可优化的,因此直接去除。下面计算 L t − 1 L_{t-1} Lt−1,如下式(方差是设定的固定值,所以省略了):
其中, μ ~ ( x t , x 0 ) \tilde\mu(x_t, x_0) μ~(xt,x0)是 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t, x_0) q(xt−1∣xt,x0)高斯分布的均值, μ θ ( x t , t ) \mu_{\theta}(x_t,t) μθ(xt,t)是 p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1}|x_t) pθ(xt−1∣xt)高斯分布的均值。
p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1}|x_t) pθ(xt−1∣xt)是模型的预测分布,也可以写成 p θ ( x t − 1 ∣ x t , t ) p_{\theta}(x_{t-1}|x_t, t) pθ(xt−1∣xt,t)。
对上式展开,其中 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t, x_0) q(xt−1∣xt,x0)的均值 μ ~ ( x t , x 0 ) \tilde\mu(x_t, x_0) μ~(xt,x0)已经在前面计算出来了,直接代入:
上式中 ϵ \epsilon ϵ与上文的 z z z一样,都是加的噪声。下面的问题是,我们要最小化 L t − 1 − C L_{t-1}-C Lt−1−C,网络在模型中扮演什么角色?可选择的是:
- 预测 μ θ ( x t , t ) \mu_{\theta}(x_t,t) μθ(xt,t),使其逼近 μ ~ ( x t , x 0 ) \tilde\mu(x_t, x_0) μ~(xt,x0),即损失是他俩的差;
- 预测 x 0 ′ x_0' x0′,使其直接逼近 x 0 x_0 x0,损失是他俩的差;
- 预测 ϵ \epsilon ϵ,这样对应的 x 0 ′ x_0' x0′就可以一步步地推出来(只是可以这么干,但是这样的话就与上个选择一样了,直接一步到位其实效果不好),这样 p θ ( x t − 1 ∣ x t , t ) p_{\theta}(x_{t-1}|x_t,t) pθ(xt−1∣xt,t)分布的均值 μ θ ( x t , t ) \mu_{\theta}(x_t,t) μθ(xt,t)就与 q ( x t − 1 ∣ x t , x 0 ′ ) q(x_{t-1}|x_t,x_0') q(xt−1∣xt,x0′)的均值公式一样,即下式。这样就可以逼近 μ ~ ( x t , x 0 ) \tilde\mu(x_t, x_0) μ~(xt,x0),即损失是他俩的差(可以简化计算);
扩散模型的作者选择用网络来预测 ϵ \epsilon ϵ,这样, μ θ ( x t , t ) \mu_{\theta}(x_t,t) μθ(xt,t)的计算公式如下:
再简化 L t − 1 − C L_{t-1}-C Lt−1−C,如下:
到这里,网络的损失就确定了,即最小化预测的噪声与实际添加的噪声的差,网络输入是时刻t和时刻t对应的xt。
有了网络输出的噪声后,就可以通过 p θ ( x t − 1 ∣ x t , t ) p_{\theta}(x_{t-1}|x_t,t) pθ(xt−1∣xt,t)分布的均值 μ θ ( x t , t ) \mu_{\theta}(x_t,t) μθ(xt,t)和方差(方差是预定义的 β \beta β)来采样出 x t − 1 x_{t-1} xt−1,训练过程和反扩散过程的伪代码如下:
反扩散过程用到了重参数化采样,上图中的 σ t \sigma_t σt就是标准差 β t \sqrt{\beta_t} βt。
相关文章:
扩散模型原理记录
1 扩散模型原理记录 参考资料: [1]【54、Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读】 https://www.bilibili.com/video/BV1b541197HX/?share_sourcecopy_web&vd_source7771b17ae75bc5131361e81a50a0c871 [2] https://t.bili…...
Metasploit高级技术【第九章】
预计更新第一章 Metasploit的使用和配置 1.1 安装和配置Metasploit 1.2 Metasploit的基础命令和选项 1.3 高级选项和配置 第二章 渗透测试的漏洞利用和攻击方法 1.1 渗透测试中常见的漏洞类型和利用方法 1.2 Metasploit的漏洞利用模块和选项 1.3 模块编写和自定义 第三章 Met…...
RK3568平台开发系列讲解(调试篇)IS_ERR函数的使用
🚀返回专栏总目录 文章目录 一、IS_ERR函数用法二、IS_ERR函数三、内核错误码沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 IS_ERR 函数的使用。 一、IS_ERR函数用法 先看下用法: 二、IS_ERR函数 对于任何一个指针来说,必然存在三种情况: 一种是合…...
TouchGFX界面开发 | TouchGFX软件安装
TouchGFX软件安装 TouchGFX和STemWin类似,都是一个GUI框架,可以方便的在STM32 Cortex-M4 以及更高级别的STM32芯片上创建GUI应用程序。 本文中的TouchGFX软件安装,是基于已经安装有STM32CubeMX Keil MDK-ARM开发环境的情况下进行的&#x…...
使用 IDEA 远程 Debug 调试
背景 有时候我们需要进行远程的debug,本文研究如何进行远程debug,以及使用 IDEA 远程debug的过程中的细节。看完可以解决你的一些疑惑。 配置 远程debug的服务,以springboot微服务为例。首先,启动springboot需要加上特定的参数。…...
红黑树和平衡二叉树的优缺点及应用场景
红黑树和平衡二叉树都是为了解决二叉搜索树的缺陷而提出的自平衡二叉树结构。它们的优缺点和应用场景如下: 红黑树: 优点: 时间复杂度为O(logN),可以快速查找、插入和删除。 红黑树具有良好的平衡性,树的高度保持较小,因此查找效率较高。 缺点: 实现比较复杂,需要遵守红黑树的…...
软文推广:真实有效提升软文排名与收录的三大方法!
软文是一种具有良好传播效果的文体,可以通过在搜索引擎中排名靠前的方式,为品牌或企业带来更多曝光。但是,如何让软文在搜索引擎中得到更好的收录和排名呢?在本文中,我们将讨论如何提升软文的收录和排名,以…...
SElinux的介绍及配置
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统 SELinux安全增强型Linux系统,是Linux内核子系统,旨在最大限度的减少服务进程对文件、端口等资源…...
vscode-python环境配置
vscode-python环境配置 1、环境基础 下载vscode找到python插件并安装安装python环境并配置环境变量 2、选择python解释器 尝试执行了一下,直接运行py文件,会使用c的调试工具,需要告诉vscode哪些是python Ctrl Shift P打开命令面板 执行…...
问卷调查样本量的确定方法
我们在进行问卷调查的时候,问卷的收集数量是重要的流程之一。问卷数量取决于几个因素,包括研究的目的和研究的类型。接下来,我们就聊一聊怎么确定所需的调查问卷数量。 1、确定研究目标。 确定所需问卷数量的第一步是明确研究目标。这一步是…...
ios客户端学习笔记(三):学习Swift的设计模式
设计模式是指在软件开发中常用的一些解决问题的方法和思想,它可以帮助你更好地组织代码和提高代码的可维护性。你需要学习常见的设计模式,如MVC、MVVM、单例模式、工厂模式等,在开发应用程序时应用它们。 当你学习常见的设计模式时ÿ…...
406. 根据身高重建队列
假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。 请你重新构造并返回输入数组 peopl…...
ESP32使用ESP-NOW协议实现一对多通信和MAC地址存储
目录 介绍ESP-NOW 协议概述在 ESP32 上配置 ESP-NOW使用 ESP-NOW 进行一对多通信在 ESP32 上存储发件人的 MAC 地址代码结论 介绍 ESP32 是一款功能强大的 Wi-Fi 和蓝牙双模模块,可用于使用 ESP-NOW 协议实现低功耗、高效率的一对多通信。本文将介绍如何使用ESP-NO…...
Qt 学生信息数据库管理
1 添加样式表 我们采用了样式表 通过添加Qt resources文件 添加前缀 添加文件,将我们的图标进行添加 2 拖动部件 用到的部件 Label 标签Pushbutton 按钮table view 视图LineEdit 输入框 3 程序编写 1 配置sql环境 在 pro文件中 添加 连接数据库跟访问数据…...
相量的加减乘除计算
相量的加减乘除计算 矢量是物理学中的术语,是指具有大小(magnitude)和方向的量。如速度、加速度、力等等就是这样的量。向量是数学中的术语,也称为欧几里得向量、几何向量、矢量。与向量对应的量叫做数量,在物理学中称…...
JavaScript 代码整洁之道
文章目录 概述篇变量篇函数篇注释篇异常处理篇复杂判断函数篇重构篇代码风格常量大写先声明后调用注释 参考资料 概述篇 书写能让人读懂的代码使用英语编写代码团队协作 制定通用的规则,依靠工具让团队的代码风格保持统一,要让代码看起来是由一个人编写…...
socket 及 字节序转换(嵌入式学习)
socket 及 字节序转换 socket简介Socket为什么需要Socket?socket类型Socket通信模型 字节序主机字节序到网络字节序网络字节序到主机字节序IP地址转换 socket简介 1、1982 - Berkeley Software Distributions 操作系统引入了socket作为本地进程之间通信的接口 2、1…...
Java之~ Aop自定义注解日志
大纲步骤: 一,创建需要记录的日志表,创建基础方法。(省略) 二,在需要加记录日志的方法上加Aop注解1,创建一个注解类,Aop中定义一个注解import java.lang.annotation.*; /*** http 请…...
编译原理个人作业--第四章
构造FIRST和FOLLOW的大白话网站 第四章 1 考虑文法 G 1 G_1 G1: S → a ∣ ∧ ∣ ( T ) T → T , S ∣ S S \rightarrow a|\land|(T) \\ T\rightarrow T,S|S S→a∣∧∣(T)T→T,S∣S 先复习左递归如何消除 原书p69页 类似于 P → P a ∣ b P\rightarrow Pa|b P→Pa∣b的…...
学习笔记:数据库简介
数据库是一系列可以方便的访问和修改的数据的集合。 所有数据库管理系统的主要工作都是可靠的存储数据并使其对用户可用。 目前最常见的数据库模型主要是两种,即关系型数据库和非关系型数据库。 一、按数据的组织方式 数据从组织的角度上,主要分为结…...
AnalogPin库:Arduino模拟信号抗噪与平滑处理实战指南
1. AnalogPin 库概述:面向嵌入式系统的模拟信号抗噪与平滑处理框架AnalogPin 是一个专为 Arduino 平台设计的轻量级 C 类库,其核心目标并非简单封装analogRead(),而是构建一套可配置、可扩展、硬件感知的模拟输入信号调理机制。在工业传感、电…...
如何使用Photon光影包提升Minecraft视觉体验:从安装到高级配置完全指南
如何使用Photon光影包提升Minecraft视觉体验:从安装到高级配置完全指南 【免费下载链接】photon A shader pack for Minecraft: Java Edition 项目地址: https://gitcode.com/gh_mirrors/photon3/photon Photon光影包是一款为Minecraft: Java Edition设计的高…...
NotaGen优化升级:如何将生成的乐谱导入MuseScore进行精修
NotaGen优化升级:如何将生成的乐谱导入MuseScore进行精修 1. 引言 在AI音乐创作领域,NotaGen作为基于LLM范式的符号化音乐生成模型,已经展现出强大的创作能力。然而,AI生成的乐谱往往需要经过专业音乐人的进一步调整和优化&…...
突破Google Drive PDF限制:3步法高效获取受保护文档全攻略
突破Google Drive PDF限制:3步法高效获取受保护文档全攻略 【免费下载链接】Google-Drive-PDF-Downloader 项目地址: https://gitcode.com/gh_mirrors/go/Google-Drive-PDF-Downloader 在学术研究与技术资料收集过程中,用户常面临Google Drive中…...
视频换脸功能上线!AI黑科技助力内容创作降本90%
在电商圈摸爬滚打十几年,从国内淘宝京东到亚马逊TikTok,操盘过美妆、服饰、3C多个类目的百万级店铺。这十年最深的体会就是:流量越来越贵,内容越来越卷,成本越来越高。 尤其是短视频赛道。一条带货视频,模…...
iMeta 5卷1期封底:肠・太极
点击蓝字 关注我们肠・太极。本封面设计灵感来自盘龙、太极阴阳等中国传统文化元素。外周盘龙形若肠道,象征完整的肠道屏障结构;中心太极图寓意肠道微环境的动态平衡。太极两仪分别对应肠上皮细胞线粒体与肠道菌群这两大核心调控者,诠释了唯有…...
三步搞定图片文字提取:Umi-OCR免费离线OCR工具全攻略
三步搞定图片文字提取:Umi-OCR免费离线OCR工具全攻略 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件,适用于Windows系统,支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/GitHu…...
从异或到AES:Java类文件加密的3种实现方式对比(含性能测试)
从异或到AES:Java类文件加密的3种实现方式对比(含性能测试) 在Java开发领域,代码保护始终是开发者关注的焦点。当项目涉及商业机密或核心算法时,防止class文件被反编译成为刚需。本文将深入剖析三种不同安全级别的clas…...
为什么 CFO 总在年底为固定资产失眠?一位 IT 运维的亲历复盘
上个月,我作为外部顾问,去一家年营收5亿的科技公司做系统健康检查。刚进机房,IT主管就苦笑:“我们的 ERP 里有 1200 台设备,但仓库扫码只扫出 780 台——剩下的,要么‘失踪’,要么重复录入了三次…...
Harmonyos应用实例225: 数学建模案例分析
7. 数学建模案例分析 功能简介:提供常见数学建模案例,如人口增长模型、传染病模型、经济增长模型等,通过参数调整观察模型变化,计算模型预测值。帮助学生理解数学建模的基本步骤和应用价值。 ArkTS代码: @Entry @Component struct MathematicalModeling {@State privat…...
