Max-Product Loopy Belief Propagation

关于belief propagation。这是machine learning的泰斗J. Pearl的最重要的贡献。对于统计学来说,它最重要的意义就是在于提出了一种很有效的求解条件边缘概率(conditional marginal probability)的方法。说的有点晦涩了,其实所谓求解条件边缘概率,通俗地说,就是已知某些条件的情况下,推导另外某些事件发生的概率。

如果涉及的因素只有那么几个,一个学过概率论的大学生就可以使用简单的概率公式计算出来。可是,在现实世界中有成千上万的因素,它们相互联系,如果按照传统方法,就要对数以千计的变量进行积分。考虑到运算量对于变量个数以指数增长,因此这么做实际上根本没法算的。虽然,后来人们提出了蒙特卡罗(Monte Carlo)积分,但是对于拥有数以千计变量的复杂系统,仍然可以说是computationally prohibitive。

这个困难一直阻碍着统计推断方法在大规模系统中的应用。Belief propagation出来之后,情况才发生了转变。J. Pearl在他的书中分析说,人们在头脑中经常进行各种各样的推断,可是人在头脑里面发生了什么事情呢:穷举所有未知变量的可能状态进行积分(Traditional method)?还是随即产生各种状态求均值(Monte Carlo Integral),看来都不make sense。J. Pearl认为,虽然影响世界的因素繁多,但是每个因素实际上只与少数几个因素相关,这就构成了一个推断网络。在machine learning里面,这样的网络有两种:Bayesian Network,反映的是因果推断关系(就是说,相互联系的因素中,其中一个是因,另外一个是果),以及Markov Network, 反映的是相互影响的关系(两个因素互为因果,其变化相互影响)。根据这种建模方式,J.Pearl提出把inference局部化和分布化,把全局的积分变成局部的消息传递。网络中的每个节点通过和邻近节点交换信息对自身的概率状况进行评估。通过这种方式,使得计算量从指数增长变成近似的线性增长,从而使得统计推断能在复杂系统中被应用。

数学上可以证明,对于有向无环的Bayesian Network,可以证明,通过BP得到的解和严格的积分计算得到的结果是一致的。这时的BP只是利用因素联系的局部性来简化计算,并把计算过程分散到各个节点。对于无向而且到处是环的markov network,J.Pearl指出,这种传播过程是可能导致不稳定的。某些消息可能在环状的传播过程中无限加强,从而导致整个系统发散或者偏离。但是实际经验表明,对于大部分问题,BP在带环的系统中依然工作良好。很多人对这个现象进行了研究,对于某些特例给出了初步的解释,但是关于Loopy BP的稳定性和收敛性问题,离理论上的最终解决,还有很长的路要走。

在computer vision领域,MIT的著名教授W.T. Freeman是BP方法的积极倡导者,他大量使用markov random field和belief propagation对图像进行建模,在很多应用领域取得了不错的结果。

  • 标准BP(Standard Belief Propagation ) [4]

我们用图像能量函数 : 来表示对各个像素点赋标签值(labeling)的质量(quality)。能量函数的值越小表示效果越好。BP就是用来求解最小化能量函数的一种优化算法。

式(1) 中N为4邻域系统的网格图像,V(fp,fq)是定义两个相邻像素点p,q为标签(label)fp,fq的代价,代表平滑项,Dp(fp)是定义像素点p为标签fp的代价,代表数据项。

BP算法是通过消息传递(message passing)来实现的。

定义 为在第t次迭代中节点p传递给相邻节点q的消息(message)。每个message都是个nlabel维向量。其中nlebel表示的是label的个数。

中每个元素的计算如下:

N(p)表示p的邻域,s是p的邻域中不包括q的点。

值得注意的是,在式(2) 的计算中,对所有可能的fq(在灰度图像中为0,1,...,nlabel-1(255)),分别计算在每个fp下的消息值,然后取所有由fp求的消息中最小的赋给相应的(fq)。计算时需要两重循环,即fq=0:nlabel-1;fp=0:nlabel-1;时间复杂度为O(k^2),k=nlabel。

在t次迭代后对每个节点计算置信向量(belief vector)。每个置信向量也是nlabel维的。计算如下: 

最后对每个节点q,在所有bq(fq)中找出使bq最小的分量对应的fq*。fq*即为该q点所要求的label值。

整个消息传递在标准BP算法下的时间复杂度为O(n*k^2*t)。n表示像素点的个数,k表示label的个数,t表示迭代次数。

由于标准BP算法在图像恢复之类的多像素点,多label值的问题的应用中时间复杂度太大,不满足计算时间的要求。因此,提出了基于初级视觉问题的有效BP算法(Efficient Belief Propagation for Early Vision[4] )。

