在之前的一段时间里,忙于周围的乱七八糟的事情,在更新了上一期之后自己也很久没有更新,自己也想,如果自己没有用一种良好的心态去回忆总结自己所学的知识,即使花费再多的时间也都只是徒劳无功的,而这一段时间以来,我读了一些关于概率图的知识去为接下来的自然语言处理知识做了一个铺垫,希望用这一篇文章来记录下自己的学习成果,而自己在这里的参考资料是之前的博客推荐的书,另外加上一些博客去加以理解,一些自己不足之处请大家多多指教.
1:什么是概率图模型?
大家在高中的时候一定已经学过概率,而我们在大学的时候也初步学习了<概率论与数理统计>这一门课程,而我们学习概率的主要目的是因为我们生产实践中不确定的事情实在是太多了,而这样的不确定的事情里边其实往往隐藏着确定的知识,信息,而我们的概率就是这样应运而生的,而人们的需求总是多种多样的,满满的演化成各种各样的模型,比如模型识别,贝叶斯系列等等.而概率图模型其实就是来解决这一系列问题的工具之一,这是应用了概率和图这两种数学工具来建立的模型.
2:引入概率图模型有什么好处?
一般的问题我们都可以用概率模型去很好的解决,那么为什么又要在概率的基础上加一个图呢?在这里我们引入图结构其实是因为图结构可以将概率模型的结构可视化,应用图这是一种直观,简单的方式,可以简单的描述随机变量之间的独立性的性质,最重要的是可以将一份复杂的概率模型转化为一些简单的模型的组合,这有点类似于我们的面向对象的思想.在机器学习中,图模型很广泛的应用和分析各种学习算法,其实说明白,机器学习模型都可以看做是概率模型,把学习任务归结于计算输入和输出的条件概率分布,当我们引入图工具之后,这样就可以从一个新的角度来解释机器学习模型了,并且相对来说还比较简单.
当然,我们也可以从另一个角度考虑其合理性。我们的目的是从获取到的量中得到我们要的信息,模型是相互之间约束关系的表示,而数据的处理过程中运用到了概率理论。而图恰恰将这两者之间联系起来了,起到了一个很好的表示作用。
3:图的结构
大家学过离散数学都知道,一个图是由节点和节点之间的边组成的,在概率图模型里,每一个节点其实都可以表示为一个或者一组随机变量,而这些边可以看成是这些随机变量之间的概率依存关系,在离散数学里我们学过有向图和无向图,而那些图和我们的图其实是一样的,只不过我们把这个有向的图模型叫做贝叶斯网络,而贝叶斯的有向无环图来表示因果关系,而无向图模型称为马尔科夫随机场,无向图表示变量间的相互作用,这些结构的区别导致了他们在建模和推断方面有了一些微妙的差别,这些我们将接下来一一介绍.
有向图如下:(左图贝叶斯模型,右图马尔科夫模型)
4:概率的一些计算
涉及到概率计算,如果我们理解深了就会发现,只要可以熟练的掌握基本的计算,大体上类型相似:
在这里我们简单的回顾下:第一个式子告诉我们当我们知道多个变量概率分布时如何计算单个变量的概率分布,而下边的式子告诉我们两个变量之间的概率关系,比如X和Y独立,就有下式的关系:
还有一个是著名的贝叶斯公式:
5:有向图模型(贝叶斯网络)
先给出贝叶斯网络额定义:
贝叶斯网络: 对于K随机变量{X1,X2,··· ,XK}和 一个有向非循环图 G,G 中的每个节点都对应一个随机变量,可以 是观察变量,隐变量或是未知参数等;G中的每个连接eij 表示两 个随机变量 Xi 和 Xj 之间具有非独立的因果关系。我们定义 Xπk 表示变量 Xk 的所有父节点变量集合,每个随机变量的局部条件 概率(local conditional probability distribution)为 P (Xk |Xπk )。
如果X = X1,X2,··· ,XK 的联合概率分布可以分解为每个随机变量 Xk 的局部条件概率的连乘形式,即
那么 (G, X ) 构成了一个贝叶斯网络。
那说点人话:
现在我们假设一个有向图G(V,E),其中节点集合V=(X1,X2,......XK),表示K个随机变量,每个节点对应一个随机变量XK,边集合E中的每个连接表示两个变量之间的因果关系.,现在我们用xi表示变量Xi的一个取值,K个变量的联合概率就可以分布为K个条件概率的乘积.用公式表达就是下边的式子:
既然我们说图,如何用图来表示上边式子的关系呢?我们得到的是最后的关系,式子里反应了变量之间的联系,当我们观察条件概率时,我们必须要指明那个是条件,如果我们采用的变量是节点,采用无向图这样的节点等价关系肯定是不能描述条件概率的,因为对于一个节点说双向都可以,所以我们这里采用的是有向图,如果我们要描述p(x2|x1)就可以化成下图:
举一反三:我们如果描述上边的式子,就可以转化为:
这里我们要注意,第一个节点是没有指向的,因为无条件.
在这里我们还应该注意一点,在贝叶斯网络中,如果两个节点是直接相连的,他们肯定是非条件独立的,而是直接因果关系,其父节点是”因”,子节点是”果”.
如果两个节点不是直接连接的,而是之间有经过其他节点的路径间接连接的,这时候情况比较复杂,这里我们举个例子:
给定三个节点x1, x2, x3,x1 和x3 是不直接连接的,可以通过节点x2 连接。这三个节点之间可以有四种连接关系:
间接因果关系: 在已知 x2 时,x1 和 x3 为条件独立;
间接果因关系:在已知 x2 时,x1 和 x3 为条件独立;
共因关系: x1和x3是不独立的,在已知x2时,x1和x3条件独立;
共果关系: x1和x3是独立的,在已知x2时,x1和x3不独立
由 x1 到 x3 并经过 x2 的四种路径类型。
在图1图2 中,在已知 x2 时,x1 和 x3 为条件独立;
在图3 中,x1 和 x3 是不独立的,在已知 x2 时,x1 和 x3 条件 独立;
在图4中,x1 和 x3 是独立的,在已知 x2 时,x1 和 x3 不独立。
6:无向图模型(马尔科夫随机场)
构造有向图的模型需要变量之间是显式的,很强的约束关系,即首先要满足之前的条件概率分布关系,其次还有计算要简便,这时候可能就跟我们的真实情况有区别了.很多时候我们知道两个变量之间一定是相关的,但我们不知道到底是怎么相关的。这时候我们也可以用其相关性来构造概率图模型。相关是不分方向的,此时我们应该选择无向图来表示。
这时候我们引入马尔科夫随机场:
马尔可夫随机场,也叫无向图模型,或马尔可夫网络(Markov network),是一类用无向图来表示一组具有马尔可夫性质的随机 变量 X 的联合概率分布模型。
和贝叶斯网络类似,马尔可夫随机场也图结构来随机变量之间的依赖关系。 但是,贝叶斯网络是有向非循环图,而马尔可夫随机场是一个无向图,并且可以存在循环。这样,马尔可夫随机场可以表示贝叶斯网络无法表示的一些依赖关系,如循环依赖;但它不能表示贝叶斯网络能够表示的某些关系,如推导关系。
现在给出定义:
给定个有K个节点的无向图G(V,E),其中V = {v1,v2,··· ,vK}表示节点集合。每个节点 vk 表示一个随机变量 Xk 。如果 (G, X ) 满足局部马尔可夫性质, 即一个变量 Xk 在给定它的邻居的情况下独立于其它所有变量,那么 (G, X ) 就构成了一个马尔可夫随机场。
而局部马尔科夫就可以表示为:
现在我们来引入一个实际例子:
如上图所示A中节点到B集合中节点的每一条路都通过了C中节点,
这代表着:
无向图模型很完美的将这种弱的关系表现出来了,有一种很神奇的感觉,而这后边计算牵扯到把概率分开,然后把图中的节点分成很多个小的集合,其中集合内的点两两有边相连,然后这里牵扯到了玻尔兹曼分布,这其中就太复杂了,我也没搞明白,这里先把玻尔兹曼的表达式给出来,希望有兴趣的小伙伴可以自己研究下
7:概率图的一些应用:
1:隐马尔科夫模型(HMM)
HMM隐马尔克夫模型这个是一种有向图模型,这个跟前边的马尔科夫无向图过程很相似:
2:RBM:限制玻尔兹曼机:
之前在文章里有过介绍,跟上边的玻尔兹曼分布有关系,因为太复杂,就不介绍了
3:图像处理
从观测到的有噪声的图片中恢复出原始图片,做出的假设是观察到的图片像素点和原始图片相关,同时原始图片相邻像素点之间相关。
8:图模型与神经网络的关系
图模型和神经网络有着类似的网络结构,但两者也有很大的不同。图模型 的节点是随机变量,其图结构的主要功能是用来描述变量之间的依赖关系,一 般是稀疏连接。使用图模型的好处是可以有效进行统计推断。而神经网络中的 节点是神经元,是一个计算节点。如果将神经网络中每个神经元看做是一个二 值随机变量,那神经网络就变成一个 sigmoid 信念网络。
图模型中的每个变量一般有着明确的解释,变量之间依赖关系一般是人工来定义。而神经网络中的神经元则没有直观的解释。
图模型一般是生成模型,可以用生成样本,也可以通过贝叶斯公式用来做 分类。而神经网络是判别模型,直接用来分类。
图模型的参数学习的目标函数为似然函数或条件似然函数,若包含隐变量 则通常通过 EM 算法来求解。而神经网络参数学习的目标为交叉熵或平方误差等损失函数。
9:参考资料:
1:《PATTERN RECOGNITION and MACHINE LEARNING》
2:《Probabilistic Graphical Models:Principles and Techniques》
3:邱锡鹏:<神经网络与深度学习>
4:概率图综述:MIT林达华博士