【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p

变分推断:从求分布的推断问题,变成缩小距离的优化问题

    • 频率学派与贝叶斯学派
    • 变分推断
      • 完整推导

 


频率学派与贝叶斯学派

学过概率论,应该了解过,概率分为 2 个学派:

  • 频率学派:数据是客观的(看到啥就是啥,隐变量z->观察变量/输入变量x),直接求统计指标即可(似然函数),代表之作像 CNN、RNN、transformer 这类判别模型(学习类别边界)

  • 贝叶斯学派:数据来自隐变量z(每个孩子都有一个妈, p ( z ∣ x ) = p ( x ∣ z ) p ( z ) p ( x ) p(\mathbf{z|x})=\frac{p(\mathbf{x|z})p(\mathbf{z})}{p(\mathbf{x})} p(z∣x)=p(x)p(x∣z)p(z)),数据都有主观的先验的分布(知道先验,贝叶斯公式推导后验),代表之作像 VAE、GAN、扩散模型 这类概率生成模型(学习概率分布)

把贝叶斯学派的公式展开:

p ( z ∣ x ) = p ( x ∣ z ) p ( z ) p ( x ) = p ( x ∣ z ) p ( z ) ∫ p ( z ) p ( x ∣ z ) d z p(\mathbf{z}|\mathbf{x})=\frac{p(\mathbf{x}|\mathbf{z})p(\mathbf{z})}{p(\mathbf{x})}=\frac{p(\mathbf{x}|\mathbf{z})p(\mathbf{z})}{\int p(\mathbf{z})p(\mathbf{x}|\mathbf{z})d\mathbf{z}} p(zx)=p(x)p(xz)p(z)=p(z)p(xz)dzp(xz)p(z)

按照贝叶斯展开后,分母 ∫ p ( z ) p ( x ∣ z ) d z \int p(\mathbf{z})p(\mathbf{x}|\mathbf{z})d\mathbf{z} p(z)p(xz)dz 是一个不可积的多重积分,会让后验分布无解析解。

可以用 马尔科夫链-蒙特卡洛方法 来近似,但 马尔科夫链-蒙特卡洛方法 是基于 迭代 策略(一步步来的那种)。

  • 导致ta计算慢,不适合深度学习这种大规模数据的计算

变分推断

变分推断另一种解法,适合深度学习这种大规模数据的计算、适合并行计算。

按照贝叶斯学派的思想,估计下图的黄色分布,那设置一个先验(有点像高斯分布),用高斯分布去套这个黄色分布:

目的是,让高斯分布尽可能的重合黄色分布。

  • 用变分分布去逼近推断后的后验分布 p ( z ∣ x ) p(z|x) p(zx)
  • 最小化俩个分布的 KL 散度

min ⁡ θ K L ( q ( z ; θ ) ∣ ∣ p ( z ∣ x ; ϕ ) ) \min_\theta KL(q(z;\theta)||p(z|x;\phi)) minθKL(q(z;θ)∣∣p(zx;ϕ))

  • q ( z ; θ ) q(z;\theta) q(z;θ) 代表一个叫做q的概率分布, p ( z ∣ x ; ϕ ) p(z|x;\phi) p(zx;ϕ) 代表一个叫做p的概率分布
  • x x x 是一个给定的数据
  • 我们要找到一个参数 θ θ θ,使得 q ( z ; θ ) q(z;\theta) q(z;θ) p ( z ∣ x ; ϕ ) p(z|x;\phi) p(zx;ϕ) 之间的 KL 散度最小
  • KL 散度用于,衡量俩个分布之间的距离

公式的目标是找到一个概率分布 q ( z ; θ ) q(z;\theta) q(z;θ),使得它与给定数据 x x x 的真实概率分布 p ( z ∣ x ; ϕ ) p(z|x;\phi) p(zx;ϕ) 之间的差距最小。

通过调整参数 θ θ θ 的值,我们可以调整 q q q 的形状,使得它与真实概率分布更加接近。

比如上图,调整参数 θ θ θ 得到俩个高斯分布(红色、绿色),哪个高斯分布和黄色分布的 KL 散度最小,就选哪个。

