变分贝叶斯近似

马尔可夫链蒙特卡洛方法(MCMC)是一个非常有用和重要的工具,但在用于估计大型数据集的复杂后验分布或模型时可能会遇到困难。变分近似(variational approximations)变分推断(variational inference)可用于拟合贝叶斯模型(Jordan et al. 1999)。对于完全贝叶斯推断,变分近似通常比MCMC快得多,在某些情况下,它有助于估计其他方法无法估计的模型。作为一种确定性后验近似方法,变分近似保证了收敛性,很容易对收敛性进行评估。变分近似法最适合于其他方法无法解决的完全贝叶斯推断问题。当然,变分近似确实也有一些限制。它可能低估后验分布的变异性。这种被低估的可变性是变分近似的一个缺点,然而,它是直接可控的,取决于一组透明且易于修改的假设。

变分近似为贝叶斯模型的估计提供了一种不同的方法。与EM算法一样,变分近似也是确定性优化算法,他保证了收敛性,通过检查标量中的变化可以轻松地进行评估。与MCMC算法一样,变分近似估计完全后验分布,不需要额外的步骤来执行判断。下面描述变分近似的基础知识。

变分近似的目标是用某一个称为近似分布(approximating distribution)的工作分布q(\theta;\phi)来近似后验分布p(\theta|X)(Bishop, 2006)。为了使这一近似尽可能接近,我们在近似分布的空间上搜索,找qp之间最小的相对熵(Kullback-Leibler divergence, KL-divergence),也称KL散度KL散度常被用来衡量两个概率分布之间的相似性或差异性。当KL散度为0时,表示两个分布完全相同;当KL散度大于0时,表示两个分布之间存在差异。)形式上,我们在近似分布集合中搜索的分布q(\theta;\phi)使下式最小(下面积分运算对离散\theta情况应该为和运算):

KL(q(\theta;\phi)||p(\theta|X))=E_{q(\theta;\phi)}[\log q(\theta;\phi)-\log p(\theta|X)]\\ \\ =-\int q(\theta)\log\{\frac{p(\theta|X)}{q(\theta;\phi))}\}d\theta \quad......\ (1)

或者更确切地说寻求\phi^*,使得

\phi^*=\mathop{\arg \min}\limits_{\phi\in\Phi}KL(q(\theta;\phi)||p(\theta|X))

直接最小化KL是困难的(这里\Phi\phi的空间)。因此,等价地,人们试图最大化证据下限(evidence lower bound, ELBO)。ELBO定义为:

