概率图模型–精确推断算法的原理

本文主要内容

  • 本文从可分解图出发,逐渐引入弦图,三角化图,然后揭示了为什么引入可分解图,因为可分解图是在连接树算法中最终得到的,还讲解了为什么要使用连接树算法,因为连接树算法可以解决不是树的图结构的推断问题,还可以获得团上变量的联合概率分布,从而对单个变量的边际分布的推断就只在包含查询变量的团上进行即可,这也远远减少了计算步骤。
  • 本文最后附带了我写这个博客的时候使用的简答R代码
  • 阅读本文可能需要对概率图模型有一定了解的人(当然我也是学习阶段,小白一个)

可分解图的引入

读论文的时候先遇到的可分解图,那首先给出分解的定义:
修改gRbase包里面的mpd()函数是找出对应的分解,只利用到下面的分解的概念,不要理解成mpd()里面的图必须是弦图
图存在分解与图是可分解图是不一样的概念我的论文里面要求的是可分解图,用mcs()函数进行可分解图的检验


以上定义的1,3条都好理解,那么第2条的理解是,A集合B集中的节点之间的路径一定要通过S集中的节点,用图的条件独立性可以说,在S已知的条件下,A与B条件独立,A与B里面包含的节点是没有之间相连的。
下面再看一下可分解图的概念

总结一下就是一个无向图如果本身是完全图(也就是节点之间都是相互连接的)或者不是完全图但是存在真分解(A,B,S),使得对应的子图也存在真分解,那么称该无向图是可分解图。下面给两个可分解图的例子

在第一个可分解图当中,可以有两个真分解,分别为
A1={A},S1={B},B1={C,D}
A2={A,B},S2={C},B2={D},
最大团有三个,分别为C1(A,B),C1(B,C),C1(C,D),分离集分别为S1={B},S2={C}

其中还有重要的一步,不是存在真分解就一定是可分解图,还要求真分解之后的子图也存在真分解或者子图是完全图,只有再满足这个条件,才可以说原来的图是可分解图 ,大家可以自已验证满足这个条件

以上的处理是为了得到联合概率的简单表示,对于无向图来说联合概率可以分解为定义在最大团上的势能函数的乘积再进行归一化,公式为

那么如果我们的无向图是可分解图的话,联合概率就可以表示为


具体到我们的图一来说就是p(x)=C1(A,B)*C1(B,C)*C1(C,D)/(S1(B) *S2©)
这个公式很重要,只有可分解图的联合概率可以直接这样写,减少了计算的步骤,分母变的简单多了
那么为什么要介绍可分解图呢?一方面是因为可分解图的性质比较好,并一方面如果图是可分解的,那么我们要研究整个图的性质可以分解为研究(A+S)或者(B+S)这两个子图的性质。同理可以分析图2,图2也是可分解图,在这个可分解图中A={A},S={B,D},B={C}。从这个可分解图中我们是不是可以发现所有两个三角形,不多说,我们看下面的概念。

弦图的引入

首先我们要知道弦图和可分解图是等价的

弦:

如下图,下图是一个节点为5的环,这个环中A,C之间,A,D之间,B,E之间,C,E之间没有连接,如果加入边集AC在这个图里面,那么AC就称为该图的一条弦,同理加入边集AD在这个图里面,那么AD也称为该图的一条弦,注意BD之间加边就不叫弦了。

弦图:

如果有个无向环图中,任意大于等于四个节点的环都有一个弦,那么这个图就称为弦图,如下图所示,下面这个图就是弦图,首先第一步是在5个节点的环中添加弦AC,添加弦AC之后又形成了新的环ACDE,所以又添加了新的弦AD,此时形成的图就满足了定义,大于三个节点的环中都有了弦,这个图为弦图,


那么我们现在来验证一下这个弦图是不是可分解图,验证可知确实是可分解图,这里有三种真分解的方式
A1={B},S1={A,C,D},B1={E}
A2={B},S2={A,C},B2={D,E}
A3={B,C},S3={A,D},B3={E}
足以可见,该弦图是可分解图,这点我们需要记住,其实我们最开始想要得到可分解图,可分解图有很好的性质,可以让我们的分析由全局过度到局部,因此我们引入了弦图,为什么呢,因为弦图和可分解图是等价的

