贝叶斯网络(Belief Networks)
在概率图模型中,贝叶斯网络通常用来表示变量之间的独立性假设,通过贝叶斯网络,我们可以很容易的从中获取我们想要的信息,比如概率的条件和边缘独立信息,但是单纯的贝叶斯网络不能刻画变量间所有的关系,然而贝叶斯网络很擅长描述变量间的因果关系(causal)
注明:
此文章大部分思想和例子参考Bayesian Reasoning and Machine Learning
关于贝叶斯基本原理,可参考文章数学之美番外篇:平凡而又神奇的贝叶斯方法
关于贝叶斯网络的优点:
- 简化模型表达方式
- 相比于传统的计算方式更加易于计算
模型的独立性问题
假设我们有这样一个例子:
有一天早晨,Bruce离开他的房子的时候发现他家花园中的草地是湿的,有两种可能,第一:昨天晚上下雨了,第二:他昨天晚上忘记关掉花园中的喷水器,接下来,他观察他的邻居Joe,发现他家花园中的草地也是湿的,因此,他推断,他家的草地湿了是因为昨天晚上下雨的缘故
我们可以通过模型来刻画这样的事件:
R∈{0,1} R=1表示下雨0表示没有
S∈{0,1} S=1表示Bruce忘记关喷水器0表示没有忘
J∈{0,1} J=1表示Joe家里的花园草地也湿了0表示没有
B∈{0,1} T=1表示Bruce的花园草地湿了0表示没有
在这里,有四个变量,每一个变量有两种状态属性0和1,如果要全部表示出来所有的可能性,需要 24=16 种方式,e.g. p(T=1,J=0,R=1,S=1)=0.7 etc. 根据贝叶斯法则,我们可以得到如下公式:
p(B,J,R,S)=p(B|J,R,S)p(J,R,S)=p(B|J,R,S)p(J,R,S)=p(B|J,R,S)p(J|R,S)p(R,S)=p(B|J,R,S)p(J|R,S)p(R|S)p(S)
条件独立性
对于一个系统来说,模型的建立者基本上是知道模型的约束和限制的,比如在上面的模型中,我们可以假设Bruce花园中的草地是否湿了只于是否下雨或者喷水器是否没关有关,而与Joe家中的花园中的草地是否湿了没有直接的关系,因此,我们就可以做条件独立性的假设
p(B|J,R,S)=p(B|R,S)
同样,Joe家中的花园是否湿了在我们的模型中也只于是否下雨有关
p(J|R,S)=p(J|R)
同理,模型最后可以简化为:
p(B,J,R,S)=p(T|R,S)p(J|R)p(R)p(S)
在模型简化以后,我们通过4+2+1+1=8种组合value就可以表达整个模型了
最后,我们根据贝叶斯法则,给模型赋予先验概率来完成模型:
p(R=1)=0.2,(S=1)=0.1,p(J=1|R=1)=1
p(J=1|R=0)=0.2,p(B=1|R=1,S=0)=1
p(B=1|R=1,S=1)=1,p(B=1,R=0,S=1)=0.9
p(B=1,R=0,S=0)=0
推断
根据贝叶斯公式可以计算出
p(S=1|B=1)=p(S=1,B=1)p(T=1)=∑J,Rp(B=1,J,R,S=1)∑J,R,Sp(B=1,J,R,S)=∑J,Rp(J|R)p(B=1|R,S=1)p(R)p(S=1)∑J,R,Sp(J|R)p(B=1|R,S)p(R)p(S)=∑Rp(B=1|R,S=1)p(R)p(S=1)∑R,Sp(T=1|R,S)p(R)p(S)=0.9×0.8×0.1+1×0.2×0.10.9×0.8×0.1+1×0.2×0.1+0×0.8×0.9+1×0.2×0.9=0.3382
p(S=1|B=1,J=1)=p(S=1,B=1,J=1)p(B=1,J=1)=∑Rp(B=1,J=1,R,S=1)∑R,Sp(B=1,J=1,R,S)=∑Rp(J=1|R)p(B=1|R,S=1)p(R)p(S=1)∑R,Sp(J=1|R)p(B=1|R,S)p(R)p(S)=0.03440.2144=0.1604
由通过推断得到的结果可以看出,在Joe家中花园的草湿了的前提下,喷水器忘关的概率比没有此假设的前提下的概率要低的多
这一整套方法就可以被称为贝叶斯统计推断,在贝叶斯模型中,开始的模型简化是非常重要的,它可以很大程度上的降低我们的计算量,如果可视化的表达这个思想,就好像下面这个图:
p(y|x1,…,x5)=∑z1,z2p(y|z1,z2)p(z1|x1,x2,x3)p(z2|x4,x5)
上左图中:需要 25=32 的计算量,而右图只需要 23+22+22=16 的计算量