ELBO(\phi)=E_{q(\theta;\phi)}[\log p(X|\theta)+\log p(\theta)-\log q(\theta;\phi)\\\\=E_{q(\theta;\phi)}[\log p(X,\theta)-\log q(\theta;\phi)] \quad...... \ (2)

因此,问题归结为寻求\phi^*,使得

\phi^*=\mathop{\arg \min}\limits_{\phi\in\Phi}ELBO(\phi)

显然,当q(\theta;\phi)=p(\theta|X)时,(1)式和(2)式被最大化。当然,这并不是特别有帮助,但可以作为选择q的一种参考。我们在近似分布中引入了额外的假定以使得推断可以操作。这里使用类似于Jordan et al. (1999) 和 Bishop (2006) 所使用的分布形式。这里假定所谓的近似分布在参数之间的独立性,这种独立性对于真实后验分布可能并不存在。但除此之外没有任何其他假定。选择这种近似分布,也是因为它在应用于大量模型时已经被证明表现良好。Wang and Titterington (2004) 证明,在足够多的观测结果下,这种近似分布家族将正确地描述后验均值,而这对基于抽样的推断方法一般是不成立的。

我们首先将\theta划分为K块:\theta=(\theta_1,\theta_2,...,\theta_n),近似分布在参数之间独立意味着

q(\theta)=\prod_{k=1}^Kq(\theta_k)

变分算法将识别(而不是假定)构成分解分布的每个组成部分的特定参数族。类似于EM算法的迭代,我们的步骤为下面两步的迭代(直到收敛):

(1)假定有了第i步的估计:\{q^{(i)}(\theta_k)\}_{k=1}^K

(2)为更新第k个因子(k=1,2,...,K) ,定义:

E_{j\neq k}[\log p(\theta|X)]=\int \prod_{j\neq k}\log p(\theta,X)q^{(i)}(\theta_j)d\theta_j

k=1,2,...,K,令

q^{(i+1)}(\theta_k)=\frac{\exp\{E_{j\neq k}[\log p(\theta|X)]\}}{\int\exp\{E_{j\neq k}[\log p(\theta|X)]\}d\theta_k} 

变分推断可能非常耗时,并且在某些情况下是不可行的。关于这部分的细节请参看Blei et al.

最大化ELBO的另一种方法是自动微分变分推断(automatic differentation variational inference, ADVI)这是一种基于梯度的方法,仍然使用迭代优化程序来获得\phi^*。人们使用类似(随机)梯度下降的理念。这需要根据参数计算ELBO关于参数\phi的导数。在复杂的模型中,这可能非常繁琐。在软件存在自动微分(AD)库的情况下,可以依赖库来准确计算导数。AD依赖成为“对偶数(dual numbers)”的变量表示来有效地计算梯度。

首先假设所有模型参数都是连续的。在ADVI中,ELBO被重写为

ELBO(\phi)=E_{q(\zeta;\phi)}\{\log p[X,T^{-1}(\zeta)]+\log|\det J_{T^{-1}}(\zeta)|-\log q(\zeta;\phi)\}

这里的T是一个把\theta转换到\zeta的函数,其值域\zeta \in R^{\dim(\theta)}。因此,需要将数据和模型参数的对数联合密度与雅可比行列式的对数绝对值相加。因为变换后的模型参数\zeta的支撑在实轴,所以多元正态分布为一个合适的变分分布。

将多元正态作为变分分布允许我们使用蒙特卡洛估计在ELBO中计算期望及其梯度。也就是说,为估计ELBO,可以从变分正态分布中抽样,并评估上述期望值内的表达式。

为了最大化ELBO,需要ELBO相对于变分参数的梯度。即

 \nabla_{\phi}ELBO(\phi)\\\\=\nabla_{\phi}E_{q(\zeta;\phi)}\{\log p[X,T^{-1}(\zeta)]+\log|\det J_{T^{-1}}(\zeta)|-\log q(\zeta;\phi)\}\\\\\approx \log p[X,T^{-1}(\hat \zeta)]+\log|\det J_{T^{-1}}(\hat \zeta)|-\log q(\hat \zeta;\phi)

上面的近似是由蒙特卡洛积分得到的,这里的\hat \zeta=\mu+z\sigma\mu\sigma分别是变分的均值和标准差,而z抽自(多元)标准正态分布。

剩下的就是进行某种梯度下降法以获得\phi的解。注意,变量参数应首先转换为无约束空间,即在对数尺度上的标准差,并不需要雅可比行列式。

ADVI可以在PyMC3、Stan以及一个名为Edward的包中实现。关于ADVI的细节请参看Kucukelbir et al. (2017)

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

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

相关文章

扫雷(c语言)

先开一个test.c文件用来游戏的逻辑测试,在分别开一个game.c文件和game.h头文件用来实现游戏的逻辑 主要步骤: 游戏规则: 输入1(0)开始(结束)游戏,输入一个坐标,如果该坐…

下载安装克魔助手

摘要 本文介绍了如何下载安装克魔助手工具,以及注册和登录流程。通过简单的步骤,用户可以轻松获取并使用该工具,为后续的手机应用管理操作做好准备。 引言 克魔助手是一款免费的手机管理工具,通过该工具用户可以方便地在电脑上…

利用 PEB_LDR_DATA 结构枚举进程模块信息

1. 引言 我们常常通过很多方法来获取进程的模块信息,例如 EnumProcessModules 函数、CreateToolhelp32Snapshot 函数、WTSEnumerateProcesses 函数、ZwQuerySystemInformation 函数等。但是调用这些接口进行模块枚举的原理是什么我们并不知道。通过学习 PEB 中 PEB…

GrayLog日志平台的基本使用-ssh之Email报警

1、首先编辑并添加邮件配置到server.conf(注意:是添加) vim /etc/graylog/server/server.conf # Email transport transport_email_enabled true transport_email_hostname smtp.qq.com transport_email_port 465 transport_email_use_a…

基于CNN和双向gru的心跳分类系统

CNN and Bidirectional GRU-Based Heartbeat Sound Classification Architecture for Elderly People是发布在2023 MDPI Mathematics上的论文,提出了基于卷积神经网络和双向门控循环单元(CNN BiGRU)注意力的心跳声分类,论文不仅显示了模型还构建了完整的…

财务咨询公司为何要搭建自己的线上课程平台,而非入驻其他公域流量平台

明理信息科技线上课程平台 财务咨询公司为何要搭建自己的线上课程平台,而非入驻其他公域流量平台 随着数字化时代的到来,线上教育和学习已经成为越来越多人的选择。对于财务咨询公司来说,搭建自己的线上课程平台不仅可以更好地满足客户需求…

git 常用基本命令, reset 回退撤销commit,解决gitignore无效,忽略记录或未记录远程仓库的文件,删除远程仓库文件

git 基本命令 reset 撤销commit https://blog.csdn.net/a704397849/article/details/135220091 idea 中 rest 撤销commit过程如下: Git -> Rest Head… 在To Commit中的HEAD后面加上^,点击Reset即可撤回最近一次的尚未push的commit Reset Type 有三…

盘点 | 飞凌嵌入式这5款100%全国产核心板值得推荐

近期,飞凌嵌入式有5款核心板产品通过了中国赛宝实验室的权威认证,实现了100%的电子元器件国产化率,本篇文章小编就带大家盘点一下这5款产品。 一、FET3568-C系列核心板 FET3568-C和FET3568J-C核心板基于Rockchip RK3568系列处理器开发设计&am…

C++初阶(十七)模板进阶

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、非类型模板参数二、模板的特化1、概念2、函数模板特化3、类模板特化1、全特化2、偏特化 三…

Hadoop之Yarn 详细教程

1、yarn 的基本介绍和产生背景 YARN 是 Hadoop2 引入的通用的资源管理和任务调度的平台,可以在 YARN 上运行 MapReduce、Tez、Spark 等多种计算框架,只要计算框架实现了 YARN 所定义的 接口,都可以运行在这套通用的 Hadoop 资源管理和任务调…

yolov8实战第四天——yolov8图像分类 ResNet50图像分类(保姆式教程)

yolov8实战第一天——yolov8部署并训练自己的数据集(保姆式教程)_yolov8训练自己的数据集-CSDN博客在前几天,我们使用yolov8进行了部署,并在目标检测方向上进行自己数据集的训练与测试,今天我们训练下yolov8的图像分类…

macos Jetbrains IDEA用户自定义vm配置信息存储路径, IDEA点击无反应 无法打开问题解决

Jetbrains Clion, IDEA 用户在应用里面修改了自定义的VM配置后的存储路径为 ~/Library/Application Support/JetBrains/xxx2023.3/xxx.vmoptions xxx为你安装的APP名称, 如 Clion .IntelliJIdea 这里的自定义配置如果配置有误就会直接导致JetBrains软件无法打开, 即 点击打开…