作者:CHEONG
公众号:AI机器学习与知识图谱
研究方向:自然语言处理与知识图谱
阅读本文之前,先注意一下两点:
1、机器学习系列文章常含有大量公式推导证明,为了更好理解,文章在最开始会给出本文的重要结论,方便最快速度理解本文核心。需要进一步了解推导细节可继续往后看
2、文中含有大量公式,若读者需要获取含公式原稿Word文档,可关注公众号【AI机器学习与知识图谱】后回复:概率图模型第五讲,可添加微信号【17865190919】进公众号讨论群,加好友时备注来自CSDN。原创不易,转载请告知并注明出处!
本文主要介绍概率图推断问题中精准推断算法:Max-Product算法。
一、本文结论:
Belief Propagation又被称为Sum-Product算法,Max-Product算法是Sum-Product算法的改进,Sum-Product算法是求边缘概率分布,Max-Product算法是在求最大后验条件概率分布。
二、正文内容
Max-Product算法是Belief Propagation的改进,同时可认为是Viterbi算法的推广。
首先了解一下Max-Product算法求解哪种问题,如上图所示:节点 a , b , c , d a,b,c,d a,b,c,d分别代表随机变量 x a , x b , x c , x d x_a,x_b,x_c,x_d xa,xb,xc,xd, E E E代表图中所有其他节点,Max-Product算法可以用于寻找最优的随机变量 x a , x b , x c , x d x_a,x_b,x_c,x_d xa,xb,xc,xd的组合已使得概率 p ( x a , x b , x c , x d ∣ E ) p(x_a,x_b,x_c,x_d|E) p(xa,xb,xc,xd∣E)最大,公式表示为:
既然说Max-Product算法是Belief Propagation算法的改进,先回顾一下BP算法实现:
BP算法是在求图中随机变量的边缘概率分布,而Max-Product算法是在求最大后验条件概率分布。Belief Propagation算法又被称为Sum-Product算法,看起来和Max-Product算法只差了Sum和Max的区别,实际在公式上也只需要求和符号换成Max符号即可,因此这里先给出Max-Product算法的实现公式:
结合上图再来理解一下Max-Product算法的实现过程,以及图中 m j − > i m_{j->i} mj−>i的含义。如果基于上图我们使用Max-Product算法求解如下最优化问题:
则第一步需要计算随机变量c取何值时 m c − > b m_{c->b} mc−>b取到最大值:
然后同理计算随机变量d取何值时 m d − > b m_{d->b} md−>b取到最大值:
基于 m c − > b m{c->b} mc−>b和 m d − > b m{d->b} md−>b求解随机变量b取何值时 m b − > a m_{b->a} mb−>a取到最大值:
最后b,c,d的值都确定了,再随机变量a取何值时最终 p ( x a , x b , x c , x d ∣ E ) p(x_a,x_b,x_c,x_d|E) p(xa,xb,xc,xd∣E)取到最大值
最终我们求得是的 p ( x a , x b , x c , x d ∣ E ) p(x_a,x_b,x_c,x_d|E) p(xa,xb,xc,xd∣E)取到最大值得随机变量 x a , x b , x c , x d x_a,x_b,x_c,x_d xa,xb,xc,xd的最优值 x a ∗ , x b ∗ , x c ∗ , x d ∗ x_a^*,x_b^*,x_c^*,x_d^* xa∗,xb∗,xc∗,xd∗。这边是Max-Product算法的实现流程。
参考视频资料:【机器学习】【白板推导系列】 作者:shuhuai008
参考书籍资料:Pattern Recognition and Machine Learning 作者:Christopher Bishop