因此我们的目的就可以换成检验一个图是不是弦图,检验弦图我们有方法,

节点的次序

检验图是不是弦图,就是检验这个图有没有完美消元序

查阅了一些资料发现这个我是最好理解的,看下面这个图,这个图当中有5个节点,给这5个节点进行了排序,对于序为1的节点来说,邻居节点为2,3,1前面没有任何节点,所以adj(v1)交上空集,也为空集,空集也是特殊的完全图,对于序为2的节点来说,2节点的邻居节点为1,3,4,2前面只有一个节点1,所以交集为1,是完全图,同理看序为3的节点,邻居为1,2,4,5,那么3前面的节点为1,2,交集为1,2,1,2,之间有边所以是完全图,序为4的节点的交集为2,3,2,3之间有边相连,最后序为5的节点的交集为3,是完全图。所以该弦图有最优节点排序

完美节点顺序也就是完美消元序,也就是消元的时候按照节点顺序依次进行消元,下面这个图就不满足上面讨论的性质,该图就不是弦图,但是我说的不满足上面的性质是我试出来的,

那么真正的判定方法是什么呢,这里引用博客,先从最朴素的算法理解,说的是每次找出一个单纯点,然后把相关的边都删除,重复进行,如果最后所有的点都被删除了,那么就说明得到的删除节点的序列是最优的,那么该图也就是弦图
引用博客当中对单纯点进行了介绍,单纯点就是如果一个节点的邻居节点是全连接的,那么这个节点就是单纯点正如上面的那个图节点1就是单纯点,因为2,3有连接,同理节点2就不是单纯点,因为1,4没有连接,那么现在就利用这样原始的朴素的办法进行判断,1,4,5都是单纯点,假设第一次删除的是1,那么把1和相对应的边删除以后,得到的新的图的单纯点为2,4,5,假设删除的是2,那么得到的新图的单纯点为4,5,假设删除的是4,那么剩下的图只有3,5,3,5都是单纯点,随便删掉一个,剩下 的那个点自已也是单纯点,所以按照每一步都删除单纯点的方法,可以把图中的点全部删除,所以该图是弦图
还有用的最多的算法是MCS算法(最大势搜索算法)利用最大势搜索
最大势搜索算法可以给出一个节点的消元顺序,注意不管是不是弦图都可以给出一个消元顺序,给出的这个消元顺序应该是代价最小的(当然这是我理解的),然后对这个消元顺序再利用最优消元顺序的定义进行判断,若满足,那么给出的这个节点顺序就是最优的节点顺序,拥有了最优的节点顺序,那么它就一定是弦图。
所以在我看来,逻辑是这样的,我们想要判断是不是弦图,判断弦图需要利用节点的最优消元顺序,那么最大势搜索算法(MCS)给出我们一个节点的消元顺序,就对这个顺序进行定义的判断,若符合,那么这个次序就是最优节点顺序,该图就是弦图
由此可以最优节点顺序不唯一,只有有一个这样的最优节点顺序,那么这个图就是弦图

上面谈到了弦图,我们知道弦图就是可分解图,利用可分解图我们可以更好的写出联合概率分布,可分解图还是针对无向图来说的,我们下面把有向图上的联合概率串起来

按照有向图上面的联合概率可以写成每个变量的局部条件概率的乘积,所以首先有

然后利用贝叶斯公式把条件概率写成联合除以边缘的形式,大家看一下最后化简的公式,分子像不像我们的团的乘积,分母像不像分离集的乘积,如果当箭头改成无向的,你会发现就是这样的,箭头改成无向的时候这个图你会发现它是可分解图,这就再次印证了,可分解图的联合概率分布可以写成最大团的乘积除以分离集的乘积的形式

当我们利用这个有向图进行推理时,比如我们要求p(A),那么就是依次对B,C,D进行积分或者是求和,积分或者求和的过程其实也就对应的是消元的过程,消元时必然避免不了我们要有一个节点的消元顺序,最后我们可以找到一个最好的节点消元顺序,因为最好的节点消元顺序对应着最小的消元代价,我这里通俗的解释一下什么是消元代价
在解释消元代价之前先介绍结构图和端正图(道德图)

