Belief propagation (zz from Dahua's blog)
2010-01-04 16:07
288 查看
今天先说说belief propagation吧。这是machine learning的泰斗J. Pearl的最重要的贡献。对于统计学来说,它最重要的意义就是在于提出了一种很有效的求解条件边缘概率(conditional marginal probability)的方法。说的有点晦涩了,其实所谓求解条件边缘概率,通俗地说,就是已知某些条件的情况下,推导另外某些事件发生的概率。 如果涉及的因素只有那么几个,一个学过概率论的大学生就可以使用简单的概率公式计算出来。可是,在现实世界中有成千上万的因素,它们相互联系,如果按照传统方法,就要对数以千计的变量进行积分。考虑到运算量对于变量个数以指数增长,因此这么做实际上根本没法算的。虽然,后来人们提出了蒙特卡罗(Monte Carlo)积分,但是对于拥有数以千计变量的复杂系统,仍然可以说是computationally prohibitive。 这个困难一直阻碍着统计推断方法在大规模系统中的应用。Belief propagation出来之后,情况才发生了转变。J. Pearl在他的书中分析说,人们在头脑中经常进行各种各样的推断,可是人在头脑里面发生了什么事情呢:穷举所有未知变量的可能状态进行积分(Traditional method)?还是随即产生各种状态求均值(Monte Carlo Integral),看来都不make sense。J. Pearl认为,虽然影响世界的因素繁多,但是每个因素实际上只与少数几个因素相关,这就构成了一个推断网络。在machine learning里面,这样的网络有两种:Bayesian Network,反映的是因果推断关系(就是说,相互联系的因素中,其中一个是因,另外一个是果),以及Markov Network, 反映的是相互影响的关系(两个因素互为因果,其变化相互影响)。根据这种建模方式,J.Pearl提出把inference局部化和分布化,把全局的积分变成局部的消息传递。网络中的每个节点通过和邻近节点交换信息对自身的概率状况进行评估。通过这种方式,使得计算量从指数增长变成近似的线性增长,从而使得统计推断能在复杂系统中被应用。 在图模型里,就是变量间的条件独立性。 数学上可以证明,对于有向无环的Bayesian Network,可以证明,通过BP得到的解和严格的积分计算得到的结果是一致的。这时的BP只是利用因素联系的局部性来简化计算,并把计算过程分散到各个节点。对于无向而且到处是环的markov network,J.Pearl指出,这种传播过程是可能导致不稳定的。某些消息可能在环状的传播过程中无限加强,从而导致整个系统发散或者偏离。但是实际经验表明,对于大部分问题,BP在带环的系统中依然工作良好。很多人对这个现象进行了研究,对于某些特例给出了初步的解释,但是关于Loopy BP的稳定性和收敛性问题,离理论上的最终解决,还有很长的路要走。 在computer vision领域,MIT的著名教授W.T. Freeman是BP方法的积极倡导者,他大量使用markov random field和belief propagation对图像进行建模,在很多应用领域取得了不错的结果。 其实关于Local propagation的方法论,现在有超出了belief propagation的范畴。某些新的方法的优化流程也体现了类似的特征。我在我自己最近一项关于应用信息论进行监督学习的工作中发现,如果使用信息论最大化引导分类过程,事实上其优化流程就体现了样本间的局部交互和传播。不仅仅是机器学习,物理学也同样如此,比如当一个粒子发生了运动,其效应也是不断通过与邻近粒子的相互作用向外扩散,从而形成波动过程。一直以来,machine learning的formulation都是对问题从宏观着眼,可是最近一些工作都在暗示着微观作用过程对于宏观状态形成的重要意义。因此,一些新的研究开始偏向对局部结构和微观作用的考察,得到了一些有趣的发现。Manifold Learning中的一些重要方法,比如Local Linearly Embedding就是其中重要的代表。 |
相关文章推荐
- 使用 MQ JMS 管理工具(From margin's blog)
- 【DP_树形DP专辑】【9月9最新更新】【from zeroclock's blog】
- 【DP_概率DP专辑】【10、4最新更新】【from zeroclock's blog】
- 《Springboot极简教程》问题解决:Logging system failed to initialize using configuration from 'logback.xml '
- cannot convert from 'wchar_t *' to 'ATL::CStringT ‘s solution
- RVDS2.2的invalid call from '~PRE8' 解决方法
- cannot convert 'this' pointer from 'const cl
- Xcode更新到5.1,"Cast from pointer to smaller type 'int' loses information” in EAGLView.mm
- warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
- Cast from pointer to smaller type 'int' loses information
- invalid conversion from 'const char*' to 'char*'
- incompatible pointer types assigning to 'int *' from 'char'
- error C2440: '=' : cannot convert from 'char ** ' to 'char *** '
- DataTables warning : Requested unknown parameter '1' from the data source for row 0错误
- MySQL查询优化:LIMIT 1避免全表扫描【如判断用户是否存在select * from users where username='123' and passwd='123' limit 1】
- ERROR 1093 (HY000): You can't specify target table 'b' for update in FROM clause
- [ERROR] SSL error: Unable to get private key from 'server-key.pem'
- Cannot convert value '0000-00-00 00:00:00' from column 1 to TIMESTAMP
- Assigning to 'AppDelegate *' from incompatible type 'id<UIApplicationDelegate>'
- riusksk's blog