机器学习数据挖掘笔记_20(PGM练习四图模型的精确推理)..doc

机器学习数据挖掘笔记_20(PGM练习四图模型的精确推理)..doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
机器学习数据挖掘笔记_20(PGM练习四图模型的精确推理).

  前言:   这次实验完成的是图模型的精确推理。exact inference分为2种,求边缘概率和求MAP,分布对应sum-product和max-sum算法。这次实验涉及到的知识点很多,不仅需要熟悉图模型的representation,而且还需明白图模型的inference理论,大家可参考coursera课程:Probabilistic Graphical Models?的课件和视频。多花点功夫去理解每行代码,无形之中会收获不少。新年第一篇博客,继续加油! ?   算法流程:   Sum-product求条件概率过程为(inference I):   (a): 输入factor list F、观察到的变量E   (b): 由F中的factor得到graph所对应的skeleton C.   (c): 依次进行变量消除,首先在图C中采用min-neighbors方法找到需要消除的变量。然后进行消除(其实就是factor的求和积分),消除过程中会用掉一些factor,同时也会生成一个新的factor(注意对新的factor补全各节点之间的边)。每消除一个变量就会得到一个clique,同时更新该clique与前面已得clique之间的edge情况。步骤c一直进行直到所有的变量都被消除掉。结束后得到一棵clique tree.   (d): 由于上面的tree中有冗余的clique(即某个clique可能是其相邻clique的子集)。这时需将这2个clique合并,该过程也称为树的剪枝:首先去点冗余的clique节点,然后将其sepset节点与该冗余节点其它所有邻节点都连接上边。   (e): 前面步骤得到的是clique tree skeleton,还需要对每个clique算出其factor表格,由于clique中对应的子factor信息已掌握,所以直接factor相乘即可(注意观察变量E).该步骤完成后就真正得到了一棵clique tree了。   (f): 接着对上面的clique tree进行message passing. 首先选出一个message通道,即找到那些clique i,和其连接的cliques中,只剩下一个clique j没有与之传递消息了,那么(I--j即为通道)。不过这还是得按照某种节点顺序进行。   (g): 计算clique i发射到clique j的message,采用的方法是求和积分掉非公共元素。   (h): 当clique tree中所有的message都传递完成后,clique tree就变成calibrate了,而calibrate具有很多良好的性质,首先可以获得calibrate时每个clique的belief.   (i): 如果要求某个变量的边缘概率,则找到包含该变量的一个clique(随便哪个都行),在该clique上,对其belief求和积分掉其它所有变量,然后归一化即可。 ?   Max-sum求概率最大时的assignment过程为(inference II):   (a)~(e): 和sum-product过程一样。   (f): 将factorlist中的val都取log值。因为需要将max-product转换成对应的max-sum问题。   (g): 和sum-product一样,对clique tree进行message passing. 首先选出一个message通道(I→j).   (h): 计算(I→j)之间的message. 采用的方法是max掉非公共元素。   (i): 当clique tree中所有的message都传递完成后,clique tree就变成calibrate了,采用factorsum计算每个clique的belief.   (j): 如果要求某个变量的max-marginal,则找到包含该变量的一个clique(随便哪个都行),在该clique上, max掉其belief 上其它所有变量,此时不需要归一化。   (k): 通过步骤j,可以得到每个变量的max-marginal factor,找到需要assigment中元素对应的factor,取出其val中最大概率值对应的var,组合在一起为最终的结果。 ?   Belief propagation流程如下:    ?   matlab知识:   C = unique(A):   如果A是向量,则C表示去掉了A中重复的元素(只保留1个)。   C = union(A,B):   如果A和B是向量,则C为A和B的并集,且去掉了重复的元素(只保留1个)。   在matlab中,true只表示数字1,其它非1的数都不能表示,而false只表示0.所以其它整数既等于false也不等于true.

文档评论(0)

sdgr + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档