结构图

下面给一个复杂一点的有向图

这个有向图的端正图(道德图)为下图,道德图的意思是把有向图当中的箭头变成无向的,然后把配偶节点用无向边相连。如A,B之间,C,D之间是配偶。
道德图就是结构图,在结构图当中进行消元代价的计算,比如为了计算p(A),需要消除B,D,C,E,F,G,H,
假设我们就按照这样的顺序进行消元,消除B时,我们从下图可以看出B的邻居节点为A,C有两个,加上B自已有三个变量,假设每个变量都是二值离散变量,那么消除B的代价为2^3=8,消除B的具体过程为

  1. 在下面这个最原始的结构图中把与B节点相邻的节点两两相连,A,C相连,由于AC本来就是相连的可能会忽略这个过程,如果AC之间原来没有无向边相连,那么在消除B时也需要首先把他们连在一起
  2. 在结构图中把B节点去掉,那B节点不在了,与B节点连接的边自然而然就不在了

消除B之后就会形成新的结构图,在新的结构图上计算消除节点的代价,下一个消除的是D,消除C时同样按照这样的过程

  • 首先与D相邻的节点为C,E,检查CE之间是不是有边相连,若没边则加边
  • 删除D节点和与D相连的边

消除节点D一共涉及了三个变量C,D,E,所以消除D的代价为2^3=8



不知道大家有没有好奇,在消除变量的过程中,为什么需要检验与该变量相邻的节点之间是不是有边呢,拿消除E节点为例,与E节点相连的节点为G,H,E,H,G这三个节点是不是对应的概率分布p(G|E),p(H|E),那么把E消除之后就只剩下关于G,H的概率分布了,我们认为一个概率分布的节点是相互有关系的也就是有连接的。
加边的过程可以认为是三角化的过程
三角化其实也就是加弦的过程,三角化图也就是弦图 ,三角化是为了得到弦图,得到弦图就是得到了可分解图。
之所以将那么多就是为了说概率图模型当中的精确推断算法的连接树算法的,是为了说明为什么要使用连接树算法,因为连接树算法可以的得到可分解图。下面介绍一下连接树算法的原理

  • 对于有向图来说
    . 首先进行道德化得到结构图(道德图)
    然后对得到的无向图,给出一个节点顺序(可以通过MCS算法),利用这个节点顺序进行加边操作(三角化操作)
    三角化之后得到的图就是弦图,也就是可分解图,对这最终的无向图可以转换成一个聚类树的形式,(我认为转换成聚类树是为了让我们直观的看出来最大团集合分离集是什么样的

  • 对于无向图来说自然没有上面的道德化的过程,只有三角化的过程和转换成聚类树的过程

最终得到的无向图为

转化为聚类树的形式为下面这棵树,那么这个有向图的联合概率可以写为P(A,B,C)P(D,C,E)P(C,F)P(E,G)P(E,H)/P©P(E)
对于无向图最后三角化之后得到的图,也有团和分离集,其实团和部分变量的联合分布都可以叫做因子,如果有无向图最后经过三角化得到的图跟上图一样,那么该无向图的联合概率分布可以写为C1(A,B,C)C2(D,C,E)C3(C,F)C4(E,G)C5(E,H)/S1©S2(E)
也就是把概率换成了势能函数

上面讲的是在联合树算法当中的联合概率分布有了不一样的形式,现在讲一下在推断问题上面联合树算法有什么不同呢,我突然想到为什么要转化成这样的聚类树了,为了在树结构上使用想念传播算法,我们之间学得信念传播算法是点与点之间的消息传递,在普通树上面的信念传播算法是这样的

  1. 首先从根节点向叶节点传递消息
  2. 然后再从叶节点向根节点传递消息
  3. 每个节点的边际分布正比于该节点接受到的信息的乘积

大家可以看一下,普通树上的信念传播算法方便了计算边际分布,把每个消息储存起来,不用重复计算,但是我们要知道普通树结构非常有局限,只能适用于部分有向图和无向图(默认大家知道什么是数结构),为了加深记忆,我还是写一下树结构吧,树结构可分为有向树和无向树

  • 如果一个有向图满足任意两个变量只有一条路径(忽略方向)且只有一个没有父节点的节点,那么这个有向图为树结构,其中唯一没有父节点的节点称为根节点
  • 如果一个无向图满足任意两个变量只有一条路径,那么这个无向图也为树结构,在树结构的无向图当中,任意一个节点都可以作为根节点

下面展示一下普通的有向树(左)和普通的无向树(右)
)
但是当遇到不是树结构的图时怎么使用想念传播算法呢?这个时候就是上面的聚类树的作用了,也就是利用连接树算法逐渐把图解构转换成弦图,转换成弦图之后就可以得到聚类树,你仔细观察一下普通有向树和聚类树,你会发现在普通有向树种,一个圆圈表示单独的有个变量,消息是在单个变量之间传递的,最后方便得到的是每个变量的边际概率分布;那么在聚类树当中,一个圆圈表示的是一个变量的集合,一个团,消息是在一个团到另外一个团上传递的,在聚类树上同样也是三步走信息传递,只不是这里的节点是团而已,最后得到的是某个团上变量的联合概率分布,比如在聚类树中我们可以得到P(A,B,C),P(D,C,E),P(C,F),P(E,G),P(E,H),那么比如我们现在想要求一个变量的A的边际分布,我们只需要找到包含A节点的概率分布或团,这里只有P(A,B,C),那么就是只需对B,C进行积分或者求和(边缘化)即可。
这样就简单多了啊,之间我们求边际分布时需要对除了查询变量和证据变量之外的所有节点都进行边缘化操作(主要原因还是因为我们最开始只知道所有变量的联合概率分布),那么现在利用连接树算法,我们可以知道每个团中变量的联合概率分布,那么我们只需要找到一个包含查询变量的团,然后在这个团中对除了查询变量以外的变量进行边缘化即可。