变分推断步骤:

  • 输入:数据x,模型 p ( z , x ) p(z, x) p(z,x)
  • 需要推断的是后验概率 p ( z ∣ x ) p(z | x) p(zx),但不能直接求
  • 构造后验概率 p ( z ∣ x ) p(z | x) p(zx) 的近似分布 q ( z ; v ) q(z; v) q(z;v)
  • 不断缩小 q 和 p 之间的距离,直至收敛

展开上面公式的 KL 散度(变成期望和log运算表示):

K L ( q ( z ; θ ) ∥ p ( z ∣ x ) ) ] = E q ( z ; θ ) [ log ⁡ q ( z ; θ ) p ( z ∣ x ) ] \begin{gathered}KL(q(z;\theta)\|p(z|x))]\\=\quad E_{q(z;\theta)}[\log\frac{q(z;\theta)}{p(z|x)}]\end{gathered} KL(q(z;θ)p(zx))]=Eq(z;θ)[logp(zx)q(z;θ)]

完整推导

K L ( q ( z ; θ ) ∥ p ( z ∣ x ) ) ] = E q [ log ⁡ q ( z ) p ( z ∣ x ) ] = E q [ log ⁡ q ( z ) − log ⁡ p ( z ∣ x ) ] = E q [ log ⁡ q ( z ) − log ⁡ p ( x ∣ z ) p ( z ) p ( x ) ] = E q [ log ⁡ q ( x ) ] − E q [ log ⁡ p ( x ∣ z ) ] − E q [ log ⁡ p ( z ) ] + E q [ log ⁡ p ( x ) ] = − E q [ log ⁡ p ( x ∣ z ) ] + K L ( q ( z ) ∣ ∣ p ( z ) ) + E q [ log ⁡ p ( x ) ] \begin{aligned} &\begin{aligned}KL(q(z;\theta)\|p(z|x))]\end{aligned} \\ &= \begin{aligned}E_q[\log\frac{q(z)}{p(z|x)}]\end{aligned} \\ &= \begin{aligned}E_q[\log q(z)-\log p(z|x)]\end{aligned} \\ &= E_q[\log q(z)-\log\frac{p(x|z)p(z)}{p(x)}] \\ &= E_q[\log q(x)]-E_q[\log p(x|z)]-E_q[\log p(z)]+E_q[\log p(x)] \\ &= \begin{aligned}-E_q[\log p(x|z)]+KL(q(z)||p(z))+E_q[\log p(x)]\end{aligned} \end{aligned} KL(q(z;θ)p(zx))]=Eq[logp(zx)q(z)]=Eq[logq(z)logp(zx)]=Eq[logq(z)logp(x)p(xz)p(z)]=Eq[logq(x)]Eq[logp(xz)]Eq[logp(z)]+Eq[logp(x)]=Eq[logp(xz)]+KL(q(z)∣∣p(z))+Eq[logp(x)]

第二行:将 KL 散度的定义展开为期望值的形式, E q E_q Eq 表示在 q ( z ; θ ) q(z;\theta) q(z;θ) 的概率分布下对其进行期望值的计算

第三行:除法变成减法形式

第四行: p ( z ∣ x ) p(\mathbf{z}|\mathbf{x}) p(zx) 替换后验公式 p ( x ∣ z ) p ( z ) p ( x ) \frac{p(x|z)p(z)}{p(x)} p(x)p(xz)p(z)

第五行:log运算展开后验公式,再把中括号外面的 E 放进来了

第六行:合并 log ⁡ q ( x ) 、 log ⁡ p ( z ) \log q(x)、\log p(z) logq(x)logp(z) 变成 KL 散度形式, log ⁡ p ( x ) \log p(x) logp(x) 是一个常数

常数前面的 − E q [ log ⁡ p ( x ∣ z ) ] + K L ( q ( z ) ∣ ∣ p ( z ) ) -E_q[\log p(x|z)]+KL(q(z)||p(z)) Eq[logp(xz)]+KL(q(z)∣∣p(z)) 是证据下界

  • 数据的似然度 − E q [ log ⁡ p ( x ∣ z ) ] -E_q[\log p(x|z)] Eq[logp(xz)]
  • 潜在变量的先验分布 K L ( q ( z ) ∣ ∣ p ( z ) ) KL(q(z)||p(z)) KL(q(z)∣∣p(z))

