生成式 AI - Diffusion 模型的数学原理(3)

news2024/11/28 16:53:21

来自 论文《 Denoising Diffusion Probabilistic Model》(DDPM)
论文链接: https://arxiv.org/abs/2006.11239
Hung-yi Lee 课件整理

文章目录

        • 一、图像生成模型本质上的共同目标
        • 二、最大似然估计
        • 三、和VAE的关联
        • 四、概率计算

一、图像生成模型本质上的共同目标

图像生成模型共同的特征是,在输入端有一个简单的分布,从里面sample出一个向量出来,然后把这个向量输入到神经网络里面,这个神经网络我们用G来表示,它的输入是x,输出是z,这个x就是一张图片,我们每次从这个简单的分布里面sample一个向量出来,通过神经网络把它变成一张图片,图中标记了四个图片。这些图片会组成一个十分复杂的分布,右边绿色的形状表示。而我们期待的是找到一个神经网络,使得形成的分布和真实图片形成的分布(蓝色形状表示)越接近越好。

通常我们的任务还需要一段输入的文字描述,我们称之为Condition,生成的图片是根据condition产生的图片,但是它仍然是一个分布,目标一样是让产生的分布和真实的分布越接近越好,所以有没有这个Condition,原理上没有本质的差别,下面的讲解暂时不考虑Condition,这样表达式更简洁,便于理解。

二、最大似然估计
我们期望绿色的分布和蓝色的分布越接近越好,但是怎么衡量呢,多数的深度学习模型都采用最大似然估计。

假设神经网络的参数用 θ \theta θ表示,通过这个神经网络产生的分布我们用 P θ P_{\theta } Pθ 来表示,真正的分布我们用 P d a t a P_{data } Pdata 来表示。
首先我们从 P θ P_{\theta } Pθ 里面sample出 x 1 x_{1} x1 x m x_{m} xm

我们通过输入 x i x^{i} xi来计算 P θ ( x i ) P_{\theta }(x^{i}) Pθxi是十分复杂的,复杂的难以想象。但是没有关系,我们先假设可以做到,可以算出产生这张图片的概率。
我们需要找一个 θ \theta θ使得 P θ ( x i ) P_{\theta }(x^{i}) Pθxi最大,那么目标函数如右边公式所示。
我们需要学习到的使得 P θ ( x i ) P_{\theta }(x^{i}) Pθxi最大的 θ \theta θ就是 θ ∗ \theta^* θ

接着前面的讲解,
第二行,我们对 P θ ( x i ) P_{\theta }(x^{i}) Pθxi做取对数操作,对结果没有影响,为了方便计算。
第三行,对数计算,把求积转换为求和,这个式子近似于 从 P d a t a P_{data } Pdata中取出 x x x, 然后计算 P θ ( x ) P_{\theta }(x) Pθx取对数,在计算 x x x P d a t a P_{data } Pdata中取出的期望。
第四行,这个式子等同于对 x x x做积分,这里没有好解释的,右边减去的部分有点令人匪夷所思,这一项不会影响我们的结果,对 θ \theta θ不产生影响,只和data本身有关,但是加入这一项有一个好处,可以进行后续的合并。
第五行,合并后得到这一步,这一项正好是 P θ P_{\theta } Pθ P d a t a P_{data} Pdata的KL Divergence。

KL Divergence越大表示这两个分布的差异越大。这样我们可以看到最大似然估计和最小化KL Divergence是等价的。

三、和VAE的关联

这里之所以讲VAE是为了说明其实它和Diffusion model非常相似,之前也提到过,很多在VAE里面推导过的东西在Diffusion model里面是不需要再推导的。

按理说我们要定义 P θ ( x ) P_{\theta }(x) Pθx应该写成右边第一个式子,
P ( z ) P(z) Pz是从原始分布计算出来的,很容易得到,但是后面的部分怎么办,如果我们按照第二行的式子进行处理的话这样算出来的概率几乎都是0了。

实际上在VAE里面是这样假设的,假设输入一个z输出是G(z),G(z)实际上是高斯分布的均值,这样我们就可以用右边的式子近似代替。

通常我们需要最小化的是 P ( x ) P(x) Px的下界。
第一行,这里的 q ( z ∣ x ) q(z\mid x ) qzx是什么并不重要;
第二行,分解展开 P ( x ) P(x) Px;然后在分子分母同时乘以 q ( z ∣ x ) q(z\mid x ) qzx
第三行,log相乘拆成相加,第二项是 q ( z ∣ x ) q(z\mid x ) qzx P ( z ∣ x ) P(z\mid x ) Pzx的KL divergence,而且这一项一定是正数;
第四行,这个积分形式可以写成期望的形式,这就是这个概率的下界,即下限。我们要最大化的就是这个下限。
在VAE里面 q ( z ∣ x ) q(z\mid x ) qzx实际上就是Encode。

