从零学习Belief Propagation算法(三)

本文将记录 Belief Propagation 算法的学习历程,如果您之前没有接触过,而现在刚好需要用到,可以参考我的系列文章。内容稍多将分为几个主题来写。本系列文章将包含以下内容:

  • 必备的概率论基础
  • 从概率论到概率图模型
  • Bayes 网络
  • Markov 随机场
  • 因子图 Factor Graph
  • Belief Propagation算法

从零学习Belief Propagation算法(一)


从零学习Belief Propagation算法(二)


1. 因子图

1.1 概念

有向图和无向图都可以使得,若干个变量的⼀个联合概率函数(或全局函数)能够表示成,这些变量的⼦集上的因⼦的乘积。

因⼦图比有向图和无向图更显式地表示了这个分解,⽅法是:在表示变量的结点的基础上,又引⼊额外结点来表示因⼦本⾝。因⼦图也使我们能够更加清晰地了解分解的细节。

有向图:

从零学习Belief Propagation算法(三)

P(x)=P(x1)P(x2)P(x3)P(x4|x1,x2,x3)P(x5|x1,x3)P(x6|x4)P(x7|x4,x5)

用因子图表示,其实就是将相应的函数因子改写:

P(x)=P(x1)P(x2)P(x3)P(x4|x1,x2,x3)P(x5|x1,x3)P(x6|x4)P(x7|x4,x5)=f(x1)f(x2)f(x3)f(x1,x2,x3,x4)f(x1,x3,x5)f(x4,x6)f(x4,x5,x7)


无向图:

从零学习Belief Propagation算法(三)

P(x)=1ZψC1(x1,x2,x3)ψC2(x3,x4)ψC3(x3,x5)

上面的式子是不是也可以看成是多个因子表示的。


因子图:

从零学习Belief Propagation算法(三)

P(x)=fa(x1,x2)fb(x1,x3)fc(x2,x3)


1.2 结构

1)常见的电路图、信号流程图、格子图以及各种框图都属于图模型的范畴;
2)因子图(factor graph,FG)是图模型的一种;
3)因子图的典型代表是Forney-style factor graph,简称 FFG
4)编码领域、信号处理、人工智能方面的大量算法应用。

一般 FFG 由 结点,边缘,半边缘(只与一个结点连接)组成;
FFG的定义规则如下:
a) 每个因子对应唯一的结点集合;
b) 每个变量对应唯一的边缘或者半边缘;
c) 代表因子 f 的结点与代表变量 x 的边缘(或半边缘)相连,当且仅当 f 是关于 x 的函数。


从零学习Belief Propagation算法(三)

转化为这种形式表示:


从零学习Belief Propagation算法(三)

f(u,w,x,y,z)=f1(u,w,x)f2(x,y,z)f3(z)

例:在上图中
3个结点 对应 3个因子:f1f2f3
2个边缘 对应 2个变量 x,z
3个半边缘 对应 3个变量 u,w,y


2. BP (和-积)算法

  • 我们以下面的因子图为例开始说这个算法。


从零学习Belief Propagation算法(三)

假设联合概率函数 f 可用如上图所示的 FFG 表示,即

f(x1,,x8)=f1(x1)f2(x1)f3(x1,x2,x3,x4)f4(x4,x5,x6)f5(x5)f6(x6,x7,x8)f7(x7)

考虑边缘函数,即

p(x4)=x1,x2,x3,x5,x6,x7,x8f(x1,,x8)=x1,x2,x3,x5,x6,x7,x8[f1(x1)f2(x1)f3(x1,x2,x3,x4)f4(x4,x5,x6)f5(x5)f6(x6,x7,x8)f7(x7)]


2.1 计算思想

乘法分配律:

xy1+xy2=x(y1+y2)

左式用了两次乘法,一次加法;右式用了一次乘法,一次加法

ixyi=xiyi

乘-加 变换为 加-乘 后,计算复杂度降低。


2.2 边缘概率计算的另一种表示


从零学习Belief Propagation算法(三)


边缘概率计算通过划分 box 的方式,由之前的(乘-加)

x1,x2,x3,x5,x6,x7,x8f(x1,,x8)

变换为(加-乘):

从零学习Belief Propagation算法(三)


2.3 信息是怎么传播的

传递规则:

  • 变量到因子:1
  • 因子到变量:f

从零学习Belief Propagation算法(三)

接下来我们用一个例子看传播流程:

从零学习Belief Propagation算法(三)

从零学习Belief Propagation算法(三)

我们到第三个步骤就可以计算出 p(x3),但是现在的问题是我们要计算任意一个边缘函数 p(xi),那仅仅凭第三步的所有传递的局部消息是不够的。
所以,我们要传递给每个节点所有的邻居消息。和积算法BP)从本质上就是一种消息传递算法(MPA),它可从全局函数计算出各个不同的边缘函数。