该算法从3个方面入手来加速求解:

  1. 使用初级视觉问题中的V(fp,fq) 来简少计算一个message所花的时间。由O(k^2)减少为O(k)。
  2. 对于强连通图,将所有节点分为两类,每次迭代只计算一类节点发出的消息,这样减少n的个数。
  3. 使用粗细网格划分,使每个级别的网格中各点消息的初值取得接近稳定点,加速收敛。使迭代次数t大为减少。

Max-Product Loopy Belief Propagation相关推荐

  1. Ground Segmentation based on Loopy Belief Propagation for Sparse 3D Point Clouds (论文速读)

    欢迎访问我的个人博客:zengzeyu.com Abstract 在使用3D激光雷达进行局部环境感知任务中,地面点分割是中重要的预处理任务,并且在起伏不平和倾斜的非结构化环境中非常具有挑战性.为了解决 ...

  2. Max-Product Loopy Belief Propagation for Solving MRF's energy function minimization

    本文转自http://blog.sina.com.cn/s/blog_4dfdfdc30100q2el.html 关于belief propagation.这是machine learning的泰斗J ...

  3. Magento: 单产品(product)或者当前类别(category)最大和最小价格 Min/Max Product Price in a Category...

    1. 当前类别最大最小价格: $minPrice = Mage::getModel('catalog/product')->getCollection()->addStoreFilter( ...

  4. 概率图模型推断之Belief Propagation

    初步打算把概率图模型中推断方法都介绍一下,包括Belief Propagation,变分方法,MCMC,以及像是Graph cut也做一些说明. 关于Belief Propagation是什么? Be ...

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

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

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

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

  7. 基于置信传播(BP,Belief Propagation)的立体匹配算法

    简介 基于置信传播的立体匹配算法是一种经典的全局立体匹配算法,其主要思想是在立体匹配过程中引入置信度的概念,置信度表示相邻节点的不同视差标记的可信度,通过一定迭代次数的消息迭代传播更新后,全局能量函数 ...

  8. 这 725 个机器学习术语表,太全了!

    下面是几位机器学习权威专家汇总的725个机器学习术语表,非常全面了,值得收藏! 英文术语 中文翻译 0-1 Loss Function 0-1损失函数 Accept-Reject Sampling M ...

  9. 这725个机器学习术语表,太全了!

    大家好,我是阳哥 这是几位机器学习权威专家汇总的725个机器学习术语表,非常全面了,值得收藏! 英文术语 中文翻译 0-1 Loss Function 0-1损失函数 Accept-Reject Sa ...

最新文章

  1. 第十六届智能车竞赛MCU这么多,该怎么办?别慌,RT-Thread来帮忙。
  2. POJ3122贪心或者二分(分蛋糕)
  3. -1.#IND000 图像类型转换
  4. 嵌入式Linux操作系统的版本查询
  5. vue 搜索框header_vue项目header模块编写
  6. 10-1-Spring Boot综合项目实战-准备工作
  7. HDU-1863-畅通工程(并查集)
  8. 【2022最新Java面试宝典】—— Java基础知识面试题(91道含答案)
  9. Java基础练习题(一维数组)
  10. 简单动画(过渡)与复杂动画
  11. html自定义菜单按钮图片,editormd,markdown 自定义导航栏按钮
  12. 【20211214】【信号处理】使用Matlab求解信号的频谱图、幅度谱、相位谱
  13. 最全CSS3实现水平垂直居中的10种方案
  14. 如何将bmp转化为jpg,bmp转jpg方法
  15. 超详细—狂神Mybatis笔记
  16. uniapp onChooseAvatar,uniapp微信头像昵称填写,uniapp chooseAvatar,does not have a method “onChooseAvatar“
  17. 刘利刚老师谈什么是计算机图形学?
  18. Ubuntu18.04通过apt安装libssl1.1因依赖问题导致失败的解决办法
  19. 《转怒为喜---顾客抱怨投诉处理技巧》
  20. python和java区别大吗-为什么入门大数据选择Python而不是Java?

热门文章

  1. 小米mix2s android8,小米MIX2S谷歌Pixel安卓刷机包(完整系统固件升级包安卓8.1)
  2. Jarvisoj_WP
  3. Life feelings--7--聆听国奖大佬们的分享交流会-干货与总结
  4. vue使用 Font 字体 .ttf 格式
  5. python3比较两个excel表头的异同列
  6. 腾讯云轻量级服务器端口开放无法访问
  7. 程序员都有黑客梦,聊聊渗透工程师主要学什么?
  8. PLC读取PC文件(汇川PLC读取电脑上的文件)
  9. 操作系统--Linux 2.6下的NPTL(经典)
  10. 用dw给html动态时间代码,dw中如何制作时间动态代码