作者:CHEONG
公众号:AI机器学习与知识图谱
研究方向:自然语言处理与知识图谱
阅读本文之前,先注意一下两点:
1、机器学习系列文章常含有大量公式推导证明,为了更好理解,文章在最开始会给出本文的重要结论,方便最快速度理解本文核心。需要进一步了解推导细节可继续往后看;
2、文中含有大量公式,若读者需要获取含公式原稿Word文档,可关注公众号【AI机器学习与知识图谱】后回复:概率图模型第四讲,可添加微信号【17865190919】进公众号讨论群,加好友时备注来自CSDN。原创不易,转载请告知并注明出处!
本文主要介绍概率图推断问题中两个精准推断算法:变量消除法和Belief Propagation算法。
概率图模型第一讲:【机器学习系列】概率图模型第一讲:从概率和图的角度理解概率图模型
概率图模型第二讲:【机器学习系列】概率图模型第二讲:深入浅出有向图中的条件独立性和D划分
概率图模型第三讲:【机器学习系列】概率图模型第三讲:深入浅出无向图中的条件独立性和因子分解
结论1、 概率图中的Inference问题主要来求概率分布,例如:联合概率分布,边缘概率分布和条件概率分布等,变量消除法和Belief Propagation算法都是Inference问题的精准推断解法;
结论2、 变量消除法思想是对联合概率通过不断求和操作(离散变量,连续变量就是积分操作)消除其中的某些变量,最后求得边缘概率分布。优点是简单易操作,缺点有两个:(1)计算过程没有对中间变量进行保存,存在大量重复计算;(2)消除变量的顺序会很大程度影响计算效率,而找到最优的变量消除顺序是NP-Hard问题。
结论3、 Belief Propagation算法是针对变量消除法缺点的改进,如下图所示,变量消除法重复计算的单元既是图中给出的六个箭头代表的 m i − > j m_{i->j} mi−>j,因此Belief Propagation算法为了避免重复计算,先直接求出所有的 m i − > j m_{i->j} mi−>j保存下来,再使用 m i − > j m_{i->j} mi−>j计算边缘概率。
如果想了解具体细节,请看下面正文,含有大量公式推导证明上述结论。
先从整体上介绍一下概率图的Reference问题,笼统来说Inference问题就是求概率分布,例如:
1、联合概率
2、求边缘概率分布:
3、求条件概率分布:
4、MAP Inference:
下图展示了Inference问题的解决方案大致分类情况
1、Belief Propagation算法针对树形结构,是基于VE算法思想改进的,Junction Tree Algorithm算法是针对普通图结构;
2、Loop Belief Propagation是针对有环图,蒙特卡洛推断是基于采样的近似推断算法,有多种实现方式如Importance Sampling和MCMC等,变分推断则属于精确近似推断。
如下图所示:
假设 a , b , c , d {a,b,c,d} a,b,c,d均是离散的二值变量, a , b , c , d ϵ { 0 , 1 } {a,b,c,d} \epsilon \{0,1\} a,b,c,dϵ{0,1},求概率 p ( d ) p(d) p(d)
为了求得 p ( d ) p(d) p(d),最粗暴的一种解法便是穷举变量a,b,c,d的每一种可能性,即从:
一直穷举到:
然后将8种可能性相加,便得到了最终 p ( d ) p(d) p(d)的值,但这样显然计算过于复杂,而变量消除法的思想便是对联合概率不断求和消除其中的变量,最后得到边缘分布。下面公式展现了消除变量法的求解 p ( d ) p(d) p(d)的过程:
上面展示的变量消除法过程是依次按照变量a,b,c的顺序进行消除的。
变量消除法存在的缺点:
1、算法没有对中间变量存储的功能, 因此存在大量重复计算;
2、变量消除的顺序很大程度影响计算效率,而找到最优的变量消除顺序是NP-Hard问题。
Belief Propagation主要思想借鉴变量消除法,但对变量消除法缺点进行改进。
1、下面先通过一个例子来理解变量消除法的重复计算问题:
如果现在需要求解概率 p ( e ) p(e) p(e),计算公式如下:
使用变量消除法按照变量a,b,c,d的消除顺序计算过程如下图所示,最终得到概率 p ( e ) = m d − > e ( e ) p(e)=m_{d->e}(e) p(e)=md−>e(e)
接下来如果我们需要求解概率 p ( c ) p(c) p(c),则计算公式如下所示:
显然上述公式的前半部分在计算 p ( e ) p(e) p(e)时已被计算,即如下所示 m b − > c ( c ) m_{b->c}(c) mb−>c(c):
但因为变量消除法没有保存中间计算结果,因此每次计算都需要大量重复计算。那其实能想到最简单粗暴的方式就是从左到右或从右到左将每一步计算结果都保存,之后计算边缘概率时便方便计算。
2、从VE算法改进入手引出Belief Propagation算法
无向图求边缘概率:通过无向图再来看如何避免变量消除法的重复计算问题,如下图所示,先给出结论:无论有向图还是无向图,求边缘概率如 p ( a ) p(a) p(a), p ( b ) p(b) p(b)等都需要重复计算,而重复的单元既是图中给出的六个箭头代表的 m i − > j m_{i->j} mi−>j,因此为了避免重复计算,我们只需要计算出所有的 m i − > j m_{i->j} mi−>j,下图中就是六个即可求得所有的边缘概率。下面给出推导过程。
对于上述无向图,先给出联合概率公式为:
接下来求边缘概率
按照无向图因子分解规则有:
可以得出如下公式:
将上述公式一般化之后为:
因此便可得出当需要求边缘概率时,不需要单独求每一个 p ( a ) p(a) p(a), p ( b ) p(b) p(b)等,这样会引入大量重复计算,只需要求 m j − > i m_{j->i} mj−>i即可。再通过下图理解一下Belief Propagation含义,节点b的Belief就是指节点b所能提供的所有信息量:
上述得出的一般化公式就是Belief Propagation算法的核心思路,BP算法核心思想先直接求所有的 m i − > j m_{i->j} mi−>j,然后再求 p ( x i ) p(x_i) p(xi),下面给出BP算法的实现伪码:
参考视频资料:【机器学习】【白板推导系列】 作者:shuhuai008
参考书籍资料:Pattern Recognition and Machine Learning 作者:Christopher Bishop