0 引言
学概论图模型的目的是为了解释某篇论文的理论依据,诚然,概论图模型的理论基础是如此简单。就是概率论中的sum规则和product规则,但是如此简单的求解过程,在高维随机变量上,计算机也就无能为力,从而为了解决该问题,研究者提出利用将高维随机变量映射到图中的节点和节点之间条件独立的假设,再使用置信传播算法,让指数级别计算减少为O(n)级别,虽然在树上,置信传播有精确解,但是概论图模型仍然有缺陷,就是其条件独立的假设,这种假设构成了图的边。但是这种假设是怎么来的呢?
1 概率图模型理论基础
概率图模型理论基础,来自PRML书籍第八章。我们的问题诉求是需要求条件概率、边缘概率或者最大后验概率,而图的形式可以帮助我们描述了联合概率分布在所有随机变量 上能够分解为⼀组因⼦的乘积的⽅式,每个因⼦只依赖于随机变量的⼀个⼦集。有向图对于表达随机变量之间的因果关系很有⽤,⽽⽆向图对 于表⽰随机变量之间的软限制⽐较有⽤。所以用图来帮助高维随机变量计算。
概率图模型理论基础就上面两个公式,一个是求和公式,也就是求随机变量的X的边缘概率。这⾥p(X, Y )是联合概率,可以表述为“X且Y 的概率”。类似地,p(Y | X)是条件概率,可以表 述为“给定X的条件下Y 的概率”,p(X)是边缘概率,可以简单地表述为“X的概率”。注意该公式在任何情况下都是成立的。
虽然其理论基础如此简单,但一旦随机变量过多,就会造成指数级别计算量,尤其是计算联合概率,所以引入图的概念,让其在图上完成计算。
2 贝叶斯网络
考虑三个随机变量a,b,c。那么其联合概率分布按照product rule可以写成p(a, b, c) = p(c | a, b)p(a, b) ,再次使用product rule可以写成p(a, b, c) = p(c | a, b)p(b | a)p(a)。那么在这里我们求解联合概率的时候已经隐式的选择了一个特定的的顺序(即a,b,c),不同的选择顺序会导致求解顺序不同,从而其对应贝叶斯网络也会不同。按照我们的求解顺序,我们可以画出求解a,b,c联合概率的贝叶斯网络。
将其扩展到k个随机变量,我们有
注意这个公式是任何情况下是成立的,不依赖贝叶斯网络求解顺序。那么现在假如给定一个7个节点的贝叶斯网络,如何求其联合概率呢?如下图
这种按照贝叶斯网络求解联合概率的跟前面求解顺序相反,我们可以依据贝叶斯网络写出联合概率求解公式
我们发现任何情况下成立的公式P(x1,x2,、、、xk),如果选择一定的求解顺序,也就是画出一个贝叶斯网络,即在一个给定k个节点贝叶斯网络中求解其联合概率公式就变为
注意x表示所有随机变量,pak表示k的父亲节点。(那么一个任何情况成立的公式P(x1,x2,、、、xk),选择一个求解顺序后,其形式简单化了,也就是贝叶斯网络帮助我们求解联合概率更简单了。)联合概率表达式由⼀系列条件概率 的乘积组成,每⼀项对应于图中的⼀个结点。每个这样的条件概率分布只以图中对应结点的⽗结点为条件。但是这里还没有因子的概念。
3 条件独立
这部分有关于有向图的三种局部条件独立结构以及D-划分规则,注意这里的条件独立性和D-划分其实是在图给定的情况下(我们隐式选择某种求解顺序)就已经有的,不是需要加条件推导出来的。
这个条件独立性有什么用呢? 它可以帮助我们求解联合概率,因为条件独立性所以可以使用因子分解这一步骤,将求联合概率的式子,按照乘法分配率,将先积再和替换成先和再积的方式,直接在图上进行计算。
4 马尔科夫随机场
⽆向图的马尔科夫毯的形式相当简单,因为结点只条件依赖于相邻结点,⽽条件独⽴于任何 其他的结点。它表⽰⼀个分解⽅式,也表⽰⼀组条件独⽴关系。
在马尔可夫随机场中结合网络传播是天然的,给定任意情况下的联合概率公式,比如前面的P(x1,x2,x3、、、xk),那么一个正在传播的无向图就表示某种分解方式。该无向图可以帮助我们使用BP算法去计算高维的联合概率。
4.1 马尔科夫随机场的分解性质
我们现在寻找⽆向图的⼀个分解规则,对应于上述条件独⽴性检测。与之前⼀样,这涉及到 将联合概率分布p(x)表⽰为在图的局部范围内的变量集合上定义的函数的乘积。这将我们引向了⼀个图形的概念,团块(clique)。它被定义为无向图图中结点的⼀个⼦集,使得在这个⼦集中的每对结点之间都存在链接。换句话说,团块中的结点集合是全连接的。此外, ⼀个最⼤团块(maximal clique)是具有下⾯性质的团块:不可能将图中的任何⼀个其他的结点包含到这个团块中⽽不破坏团块的性质让我们将团块记作C,将团块中的变量的集合记作xC。这样,联合概率分布可以写成图的 最⼤团块的势函数(potential function)ψC(xC)的乘积的形式
xC表示团中变量集合,p(x)表示联合概率。ψC(xC)称为势函数也就是某个因子的值。由于我们的势函数被限制为严格⼤于零,因此将势函数表⽰为指数的形式更⽅便,即与有向图的联合分布的因⼦不同,⽆向图中的势函数没有⼀个具体的概率意义。
如何选择势函数。可以这样做:将势函数看成⼀种度量,它表⽰了局部变量的哪种配置优于其他的配置。
引入最大团的目的是为了什么?是为了给出局部性的⼀个合适定义。这样计算联合概率的时候,最大团本身就是一个因子,其中节点与外部是条件独立的。注意不同最大团之间随机变量可能有交集,所以需要用Z来归一化。
5 有向图和无向图的关系 包括如何有向图转无向图
6 推断
一个简单的例子,我们的⽬标是给定y的值,推断x上对应的后验概率分布。
考虑如图(a)所示的贝叶斯网络,对于它联合概率为p(x, y) = p(x)p(y | x),那么如果我们观察到了y的值,如图b所示,那么我们可以将边缘概率分布p(x)看成潜在变量x上的先验概率分布,我们的⽬标是推断x上对应的后验概率分布。
从图的⾓度看,联合概率分布p(x, y)现在可以 表⽰为图(c)所⽰的图,其中箭头的⽅向翻转了。
6.1 链推断
这里谈到了利用乘法分配率进行联合概率计算的方法。我们会考虑⼀个具体的情形,即N个结点表⽰N个离散变量,每个变量都有K个状态。这种情 况下的势函数ψn\1,n(xn\1, xn)由⼀个K × K的表组成,因此联合概率分布有(N-1)*k的平方个参 数。
现在我们考虑无向图的链推断问题,这个无向图的联合概率分布可以写成(没有任何观测变量)
注意这里的p(x)不是一个值,而是一个有着(N-1)*k的平方的参数的表。让我们考虑边缘概率分布p(xn)这⼀推断问题,其中xn是链上的⼀个具体的结点。注 意,现阶段,没有观测结点。根据定义,这个边缘概率分布可以通过对联合概率分布在除xn以外的所有变量上进⾏求和的⽅式得到,即
那么通过无向图的条件独立性,我们可以重新整理加和与乘积的 顺序(乘法分配率),使得需要求解的边缘概率分布可以更加⾼效地计算。例如ψNN -1,N (xN-1, xN )是唯⼀与xN有关系的势函数,ψ1,2(x1,x2)是唯一和x1有关系的函数。因此我们可以进⾏下⾯的求和
依次类推,我们可以得到
也就是如下图所示的含义
我们发现计算p(xn)需要两个信息相乘得到。
我们把µα(xn)看成从结点xn 1到结点xn的沿着链向前传递的信息。类似地,µβ(xn)可以看成从 结点xn+1到结点xn的沿着链向后传递的信息。注意,每条信息由K个值的集合构成,每个值对应于xn的⼀种选择,因此两条信息的乘积可以被看做两条信息的元素之间的点积,得到另 外K个值的集合。那么这两条信息k个值得点积所得k个值就是xn的边缘概率。
µα(xn)可以递归的计算
假设我们⾸先计算出结点xN开始的信息µβ(xN 1),然后将信息⼀路传递回结点x1,同时假 设我们类似地计算出了从结点x1开始的信息µα(x2),然后将信息⼀路向前传递到结点xN。只要 我们存储了所有的中间信息,那么任何结点的边缘概率分布都可以通过使⽤上图公式简单地 计算出来。计算代价仅仅是找到⼀个结点的边缘概率分布的⼆倍,⽽不是N倍。
如果图中的某些结点被观测到,那么对应的变量简单地被限制为观测值即可,不需要求和。这样同样使用这种消息传递的方法可以计算给定观测节点情况下,某某节点的边缘概率。只需要定义好递推式,该递推式包括消息的计算定义和每个节点边缘概率分布的计算定义。然后使用BP算法进行计算即可。
那么在无向图上传播进行这种推断也是很正常的事情,假如我们没有任何观测节点,那么每个节点处于某种感染状态的边缘概率分布可以通过联合概率分布计算得到。但是我们需要知道的是,我们好像并没有相连节点的之间k*k的表,比如两个节点都有k个状态。怎么办?虽然图能够方便的帮我们计算联合概率,但是如何定义势函数是个问题啊?没有势函数,联合概率就没有办法求解,
6.2 树
6.3 因子图
因子图帮助了解有向,无向图上因子分解更直观。一个有向图或者无向图可能有好几种因子图对应形式,下面给两个例子
6.4 BP算法
在树形因子图上推导BP算法会格外的简单,例如下图
我们假设原始的图是⼀个⽆向树或者有向树或者多树,从⽽对应的因⼦图有⼀个树结构。⾸ 先,我们将原始的图转化为因⼦图,使得我们可以使⽤同样的框架处理有向模型和⽆向模型。 我们的⽬标是利⽤图的结构完成两件事:(1)得到⼀个⾼效的精确推断算法来寻找边缘概率, (2)在需要求解多个边缘概率的情形,计算可以⾼效地共享。考虑下图
对于这一部分BP算法,有个套路就是定义消息的格式后,再定义好每个节点对消息的处理方式后,经过从根节点收集所有消息,然后再从根节点发送到所有节点消息。自然就可以得到每个节点的边缘概率了。