2.4 通俗的讲解belief propagation算法的思想

情景一:若干士兵排成一个队列,每个士兵只能与他相邻的士兵交流,问如何才能使每个士兵都知道总的士兵数

从零学习Belief Propagation算法(三)

  • 显然,对里面的任意一位士兵,他们只能与相邻的人交流传递信息。比如最左边的第一位向第二位传递:第二位左边只有1个。第二位向第三位传递:第三位左边有2个。一直依次传递到最右边最后一位,最后一位获得的信息是他的左边有5个人。

  • 但是这个时候只有最右边那个人知道总人数(5+1=6),还不能使其他人知道总人数。其他人只知道他的左边有多少人,右边有多少并不知道。

  • 这个时候怎么办呢?

  • 最右边的人可以再依次往左边传递消息。比如最右边第一位告诉第二位说:第二位的右边只有他1个。依次传递。这样正向和反向各传递一遍,使得每个人拥有两个消息,一个是该士兵的左边有L个人,一个是右边有R个人。总人数=L+R+1。(加上他本人)

从零学习Belief Propagation算法(三)

  • 但是这样效率并不高,怎么快一点呢?我们可以同时两边各向相反的方向传递消息,因为这并不影响工作流程。

  • 抽象为因子图看一下:对应下图,引入几个概念:先验信息P外信息E以及后验信息A。在图中,先验信息P表示每个士兵自身的数字“1”;外信息E表示从其他相邻的士兵获取的信息,即每个士兵的外信息均为5;后验信息A=P+E,在这里表示队列的总人数,即为6。从图中可以看出,得到最后的结果是通过前向计算和后向计算得到的

从零学习Belief Propagation算法(三)

情景二:若干士兵站好相应位置,有些士兵不止有2个相邻的士兵,可能有3个或更多。,每个士兵只能与他相邻的士兵交流,问如何才能使每个士兵都知道总的士兵数

从零学习Belief Propagation算法(三)

  • 上图是不是可以和我们的 BP 算法联系起来了。传播的结果是使得每个节点都可以获得其他节点传来的消息,从而计算出边缘函数。

情景二:若干士兵排成环路。,每个士兵只能与他相邻的士兵交流,问如何才能使每个士兵都知道总的士兵数

从零学习Belief Propagation算法(三)

  • 由于有环路的存在,如果用上述信息更新方法来确定总人数,将会导致无法确定何时中止信息的传递,因此也就无法确定士兵人数。

2.5 算法步骤总结

根据信息更新规则分类,置信传播算法分为:Max-product 和 Sum-product。
这里不再对 max-product 进行研究,但只要弄懂了 sum-product,也就弄懂了 max-product 算法。因为 max-product 算法就在上面 sum-product 算法的基础上把求和符号换成求最大值max的符号即可!

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

现在假设我们想寻找图中每个变量结点的边缘概率分布。这可以通过简单地对每个结点独立地运⾏上述算法的方式完成。但是,这会相当浪费计算结果,因为许多需要进行的计算被重复了多次。

通过“叠加”多个信息传递算法,我们可以得到⼀个更加高效的步骤,从而得到⼀般的加和-乘积算法,如下所述。

  • 任意选择⼀个结点(变量结点或因⼦结点),然后将其指定为根结点

  • 像之前⼀样,我们从叶结点向根结点传递信息叶节点初始化按照【2.3 信息是怎么传播的的传递规则】。现在,根结点会接收到来⾃所有相邻结点的信息。因此,它可以向所有的相邻结点发送信息。

  • 反过来,这些结点之后会接收到来⾃所有相邻结点的信息,因此可以沿着远离根结点的链接发送出信息,以此类推。通过这种方式,信息可以从根结点向外传递到叶结点。现在,信息已经在两个方向上沿着图中所有的链接传递完毕,并且每个结点都已经接收到了来⾃所有相邻结点的信息。

  • 因为每个变量结点会收到来⾃所有相邻结点的信息,所以我们可以计算图中每个变量的边缘概率分布。

参考文献

[1] : http://blog.csdn.net/aspirinvagrant/article/details/40862237
[2] : http://blog.csdn.net/v_july_v/article/details/40984699
[3] : http://blog.csdn.net/zb1165048017/article/details/60867140
[4] : http://www.jianshu.com/p/0ff6456a65d6
[5] : 《模式识别与机器学习》

相关文章:

  • 2021-11-08
  • 2022-12-23
  • 2021-12-18
  • 2022-01-09
  • 2022-12-23
  • 2021-11-04
  • 2021-05-22
猜你喜欢
  • 2021-05-11
  • 2021-06-14
  • 2021-08-28
  • 2021-09-27
  • 2021-09-07
  • 2021-10-25
相关资源
相似解决方案