总结

本篇文章应该算是我对概率图模型里面的精确推断算法的完整总结了,可能以后用的也不多,主要用的是近似推断算法里面的MCMC算法,但是自已进行梳理以后发现知识真的是融汇贯通的。

参考文献

图模型的结构_分解和可压缩性_王晓飞
probabilistic graphical models principles and applications by luis enrique sucar (z-lib.org)
Learning Probabilistic Graphical Models in R by David Bellot (z-lib.org)
https://blog.csdn.net/u011815404/article/details/99188055

代码

本文的简单R代码,因为有些图是自已生成的

library("parallel")
library("BiocGenerics")
library("gRbase")
library("gRain")
library("graph")
library("grid")
library("Rgraphviz")
p1=ug(~A:B+B:C+C:D)
plot(p1)
p2=ug(~A:B:D+B:C:D)
plot(p2)
p3=ug(~A:B+B:C+C:D+D:E+E:A)
plot(p3)
p4=ug(~A:B:C+A:C:D+A:D:E)
plot(p4)
p5=dag(~A+B:A+C:B+D:C)
plot(p5)
p6=dag(~A+B+D+C:A:B+E:C:D+F:C+G:E+H:E)
plot(p6)
p7=moralize(p6)
plot(p7)

概率图模型-可分解图-连接树算法-弦图-图论相关推荐

  1. 概率图模型(PGM)/马尔可夫随机场(MRF)/条件随机场基本概念(CRF)

    概率图模型: 1:为什么引入图模型:一般的问题我们都可以用概率模型去很好的解决,那么为什么又要在概率的基础上加一个图呢?在这里我们引入图结构其实是因为图结构可以将概率模型的结构可视化,应用图这是一种直 ...

  2. 机器学习笔记之概率图模型(十)因子图

    机器学习笔记之概率图模型--因子图 引言 回顾:图结构相关思想 因子图 因子图的特点 引言 本节针对精确推断之变量消去法中出现的存在环结构概率图的情况,介绍因子图(Factor Graph),其主要将 ...

  3. 机器学习-白板推导-系列(九)笔记:概率图模型: 贝叶斯网络/马尔可夫随机场/推断/道德图/因子图

    文章目录 0 笔记说明 1 背景介绍 1.1 概率公式 1.2 概率图简介 1.2.1 表示 1.2.2 推断 1.2.3 学习 1.2.4 决策 1.3 图 2 贝叶斯网络 2.1 条件独立性 2. ...

  4. 数据流图怎么画_概率图模型怎么画?5个步骤完成专业模型图

    概率图模型是什么呢?概率图模型是用图形模式来表示各个变量概率相关关系以及与模型有关的变量的联合概率分布的一类模型.概率图理论可分为概率图模型表示理论.概率图模型推理理论和概率图模型学习理论三部分.概率 ...

  5. 【机器学习系列】概率图模型第一讲:从概率和图的角度理解概率图模型

    作者:CHEONG 公众号:AI机器学习与知识图谱 研究方向:自然语言处理与知识图谱 前言: 文中含有大量公式,若需获取本文全部的手书版原稿资料,扫码关注公众号[AI机器学习与知识图谱],回复: 概率 ...

  6. 每个特征图1各因子和一个偏置_nlp中的概率图模型

    在自然语言处理中,概率图模型极为重要,在中文分词.词性标注.命名实体识别等诸多场景中有着广泛的应用.概率图模型(Graphical Model)分为贝叶斯网络(Bayesian Network)和马尔 ...

  7. 机器学习理论与实战(十五)概率图模型03

    03 图模型推理算法 这节了解一下概率图模型的推理算法(Inference algorithm),也就是如何求边缘概率(marginalization probability).推理算法分两大类,第一 ...

  8. 【周志华机器学习】十四、概率图模型

    文章目录 参考资料 1. 基本概念 2. 隐马尔可夫模型(HMM) 2.1 隐马尔可夫三大问题 1. 第一个问题解法 2. 第二个问题解法 3. 第三个问题解法 3. 马尔可夫随机场(MRF) 3.1 ...

  9. 机器学习笔记之概率图模型(六)推断基本介绍

    机器学习笔记之概率图模型--推断的基本介绍 引言 回顾:贝叶斯学派与推断 推断的系统介绍 场景构建 推断的任务 推断方法介绍 回顾:隐马尔可夫模型中的推断问题 引言 前面部分分别介绍了贝叶斯网络(Ba ...

最新文章

  1. HDLBits 系列(42)根据仿真波形来设计电路之时序逻辑
  2. html 商品展示框
  3. MySQL 5.7建表时date类型提示默认值类型错误的问题处理
  4. 这两款无“节操”的浏览器,在315被曝光后,终于被下架了
  5. HDU-5532Almost Sorted Array LIS问题
  6. 微软私有云解决方案_微软发布电信云平台 ,互联网巨头争夺5G网络商机
  7. C语言程序设计 笔试考试,试题样卷
  8. 5场直播丨PostgreSQL、openGauss、Oracle、GoldenDB、EsgynDB
  9. ionic day01教程第一天之多平台运行(ios android)
  10. 148. Sort List (java 给单链表排序)
  11. nodejs后台系列--第四篇--koa(四)
  12. Hive 安装配置及下载地址
  13. 学习Samba基础命令详解之大话西游01
  14. Qt qss 九宫格
  15. 在线购物系统 实验三分析类类图
  16. 巴旦木树苗适合在哪些地方种植?巴旦木苗木成长过程
  17. VSCode的下载安装与配置教程(详细)
  18. KnockoutJS的使用及分析
  19. Programming Languages PartA Week2学习笔记——SML基本语法
  20. 【开源库推荐】go-linq 强大的语言集成查询库如,ORM一般丝滑处理内存数据

热门文章

  1. 林湾村男子铁路技术职业学院2022年5月ACM校赛初赛题解
  2. 写给人类的机器学习 三、无监督学习
  3. 人体工学电脑椅选购建议
  4. Hadoop2.6.0运行mapreduce之Uber模式验证
  5. 利用php屏蔽海外ip访问,高效实现
  6. 黑马程序员Java教程学习笔记(五)
  7. Codeforces9C dfs暴力
  8. 猴子吃桃问题 php,趣味算法:猴子吃桃问题
  9. linux mtd 块设备,MTD块设备的数据读取
  10. ArcGIS Engine - 拓扑检查