概率图论PGM的D-Separation(D分离)
目录[-]
其中找了一些资料发现原文中阻塞(block)中(b)部分有出路,黑体部分修改了一下,那么‘四应用例子’部分答案也跟着修改,如果理解有误希望能给予解释,谢谢!资料参考在最下部分‘六、补充参考资料例子’。
一、引言
在贝叶斯网络的学习过程中,经常会遇到(D-Separation)D-分离这个概念,D-分离是寻找网络节点之间的条件独立性的一种方法或者说一种问题的简化处理的技巧。采用D-分离技术,在用贝叶斯网络进行预测,诊断推理等方面,可以提高计算速度,减少计算复杂性。
D-Separation是一种用来判断变量是否条件独立的图形化方法。相比于非图形化方法,D-Separation更加直观,且计算简单。对于一个DAG(有向无环图)E,D-Separation方法可以快速的判断出两个节点之间是否是条件独立的。
二、三种情况分析
首先可以看看以下三种简单情况下条件独立的情况(对应于PRML中8.2.1的Three example graphs):
Example One:tail-to-tail (节点C连接的是两个箭头的尾部,如图)

可知, P(a,b,c)=P(a|c)*P(b|c)*P(c) (1)
现在我们求 P(a,b),如果 P(a,b)=P(a)*P(b),则a和b是在c条件下独立分布的。分两种情况进行讨论:
(1)C值不作为观察点。令(1)式对c求积分,消去c值,考虑c是离散的情况,可得

可以看到,与 P(a,b)=P(a)*P(b)不等,所以a和b不是c条件独立的。
(2)C值作为观察点(即以C作为条件)。则可以知道C取某个c状态的概率为 P( c ),c 条件下 a 和 b发生的概率为
P( a,b|c )。 由下式:

可得a 和 b 是 c 条件下独立的。
Example Two:head-to-tail

可知,p(a,b,c)=p(a)*p(c|a)*p(b|c) (2)
同样分两种情况进行讨论:
(1)、c值不作为观察点。对(2)式(考虑c是离散的情况)积分可得:
可知,a和b不是c条件独立的。
(2)、c值作为观察点。则图模型表示为:

c 条件下 a 和 b发生的概率为 P( a,b|c )。 由下式:

可知,a 和 b 是 c 条件下独立的。
Example Three:head-to-head

可知 p(a,b,c)=p(a)*p(b)*p(c|a,b) (3)
同理,分两种情况讨论:
(1)、c值不作为观察点。由于所有p(c|a,b)相加和=1,所以有(3)式消去c,可得 p(a,b)=p(a)*p(b),即a与b是条件独立的。
(2)、c值作为观察点。

所以有:

最后不能因式分解成p(a)*p(b)的形式,所以a与b不是c条件独立的。
三、总结
对于较为复杂的 DAG 图,我们可以给出一个普遍意义上的结论 ,也就是 D-Seperation。 对于 DAG 图 E,如果A,B,C是三个集合(可以是单独的节点或者是节点的集合),为了判断 A 和 B 是否是 C 条件独立的, 我们考虑 E 中所有 A 和 B 之间的 无向路径 。对于其中的一条路径,如果她满足以下两个条件中的任意一条,则称这条路径是 阻塞(block) 的:
(a)路径中存在某个节点 X 是 head-to-tial 或者 tail-to-tail 节点(Example one/two),并且 X 是包含在 C 中的;
(b)路径中存在某个节点 X 是 head-to-head 节点(Example Three),并且 X 或 X 的儿子是不包含在 C 中的;
如果 A,B 间所有的路径都是阻塞的,那么 A,B 就是关于 C 条件独立的;否则, A,B 不是关于 C 条件独立的。
四、应用例子
根据D-Seperation分隔定理,我们可以很容易的判断是否是条件独立的。我们来看一个例子:

