变分推断 (Variational Inference) 解析

news2024/11/16 4:44:57

前言

如果你对这篇文章可感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。


变分推断

在贝叶斯方法中,针对含有隐变量的学习和推理,通常有两类方式,其一是马尔可夫链蒙特卡罗法 (MCMC),其通过采样来近似估计后验概率分布;其二是变分推断,通过解析的方法近似计算后验概率分布。

假设联合概率分布 p ( x , z ) p(x,z) p(x,z),其中 x x x 是观测变量,即数据, z z z 是隐变量,目标是学习后验概率分布 p ( z ∣ x ) p(z\mid x) p(zx)

由于 p ( z ∣ x ) p(z\mid x) p(zx) 通常非常复杂,难以直接求解,因此变分推断使用分布 q ( z ) q(z) q(z) 来近似 p ( z ∣ x ) p(z\mid x) p(zx),并通过限制 q ( z ) q(z) q(z) 形式,得到一种局部最优、但具有确定解的近似后验分布。其中 q ( z ) q(z) q(z) 即为变分分布 (variational distribution), q ( z ) q(z) q(z) p ( z ∣ x ) p(z\mid x) p(zx) 之间的相似度通过 KL \text{KL} KL 散度衡量。

如下图所示,我们希望在集合 Q \mathcal{Q} Q 中找到 q ∗ ( z ) q^*(z) q(z) 使其与 p ( z ∣ x ) p(z\mid x) p(zx) 之间的 KL \text{KL} KL 散度尽可能小。

在这里插入图片描述
基于上述想法,对 KL ( q ( z ) ∥ p ( z ∣ x ) ) \text{KL}(q(z)\|p(z\mid x)) KL(q(z)p(zx)) 进行拆解:
KL ( q ( z ) ∥ p ( z ∣ x ) ) = ∫ q ( z ) log ⁡ q ( z ) d z − ∫ q ( z ) log ⁡ p ( z ∣ x ) d z = log ⁡ p ( x ) − { ∫ q ( z ) log ⁡ p ( x , z ) d z − ∫ q ( z ) log ⁡ q ( z ) d z } = log ⁡ p ( x ) − E q [ log ⁡ p ( x , z ) − log ⁡ q ( z ) ] . \begin{aligned} \text{KL}(q(z)\| p(z\mid x)) &= \int q(z) \log q(z) \text{d} z - \int q(z) \log p(z\mid x) \text{d} z \\ &= \log p(x) - \left\{\int q(z) \log p(x,z) \text{d} z - \int q(z) \log q(z) \text{d} z\right\} \\ &= \log p(x) - \mathbb{E}_q\left[\log p(x,z)-\log q(z)\right]. \end{aligned} KL(q(z)p(zx))=q(z)logq(z)dzq(z)logp(zx)dz=logp(x){q(z)logp(x,z)dzq(z)logq(z)dz}=logp(x)Eq[logp(x,z)logq(z)].

由于 KL \text{KL} KL 散度非负,因此:
log ⁡ p ( x ) ≥ E q [ log ⁡ p ( x , z ) − log ⁡ q ( z ) ] . \log p(x) \geq \mathbb{E}_q\left[\log p(x,z)-\log q(z)\right]. logp(x)Eq[logp(x,z)logq(z)].

不等式左端为证据 (Evidence),右端则为证据下界 (Evidence Lower Bound, ELBO \text{ELBO} ELBO),记作 L ( q ) L(q) L(q)(ELBO 经常出现于各类与贝叶斯有关的文章中)。

我们的目的是求解 q ( z ) q(z) q(z) 来最小化 KL ( q ( z ) ∥ p ( z ∣ x ) ) \text{KL}(q(z)\| p(z\mid x)) KL(q(z)p(zx)),由于 log ⁡ p ( x ) \log p(x) logp(x) 是常量,问题转化为最大化 ELBO \text{ELBO} ELBO L ( q ) L(q) L(q).

q ( z ) q(z) q(z) 形式过于复杂,最大化 ELBO \text{ELBO} ELBO 依然难以求解,因此通常会对 q ( z ) q(z) q(z) 形式进行约束,一种常见的方式是假设 z z z 服从分布
q ( z ) = ∏ i q i ( z i ) , q(z)=\prod_{i} q_i(z_i), q(z)=iqi(zi),

z z z 可拆解为一系列相互独立的 z i z_i zi,此时的变分分布称为平均场 (Mean Filed).

总结一下,变分推断常见步骤如下:

  • 定义变分分布 q ( z ) q(z) q(z)
  • 推导证据下界 ELBO \text{ELBO} ELBO 表达式;
  • 最大化 ELBO \text{ELBO} ELBO,得到 q ∗ ( z ) q^*(z) q(z),作为后验概率分布 p ( z ∣ x ) p(z\mid x) p(zx) 的近似。

