几率图模型(PGM)是一种对现实状况进行描述的模型。其核心是条件几率,本质上是利用先验知识,确立一个随机变量之间的关联约束关系,最终达成方便求取条件几率的目的。网络
这个世界都是随机变量。设计
第一,世界是未知的,是有多种可能性的。3d
第二,世界上一切都是相互联系的。blog
第三,随机变量是一种映射,把观测到的样本映射成数值的过程叫作随机变量。数学
上述三条原则给了咱们以量化描述世界的手段,咱们能够借此把一个抽象的问题变成一个数学问题。而且借助数学手段,发现问题,解决问题。世界上一切都是未知的,都是随机变量。明天会有多少婴儿降生武汉是随机变量,明天出生婴儿的基因也是随机变量,这些孩子智商高低是随机变量,高考分数是随机变量,月薪几何是随机变量。可是这些随机变量之间彻底无关么?男孩,智商高,高考低分,月薪高的几率又有多少?显然,随机变量每增多一个,样本空间就会以指数形式爆表上涨。咱们要如何快速的计算一组给定随机变量观察值的几率呢?几率图给出了答案。io
其实在看CRF的时候我就经常在想,基于CRF的词性分割使用了词相邻的信息;基于边缘检测的图像处理使用了像素的相邻信息;相邻信息够么?仅仅考虑相邻像素所带来的信息足够将一个观察(句子或图像)恢复出其本意么?没错,最丰富的关系必定处于相邻信息中,好比图像的边缘对分割的共线绝对不可磨灭,HMM词性分割也效果不错.......可是若是把不相邻的信息引入判断会怎样?在我苦思冥想如何引入不相邻信息的时候Deep Learning 和 CNN凭空出现,不得不认可设计这套东西的人极度聪明,利用下采样创建较远像素的联系,利用卷积将以前产生的效果累加到目前时刻上(卷积的本质是堆砌+变质)。这样就把不相邻的信息给使用上了。可是这样是否是惟一的方法呢?显然不是,还有一种不那么自动,却 not intractable方法,叫作PGM。图像处理
仍是从快速计算条件几率来谈PGM。首先是representation,几率图的表达是一张。。。图。。。图固然会有节点,会有边。节点则为随机变量(一切都是随机变量),边则为依赖关系(如今只谈有向图)。一张典型的几率图——贝叶斯网络以下所示:table
对于一副给定的图,每一个节点都表明一个随机变量,节点与节点之间经过箭头相连。彷佛这在节点与节点之间造成了“流”。那么节点的流之间是否会和随机变量的相关性产生联系?答案是确定的。考虑几种典型的流:变量
显然直观的看来,若是x与y直接相连,那么x,y必然是相关的,给出了x的信息则会影响咱们对y的判断。当x与y间接相连时,若x,y呈链状关系,那么影响确定会传递下去,若是x,y不呈链状关系,有共同缘由时,则相关;共同发生做用时,则不相关。方法
这里称 x->W<-y 为 V 结构。
通常状况下,相关性的传递是没法经过V结构的。
可是若是是条件几率的状况下,相关性的传递则表现出彻底不一样的性质。W 是观测值,若是节点中有随机变量被观测了,那么相关性的链接则会所有取反。也就是说,本来经过W相关的两个变量,在W被观测的状况下,相关性被分离了。也叫作d-separated.记做:d-sepG(X, Y | Z)
上图中,当且仅当,G被观测且没有其余变化的状况下,S会与D相关。
由上述分析可知,当给定某些观测时,本来相关的随机变量能够被分离。
由此咱们得出如下定理:
考虑P(D,I,G,L,S)应该怎么计算?若是没有任何先验信息,那么应该是按照条件几率公式:
P(D,I,G,L,S) = P(D)*P(I|D)*P(G|I,D)*P(L|I,D,G)*P(S|D,I,G,L);
上式的最后一项,光是对于P(S|D,I,G,L)就须要考虑DIGL全部的可能,而且每增长一个随机变量,计算的复杂程度就会上升一个档次。使用贝叶斯链式法则,那么上式就能够简化成如下形式:
从几率图的角度上来说,其表达了在给定父节点的状况下,任意一个节点都是与其非子节点,都是d分离的。
从几率的角度上来说,任意一个随机变量,在给定父随机变量的状况下,和其非子随机变量,都是d分离的。
或者再通俗一点,一个聪明人,在一场很难的考试里拿了高分,却获得了一封很烂的推荐信,同时他SAT考试倒是高分的几率是多少?
咱们再隐藏一些细节,一我的推荐信很烂,他SAT高分的几率是多少?或者,一我的SAT低分,却手握牛推的几率是多少?
若是不考虑随机变量之间的依赖关系,上述内容是很难计算的。可是若是有一个构建好的几率图,上面的问题则能够转化为条件几率问题。
经过观察实验,咱们能够获得一系列的条件几率,经过此条件几率,以及贝叶斯条件几率链式法则,则可求的咱们想要的那一组随机变量的几率。
OK,玩具例子结束了,接下来咱们来一点真的。如何经过某人血型(A B AB O)及其父母血型推测其基因型(AAAO AB BB BO ....),首先,咱们能够创建一张几率图,全部的血型B,基因型G,都是随机变量(节点)。