最小化 -证据下界,等于最大化证据下界,因为前面有一个负号:

arg ⁡ min ⁡ K L ( q ( z ; θ ) ∣ ∣ p ( z ∣ x ) ) ] = arg ⁡ max ⁡ − E q [ log ⁡ p ( x ∣ z ) ] + K L ( q ( z ) ∣ ∣ p ( z ) ) = arg ⁡ max ⁡ E q [ log ⁡ p ( x ∣ z ) ] − K L ( q ( z ) ∣ ∣ p ( z ) ) \begin{array}{ll}&\arg\min KL(q(z;\theta)||p(z|x))]\\=&\arg\max -E_q[\log p(x|z)]+KL(q(z)||p(z))\\=&\arg\max E_q[\log p(x|z)]-KL(q(z)||p(z))\end{array} ==argminKL(q(z;θ)∣∣p(zx))]argmaxEq[logp(xz)]+KL(q(z)∣∣p(z))argmaxEq[logp(xz)]KL(q(z)∣∣p(z))

最终推断结果,告诉我们,可以通过最大化证据下界来近似地学习模型的参数。

通过优化证据下界,我们可以找到一个概率分布 q ( z ; θ ) q(z;\theta) q(z;θ),使得ta能最好地解释观测数据,并且与真实潜在变量的分布尽量接近。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ArcGIS微课1000例】0081:ArcGIS指北针乱码解决方案

问题描述: ArcGIS软件在作图模式下插入指北针,出现指北针乱码,如下图所示: 问题解决 下载并安装字体(配套实验数据包0081.rar中获取)即可解决该问题。 正常的指北针选择器: 专栏介绍&#xff…

专攻代码型闪存芯片赛道,芯天下授权世强硬创代理全线产品

