【深度学习】Diffusion扩散模型的逆扩散问题

1、前言

上一篇,我们讲了Diffusion这个模型的原理推导。但在推导中,仍然遗留了一些问题。本文将解决那些问题

参考论文:

①Variational Diffusion Models (arxiv.org)

②Tutorial on Diffusion Models for Imaging and Vision (arxiv.org)

视频:[Diffusion扩散模型补充-哔哩哔哩]

2、 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt1xt,x0)

在上篇文章中,我们说 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt1xt,x0)服从正态分布,但是并没有已与证明。那是因为我翻阅了大量的文章资料,都没有找到相关的证明过程。但是正当我放弃之际,我竟然找到了

首先,我们将这个概率利用贝叶斯公式展开
q ( x t − 1 ∣ x t , x 0 ) = q ( x t − 1 , x t ∣ x 0 ) q ( x t ∣ x 0 ) = q ( x t ∣ x t − 1 , x 0 ) q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) = q ( x t ∣ x t − 1 ) q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) q(x_{t-1}|x_t,x_0)=\frac{q(x_{t-1},x_t|x_0)}{q(x_{t}|x_0)}=\frac{q(x_t|x_{t-1},x_0)q(x_{t-1}|x_0)}{q(x_t|x_0)}=\frac{q(x_t|x_{t-1})q(x_{t-1}|x_0)}{q(x_t|x_0)} q(xt1xt,x0)=q(xtx0)q(xt1,xtx0)=q(xtx0)q(xtxt1,x0)q(xt1x0)=q(xtx0)q(xtxt1)q(xt1x0)
在此,得出 q ( x t − 1 ∣ x 0 ) q(x_{t-1}|x_0) q(xt1x0)为先验, q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1)为似然,而 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt1xt,x0)则为后验

论文①里面给出这个定理

在这里插入图片描述

我在以前的文章,也推导出这样的一个定理
如果: P ( x ) ∼ N ( x ∣ μ x , Σ x ) P ( y ∣ x ) ∼ N ( y ∣ A x + B , Q ) 那么: P ( x ∣ y ) ∼ N ( x ∣ μ x − Σ x y Σ y y − 1 μ y , Σ x x − Σ x y Σ y y − 1 Σ y x ) \begin{aligned}如果:&\\&P(x)\sim N(x|\mu_x,\Sigma_x)\\&P(y|x) \sim N(y|Ax+B,Q)\\那么:&\\&P(x|y)\sim N(x|\mu_x-\Sigma_{xy}\Sigma_{yy}^{-1}\mu_y,\Sigma_{xx}-\Sigma_{xy}\Sigma_{yy}^{-1}\Sigma_{yx})\end{aligned}\nonumber 如果:那么:P(x)N(xμx,Σx)P(yx)N(yAx+B,Q)P(xy)N(xμxΣxyΣyy1μy,ΣxxΣxyΣyy1Σyx)
其中里面的 Σ x y \Sigma_{xy} Σxy表示随机变量x,y的协方差矩阵,而 μ y \mu_y μy是随机变量y的期望。都是可以求出来的

至于怎么求,而刚刚的定理是怎么来的,请看我以前写过的一篇博文:线性动态系统中的概率求解_随机动态系统 条件概率-CSDN博客

好,现在,我们不难发现, P ( x ) P(x) P(x)就是先验,而 P ( y ∣ x ) P(y|x) P(yx)则是似然, P ( x ∣ y ) P(x|y) P(xy)就是后验。

P ( x ∣ y ) P(x|y) P(xy)刚好对应上面那个 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt1xt,x0)。那么也就是说, P ( x t − 1 ∣ x t , x 0 ) P(x_{t-1}|x_t,x_0) P(xt1xt,x0)就是正态分布。至于是否要用刚刚的公式求出来,反而有些麻烦,其实可以直接用上一篇文章那种推导就可以了。

还有一点值得注意的是,在论文①中,里面已经强调了 q ( x t − 1 ∣ x 0 ) q(x_{t-1}|x_0) q(xt1x0)为先验, q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1)为似然,而 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt1xt,x0)则为后验

其实论文还提出,如果似然跟先验满足刚刚提出的定理,就可以直接得到后验的公式。

