Variational Bayes
一、前言
变分贝叶斯方法最早由Matthew J.Beal在他的博士论文《Variational Algorithms for Approximate Bayesian Inference》中提出,作者将其应用于隐马尔科夫模型,混合因子分析,线性动力学,图模型等。变分贝叶斯是一类用于贝叶斯估计和机器学习领域中近似计算复杂(intractable)积分的技术。它主要应用于复杂的统计模型中,这种模型一般包括三类变量:观测变量(observed variables, data),未知参数(parameters)和潜变量(latent variables)。在贝叶斯推断中,参数和潜变量统称为不可观测变量(unobserved variables)。变分贝叶斯方法主要是两个目的:
(1) 近似不可观测变量的后验概率,以便通过这些变量作出统计推断。
(2) 对一个特定的模型,给出观测变量的边缘似然函数(或称为证据,evidence)的下界。主要用于模型的选择,认为模型的边缘似然值越高,则模型对数据拟合程度越好,该模型产生Data的概率也越高。
对于第一个目的,蒙特卡洛模拟,特别是用Gibbs取样的MCMC方法,可以近似计算复杂的后验分布,能很好地应用到贝叶斯统计推断。此方法通过大量的样本估计真实的后验,因而近似结果带有一定的随机性。与此不同的是,变分贝叶斯方法提供一种局部最优,但具有确定解的近似后验方法。
从某种角度看,变分贝叶斯可以看做是EM算法的扩展,因为它也是采用极大后验估计(MAP),即用单个最有可能的参数值来代替完全贝叶斯估计。另外,变分贝叶斯也通过一组相互依然(mutually dependent)的等式进行不断的迭代来获得最优解。
二、问题描述
重新考虑一个问题:1)有一组观测数据 D ,并且已知模型的形式,求参数与潜变量(或不可观测变量) Z={Z1,...,Zn} 的后验分布: P(Z|D) 。
正如上文所描述的后验概率的形式通常是很复杂(Intractable)的,对于一种算法如果不能在多项式时间内求解,往往不是我们所考虑的。因而我们想能不能在误差允许的范围内,用更简单、容易理解(tractable)的数学形式 Q(Z) 来近似 P(Z|D) ,即 P(Z|D)≈Q(Z) 。
由此引出如下两个问题:
(1) 假设存在这样的 Q(Z) ,那么如何度量 Q(Z) 与 P(Z|D) 之间的差异性(dissimilarity)?
(2) 如何得到简单的 Q(Z) ?
对于问题一,幸运的是,我们不需要重新定义一个度量指标。在信息论中,已经存在描述两个随机分布之间距离的度量,即相对熵,或者称为Kullback-Leibler散度。
对于问题二,显然我们可以自主决定 Q(Z) 的分布,只要它足够简单,且与 P(Z|D) 接近。然而不可能每次都手工给出一个与 P(Z|D) 接近且简单的 Q(Z) ,其方法本身已经不具备可操作性。所以需要一种通用的形式帮助简化问题。那么数学形式复杂的原因是什么?在“模型的选择”部分,曾提到Occam's razor,认为一个模型的参数个数越多,那么模型复杂的概率越大;此外,如果参数之间具有相互依赖关系(mutually dependent),那么通常很难对参数的边缘概率精确求解。
幸运的是,统计物理学界很早就关注了高维概率函数与它的简单形式,并发展了平均场理论。简单讲就是:系统中个体的局部相互作用可以产生宏观层面较为稳定的行为。于是我们可以作出后验条件独立(posterior independence)的假设。即, ∀i,p(Z|D)=p(Zi|D)p(Z−i|D)
三、Kullback-Leibler散度