近年来受下游应用需求增长的驱动,代码型闪存芯片市场空间持续扩张,在后疫情之下NOR Flash及SLC NAND Flash市场规模整体仍保持逐步增长的趋势。 为了迎合市场需求,世强先进(深圳)科技股份有限公司(下称“世…

青少年CTF-qsnctf-Web-PingMe02

题目环境: 题目难度:★ 题目描述:诶?又是一道Ping题目诶! 给了一个ip参数 传参: ?ip1.1.1.1 有回显结果 使用英文分号";"进行连接后续命令 列出此路径下的目录和文件 ?ip1.1.1.1;ls 列出根目录…

drf知识--01

前后端开发模式 在开发Web应用中,有两种应用模式: 前后端混合开发: bbs 项目--renderajax 1、全栈开发--前端html后端都是一个人写 2、前端人员:写空页面,没有模板语法,只要html,c…

在区块链中看CHAT的独特见解

问CHAT:谈谈对区块链以及区块链金融的理解 CHAT回复:区块链是一种去中心化的分布式数据库技术,这种技术通过加密算法,使数据在网络中传输和存储的过程变得更加安全可靠。区块链的出现引领了存储、交易等形式的革命,改变…

航空港务数据大屏为航空港的可持续发展提供有力支撑!

随着经济的发展,不断加建与扩建民用机场,空港行业规模不断扩大。在不断引进和消化发达国家先进技术的同时,中国深入开展了对新技术和新材料的研究,极大地丰富和发展了中国的机场建设技术。且各项机场建设计划均已落实推进&#xf…

hadoop格式化报错

在var/bigdata/hadoop/ha/dfs/jn/下没有mycluster目录增加后就格式化成功了

Flask ImportError: DLL load failed: 找不到指定的模块。

一、anaconda环境 将anaconda3安装路径下DDL目录中的 libcrypto-1_1-x64.dll 和 libssl-1_1-x64.dll 拷贝到 虚拟环境目录下的DLL中 完美解决 成功了给个赞吧!

【IDEA】Intellij IDEA相关配置

IDEA 全称 IntelliJ IDEA,是java编程语言的集成开发环境。IntelliJ在业界被公认为最好的Java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超…

真VS假(数字化前提)

元宇宙最近消停了很多,起始这个词刚出来的时候,很多人搞不清楚,元宇宙就是看待真假一个典范。如果对真假有个清晰的认知,那么对于看待很多事情,会给您带来不一样的视角,不仅仅是对企业数字化,可…

Spring MVC框架支持RESTful,设计URL时可以使用{自定义名称}的占位符@Get(“/{id:[0-9]+}/delete“)

背景:在开发实践中,如果没有明确的规定URL,可以参考: 传统接口 获取数据列表,固定接口路径:/数据类型的复数 例如:/albums/select RESTful接口 - 根据ID获取某条数据:/数据类型的复数/{id} - 例…

3D小球跑酷

目录 一、前言 二、开发环境 三、场景搭建 1. 创建项目 2. 创建场景内物体 2.1 创建跑道 2.2 创建玩家 2.3 创建障碍物 2.4 改变跑道和障碍物的颜色 2.4.1 创建材质 2.4.2 给跑道和障碍物更换材质 四、功能脚本实现 1. 创建玩家脚本 2. 相机跟随 3. 胜负的判定 3…

DeepLabV3+实现sar影像海面溢油区识别

今天我们分享DeepLabV3的sai影像水体提取。 数据集 本次使用的数据集是Deep-SAR Oil Spill (SOS) dataset。该数据集由中国地质大学的朱祺琪团队制作并共享。该数据集包含墨西哥湾溢油区域和波斯湾溢油区域,分别获取于ALOS 和Sentinel-1A卫星。由ECHO研究组搜集制作…

phpmyadmin4.8.1远程文件包含漏洞 [GWCTF 2019]我有一个数据库1

打开题目 我们用dirsearch扫描一下后台看看 扫描结果如下 我们访问一下robots.txt看看,提示有phpinfo.php 那我们访问一下phpinfo.php 发现没有任何信息后我们转去看看phpmyadmin看看 成功访问到页面 在这里我们看到phpmyadmin的版本号是4.8.1 我们百度搜索一下看…

ABAP与HANA集成 2:ABAP调用HANA存储过程或SQL语句

作者 idan lian 如需转载备注出处 需求 虽然是做BW模块,但是最近项目上种种,都需要给ABAP人员或者前台用户提供能供他们使用的表,就稍微研究了下ABAP和HANA的集成问题,因为我们BW更擅长的还是HANA,而且HANA的运行效…

使用JS来监控前端页面的性能!

说起性能测试, 我们很多时候都在说后端, 前端的性能测试, 我们关注较少. 那我们今天就来讨论一下如何来监控前端的性能.window.performance 是W3C性能小组引入的新的API,目前IE9以上的浏览器都支持。一个performance对象的完整结构如下图所示:memory字段…

【Spark-ML源码解析】Word2Vec

前言 在阅读源码之前,需要了解Spark机器学习Pipline的概念。 相关阅读:SparkMLlib之Pipeline介绍及其应用 这里比较核心的两个概念是:Transformer和Estimator。 Transformer包括特征转换和学习后的模型两种情况,用来将一个DataFr…

FastAdmin 的 icon (图标)文档

FastAdmin 的 icon (图标)文档 FastAdmin的icon使用的是font-awesome,凡是font-awesome的图标均可使用。 点击打开font-awesome的网址 js中的icon填写

自定义maven插件

maven插件简介 一般的maven插件使用时需要引入插件的gav(groupId,artifactId,version)就可以正常使用了。一般的结构如下&#xff1a; 包含插件的gav,还有一组可执行器<execution>。在每个<execution>里面包含有如下结构 一个可执行器的结构如上&#xff0c;其中各…

系统设计架构——互联网案例

Netflix 的技术栈 移动和网络:Netflix 采用 Swift 和 Kotlin 来构建原生移动应用。对于其 Web 应用程序,它使用 React。 前端/服务器通信:Netflix 使用 GraphQL。 后端服务:Netflix 依赖 ZUUL、Eureka、Spring Boot 框架和其他技术。 数据库:Netflix 使用 EV 缓存、Cas…