四、概率计算

现在来看看 P θ ( x ) P_{\theta }(x) Pθx是怎么计算的。
生成图片的过程如图所示,可以把Denoise的过程想成是产生一个高斯分布的均值,如果 x t − 1 x_{t-1} xt1和产生的分布很接近,那么这个概率就很大,反之很小。
x 0 x_{0} x0被产生的概率就可以用下面这个很长的式子表示,从 x 1 x_{1} x1 x T x_{T} xT对所有的可能做积分。

DDMP和VAE的下限其实是一样的,推导的过程也是一模一样。
唯一的不同就是把一些符号换了一下,
x x x换成了 x 0 x_{0} x0
q ( z ∣ x ) q(z\mid x) qzx换成了 q ( x 1 : x T ∣ x 0 ) q(x_{1} :x_{T} \mid x_{0} ) qx1xTx0
P ( x ∣ z ) P(x\mid z) Pxz换成了 P ( x 0 : x T ) P(x_{0} :x_{T} ) Px0xT
VAE里面的Encoder和DDPM里面的forward process也是对应的。

最下面给出了 q ( x 1 : x T ∣ x 0 ) q(x_{1} :x_{T} \mid x_{0} ) qx1xTx0的计算公式。
下一篇博客会进一步解释这个公式具体的计算方法。

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

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

相关文章

LeetCode.590. N 叉树的后序遍历

题目 590. N 叉树的后序遍历 分析 我们之前有做过LeetCode的 145. 二叉树的后序遍历,其实对于 N 叉树来说和二叉树的思路是一模一样的。 二叉树的后序遍历是【左 右 根】 N叉树的后序遍历顺序是【孩子 根】,你可以把二叉树的【左 右 根】想象成【孩子…

MySQL为什么改进LRU算法?

普通LRU算法 LRU = Least Recently Used(最近最少使用): 就是末尾淘汰法,新数据从链表头部加入,释放空间时从末尾淘汰. 当要访问某个页时,如果不在Buffer Pool,需要把该页加载到缓冲池,并且把该缓冲页对应的控制块作为节点添加到LRU链表的头部。当要访问某个页时,如果在…

js设计模式:代理模式

