从零学习Belief Propagation算法(三)

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

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

从零学习Belief Propagation算法(一)


从零学习Belief Propagation算法(二)


1. 因子图

1.1 概念

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

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

有向图:

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(x_1) P(x_2)P(x_3)P(x_4|x_1,x_2,x_3) P(x_5|x_1,x_3)P(x_6|x_4)P(x_7|x_4,x_5)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)P(x) =P(x_1) P(x_2)P(x_3)P(x_4|x_1,x_2,x_3) P(x_5|x_1,x_3)P(x_6|x_4)P(x_7|x_4,x_5)\\=f(x_1) f(x_2)f(x_3)f(x_1,x_2,x_3,x_4) f(x_1,x_3,x_5)f(x_4,x_6)f(x_4,x_5,x_7)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​)


无向图:

P(x)=1ZψC1(x1,x2,x3)ψC2(x3,x4)ψC3(x3,x5)P(x)=\frac{1}{Z}\psi _{C_1}(x_1,x_2,x_3)\psi _{C_2}(x_3,x_4)\psi _{C_3}(x_3,x_5)P(x)=Z1​ψC1​​(x1​,x2​,x3​)ψC2​​(x3​,x4​)ψC3​​(x3​,x5​)
上面的式子是不是也可以看成是多个因子表示的。


因子图:

P(x)=fa(x1,x2)fb(x1,x3)fc(x2,x3)P(x)=f_a(x_1,x_2)f_b(x_1,x_3)f _c(x_2,x_3)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) 代表因子 fff 的结点与代表变量 xxx 的边缘(或半边缘)相连,当且仅当 fff 是关于 xxx 的函数。

转化为这种形式表示:

f(u,w,x,y,z)=f1(u,w,x)f2(x,y,z)f3(z)f(u,w,x,y,z)=f_1 (u,w,x)f_2 (x,y,z)f_3 (z)f(u,w,x,y,z)=f1​(u,w,x)f2​(x,y,z)f3​(z)

例:在上图中
3个结点 对应 3个因子:$f_1 ,f_2 ,f_3 $
2个边缘 对应 2个变量 x,zx, zx,z
3个半边缘 对应 3个变量 u,w,yu, w, yu,w,y


2. BP (和-积)算法

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

![这里写图片描述](https://img-blog.csdn.net/20171030112937450)

假设联合概率函数 fff 可用如上图所示的 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)f(x_1,…,x_8)=f_1 (x_1)f_2 (x_1)f_3 (x_1,x_2,x_3,x_4)f_4 (x_4,x_5,x_6)f_5 (x_5)f_6 (x_6,x_7,x_8)f_7 (x_7)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)]p(x_4)=\sum_{x_1,x_2,x_3,x_5,x_6,x_7,x_8}f(x_1,…,x_8)\\=\sum_{x_1,x_2,x_3,x_5,x_6,x_7,x_8}[f_1 (x_1)f_2 (x_1)f_3 (x_1,x_2,x_3,x_4)f_4 (x_4,x_5,x_6)f_5 (x_5)f_6 (x_6,x_7,x_8)f_7 (x_7)]p(x4​)=x1​,x2​,x3​,x5​,x6​,x7​,x8​∑​f(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 计算思想

乘法分配律:
x∗y1+x∗y2=x∗(y1+y2)x*y_1+x*y_2=x*(y_1+y_2)x∗y1​+x∗y2​=x∗(y1​+y2​)

左式用了两次乘法,一次加法;右式用了一次乘法,一次加法
∑ix∗yi=x∑iyi\sum_{i}x*y_i=x\sum_{i}y_ii∑​x∗yi​=xi∑​yi​
乘-加 变换为 加-乘 后,计算复杂度降低。


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


边缘概率计算通过划分 box 的方式,由之前的(乘-加)∑x1,x2,x3,x5,x6,x7,x8f(x1,…,x8)\sum_{x_1,x_2,x_3,x_5,x_6,x_7,x_8}f(x_1,…,x_8)x1​,x2​,x3​,x5​,x6​,x7​,x8​∑​f(x1​,…,x8​)
变换为(加-乘):


2.3 信息是怎么传播的

传递规则:

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

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

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


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

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

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

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

  • 这个时候怎么办呢?

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

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

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

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

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

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

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

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] : 《模式识别与机器学习》