判断图中a与b是否在c条件下独立?a与b是否在f条件下独立?
判断 a 和 b 是否是 c下条件独立的: a 到 b 只有一条路径 a->e->f->b 。 考虑路径上的点 e 和 f :其中e 是 head-to-head 类型的,且 e 的儿子节点就是 c ,根据(b),e不阻断。而节点f是tail-to-tail类型节点,根据(a),f不在c中,所以也有a,b不是c条件下独立。
判断 a 和 b 是否是 f 下条件独立的:路径 a->e->f->b 上的所有节点。考虑路径上的点e和f:节点 e 是head-to-head 类型的,e 和她的儿子节点 c 都不在 f 中,所以(b),e是阻断路径的节点。节点 f 是tail-to-tail类型节点,且 f 节点就在 f中,所以 f 节点阻断了路径。 结论:a 和 b是 f 下条件独立的。
D-Seperation 还可以用来证明独立同分布和马尔科夫边界等。
五、参考资料
1、http://www.andrew.cmu.edu/user/scheines/tutor/d-sep.html#d-sepapplet2
2、http://blog.sina.com.cn/s/blog_7a24649f0101hjdx.html
3、《pattern recognition and meaching learning》-chapter 8:Graphical Model-8.2 conditional independence
六、补充参考资料例子

1.P( G , L | B ),因为根据规则1,给定B阻塞了G和L之间的惟一的路径。根据给定B,M也阻
塞了这个路径,因为M不是证据集的一个成员。
2.I(G,L)和I(B,L),因为按规则,给定空的证据集合, M阻塞了G和L之间、B和L之间的
(惟一)路径(M不是空的证据集的一个成员)。
然而,注意, B和L不是条件独立于给定的M的。因为虽然M在B和L的路径上,但这个路径上的两条弧都指向M,且M在证据集合中—因此在这种情况下,M没有阻塞路径。
七、Cousera上的PGM例子

课上的explanation:
d-sep (D, J | L, I) is the only statement that is true. If we observe L, the V-structure at G is activated, so influence can flow from D through I to J. Likewise, if we observe H, then the V-structure at H is activated, allowing influence to flow from D to J through H.
我的理解:
A.d-seq(D,I|L):考虑路径:Diffuculty-Grage-Intelligence,Grade是head-to-head节点类型,其孩子节点Letter是条件集合中,因此不是条件独立,该项不是d分离。
B.d-seq(D,J|L):考虑路径:Diffuculty-Grage-Letter-Job,节点Grade是head-to-tail节点类型,其不在条件集合中,因此不是条件独立,该项不是d分离。
C.d-seq(D,J|L,I):考虑路径1:Diffuculty-Grage-Letter-Job,L是head-to-tail节点类型,且在条件集合中,因此是条件独立。考虑路径2:Difficulty-Grade-Happy-Job,Happy是head-to-head节点类型,但Happy不在条件集合中,因此条件独立。考虑路径3:Difficulty-Grade-Intelligence-SAT-Job,Grade是head-to-heat节点类型,但不在条件集合中,是条件独立。所有路径都是阻塞,因此该项符合d分离。
D.d-seq(D,J|L,H,I):考虑路径:Diffuculty-Grade-Happy-Job,其中第二条路径,Happy是head-to-head节点类型,但Happy在条件集合中,所以该路径中的D、J不是条件独立,所以该项不是d分离。
一个简单的数学证明:
P(D,S)=P(D)*P(S)