我想说的是,论文只是为了得到后验的公式。如果我们不想得到后验的公式(比如我们只想知道后验是什么分布)

那么根据高斯分布的自共轭性质,如果先验和似然都是高斯分布,那么后验就是高斯分布。就能得出结论了。

3、重建损失问题

在上一篇文章中,对于重构项 E q ( x 1 ∣ x 0 ) [ log ⁡ P ( x 0 ∣ x 1 ) ] \mathbb{E}_{q(x_1|x_0)}[\log P(x_0|x_1)] Eq(x1x0)[logP(x0x1)],我们进行了一些推导

但其实,那是我自己推的,论文里面没有提到。

虽然得到了结果,但是毕竟不是论文里面的。如果你想看论文里面的推导(毕竟我写错的概率大,而论文错的概率却很小)。可以参考论文②,里面有对重构项的推导。

想看论文里面的推导(毕竟我写错的概率大,而论文错的概率却很小)。可以参考论文②,里面有对重构项的推导。

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

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

相关文章

迭代的难题:敏捷团队每次都有未完成的工作,如何破解?

各位是否遇到过类似的情况:每次迭代结束后,团队都有未完成的任务,很少有完成迭代全部的工作,相反,总是将上期未完成的任务重新挪到本期计划会中,重新规划。敏捷的核心之一是“快速迭代,及时反馈…

ubuntu20.04 ROS 环境下使用速腾80线激光雷达

1.相关系统环境 系统版本:ubuntu 20.04 ROS版本:ROS1 - noetic 激光雷达型号:RoboSense Ruby (更新于2024.5.14) 2.网口配置: 将PC/工控机的网口配置为: ipv4,方式设置为手动 ip地址、掩码以…

LGadb找不到设备,解决方法:安装驱动

解决方法:安装驱动 https://www.123pan.com/s/Z6tFjv-JqiPv.html提取码:6666

基于springboot实现社区智慧养老监护管理平台系统项目【项目源码+论文说明】计算机毕业设计

基于SpringBoot实现社区智慧养老监护管理平台系统演示 摘要 如今社会上各行各业,都在用属于自己专用的软件来进行工作,互联网发展到这个时候,人们已经发现离不开了互联网。互联网的发展,离不开一些新的技术,而新技术的…

EE-SX670 槽型光电开关 5MM 限位检测感应器 使用案例

EE-SX670是一款槽型光电开关,也被称为U形传感器或限位检测感应器。它是光电传感器中的一种,通过检测物体是否插入其感应槽来触发开关。这种传感器通常用于自动化生产线上的位置检测、对象计数以及安全设备中的运动检测。 EE-SX670作为一款高性能的光电传…

Redis教程(四):Redis中String类型的常用命令

String操作: 插入一个key为name,值为apple的数据 set name apple 插入的数据中如果有空格的数据,请用""双引号,否则会报错! set name "hello world!" 如果key为name的数据不存在,…

谷歌外贸seo优化怎么做?

一般有两种选择,在大型电商平台开展业务,如亚马逊,阿里巴巴等平台,也可以选择搭建自己的独立站 选择在大型电商平台可以方便迅速建立起自己的商铺,不需要考虑太多交易,支付,物流等方面的问题&am…

非阻塞模式下的读写操作

实现文件IO的非阻塞模式的读写操作 fcntl函数 功能&#xff1a; #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd, ... /* arg */ ); // arg表示可变参数&#xff0c;由cmd决定 fcntl()对打开的文件描述符fd执行下面描述的操作之一。操作由cmd决…

MybatisPlus拓展功能(内附全功能代码)

