一、前言

变分贝叶斯方法最早由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的更多相关文章

  1. Auto-Encoding Variational Bayes

    目录 主要内容 Encoder (损失part1) Decoder (损失part2) 伯努利分布 高斯分布 代码 Kingma D P, Welling M. Auto-Encoding Varia ...

  2. (译) Conditional Variational Autoencoders 条件式变换自编码机

    Conditional Variational Autoencoders --- 条件式变换自编码机 Goal of a Variational Autoencoder: 一个 VAE(variati ...

  3. 条件式变分自编码机(Conditional Variational Autoencoders)

    Conditional Variational Autoencoders 条件式变换自编码机 摘要: Conditional Variational Autoencoders --- 条件式变换自编码 ...

  4. (zhuan) Variational Autoencoder: Intuition and Implementation

    Agustinus Kristiadi's Blog TECH BLOG TRAVEL BLOG PORTFOLIO CONTACT ABOUT Variational Autoencoder: In ...

  5. VAE(Variational Autoencoder)的原理

    Kingma, Diederik P., and Max Welling. "Auto-encoding variational bayes." arXiv preprint ar ...

  6. [Bayes ML] This is Bayesian Machine Learning

    From: http://www.cnblogs.com/bayesianML/p/6377588.html#central_problem You can do it: Dirichlet Proc ...

  7. 变分推断(Variational Inference)

    (学习这部分内容大约需要花费1.1小时) 摘要 在我们感兴趣的大多数概率模型中, 计算后验边际或准确计算归一化常数都是很困难的. 变分推断(variational inference)是一个近似计算这 ...

  8. 变分自编码器(Variational auto-encoder,VAE)

    参考: https://www.cnblogs.com/huangshiyu13/p/6209016.html https://zhuanlan.zhihu.com/p/25401928 https: ...

  9. 变分推断(Variational Inference)

    变分 对于普通的函数f(x),我们可以认为f是一个关于x的一个实数算子,其作用是将实数x映射到实数f(x).那么类比这种模式,假设存在函数算子F,它是关于f(x)的函数算子,可以将f(x)映射成实数F ...

随机推荐

  1. C++基础:二维数组动态的申请内存和释放内存

    使用二维数组的时候,有时候事先并不知道数组的大小,因此就需要动态的申请内存.常见的申请内存的方法有两种:malloc/free 和 new/delete. 一.malloc/free (1)申请一维数 ...

  2. Android事件传递机制详解及最新源码分析——Activity篇

    版权声明:本文出自汪磊的博客,转载请务必注明出处. 在前两篇我们共同探讨了事件传递机制<View篇>与<ViewGroup篇>,我们知道View触摸事件是ViewGroup传递 ...

  3. 使用spring框架处理编码问题

    详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp90   我们在开发时,经常要对中文字符进行处理,进行处理中文字符的方式也 ...

  4. PowerShell: 问题,此系统上禁止运行脚本解决方法

    刚学Django,在PowerShell上建立一个虚拟环境,准备激活,问题来了:    激活的时候报错了,有点儿懵,之前在命令行没问题啊,我又去命令行试了下,果然可以: 感受到了暴击,赶紧上网求助大神 ...

  5. jQuery的less和scss之less的基本介绍(一)

    简单的整理了一下less的基本用法,希望对大家有所帮助ㅎㅎ 一.less基础语法 1.声明变量:@变量名:变量值 使用变量:@变量名 例如 @color : #ff0000; @length : 10 ...

  6. 结对编程-四则运算生成程序-GUI界面

    201421123118 张中结 201421123098 胡丹丹 a.需求分析 这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web,手机上的),成为一个有基本功 ...

  7. 结对编程1----基于java的四则运算生成器

    小组成员:王震(201421123054).王杰(201421123055) Coding地址:https://git.coding.net/a506504661/sssss.git 一.题目描述 我 ...

  8. 团队作业8——第二次项目冲刺(Beta阶段)博客汇总

    一.冲刺计划安排 http://www.cnblogs.com/teamworkers/p/6875742.html 二.七天冲刺汇总 http://www.cnblogs.com/teamworke ...

  9. 201521123092《java程序设计》第五周学习总结

    1.本周学习总结 #1.1 尝试使用思维导图总结有关多态与接口的知识点. 2.书面作业 #1.代码阅读:Child压缩包内源代码##1.1 com.parent包中Child.java文件能否编译通过 ...

  10. 201521123044 《Java程序设计》第2周作业-Java基本语法与类库

    1. 本章学习总结 ·1.浮点型的不精确,不能简单的像C语言一样用float或者double来定义.在java中有更精确的BigDecimal类. 举例:BigDecimal bd1= new Big ...