四、平均场理论(Mean Field Method)
4.1 平均场方法的合理性
4.2 平均场估计下边缘概率的无意义性(VB-marginals)
五、边缘密度(VB-marginal)公式的推导
上文已经提到我们要找到一个更加简单的函数 D(Z) 来近似 P(Z|D) ,同时问题转化为求解证据 logP(Z) 的下界 L(Q) ,或者 L(Q(Z)) 。应该注意到 L(Q) 并非普通的函数,而是以整个函数为自变量的函数,这便是泛函。我们先介绍一下什么是泛函,以及泛函取得极值的必要条件。
参考文献
[1] V. Smidl, A.Quinn(2005), The Variational Bayes Method In Signal Processing, Signal and Communication Technology.
[2] Matthew J.Beal(1998), Variational Algorithms for Approximate Bayesian Inference, London, UK: University of Cambridge, PHD. Thesis
[3] Charles W.Fox, Stephen J.Roberal on variational approximation methods, Advanced mean field methods: theory and practice
全文下载:Variational Inference -full.pdf
Variational Bayes的更多相关文章
- Auto-Encoding Variational Bayes
目录 主要内容 Encoder (损失part1) Decoder (损失part2) 伯努利分布 高斯分布 代码 Kingma D P, Welling M. Auto-Encoding Varia ...
- (译) Conditional Variational Autoencoders 条件式变换自编码机
Conditional Variational Autoencoders --- 条件式变换自编码机 Goal of a Variational Autoencoder: 一个 VAE(variati ...
- 条件式变分自编码机(Conditional Variational Autoencoders)
Conditional Variational Autoencoders 条件式变换自编码机 摘要: Conditional Variational Autoencoders --- 条件式变换自编码 ...
- (zhuan) Variational Autoencoder: Intuition and Implementation
Agustinus Kristiadi's Blog TECH BLOG TRAVEL BLOG PORTFOLIO CONTACT ABOUT Variational Autoencoder: In ...
- VAE(Variational Autoencoder)的原理
Kingma, Diederik P., and Max Welling. "Auto-encoding variational bayes." arXiv preprint ar ...
- [Bayes ML] This is Bayesian Machine Learning
From: http://www.cnblogs.com/bayesianML/p/6377588.html#central_problem You can do it: Dirichlet Proc ...
- 变分推断(Variational Inference)
(学习这部分内容大约需要花费1.1小时) 摘要 在我们感兴趣的大多数概率模型中, 计算后验边际或准确计算归一化常数都是很困难的. 变分推断(variational inference)是一个近似计算这 ...
- 变分自编码器(Variational auto-encoder,VAE)
参考: https://www.cnblogs.com/huangshiyu13/p/6209016.html https://zhuanlan.zhihu.com/p/25401928 https: ...
- 变分推断(Variational Inference)
变分 对于普通的函数f(x),我们可以认为f是一个关于x的一个实数算子,其作用是将实数x映射到实数f(x).那么类比这种模式,假设存在函数算子F,它是关于f(x)的函数算子,可以将f(x)映射成实数F ...
随机推荐
- C++基础:二维数组动态的申请内存和释放内存
使用二维数组的时候,有时候事先并不知道数组的大小,因此就需要动态的申请内存.常见的申请内存的方法有两种:malloc/free 和 new/delete. 一.malloc/free (1)申请一维数 ...
- Android事件传递机制详解及最新源码分析——Activity篇
版权声明:本文出自汪磊的博客,转载请务必注明出处. 在前两篇我们共同探讨了事件传递机制<View篇>与<ViewGroup篇>,我们知道View触摸事件是ViewGroup传递 ...
- 使用spring框架处理编码问题
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp90 我们在开发时,经常要对中文字符进行处理,进行处理中文字符的方式也 ...
- PowerShell: 问题,此系统上禁止运行脚本解决方法
刚学Django,在PowerShell上建立一个虚拟环境,准备激活,问题来了: 激活的时候报错了,有点儿懵,之前在命令行没问题啊,我又去命令行试了下,果然可以: 感受到了暴击,赶紧上网求助大神 ...
- jQuery的less和scss之less的基本介绍(一)
简单的整理了一下less的基本用法,希望对大家有所帮助ㅎㅎ 一.less基础语法 1.声明变量:@变量名:变量值 使用变量:@变量名 例如 @color : #ff0000; @length : 10 ...
- 结对编程-四则运算生成程序-GUI界面
201421123118 张中结 201421123098 胡丹丹 a.需求分析 这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web,手机上的),成为一个有基本功 ...
- 结对编程1----基于java的四则运算生成器
小组成员:王震(201421123054).王杰(201421123055) Coding地址:https://git.coding.net/a506504661/sssss.git 一.题目描述 我 ...
- 团队作业8——第二次项目冲刺(Beta阶段)博客汇总
一.冲刺计划安排 http://www.cnblogs.com/teamworkers/p/6875742.html 二.七天冲刺汇总 http://www.cnblogs.com/teamworke ...
- 201521123092《java程序设计》第五周学习总结
1.本周学习总结 #1.1 尝试使用思维导图总结有关多态与接口的知识点. 2.书面作业 #1.代码阅读:Child压缩包内源代码##1.1 com.parent包中Child.java文件能否编译通过 ...
- 201521123044 《Java程序设计》第2周作业-Java基本语法与类库
1. 本章学习总结 ·1.浮点型的不精确,不能简单的像C语言一样用float或者double来定义.在java中有更精确的BigDecimal类. 举例:BigDecimal bd1= new Big ...