广义 EM

上述变分推断过程可以与「广义 EM」联系起来,由于 log ⁡ p ( x ) ≥ ELBO \log p(x)\geq \text{ELBO} logp(x)ELBO 恒成立,若将模型参数 θ \theta θ 引入其中,即可得到:

log ⁡ p ( x ∣ θ ) ≥ E q [ log ⁡ p ( x , z ∣ θ ) − log ⁡ q ( z ) ] , \log p(x\mid \theta) \geq \mathbb{E}_q\left[\log p(x,z\mid \theta)-\log q(z)\right], logp(xθ)Eq[logp(x,zθ)logq(z)],

此时有两种理解:

  • 用分布 q ( z ) q(z) q(z) 近似联合概率分布 p ( x , z ∣ θ ) p(x,z\mid \theta) p(x,zθ),最小化分布距离 KL ( q ∥ p ) \text{KL}(q\|p) KL(qp)
  • 采用极大似然估计的思想,最大化对数似然函数 log ⁡ p ( x ∣ θ ) \log p(x\mid \theta) logp(xθ)(也可以理解为最大化证据)。

虽然两种视角不同,但结论一致,即最大化 ELBO \text{ELBO} ELBO,记作 L ( q , θ ) L(q,\theta) L(q,θ)。对应于广义 EM 算法,即采用迭代的方式,循环执行 E 步和 M 步,直至收敛:

  • 【E 步】固定 θ \theta θ,求 L ( q , θ ) L(q,\theta) L(q,θ) q q q 的最大化;
  • 【M 步】固定 q q q,求 L ( q , θ ) L(q,\theta) L(q,θ) θ \theta θ 的最大化。

上述迭代可以保证 log ⁡ p ( x ∣ θ ( t ) ) \log p(x\mid \theta^{(t)}) logp(xθ(t)) 不降,即一定会收敛,但可能会收敛到局部最优:
log ⁡ p ( x ∣ θ ( t − 1 ) ) = L ( q ( t ) , θ ( t − 1 ) ) ≤ L ( q ( t ) , θ ( t ) ) ≤ log ⁡ p ( x ∣ θ ( t ) ) \log p(x \mid \theta^{(t-1)})=L(q^{(t)}, \theta^{(t-1)}) \leq L(q^{(t)}, \theta^{(t)}) \leq \log p(x \mid \theta^{(t)}) logp(xθ(t1))=L(q(t),θ(t1))L(q(t),θ(t))logp(xθ(t))

其中「左边第一个等号」由变分推断原理 + E 步得到,「左边第一个不等号」由 M 步得到,「左边第二个不等号」由变分推断原理得到。


参考资料

  • 周志华. (2016). 机器学习. 清华大学出版社, 北京.
  • 李航. (2019). 统计学习方法. 清华大学出版社, 第 2 版, 北京.

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

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

相关文章

Python爬虫:如何自动化下载网站图片

目录 Requests 访问页面 XPath 定位 JSON 对象 如何使用 XPath 自动下载百度图片 Selenium 库模拟浏览器 Requests 访问页面 Requests 是 Python HTTP 的客户端库,编写爬虫的时候都会用到,编写起来也很简单。它有两种访问方式:Get 和 P…

王道操作系统课代表 - 考研计算机 第五章 输入输出管理 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对 操作系统 知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!! 关于对 “输入输出管理” 章节知识点总结的十分全面,涵括了《操作系统》课程里的…

基于.NET 7 + iView 的前后端分离的通用后台管理系统开源框架

更多开源项目请查看:一个专注推荐.Net开源项目的榜单 今天给大家推荐一套前后端分离通用后台管理系统开源框架。 项目简介 这是基于.Net 7 Vue.js开发的、前后端分离框架,前端UI框架采用iView,该项目只有基础功能模块,不包含具…

VMware虚拟机安装centos(超详细图文教程)

