关于置信传播算法(Belief Propagation)的一些理解与记录

       最近在研究置信传播算法,想实现消息传播的过程,于是各种找资料,但网上都是千篇一律。每个人都有自己理解的和不理解的问题,经过不断地产生问题与解决问题,也算是有些收获,所以赶紧记录一下。第一次写博客,若有错误,还望指正!另,特别感谢GeekStuff的文章及对我的提问的及时回答,帮助了我很多,虽然我们并不认识!


贝叶斯定理

       贝叶斯定理是置信传播算法的基础。

       经典的数学物理问题,大部分都是适定问题:①解存在;②解唯一;③解的连续性依赖于定解条件。而贝叶斯定理完美地把问题的不确定性和已知的先验知识结合起来,把实际问题转化为概率论中的推理问题,寻找可能性最大的全局最优解。而且利用贝叶斯定理建立的模型,具有完整的数学推导,可以很灵活地把各种先验知识包含在模型中。

        求解贝叶斯网络的最终目标是:求出每个节点的边缘概率分布。使一个边缘概率分布取得最大值的变量xi,就是这个节点的最大后验概率解。贝叶斯网络图是有向图,其相连接的节点之间具有因果关系,也称为父子关系,要用条件概率表示它们之间的相互作用。

       

        其联合概率分布函数为:

       


马尔科夫随机场

       马尔科夫随机场是一种特殊的贝叶斯网络,网络中的节点满足马尔科夫性质:某个节点的概率分布特性只与其领域内的点有关,与领域外的点无关。在这种领域模型中,随机场中的每一个节点只与它直接相邻的节点有相互作用。

       马尔科夫随机场是一个无向图,其中的节点分为可观察节点(已知数据)yi和隐藏节点(未知量)xi,可观察节点与隐藏节点之间的相互作用因子用一个似然函数Φi(xi,yi)表示,两个相邻(有边连接)的隐藏节点之间的相互作用因子用势能量ψij(xi,xj)表示。

         一个马尔科夫随机场中所有节点的联合概率分布函数为:

       马尔科夫随机场中所有节点联合概率分布函数

        对于大多数较小的马尔科夫随机场,只要简单地对全概率公式采用求和或积分的方法,就可以求得每个隐藏点的边缘概率分布。但对于节点数很大的马尔科夫随机场,计算量以指数级增长。所以必须引入适当的计算方法,如置信传播算法


置信传播

        其主要思想是:对于马尔科夫随机场中的每一个节点,通过消息传播,把该节点的概率分布状态传递给相邻的节点,从而影响相邻节点的概率分布状态,经过一定次数的迭代,每个节点的概率分布将收敛于一个稳态。为了使用置信传播算法,在马尔科夫随机场中定义了两个概念:消息和置信度。

        消息更新规则:

       

        置信度计算:

       

      用置信传播算法求出的某点的置信度,就是该点的边缘概率分布虽然可能不是准确值,但至少是近似值。随着马尔科夫随机场的增大,计算量只以线性级增长。要使马尔科夫随机场边界点的信息最终能够到达另一个边界,理论上迭代次数应该为马尔科夫随机场两个边界之间的距离。计算量远小于暴力算法。

      

       消息的计算往往有先后关系,但在实际的网状马尔科夫随机场中,常常采用迭代式计算,即,先为每一个消息赋予初始值,计算的时候不用从起始节点沿着所有的边一层层地下去寻找边缘节点进行递归运算,而是随机找到某个点和它的邻居节点,计算它发送给邻居节点的消息,并计算邻居节点的置信度;然后再随机找到某个点,重复上面过程。每一次的迭代都使用上一次迭代后的值进行计算。这种迭代式运算法,方便利用计算机编程实现,且有利于并行运算,提高效率。


置信传播算法流程

        根据信息更新规则分类,置信传播算法分为:Max-product和Sum-product。

        对于Sum-product,算法流程如下:

        ① 初始化所有隐藏节点的似然函数Φi(xi,yi)、每对邻居节点的势能量ψij(xi,xj)和消息mij(xj),其中,似然函数和势函数的初始化依赖于对问题的理解。

       

        ②随机找到某个点和它的邻居节点,用消息更新规则计算该节点发送给其邻居节点的所有消息,然后再随机找到某个节点,重复这个过程,当所有消息都更新一遍之后即完成一次迭代。

       

        即,

       

        ③ 按照指定次数进行第②步的算法迭代,或判断消息是否收敛,若算法已经收敛,则开始计算每个节点的置信度。

       

        即,

       

        ④ 由置信度求出使得每个节点的边缘概率分布取得最大的变量。

       


以上内容中的部分内容、图片为参考GeekStuff的CSDN博客:置信度传播算法(Belief Propagation)

其它参考资料:

Understanding Belief Propagation and itsGeneralizations

基于置信传播的立体匹配算法研究及实现

  • 15
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
高斯信念传播算法(Gaussian Belief Propagation)是一种用于解决概率图模型的推理问题的算法。它能够在复杂的图模型中进行高效的推理,并估计变量节点的边缘概率分布。下面是该算法的伪码实现: 1. 输入:图模型G=(V,E),其中V为变量节点集合,E为边集合; 2. 初始化:对于每个变量节点v∈V,初始化其边缘概率分布为高斯分布N(μ_v,σ_v^2); 3. Repeat until convergence: 4. for each 边e_ij∈E do: 5. if e_ij为一条消息发送边 then: 6. 计算消息m_ji(v_i)发送给节点v_i的边缘概率分布: 7. m_ji(v_i) = N(μ_ji(v_i),σ_ji(v_i)^2),其中μ_ji(v_i)和σ_ji(v_i)分别为其他节点v_k(k≠i,j)发来的消息的边缘统计量; 8. for each 节点v_i∈V do: 9. 计算节点v_i的后验边缘概率分布: 10. p_i(v_i) ∝ N(μ_i,σ_i^2) * ∏_{v_j∈N(i)}(m_ji(v_i)),其中N(i)为节点v_i的邻居节点集合; 11. 根据节点v_i的后验边缘概率分布更新节点v_i的边缘统计量μ_i和σ_i; 12. 输出:每个变量节点v的边缘概率分布p(v)。 该算法使用了高斯消息传递的思想,通过节点之间的信息传递逐步更新节点的边缘概率分布。其中,步骤6中计算的消息m_ji(v_i)考虑了其他节点发来的消息,步骤9中计算的节点后验边缘概率分布使用了当前节点及其邻居节点的信息。 以上是高斯信念传播算法的伪码实现,通过该算法可以有效地进行图模型的推理,并得到变量节点的边缘概率分布。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值