目录 代码生成 静态工具 案例 逻辑删除 枚举处理器 ​编辑 Json处理器 分页插件功能 ​编辑 案例 封装转换方法 代码生成 静态工具 案例 Overridepublic UserVO queryUserAndAddressById(long id) { // 1.查询用户User user getById(id);if (user null || …

mobarxtem应用与华为设备端口绑定技术

交换机端口绑定 华为交换机的基础配置与MOBAXTERM终端连接 实验步骤&#xff1a; 一、给每个交换机划分vlan并添加端口 1.单个vlan的划分 2.批量划分vlan 在高端交换机CE6800上批量划分连续编号的VLAN&#xff0c;本例中连续的vlan20到vlan25 [~CE6800]vlan b 20 to 25 3…

折叠表达式

C11引入了折叠表达式&#xff08;fold expressions&#xff09;&#xff0c;这是一种强大的语言特性&#xff0c;用于在编译时处理参数包中的多个元素。折叠表达式通过使用折叠运算符&#xff08;fold operator&#xff09;来对参数包中的元素执行折叠操作。折叠运算符有三种形…

什么是用户画像?用户画像的作用是什么?

首先我们来说下什么是用户画像&#xff1f; 用户画像是指对目标用户进行详细描述和分类的方法。 它是根据用户的个人特征、行为习惯、兴趣爱好、消费习惯等信息进行分析和总结&#xff0c;以便更好地了解用户需求和行为模式。用户画像可以帮助企业或组织更好地了解他们的目标…

workerman 实现推送实时数据到前端

首先要说明一下,实时推送是有两个socket服务端和两个socket的客户端 我们分别起名叫做 外层服务端 (开启服务主进程 创建一个 websoket 连接)ws:// 内层服务端 (在开户主进程的时候,内部又创建的一个 socket)text:// 外层客户端 (这是由前端的用户端 使用js 创建的一个 w…

论文阅读 - Anatomy of an AI-powered malicious social botnet

论文链接&#xff1a; https://arxiv.org/pdf/2307.16336.pdf 目录 摘要 1引言 2 相关工作 2.1 LLM驱动的网络威胁 2.2 LLM生成的内容检测 2.3 社交机器人检测 2.4 由 LLM 增强的机器人 3 Fox8僵尸网络的识别 4 特性 4.1 配置文件 4.2 社交网络 4.3内容类型 4.4放…

lightdb plorasql存储过程支持SQLCODE和SQLERRM

文章目录 背景用法总结 背景 LightDB PLOraSQL存储过程在执行异常时支持通过sqlcode和sqlerrm拿到错误码和错误信息&#xff0c;这点与Oracle是类似的。但是在Oracle中存储过程未执行异常也能获取到错误码和错误信息&#xff0c;而LightDB会找不到对应的变量。因此计划在24.2版…

性能测试学习二

瓶颈的精准判断 TPS曲线 tps图 响应时间图 拐点在哪里呢? 这是一个阶梯式增加的场景,拐点在第二个压力阶梯上就出现了,因为响应时间增加了,tps增加的却不多,在第三个阶段时,tps增加的就更少了,响应时间也在不断增加,所以性能瓶颈在加剧,越往后越明显【tps的增长,…

Windows下编译RTTR

虽然C11引入了RTTI、Metaprogramming 等技术&#xff0c;但C在Reflection编程方面依旧功能有限。在社区上&#xff0c;RTTR则提供了一套C编写的反射库&#xff0c;补充了C在Reflection方面的缺陷。 零、环境 操作系统Windows 11Visual StudioVisual Studio Community 2022 CMa…

C++ STL概念之 迭代器

什么是迭代器 迭代器&#xff08;Iterator&#xff09;是一个在容器中访问元素的对象&#xff0c;提供了一种方法来顺序访问容器中的元素&#xff0c;而无需暴露容器的底层表示。 或者说 行为像指针一样的类型。可能是指针也可能是被类封装的指针&#xff0c;不关注容器底层细…

搭建内网穿透服务(frp)

搭建内网穿透服务(frp&#xff09; 一、为什么 在平时工作当中&#xff0c;我们经常会遇到需要将自己本地的服务暴露在公网上&#xff0c;方便与他人进行接口对接、或者进行演示等等&#xff0c;虽然有一些免费的内网穿透服务&#xff0c;但是大都很不稳定或者带宽太低&#x…

让调用者自己干活的特殊线程池

让调用者自己干活的特殊线程池 1. 相关背景 单元测试时, 我们的某些业务代码可能是在线程池中运行的&#xff0c;可能会出现各种不一致的情况。 这时候可以hack一下, 创建一个调用者直接执行的线程池&#xff0c;避免干扰; 2. 实现代码 import java.util.concurrent.*;// 让…