1、centos下载 Ubuntu下载地址:点这里 下载不成功的也可关注公众号获取:待更新 2、打开VMware VMware安装过程:待更新 2.1 创建新的虚拟机 2.2 一般情况都会选择典型(如果这里有需要选择自定义的一般也不会看教程了&#xff…

【Spark分布式内存计算框架——Spark Streaming】10. 应用案例:百度搜索风云榜(中)实时数据ETL存储

5.3 实时数据ETL存储 实时从Kafka Topic消费数据,提取ip地址字段,调用【ip2Region】库解析为省份和城市,存储到HDFS文件中,设置批处理时间间隔BatchInterval为10秒,完整代码如下: package cn.itcast.spar…

华为机试题:HJ94 记票统计(python)

文章目录(1)题目描述(2)Python3实现(3)知识点详解1、input():获取控制台(任意形式)的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…

linux和windows中安装emqx消息服务器

大家好,我是雄雄,欢迎关注微信公众号雄雄的小课堂 现在是:2023年3月1日21:53:55 前言 最近几天看了下mqtt,通过不断的搜索资料,也将mqtt集成到项目中,跑了个demo运行,和预想中的差不多&#x…

Altair 宣布将于3月举办 Future.Industry 2023 全球虚拟大会

Altair(纳斯达克股票代码:ALTR)近日宣布将于 2023 年 3 月 8 - 9 日 举办年度全球虚拟大会 Future.Industry 2023。旨在探索影响全球未来的新趋势,并深入探讨仿真、高性能计算 (HPC)、人工智能(AI)和数据分…

使用jenkins+nginx自动化部署前后端项目并打包备份

前言:因为之前使用docker拉取的jenkins无法检测到本地服务器安装的jdk和maven,所以我在本地服务器直接拉取了jenkins,使用8090端口与docker拉取的jenkins进行对比,可以检测到本地服务器安装的jdk和maven,前端和后端分开…

ETHDenver 2023

ETHDenver是全球最大、持续时间最长的以太坊活动之一,今年的活动定于2月24日至3月5日在美国科罗拉多州丹佛市盛大举行。这次活动将面向以太坊和其他区块链协议爱好者、设计者和开发人员。Moonbeam作为ETHDenver 2023的Meta赞助商,将在本次活动中展示令人…

如何使用crAPI学习保护API的安全

关于crAPI crAPI是一个针对API安全的学习和研究平台,在该工具的帮助下,广大研究人员可以轻松学习和了解排名前十的关键API安全风险。因此,crAPI在设计上故意遗留了大量安全漏洞,我们可以通过 crAPI学习和研究API安全。 crAPI采用…

如何把照片的底色修改为想要的颜色

如何给照片更换底色?其实有可以一键给照片更换底色的 APP ,但是几乎都要收费。如果想要免费的给照片更换底色的话,分享两种简单便捷的方法给你。掌握了这项技能,以后就不用店花钱处理啦!1、免费!线上快速 给…

【SpringBoot教程】SpringBoot入门

SpringBoot介绍 SpringBoot简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot来让你更易上手&…

Rancher Prime 为平台工程提供面向 K8s 的弹性能力

作者简介 张应罗,SUSE 资深架构师,拥有 16 年架构咨询工作经验,专注于 SUSE Enterprise Container Management 相关的产品落地方案及咨询方案设计。 平台工程 “DevOps 已死,平台工程才是未来!” 去年,知名软件工程师…

原来JS可以这么实现继承

当我们在编写代码的时候,有一些对象内部会有一些方法(函数),如果将这些函数在构造函数内部声明会导致内存的浪费,因为实例化构造函数得到不同的实例对象,其内部都有同一个方法,但是占据了不同的…

【unity】开发rts 4 放置建筑进地图;创建单位;单位移动;单位生产者

一 放置建筑进地图 1 GameManage,slot faction阵营插槽, 新建筑拖进secne,便于管理,在实例栏将建筑放在factions下 inital faction entitys,(也可带上cam look at) 添加新建筑上 此时测试&a…

大专生学云计算,工作好找吗?

当然可以找到工作。云计算行业整体是处理高速成长期,市场规模以每年30%的速度增长,市场的扩张意味着需要更多的技术人才支撑,据统计云计算未来五年人才缺口将达到150万。 目前企业对于学历的要求并不高,基本大专及以上都可以的。…

基于神经网络(RBF)补偿的双关节机械手臂自适应控制

目录 前言 1.双关节机械手臂模型 1.1 实际模型 1.2 名义模型 2. 控制律设计 3. 神经网络补偿自适应律设计 3.1自适应律① 3.2自适应律② 4. 仿真分析 4.1仿真模型 4.2 仿真结果 4.3 小结 5学习问题 前言 所谓的补偿可以简单的理解为:将扰动的模型估计出…

【C++】开散列实现unordered_map与unordered_set的封装

本文主要介绍unordered_map与unordered_set的封装,此次封装主要用上文所说到的开散列,通过开散列的一些改造来实现unordered_map与unordered_set的封装 文章目录一、模板参数二、string的特化三、正向迭代器四、构造与析构五、[]的实现六、unordered_map的实现七、u…

MySQL安装教程

目录 一、认识MySQL 二、为什么要选用MySQL 三、关于MySQL8.0 四、安装步骤 一、认识MySQL 1、MySQL是一个开放源码的关系型数据库管理系统,将数据保存再不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 …