概率图论PGM的D-Separation(D分离)的更多相关文章
- CET4词汇
abandon vt.丢弃:放弃,抛弃 ability n.能力:能耐,本领 abnormal a.不正常的:变态的 aboard ad.在船(车)上:上船 abroad ad.(在)国外:到处 ab ...
- 利用select实现伪并发的socket
使用socket模块可以实现程序之间的通信,但是server在同一时刻只能和一个客户端进行通信,如果要实现一个server端可以和多个客户端进行通信可以使用 1.多线程 2.多进程 3.select ...
- NOIP经典基础模板总结
date: 20180820 spj: 距离NOIP还有81天 目录 STL模板: priority_queue 的用法:重载<,struct cmpqueue 的用法 stack 的用法vec ...
- 论文阅读笔记三十一:YOLO 9000: Better,Faster,Stronger(CVPR2016)
论文源址:https://arxiv.org/abs/1612.08242 代码:https://github.com/longcw/yolo2-pytorch 摘要 本文提出YOLO9000可以检测 ...
- webpack4 + vue多页面项目精细构建思路
#构建思路 虽然当前前端项目多以单页面为主,但多页面也并非一无是处,在一些情况下也是有用武之地的,比如: 项目庞大,各个业务模块需要解耦 SEO更容易优化 没有复杂的状态管理问题 可以实现页面单独上线 ...
- 命令查询分离原则Command-query separation principle
在UML和模式应用一书中,发送给Die的roll消息之后跟随着第二个消息getFaceValue用于提取其新的faceValue,特别是:roll()方法是void的,没有返回值,例如: public ...
- 概率图形模型(PGM)学习笔记(一)动机和概述
在本文中,基于Daphne Koller完成课程. PDM(ProbabilisticGraphiccal Models) 称为概率图模型. 以下分别说明3个词相应的意义. 概率 -给出了不确定性的明 ...
- 理论篇:关注点分离(Separation of concerns, SoC)
概念 关注点分离(Separation of concerns,SOC)是对只与"特定概念.目标"(关注点)相关联的软件组成部分进行"标识.封装和操纵"的能力, ...
- 11gR2集群件任务角色分离(Job Role Separation)简介
从11gR2版本开始,Oracle推荐使用不同的操作系统用户安装GI和数据库软件,例如:使用grid用户安装GI,使用Oracle用户安装数据库软件.当然,用户还是可以使用Oracle用户安装G ...
随机推荐
- 【详细资料】ICN6211:MIPI DSI转RGB芯片简介
ICN6211功能MIPI DSI转RGB,分辨率1920*1200,封装QFN48
- 高性能消息队列 CKafka 核心原理介绍(上)
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:闫燕飞 1.背景 Ckafka是基础架构部开发的高性能.高可用消息中间件,其主要用于消息传输.网站活动追踪.运营监控.日志聚合.流式 ...
- 第1阶段——关于u-boot目标文件start.o中.globl 和.balignl理解(3)
汇编程序中以.开头的名称并不是指令的助记符,不会被翻译成机器指令,而是给汇编器一些特殊指示,称为伪操作. .globl _start 作用:声明一个_start全局符号(Symbol), 这个_sta ...
- FFmpeg 常用命令收集
FFmpeg 常用命令 合并视频 ffmpeg -i "KTDS-820A_FHD.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts i ...
- 201521123084 《Java程序设计》第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1. 互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...
- 个人作业2——必应词典APP分析
第一部分:调研.评测 1.刚刚打开必应词典的时候,它给我的第一反应就是界面美观,最上面是一个查询框,下面有一些经典的句子.单词以及一些精选的文章,所有的功能都可以一目了然,看一眼就知道要怎么去使用,这 ...
- 201521123017 《Java程序设计》第6周学习总结
1. 本周学习总结 <> 2. 书面作业 Q1.clone方法 1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么? 1. ...
- 201521123109《java程序设计》第四周学习总结
1. 本周学习总结 #1.1 尝试使用思维导图总结有关继承的知识点. #1.2 使用常规方法总结其他上课内容. - 了解了有关类的继承的知识 - 了解继承和多态的关系以及一些关键字内容 - 学习了O ...
- 201521123112《Java程序设计》第1周学习总结
1.本周学习总结 本周通过面授课和上机课,以及在课后通过对<Java学习笔记>前一二章的阅读,初步了解了Java在计算机领域中的重要性,以及Java为什么能够这么广泛的运用在编程中.通过上 ...
- 201521123096《Java程序设计》第一周学习总结
1. 本章学习总结: 对JAVA的发展有一定的了解.JAVA是一种高级语言,需要在JVM上执行.初步学会使用eclipse和NOtepad++. 2. 书面作业 Q1:为什么java程序可以跨平台运行 ...