贝叶斯决策论及贝叶斯网络
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贝叶斯决策论及贝叶斯网络相关的知识,希望对你有一定的参考价值。
参考技术A对于一个数据进行分类,那么数据的属性信息称为x,如果知道后验概率的情况下即能得到确定x的情况下分类为ci的概率。这时我们还需要一个损失的权值,λij称为i错判为j的损失(λii为0,一般λij都相等=1但具体情况可以具体分配),由前边得到的后验概率来乘上这个λ的参数这就叫做条件风险(conditional risk)。
那么我们可以设计一个映射关系h,从x->c可以将结果带入条件风险,求整体风险最小。
但是其中后验概率很难在现实任务中取到,所以引入机器学习的目标的就是去训练这样一个后验概率(从大量的样本数据中)当然也有两种方式:
可以看到前边判别类别的决策树,bp,svm都是判别式模型。(从这里看出我们的终极目标还是去计算 p(c|x) ,符合现实的要求。)
根据贝叶斯定理,要求联合概率分布,可以通过 p(c )*p(x|c)/p(x) 来得到,前者是类先验概率,后者是类条件概率,或者称似然。
p(x) 是用于归一化的证据因子,对于给定的样本x,证据因子和类标记无关。(证据因子的存在知识为了保证各类别的后验概率的总和为1,所以在固定x的情况下这一项相当于常数,在比较时不做考虑)
但如果x样本的属性很多或者是一个连续值,那么样本个数是不可能完全模拟到所有的取值的,更不用说还要去计算他们出现的联合概率了,也就是说得到的 p(x|c) 会有很多零值。
那么无法通过样本来进行模拟分布,可以用mle(极大似然估计)的方法,通过设定一个通用的分布函数(如:正态分布,不一定是正态,所以这个假设存在一定误差,或者说我们在指定假设分布形式时需要参考一定的先验知识(也就是我们训练数据的风格))然后通过训练分布中的参数来让极大似然最大。
1.朴素贝叶斯分类器:(naïve bayes classification)
条件:
将所有的属性假设为相互独立也就是每个属性独立地对分类结果发生影响,这个想法很天真,很梦幻。
当然有了这个假设就很好计算了,计算联合分布的过程:通过训练集D来得到类先验概率然后再得到类条件概率。对于离散的取值数据量够可以直接用取值在训练集D中的概率直接估计,对于离散取值过多,或者是连续取值的情况可以用最大似然来做估计。
然后通过计算和比较 p(c=1,x) 和 p(c=2,x) 的大小,来或者最后输出c是判为1还是2。
因为离散取值会因为在数据集中找不到而变成概率为0,这样会影响所有的判断,这样就可以通过一个平滑处理(如:拉普拉斯修正)来将其修正为 (Dci+1)/(Dc+Nx) ,Dci为类别为c,x属性取值为i的个数,Nx为属性x的可能的取值数。同理对于类先验也要进行平滑处理。(这样的平滑操作算是一种先验,而且随着样本集增大影响逐渐减少的趋向于真实值。)
2.半朴素贝叶斯分类器(semi-naïve bayes classification)
条件:
既然所有属性都假设为相互独立过于天真,那么我们假设一种独依赖,也就是假设每一个属性在类别之外最多仅依赖于一个其他属性。我们称这种假设为semi-naïve 的假设。
那么这样的独依赖也会有一些设计的方式:
1.都依赖于一个相同的父属性(SPODE);
2.随机依赖于除自己以外的其他的属性,但要让生成的树达到最大的权值(权值由两个属性之间的条件互信息来决定),构成最大带权生成树(TAN)。
但是因为有无环的性质,所以无论哪一种最后一定会有一个属性是没有父依赖的。
3.非朴素贝叶斯--贝叶斯网络:(放弃之前“天真”的假设)
条件:
前边半朴素通过图连接来刻画属性之间的依赖关系,那么同样贝叶斯网络也在用这种有向无环图来刻画属性之间的依赖关系,并用条件概率表(CPT,conditional probability table)作为边的参数也就是(整个贝叶斯网络的参数)主要是子属性和父属性相对应的条件概率。而一个属性他的父属性个数没有任何限制。
问题:
但这样不如上一个半朴素贝叶斯结构基本固定直接遍历搜索空间也不会很大,可以用最大边的方式构建贝叶斯网络,也就是说这样的网络结构很难去构建和生成,主要是用似然损失+构造损失(参数个数*参数的精度)作为损失函数来进行优化,但是这直接求解是一个NP难的问题,这样就有两种方式第一种:贪心法,通过初始化一个网络结构,然后每次调整一个边(增加,删除或调整方向)使得loss变化最大,直到最后评分函数无法在降低。(当然这样的一个初始化网络结构就会变得很重要)第二种:通过给网络结构添加约束,比如将网络结构限定为树形结构等。
方法:
除了之前我们用作的分类问题,还可以做扩展到一个推断的问题,比如蒙着眼摸出西瓜的根蒂,形状,大小,能推断出它的色泽到底是青绿还是黄绿,是好瓜还坏,甜度如何等等。而且还可以直接精确计算出后验概率,但是当网络结点很多,连接又很稠密,而且查询的属性又含有依赖关系的时候,在短时间内计算出准确的结果会很难。所以我们通过借助近似的方式推断结果。(我们只想知道哪种可能性大得多,具体大多少不是我们要求的结论)
这种近似的做法就是吉布斯采样方法,固定我们获得的证据属性E,然后通过初始化一个q0,接着对于q0中的某一个属性根据其他的属性不变,根据计算得到的条件概率进行采样。这是一个马尔科夫链(marcov chain),性质:在经过t次的采样之后,马尔科夫会收敛于一个平稳分布,而这个平稳分布正是我们要求的那个 p(Q|E=e) 的分布。这样我们就可以通过吉布斯采样来得到一个模拟化的分布得到q最有可能的取值。(或者给定q, p(q|E=e) 估计的概率是多少)
隐变量介绍以及解决方法:
上诉还有一个问题那就是属性缺失的情况下怎么办,我们的模型网络还能创建得出来吗?也就是说存在隐变量(latent variable)该怎样解决这样的问题?
EM(Expectation-Maximization)算法是常用的估计参数隐变量的方法。
主要的思想就是:隐变量和模型参数是我们要求的,而二者之间存在相互依赖的关系,也就是不知道隐变量无法求出模型参数,不知道模型参数也无法反推出隐变量。那如果是一种优化迭代算法的话,初始化隐变量,然后训练得到最优的参数,然后通过固定最优的参数再反过来训练到最优的隐变量。直到最后收敛到一个局部最优解。(所以这种算法求解的结果是和 初始值关系比较大的局部最优解,如果能找到一个接近全局最优解的初始值,或者在接受解的概率上做调整不至于过快收敛,可能可以得到一个更好的解。)
参考文献:西瓜书-贝叶斯决策论
从贝叶斯方法谈到贝叶斯网络
从贝叶斯方法谈到贝叶斯网络
转自:http://blog.csdn.net/v_july_v/article/details/40984699
作者:v_JULY_v
0 引言
事实上,介绍贝叶斯定理、贝叶斯方法、贝叶斯推断的资料、书籍不少,比如《数理统计学简史》,以及《统计决策论及贝叶斯分析 James O.Berger著》等等,然介绍贝叶斯网络的中文资料则非常少,中文书籍总共也没几本,有的多是英文资料,但初学者一上来就扔给他一堆英文论文,因无基础和语言的障碍而读得异常吃力导致无法继续读下去则是非常可惜的(当然,有了一定的基础后,便可阅读更多的英文资料)。
11月9日上午,机器学习班 第9次课,邹讲贝叶斯网络,其帮助大家提炼了贝叶斯网络的几个关键点:贝叶斯网络的定义、3种结构形式、因子图、以及Summary-Product算法等等,知道了贝叶斯网络是啥,怎么做,目标是啥之后,相信看英文论文也更好看懂了。
故本文结合Z讲师第9次课贝叶斯网络的PPT 及相关参考资料写就,从贝叶斯方法讲起,重点阐述贝叶斯网络,依然可以定义为一篇读书笔记或学习笔记,有任何问题,欢迎随时不吝指出,thanks。
1 贝叶斯方法
长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大。而且概率虽然未知,但最起码是一个确定的值。比如如果问那时的人们一个问题:“有一个袋子,里面装着若干个白球和黑球,请问从袋子中取得白球的概率是多少?”他们会想都不用想,会立马告诉你,取出白球的概率就是1/2,要么取到白球,要么取不到白球,即θ只能有一个值,而且不论你取了多少次,取得白球的概率θ始终都是1/2,即不随观察结果X 的变化而变化。
这种频率派的观点长期统治着人们的观念,直到后来一个名叫Thomas Bayes的人物出现。
1.1 贝叶斯方法的提出
托马斯·贝叶斯Thomas Bayes(1702-1763)在世时,并不为当时的人们所熟知,很少发表论文或出版著作,与当时学术界的人沟通交流也很少,用现在的话来说,贝叶斯就是活生生一民间学术“屌丝”,可这个“屌丝”最终发表了一篇名为“An essay towards solving a problem in the doctrine of chances”,翻译过来则是:机遇理论中一个问题的解。你可能觉得我要说:这篇论文的发表随机产生轰动效应,从而奠定贝叶斯在学术史上的地位。
事实上,上篇论文发表后,在当时并未产生多少影响,在20世纪后,这篇论文才逐渐被人们所重视。对此,与梵高何其类似,画的画生前一文不值,死后价值连城。
回到上面的例子:“有一个袋子,里面装着若干个白球和黑球,请问从袋子中取得白球的概率θ是多少?”贝叶斯认为取得白球的概率是个不确定的值,因为其中含有机遇的成分。比如,一个朋友创业,你明明知道创业的结果就两种,即要么成功要么失败,但你依然会忍不住去估计他创业成功的几率有多大?你如果对他为人比较了解,而且有方法、思路清晰、有毅力、且能团结周围的人,你会不由自主的估计他创业成功的几率可能在80%以上。这种不同于最开始的“非黑即白、非0即1”的思考方式,便是贝叶斯式的思考方式。
继续深入讲解贝叶斯方法之前,先简单总结下频率派与贝叶斯派各自不同的思考方式:
- 频率派把需要推断的参数θ看做是固定的未知常数,即概率虽然是未知的,但最起码是确定的一个值,同时,样本X 是随机的,所以频率派重点研究样本空间,大部分的概率计算都是针对样本X 的分布;
- 而贝叶斯派的观点则截然相反,他们认为参数是随机变量,而样本X 是固定的,由于样本是固定的,所以他们重点研究的是参数的分布。
相对来说,频率派的观点容易理解,所以下文重点阐述贝叶斯派的观点。
贝叶斯派既然把看做是一个随机变量,所以要计算的分布,便得事先知道的无条件分布,即在有样本之前(或观察到X之前),有着怎样的分布呢?
比如往台球桌上扔一个球,这个球落会落在何处呢?如果是不偏不倚的把球抛出去,那么此球落在台球桌上的任一位置都有着相同的机会,即球落在台球桌上某一位置的概率服从均匀分布。这种在实验之前定下的属于基本前提性质的分布称为先验分布,或的无条件分布。
至此,贝叶斯及贝叶斯派提出了一个思考问题的固定模式:
- 先验分布 + 样本信息 后验分布
上述思考模式意味着,新观察到的样本信息将修正人们以前对事物的认知。换言之,在得到新的样本信息之前,人们对的认知是先验分布,在得到新的样本信息后,人们对的认知为。
其中,先验信息一般来源于经验跟历史资料。比如林丹跟某选手对决,解说一般会根据林丹历次比赛的成绩对此次比赛的胜负做个大致的判断。再比如,某工厂每天都要对产品进行质检,以评估产品的不合格率θ,经过一段时间后便会积累大量的历史资料,这些历史资料便是先验知识,有了这些先验知识,便在决定对一个产品是否需要每天质检时便有了依据,如果以往的历史资料显示,某产品的不合格率只有0.01%,便可视为信得过产品或免检产品,只每月抽检一两次,从而省去大量的人力物力。
而后验分布一般也认为是在给定样本的情况下的条件分布,而使达到最大的值称为最大后验估计,类似于经典统计学中的极大似然估计。
综合起来看,则好比是人类刚开始时对大自然只有少得可怜的先验知识,但随着不断观察、实验获得更多的样本、结果,使得人们对自然界的规律摸得越来越透彻。所以,贝叶斯方法既符合人们日常生活的思考方式,也符合人们认识自然的规律,经过不断的发展,最终占据统计学领域的半壁江山,与经典统计学分庭抗礼。
此外,贝叶斯除了提出上述思考模式之外,还特别提出了举世闻名的贝叶斯定理。
1.2 贝叶斯定理
在引出贝叶斯定理之前,先学习几个定义:
- 条件概率(又称后验概率)就是事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A的概率”。
- 联合概率表示两个事件共同发生的概率。A与B的联合概率表示为或者。
- 边缘概率(又称先验概率)是某个事件发生的概率。边缘概率是这样得到的:在联合概率中,把最终结果中那些不需要的事件通过合并成它们的全概率,而消去它们(对离散随机变量用求和得全概率,对连续随机变量用积分得全概率),这称为边缘化(marginalization),比如A的边缘概率表示为P(A),B的边缘概率表示为P(B)。
接着,考虑一个问题:P(A|B)是在B发生的情况下A发生的可能性。
- 首先,事件B发生之前,我们对事件A的发生有一个基本的概率判断,称为A的先验概率,用P(A)表示;
- 其次,事件B发生之后,我们对事件A的发生概率重新评估,称为A的后验概率,用P(A|B)表示;
- 类似的,事件A发生之前,我们对事件B的发生有一个基本的概率判断,称为B的先验概率,用P(B)表示;
- 同样,事件A发生之后,我们对事件B的发生概率重新评估,称为B的后验概率,用P(B|A)表示。
贝叶斯定理便是基于下述贝叶斯公式:
上述公式的推导其实非常简单,就是从条件概率推出。
所以,贝叶斯公式可以直接根据条件概率的定义直接推出。即因为P(A,B) = P(A)P(B|A) = P(B)P(A|B),所以P(A|B) = P(A)P(B|A) / P(B)。
1.3 应用:拼写检查
经常在网上搜索东西的朋友知道,当你不小心输入一个不存在的单词时,搜索引擎会提示你是不是要输入某一个正确的单词,比如当你在Google中输入“Julw”时,系统会猜测你的意图:是不是要搜索“July”,如下图所示:
这叫做拼写检查。根据谷歌一员工写的文章显示,Google的拼写检查基于贝叶斯方法。下面我们就来看看,怎么利用贝叶斯方法,实现"拼写检查"的功能。
用户输入一个单词时,可能拼写正确,也可能拼写错误。如果把拼写正确的情况记做c(代表correct),拼写错误的情况记做w(代表wrong),那么"拼写检查"要做的事情就是:在发生w的情况下,试图推断出c。换言之:已知w,然后在若干个备选方案中,找出可能性最大的那个c,也就是求的最大值。
而根据贝叶斯定理,有:
由于对于所有备选的c来说,对应的都是同一个w,所以它们的P(w)是相同的,因此我们只要最大化
即可。其中:
- P(c)表示某个正确的词的出现"概率",它可以用"频率"代替。如果我们有一个足够大的文本库,那么这个文本库中每个单词的出现频率,就相当于它的发生概率。某个词的出现频率越高,P(c)就越大。比如在你输入一个错误的词“Julw”时,系统更倾向于去猜测你可能想输入的词是“July”,而不是“Jult”,因为“July”更常见。
- P(w|c)表示在试图拼写c的情况下,出现拼写错误w的概率。为了简化问题,假定两个单词在字形上越接近,就有越可能拼错,P(w|c)就越大。举例来说,相差一个字母的拼法,就比相差两个字母的拼法,发生概率更高。你想拼写单词July,那么错误拼成Julw(相差一个字母)的可能性,就比拼成Jullw高(相差两个字母)。值得一提的是,一般把这种问题称为“编辑距离”,参见博客中的这篇文章。
所以,我们比较所有拼写相近的词在文本库中的出现频率,再从中挑出出现频率最高的一个,即是用户最想输入的那个词。具体的计算过程及此方法的缺陷请参见这里。
2 贝叶斯网络
2.1 贝叶斯网络的定义
贝叶斯网络(Bayesian network),又称信念网络(Belief Network),或有向无环图模型(directed acyclic graphical model),是一种概率图模型,于1985年由Judea Pearl首先提出。它是一种模拟人类推理过程中因果关系的不确定性处理模型,其网络拓朴结构是一个有向无环图(DAG)。
贝叶斯网络的有向无环图中的节点表示随机变量,它们可以是可观察到的变量,或隐变量、未知参数等。认为有因果关系(或非条件独立)的变量或命题则用箭头来连接。若两个节点间以一个单箭头连接在一起,表示其中一个节点是“因(parents)”,另一个是“果(children)”,两节点就会产生一个条件概率值。
总而言之,连接两个节点的箭头代表此两个随机变量是具有因果关系,或非条件独立。
例如,假设节点E直接影响到节点H,即E→H,则用从E指向H的箭头建立结点E到结点H的有向弧(E,H),权值(即连接强度)用条件概率P(H|E)来表示,如下图所示:
简言之,把某个研究系统中涉及的随机变量,根据是否条件独立绘制在一个有向图中,就形成了贝叶斯网络。其主要用来描述随机变量之间的条件依赖,用圈表示随机变量(random variables),用箭头表示条件依赖(conditional dependencies)。
令G = (I,E)表示一个有向无环图(DAG),其中I代表图形中所有的节点的集合,而E代表有向连接线段的集合,且令X = (Xi)i ∈ I为其有向无环图中的某一节点i所代表的随机变量,若节点X的联合概率可以表示成:
如下图所示,便是一个简单的贝叶斯网络:
因为a导致b,a和b导致c,所以有
2.2 贝叶斯网络的3种结构形式
给定如下图所示的一个贝叶斯网络:
从图上可以比较直观的看出:
- 1. x1,x2,…x7的联合分布为
- 2. x1和x2独立(对应head-to-head);
- 3. x6和x7在x4给定的条件下独立(对应tail-to-tail)。
根据上图,第1点可能很容易理解,但第2、3点中所述的条件独立是啥意思呢?其实第2、3点是贝叶斯网络中3种结构形式中的其中二种。为了说清楚这个问题,需要引入D-Separation(D-分离)这个概念。
D-Separation是一种用来判断变量是否条件独立的图形化方法。换言之,对于一个DAG(有向无环图)E,D-Separation方法可以快速的判断出两个节点之间是否是条件独立的。
2.2.1 形式1:head-to-head
贝叶斯网络的第一种结构形式如下图所示:
所以有:P(a,b,c) = P(a)*P(b)*P(c|a,b)成立,化简后可得:
即在c未知的条件下,a、b被阻断(blocked),是独立的,称之为head-to-head条件独立,对应本节中最开始那张图中的“x1、x2独立”。
2.2.2 形式2:tail-to-tail
贝叶斯网络的第二种结构形式如下图所示
考虑c未知,跟c已知这两种情况:
- 在c未知的时候,有:P(a,b,c)=P(c)*P(a|c)*P(b|c),此时,没法得出P(a,b) = P(a)P(b),即c未知时,a、b不独立。
- 在c已知的时候,有:P(a,b|c)=P(a,b,c)/P(c),然后将P(a,b,c)=P(c)*P(a|c)*P(b|c)带入式子中,得到:P(a,b|c)=P(a,b,c)/P(c) = P(c)*P(a|c)*P(b|c) / P(c) = P(a|c)*P(b|c),即c已知时,a、b独立。
所以,在c给定的条件下,a,b被阻断(blocked),是独立的,称之为tail-to-tail条件独立,对应本节中最开始那张图中的“x6和x7在x4给定的条件下独立”。
2.2.3 形式3:head-to-tail
贝叶斯网络的第三种结构形式如下图所示:
还是分c未知跟c已知这两种情况:
- c未知时,有:P(a,b,c)=P(a)*P(c|a)*P(b|c),但无法推出P(a,b) = P(a)P(b),即c未知时,a、b不独立。
- c已知时,有:P(a,b|c)=P(a,b,c)/P(c),且根据P(a,c) = P(a)*P(c|a) = P(c)*P(a|c),可化简得到:
所以,在c给定的条件下,a,b被阻断(blocked),是独立的,称之为head-to-tail条件独立。
插一句:这个head-to-tail其实就是一个链式网络,如下图所示:
根据之前对head-to-tail的讲解,我们已经知道,在xi给定的条件下,xi+1的分布和x1,x2…xi-1条件独立。意味着啥呢?意味着:xi+1的分布状态只和xi有关,和其他变量条件独立。通俗点说,当前状态只跟上一状态有关,跟上上或上上之前的状态无关。这种顺次演变的随机过程,就叫做马尔科夫链(Markov chain)。且有:
接着,将上述结点推广到结点集,则是:对于任意的结点集A,B,C,考察所有通过A中任意结点到B中任意结点的路径,若要求A,B条件独立,则需要所有的路径都被阻断(blocked),即满足下列两个前提之一:
- A和B的“head-to-tail型”和“tail-to-tail型”路径都通过C;
- A和B的“head-to-head型”路径不通过C以及C的子孙;
最后,举例说明上述D-Separation的3种情况(即贝叶斯网络的3种结构形式),则是如下图所示:
上图中左边部分是head-to-tail,给定 T 时,A 和 X 独立;右边部分的右上角是tail-to-tail,给定S时,L和B独立;右边部分的右下角是head-to-head,未给定D时,L和B独立。
2.3 贝叶斯网络的实例
给定如下图所示的贝叶斯网络:
其中,各个单词、表达式表示的含义如下:
- smoking表示吸烟,其概率用P(S)表示,lung Cancer表示的肺癌,一个人在吸烟的情况下得肺癌的概率用P(C|S)表示,X-ray表示需要照医学上的X光,肺癌可能会导致需要照X光,吸烟也有可能会导致需要照X光(所以smoking也是X-ray的一个因),所以,因吸烟且得肺癌而需要照X光的概率用P(X|C,S)表示。
- Bronchitis表示支气管炎,一个人在吸烟的情况下得支气管炎的概率用P(B|S),dyspnoea表示呼吸困难,支气管炎可能会导致呼吸困难,肺癌也有可能会导致呼吸困难(所以lung Cancer也是dyspnoea的一个因),因吸烟且得了支气管炎导致呼吸困难的概率用P(D|C,B)表示。
lung Cancer简记为C,Bronchitis简记为B,dyspnoea简记为D,且C = 0表示lung Cancer不发生的概率,C = 1表示lung Cancer发生的概率,B等于0(B不发生)或1(B发生)也类似于C,同样的,D=1表示D发生的概率,D=0表示D不发生的概率,便可得到dyspnoea的一张概率表,如上图的最右下角所示。
2.4 因子图
回到2.3节中那个实例上,如下图所示:
对于上图,在一个人已经呼吸困难(dyspnoea)的情况下,其抽烟(smoking)的概率是多少呢?即:
咱们来一步步计算推导下:
解释下上述式子推导过程:
- 第二行:对联合概率关于b,x,c求和(在d=1的条件下),从而消去b,x,c,得到s和d=1的联合概率。
- 第三行:最开始,所有变量都在sigma(d=1,b,x,c)的后面(sigma表示对“求和”的称谓),但由于P(s)和“d=1,b,x,c”都没关系,所以,可以提到式子的最前面。而且P(b|s)和x、c没关系,所以,也可以把它提出来,放到sigma(b)的后面,从而式子的右边剩下sigma(x)和sigma(c)。
此外,图中Variable elimination表示的是变量消除的意思。为了更好的解决此类问题,咱们得引入因子图的概念。
2.4.1 因子图的定义
wikipedia上是这样定义因子图的:将一个具有多变量的全局函数因子分解,得到几个局部函数的乘积,以此为基础得到的一个双向图叫做因子图(Factor Graph)。
比如,假定对于函数,有下述式子成立:
其中,其对应的因子图包括:
- 变量节点
- 因子(函数)节点
- 边,边通过下列因式分解结果得到:在因子(函数)节点和变量节点之间存在边的充要条件是存在。
正式的定义果然晦涩!我相信你没看懂。通俗来讲,所谓因子图就是对函数进行因子分解得到的一种概率图。一般内含两种节点:变量节点和函数节点。我们知道,一个全局函数通过因式分解能够分解为多个局部函数的乘积,这些局部函数和对应的变量关系就体现在因子图上。
举个例子,现在有一个全局函数,其因式分解方程为:
其中fA,fB,fC,fD,fE为各函数,表示变量之间的关系,可以是条件概率也可以是其他关系(如马尔可夫随机场Markov Random Fields中的势函数)。
为了方便表示,可以写成:
其对应的因子图为:
且上述因子图等价于:
所以,在因子图中,所有的顶点不是变量节点就是函数节点,边线表示它们之间的函数关系。
但搞了半天,虽然知道了什么是因子图,但因子图到底是干嘛的呢?为何要引入因子图,其用途和意义何在?事实上,因子图跟贝叶斯网络和马尔科夫随机场(Markov Random Fields)一样,也是概率图的一种。
既然提到了马尔科夫随机场,那顺便说下有向图、无向图,以及条件随机场等相关概念。
- 我们已经知道,有向图模型,又称作贝叶斯网络(Directed Graphical Models, DGM, Bayesian Network)。
- 但在有些情况下,强制对某些结点之间的边增加方向是不合适的。使用没有方向的无向边,形成了无向图模型(Undirected Graphical Model,UGM), 又被称为马尔科夫随机场或者马尔科夫网络(Markov Random Field, MRF or Markov network)。
- 设X=(X1,X2…Xn)和Y=(Y1,Y2…Ym)都是联合随机变量,若随机变量Y构成一个无向图 G=(V,E)表示的马尔科夫随机场(MRF),则条件概率分布P(Y|X)称为条件随机场(Conditional Random Field, 简称CRF,后续新的博客中可能会阐述CRF)。如下图所示,便是一个线性链条件随机场的无向图模型:
回到本文的主旨上来。在概率图中,求某个变量的边缘分布是常见的问题。这问题有很多求解方法,其中之一就是把贝叶斯网络或马尔科夫随机场转换成因子图,然后用sum-product算法求解。换言之,基于因子图可以用sum-product 算法高效的求各个变量的边缘分布。
先通过一些例子分别说明如何把贝叶斯网络(和马尔科夫随机场),以及把马尔科夫链、隐马尔科夫模型转换成因子图后的情形,然后在2.4.2节,咱们再来看如何利用因子图的sum-product算法求边缘概率分布。
给定下图所示的贝叶斯网络或马尔科夫随机场:
根据各个变量对应的关系,可得:
其对应的因子图为(以下两种因子图的表示方式皆可):
由上述例子总结出由贝叶斯网络构造因子图的方法:
- 贝叶斯网络中的一个因子对应因子图中的一个结点
- 贝叶斯网络中的每一个变量在因子图上对应边或者半边
- 结点g和边x相连当且仅当变量x出现在因子g中。
再比如,对于下图所示的由马尔科夫链转换而成的因子图:
有:
而对于如下图所示的由隐马尔科夫模型转换而成的因子图:
有:
2.4.2 Sum-product算法
我们已经知道,对于下图所示的因子图:
有:
下面,咱们来考虑一个问题:即如何由联合概率分布求边缘概率分布。
首先回顾下联合概率和边缘概率的定义,如下:
- 联合概率表示两个事件共同发生的概率。A与B的联合概率表示为或者。
- 边缘概率(又称先验概率)是某个事件发生的概率。边缘概率是这样得到的:在联合概率中,把最终结果中不需要的那些事件合并成其事件的全概率而消失(对离散随机变量用求和得全概率,对连续随机变量用积分得全概率)。这称为边缘化(marginalization)。A的边缘概率表示为P(A),B的边缘概率表示为P(B)。
事实上,某个随机变量fk的边缘概率可由x1,x2,x3, ..., xn的联合概率求到,具体公式为:
啊哈,啥原理呢?原理很简单,还是它:对xk外的其它变量的概率求和,最终剩下xk的概率!
此外,换言之,如果有
那么
上述式子如何进一步化简计算呢?考虑到我们小学所学到的乘法分配率,可知a*b + a*c = a*(b + c),前者2次乘法1次加法,后者1次乘法,1次加法。我们这里的计算是否能借鉴到分配率呢?别急,且听下文慢慢道来。
假定现在我们需要计算如下式子的结果:
同时,f 能被分解如下:
借鉴分配率,我们可以提取公因子:
因为变量的边缘概率等于所有与他相连的函数传递过来的消息的积,所以计算得到:
仔细观察上述计算过程,可以发现,其中用到了类似“消息传递”的观点,且总共两个步骤。
第一步、对于f 的分解图,根据蓝色虚线框、红色虚线框围住的两个box外面的消息传递:
计算可得:
第二步、根据蓝色虚线框、红色虚线框围住的两个box内部的消息传递:
根据,我们有:
就这样,上述计算过程将一个概率分布写成两个因子的乘积,而这两个因子可以继续分解或者通过已知得到。这种利用消息传递的观念计算概率的方法便是sum-product算法。前面说过,基于因子图可以用sum-product算法可以高效的求各个变量的边缘分布。
到底什么是sum-product算法呢?sum-product算法,也叫belief propagation,有两种消息:
- 一种是变量(Variable)到函数(Function)的消息:,如下图所示
- 另外一种是函数(Function)到变量(Variable)的消息:。如下图所示:
以下是sum-product算法的总体框架:
- 1、给定如下图所示的因子图:
- 2、sum-product 算法的消息计算规则为:
- 3、根据sum-product定理,如果因子图中的函数f 没有周期,则有:
值得一提的是:如果因子图是无环的,则一定可以准确的求出任意一个变量的边缘分布,如果是有环的,则无法用sum-product算法准确求出来边缘分布。
比如,下图所示的贝叶斯网络:
其转换成因子图后,为:
可以发现,若贝叶斯网络中存在“环”(无向),则因此构造的因子图会得到环。而使用消息传递的思想,这个消息将无限传输下去,不利于概率计算。
解决方法有3个:
- 1、删除贝叶斯网络中的若干条边,使得它不含有无向环
- 2、重新构造没有环的贝叶斯网络
- 3、选择loopy belief propagation算法(你可以简单理解为sum-product 算法的递归版本),此算法一般选择环中的某个消息,随机赋个初值,然后用sum-product算法,迭代下去,因为有环,一定会到达刚才赋初值的那个消息,然后更新那个消息,继续迭代,直到没有消息再改变为止。唯一的缺点是不确保收敛,当然,此算法在绝大多数情况下是收敛的。
此外,除了这个sum-product算法,还有一个max-product 算法。但只要弄懂了sum-product,也就弄懂了max-product 算法。因为max-product 算法就在上面sum-product 算法的基础上把求和符号换成求最大值max的符号即可!
最后,sum-product 和 max-product 算法也能应用到隐马尔科夫模型hidden Markov models上,后面有机会的话可以介绍。本文完。
3 参考文献和推荐阅读
- Thomas Bayes "An essay towards solving a Problem in the Doctrine of Chances"(贝叶斯定理原始论文):http://www.sbs-bvs.be/bsn57/bsn57-6.pdf;
- 《数理统计学简史 第三章 贝叶斯方法》;
- 《贝叶斯统计 茆诗松著》;
- “Julw”的搜索结果:http://www.gu1234.com/search?hl=zh-CN&site=webhp&source=hp&q=Julw&btnK=Google+%E6%90%9C%E7%B4%A2&gws_rd=ssl;
- 北京10月机器学习班第9次课,邹博讲贝叶斯网络的PPT:http://pan.baidu.com/s/1o69Lp1K;
- 相关wikipedia,比如贝叶斯定理的wiki:http://zh.wikipedia.org/zh/%E8%B4%9D%E5%8F%B6%E6%96%AF%E5%AE%9A%E7%90%86,贝叶斯网络的wiki:http://zh.wikipedia.org/wiki/%E8%B2%9D%E6%B0%8F%E7%B6%B2%E8%B7%AF。因子图中文wiki:http://zh.wikipedia.org/zh/%E5%9B%A0%E5%AD%90%E5%9B%BE,英文wik:http://en.wikipedia.org/wiki/Factor_graph。
- 《统计决策论及贝叶斯分析 James O.Berger著》;
- 贝叶斯定理:http://www.guokr.com/question/547339/;
- 贝叶斯推断及其互联网应用(一):定理简介http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.html;
- 贝叶斯推断及其互联网应用(三):拼写检查http://www.ruanyifeng.com/blog/2012/10/spelling_corrector.html;
- Google研发总监Peter Norvig解释拼写检查的原理:http://norvig.com/spell-correct.html;
- http://www.eng.yale.edu/pjk/eesrproj_02/luckenbill_html/node4.html(sum-product);
- Pattern Recognition and Machine Learning Chapter 8, M. Jordan, J. Kleinberg, ect, 2006;
- D-Separation(D分离)-PRML-8.22-Graphical Model by 小军:http://www.zhujun.me/d-separation-separation-d.html;
- 因子图介绍 by Hans-Andrea Loeliger:http://www.robots.ox.ac.uk/~parg/mlrg/papers/factorgraphs.pdf;
- http://netclass.csu.edu.cn/jpkc2003/rengongzhineng/rengongzhineng/kejian/ai/ai/chapter4/442.htm;
- 贝叶斯网的R实现( Bayesian networks in R)(二)bnlearn(2):http://site.douban.com/182577/widget/notes/12817482/note/283039795/;
- 知乎上关于贝叶斯学派跟频率派的区别的讨论:http://www.zhihu.com/question/20587681;
- factor graph,因子图,势函数potential function,Template models:http://www.cnblogs.com/549294286/archive/2013/06/06/3121454.html;
- Online Bayesian Probit Regression介绍之Factor Graph:http://www.doingkong.com/?p=68;
- An Introduction to Factor Graphs,Hans-Andrea Loeliger,MLSB 2008:http://people.binf.ku.dk/~thamelry/MLSB08/hal.pdf;
- Factor graph and sum-product algorithm, Frank R. Kschischang, Brendan J.Frey, ect, 1998:http://filebox.vt.edu/~rmtaylor/Graphical_Modeling/Intro_and_tutorial/Kschischang_ffg_sumproduct.pdf;
- A Tutorial on Inference and Learning in Bayesian Networks, Irina Rish:http://www.ee.columbia.edu/~vittorio/Lecture12.pdf;
- Probabilistic Graphical Models Directed GMs: Bayesian Networks:http://www.cs.cmu.edu/~epxing/Class/10708/lectures/lecture2-BNrepresentation.pdf;
- A Brief Introduction to Graphical Models and Bayesian Networks By Kevin Murphy, 1998:http://www.cs.ubc.ca/~murphyk/Bayes/bayes.html;
- Probabilistic Models for Unsupervised Learning(从一个统一的视角去理解: bayesian、MAP、ML,以及FA、EM、PCA、ICA、GMM、HMM等算法):http://mlg.eng.cam.ac.uk/zoubin/nipstut.pdf;
- PRML概率图模型读书笔记:http://vdisk.weibo.com/s/DmxNcM5-7sGS;
- 12月14日,机器学习班第15次课,邹博讲条件随机场CRF的PPT:http://pan.baidu.com/s/1qWBdOD2。
以上是关于贝叶斯决策论及贝叶斯网络的主要内容,如果未能解决你的问题,请参考以下文章