机器学习 —— 概率图模型(推理:消息传递算法)

  概率图模型G(V,E)由节点V和边E构成。在之前马尔科夫模型相关的博客中,我谈到马尔科夫模型的本质是当两个人交流后,其意见(两个随机变量)同意0与不同意1的概率组合。而势函数表达的是两个意见相同或者相左的程度

  我们搞的那么麻烦,最后想要得到的不就是每个意见正确与否(随机变量取不同值的概率)吗?与其采用解析的方法去算,去把所有其他的变量边际掉,那干脆采用模拟的方法,让这个消息传递跑起来,把系统迭代N次以后的结果拿出来分析。这种朴素(Naive)的想法,就是 Message Passing 算法。

1. 聚类图

  在执行消息传递之前,我们需要指定两件事情:1.掌握消息的人有哪些,手里都有哪些消息。2.他把这个消息告诉了谁。为了解答这两个问题,需要从我们手里仅有的材料去构造。

  P(ABCD) = P(AB)*P(BC)*P(CD)*P(DA)  -------  这里的P是未归一化的概率。 通过这个联合概率计算式,我们获得一种叫做聚类图的全新图模型。从概率图到聚类图如下所示。

  

  其中,聚类图中存在 Cluster 和 Edge. Cluster 就是掌握消息的人,Cluster 里的内容就是人所掌握的消息。Edge 连接了两个交互消息的人,Edge上是两个人交换的消息。当然,聚类图不仅仅是这么简单的结构。还有更复杂的聚类图如下.

  势函数表达的是两个人意见相同或者相左的程度,两个势函数相乘则会表达多个消息相同或相左的程度。多个势函数相乘可以成为某个人的消息函数。

  对于聚类图,有以下性质:

  1.C(Clusters)由节点组成。2. 边上传递的消息,是两个C的交集(必须要两个人同时知道的消息才能交流)。3.消息函数是势函数的乘积。

  总结一下:消息是随机变量,并且都是相关的。人掌握消息之间的关系。人和人之间可以传递消息。

  我们假设消息A:明天下雨 B:明天下雪 C:地上有水  那么人们一般都会认为 A1B1C1的可能性肯定大于A1B1C0。而E有可能是明天有洒水车。总之,不同的人掌握着不同的消息。消息与消息之间会相互影响。

 

2.消息传递 

  有了消息之后,两个都知道同一件事情的人就会交流和这件事有关的内容,比如 2 会告诉 1 关于C(地上有没有水)的事情,这会改变1对消息C的看法(概率)。我们把消息传递写成以下形式。

  

  i->j 表示消息从 i 传递到 j。Sij表示被传递的消息。通式的物理意义有以下三点:

  1.消息从 i 传递到 j, i 会综合所有人给他说的信息(把所有的δ 相乘)

  2.加上自己对消息组合的认知(把 δ 相乘 的结果乘以消息之间的关系)

  3.去除掉不需要传递的部分 (把其他变量边际掉)

  以上循环一定次数后,达到某种稳定状态。

  最终计算某个人对所有消息的看法Belief (所有稳态输入消息δ 乘以消息关系)

 

  这种算法会和精确解法存在一定偏差,故此仅为一种近似算法。

  

  

3.聚类图的性质

  不是随便一幅图都可以作为聚类图。聚类图有3个基本要素:

  1.每个势函数都被使用,且被使用一次。

  2.聚类图中消息传递不能形成环。

  3.每个消息如果存在两个知道的人,这两个人必须要有交流途径

  关于第一点,势函数描述了消息之间的关系,如果漏了,则失去了消息之间的某个信息,如果重复使用,则某种关系被多余的加强了。

  第二点则比较有意思,其实际上描述的是一个正反馈的情况。假设有个人,编了一个谎话:明天会下雨。并且把这个谎话告诉了A,然后A又告诉B,B->C,C-D。如果恰好编这个谎话的人正好和D认识,又正好交流了明天是否会下雨的情况。那么就“谎话到最后自己都信了”。这就对“明天下雨”这个随机变量的概率产生较大的估计偏差。简而言之就是,消息不能成环。

  第三点要表达的是,如果甲乙两个人都知道一件事情A,那么他们一定要有交流途径,无论直接交流还是通过其他人转达,总之消息A一定要有在甲乙两人之间联通的路径。

  值得注意的一点是,明天下雨A和地上有水C之间可能存在较强的相关性,就算A没有形成环,却通过C形成了环,最终也会对结果产生较大影响。比如图中,xy强相关时,消息传递算法的表现并不好。

  有一种一定能够满足上诉性质的聚类图成为Bethe Clusters Graph。在使用消息传递算法时,优先考虑构造此聚类图。该聚类图中有两种不同的人,一种掌握多个消息,一种掌握单种消息。这样的聚类图一定不会存在环。其形式如下所示:

 

4. 传播算法的性质

  一群人交换意见,如果大家最后意见都相同了。比如 甲乙都认为明天下雨的概率是0.6,乙丙都认为明天地上有水的概率是0.7.........这种情况称为聚类图校准了。

  

  公式表示,边际掉无关量,两个人对交流消息的看法是一致的。

  意见相同还有一个说法,就是交流过程稳定,也就是说,在经过无数次迭代后,消息收敛了。

  

——————消息传递公式

 ————————δj-i与求和无关,因为不在求和域内,故可以乘出去。发现i,j是对称轮换的

——————————最终得出收敛和校准是等价的

——————————一种新的符号

————此式证明了,消息传递算法无论如何运行,初始设定都没有引入新的信息

 

5.总结

  消息传递算法是一种朴素的模拟推断算法,用于求解随机变量的给定依赖条件下的概率。这种算法的计算结果是有偏的,但该算法却可以大幅降低推断所需要的计算量。

  

posted @ 2016-01-20 22:18  IronStark  阅读(9971)  评论(2编辑  收藏  举报