从零学习Belief Propagation算法(三)相关推荐

  1. 从零学习 InfiniBand-network架构(三) —— IB核心传输引擎Queue Pair

    从零学习 InfiniBand-network架构(三) -- IB核心传输引擎Queue Pair

  2. 从零学习数据结构与算法---基础与课前准备笔记

    这里开始学习 数据结构与算法相关知识,这个主要是基于 极客时间 大佬  覃超老师的 算法训练营 和  王争老师的 数据结构与算法之美.这里再次感谢两位老师,下面文章内容主要是自己作为复习使用的笔记,如 ...

  3. 如何跟随有三从零进阶中级CV算法工程师

    再过一段时间可能就要迈出成为真正的创业者的关键一步了,有三AI夏季划再招一些学生作为人才储备,同时也是带一些人真正系统性成为深度学习CV算法工程师. 文/编辑 | 言有三 为什么做季划 为什么要搞季划 ...

  4. 置信度传播算法(Belief Propagation)

    基础知识 条件概率(Conditional Probability) 相互独立时,p(A | B) = p(A) 贝叶斯规则 贝叶斯网络(Bayesian Network)定了一个独立的结构:一个节点 ...

  5. Efficient Belief Propagation for Early Vision 论文翻译 对于早期视觉问题的高效信念传播

    Efficient Belief Propagation for Early Vision 对于早期视觉问题的高效信念传播 (一些数学符号不标准,需要对照原论文阅读) 摘要 马尔可夫随机场模型为立体. ...

  6. 强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例----Sarsa算法, Q学习, 期望Sarsa算法

    强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例 5.1 TD预测 例5.1 回家时间的估计 5.2 TD预测方法的优势 例5.2 随机移动 5.3 ...

  7. opencv4 c++ 提取图片中的白色区域_修正!【从零学习OpenCV 4】分割图像——分水岭法...

    点击上方"小白学视觉",选择"星标"公众号重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<OpenCV 4开 ...

  8. 【百家稷学】从传统方法到深度学习,人脸算法和应用的演变(河南平顶山学院技术分享)...

    继续咱们百家稷学专题,本次聚焦在人脸方向.百家稷学专题的目标,是走进100所高校和企业进行学习与分享. 分享主题 本次分享是在河南平顶山学院,主题是<从传统方法到深度学习,人脸算法和应用的演变& ...

  9. Deep Learning(深度学习)学习笔记整理系列三

    Deep Learning(深度学习)学习笔记整理系列 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明 ...

  10. 从零学习机器学习_机器学习:如何从零变英雄

    从零学习机器学习 以"为什么?"开头 并以"我准备好了!"结尾 (Start with "Why?" and end with " ...

最新文章

  1. 【Spring】基于XML的IOC案例
  2. kylin备份元数据(用于清除不用的数据方式)
  3. 翻译 github上How to be a good programmer
  4. 玩转StyleGAN2模型:教你生成动漫人物
  5. django 利用PIL 保存图片
  6. 7805引脚图及稳压电路图资料
  7. 2014年前端开发者如何提升自己
  8. 面向项目(八)—— #if defined 与 #ifdef
  9. J1939协议简介【小白入门】
  10. 计算机里不显示硬盘图标,Win7不显示硬盘图标怎么办?不显示硬盘图标修复方法...
  11. java电子贺卡_用java写一个新春贺卡,可转exe的
  12. win10电脑新建Excel工作簿,后缀变成xlsm(正常本应该是xlsx)的解决办法
  13. 【实例演示】ESP8266+U8g2库,玩转OLED显示
  14. 使用zabbix_sender发送文本
  15. 未来全世界油气的发展之路
  16. 2019年管理类MBA/MEM联考英语小作文范文
  17. 高级软件工程师必备的五大技能
  18. Windows 7 绿联蓝牙适配器5.0连接蓝牙耳机失败解决方案
  19. web三件套(经验贴)Google里,video标签播放mkv视频文件
  20. plsql最多可以存多少_酱酒瓶存与坛存的品质区别及风格变化

热门文章

  1. 【23】processing-向量(中文)
  2. TFT-LCD显示屏工作原理图文解析
  3. 【VBA研究】智力游戏-蓝色方块
  4. PMIC 配置VIN0 VIN1选择
  5. H3C无线AP 瘦模式转胖模式 fit转fat
  6. js中如何访问对象和数组
  7. 开源软件 介绍及地址
  8. Difference-Guided Representation LearningNetwork for Multivariate Time-SeriesClassification(TCYB)
  9. 使用CSS更改hr标签的厚度
  10. 第九周课堂作业 包括建表 进行各种查询