作用: 创建代理的数据来复刻对原有数据的操作,并且可以添加自己的逻辑 vue中的data就是用的代理模式,比较经典 示例: let proxyFun (obj)>{return new Proxy(obj,{get:(obj,prop,value)>{return obj[prop]},set:(obj,prop,value)>{obj[prop] valuereturn true}})…

从阿里宜搭到吉客云通过接口配置打通数据

从阿里宜搭到吉客云通过接口配置打通数据 来源系统:阿里宜搭 宜搭是阿里巴巴自研的低代码应用搭建平台,传统情况下需要2周才能搭建完成的应用,用宜搭2小时就可完成。宜搭于2019年3月上线,用户可以在可视化界面上以拖拉拽的方式编辑和配置页面…

【漏洞复现-通达OA】通达OA report_bi存在前台SQL注入漏洞

一、漏洞简介 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA为各行业不同规模的众多用户提供信息化管理能力,包括流程审批、行政办公、日常事务、数据统计…

二叉树和N叉数的遍历合集

二叉树和N叉数的遍历合集 二叉树的前序遍历 前序遍历的顺序是 根 -> 左儿子 -> 右儿子&#xff0c;所以我们直接按照这个顺序 dfs 就行 dfs class Solution { public:vector<int> preorderTraversal(TreeNode* root) {vector<int> res;function<void(…

如何在极低成本硬件上落地人工智能算法 —— 分布式AI

一、背景 分布式AI的发展前景非常广阔&#xff0c;随着5G、6G等高速网络通信技术的普及和边缘计算能力的提升&#xff0c;以及AI算法和硬件的不断优化进步&#xff0c;分布式AI将在多个领域展现出强大的应用潜力和市场价值&#xff1a; 1. **物联网&#xff08;IoT&#xff0…

unity学习(20)——客户端与服务器合力完成注册功能(2)调试注册逻辑

接着上一节的问题&#xff0c;想办法升级成具备数据库功能的服务器&#xff0c;这个是必须的。 至少在初始化要学会把文件转换为session&#xff0c;新知识&#xff0c;有挑战的。 现在是从LoginHandler.cs跳到了AccountBiz.cs的create&#xff0c;跳度还是很大的。 create函…

宝塔安装MySQL、设置MySQL密码、设置navicat连接

1、登录宝塔面板进行安装 2、设置MySQL连接密码 3、安装好了设置navicat连接 登录MySQL [roothecs-394544 ~]# mysql -uroot -p Enter password: 切换到MySQL数据 mysql> use mysql Database changed mysql> 查询用户信息 mysql> select host,user from user; ---…

一起玩儿物联网人工智能小车(ESP32)——63 SD和TF卡模块的使用

摘要&#xff1a;本文介绍SD和TF卡模块的使用方法 前面介绍了非易失性存储的使用方法&#xff0c;由于空间和本身只支持键值对的限制&#xff0c;非易失性存储只适用于少量数据的记录。而不适用于各种声音、图片、大量数据等情况的使用。这时候就需要有文件系统或者更大容量存…

无人机数据链技术,无人机数据链路系统技术详解,无人机数传技术

早期的无人机更多的为军事应用服务&#xff0c;如军事任务侦查等&#xff0c;随着技术和社会的发展&#xff0c;工业级无人机和民用无人机得到快速的发展&#xff0c;工业级无人机用于农业植保、地理测绘、电力巡检、救灾援助等&#xff1b;民用无人机用于航拍、物流等等领域。…

Unity之闪电侠大战蓝毒兽

目录 &#x1f3a8;一、创建地形 &#x1f3ae;二、创建角色 &#x1f3c3;2.1 动画 &#x1f3c3;2.2 拖尾 &#x1f3c3;2.3 角色控制 ​&#x1f3c3;2.4 技能释放 &#x1f3c3;2.5 准星 &#x1f4f1;三、创建敌人 &#x1f432;3.1 选择模型 &#x1f432;3.…

GitLab安装配置

一、GitLab的简介 GitLab是开源的代码托管平台&#xff0c;提供版本控制功能、代码审查、持续集成等工具&#xff0c;帮助团队协作开发软件项目。用户可以创建仓库存储代码&#xff0c;管理问题追踪&#xff0c;部署自动化流程等。 二、GitLab的安装 1、Rocky_Linux 下载安装 …

使用RK3588开发板使用 SFTP 互传-windows与开发板互传

MobaXterm 软件网盘下载路径&#xff1a;“iTOP-3588 开发板\02_【iTOP-RK3588 开发板】开发资料\04_iTOP-3588 开发板所需 PC 软件&#xff08;工具&#xff09;\02-MobaXterm”。 打开 MobaXterm 创建一个 SFTP 会话&#xff0c;如下图所示&#xff1a; 输入密码 topeet 进入…

《UE5_C++多人TPS完整教程》学习笔记19 ——《P20 我们子系统的回调函数(Callbacks to Our Subsystem)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P20 我们子系统的回调函数&#xff08;Callbacks to Our Subsystem&#xff09;》 的学习笔记&#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&#xff0c;UP主&…

外汇天眼:小白开始实盘之前,必须知道的7件事

在进行外汇交易时&#xff0c;保持松弛的心态和学习外汇知识是一件很重要的事情&#xff0c;但对于缺乏交易经验的交易小白来说&#xff0c;想保持松弛的心态和学习外汇知识比较困难&#xff0c;考虑到这一点&#xff0c;天眼给大家总结了7件在交易前必须知道的事情。 1、实现财…

基于PSO优化的GRU多输入分类(Matlab)粒子群优化门控循环单元神经网络分类预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分程序&#xff1a; 四、完整代码数据分享下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台…

167基于matlab的根据《液体动静压轴承》编写的有回油槽径向静压轴承的程序

基于matlab的根据《液体动静压轴承》编写的有回油槽径向静压轴承的程序&#xff0c;可显示承载能力、压强、刚度及温升等图谱.程序已调通&#xff0c;可直接运行。 167 显示承载能力、压强、刚度及温升 (xiaohongshu.com)https://www.xiaohongshu.com/explore/65d212b200000000…

element 表单提交图片(表单上传图片)

文章目录 使用场景页面效果前端代码 使用场景 vue2 element 表单提交图片   1.点击【上传图片】按钮择本地图片&#xff08;只能选择一张图片&#xff09;后。   2.点击图片&#xff0c;支持放大查看。   3.点击【保存】按钮&#xff0c;提交表单。 页面效果 前端代码…

新版本HC物联网系统

代码开源在 HC物联网平台: HC物联网系统用于小区&#xff0c;园区等设备管理&#xff0c;包括门禁&#xff0c;道闸&#xff0c;监控&#xff0c;充电桩&#xff0c;智能水电表&#xff0c;梯控和门锁等设备 HC 物联网系统 HC物联网系统专注于小区和园区内的设备管理&#xf…