理解概率图模型中的有向分离(d-separation)
Abstract: d-separation是什么?有什么作用?
引言
给定贝叶斯网
,我们能不能根据这个有向无环图的结构,来简化概率计算?
比如给定下面这个贝叶斯网
,我们就知道,X与Y互为独立事件
(记做
知道了这个结论,那概率
这就是有向分离
(d-separation)的基本思想:通过贝叶斯网
中看两个事件的关系(两个事件是否条件独立
),从而简化概率计算。
若X与Y关于Z是有向分离
(d-separation)的,则
下面通过详细分析贝叶斯网
中4种常见的连接情况,来总结有向分离
(d-separation)的一般规律。
4种连接情况讨论
这里假设有三个观测事件X,Y,Z。
- 若不观测Z,计算
P(X,Y)=∑zP(X,Y,Z) 。只有满足P(X,Y)=P(X)P(Y) ,才能说明X与Y相互独立。若能得到这个表达式(P(X,Y)=P(X)P(Y) )就能说明X与Y关于Z有向分离
(d-separation)的。 - 若观测Z(以Z作为条件),用条件概率公式计算
P(X,Y|Z)=(P(X)P(Z|X)P(Y|Z))/P(Z) 。只有满足P(X,Y|Z)=P(X|Z)P(Y|Z) ,才能说明X与Y关于Z相互独立。若能得到这个表达式(P(X,Y|Z)=P(X|Z)P(Y|Z) )就能说明X与Y关于Z有向分离
(d-separation)的。
下面就对每一种连接,分两种情况(“观测Z”与“不观测Z”)讨论。
直接连接 (X->Z->Y)
若不观测Z,则
P(X,Y)=∑zP(X,Y,Z)=P(X)∑zP(Z|X)P(Y|Z)=P(X)P(Y|X) 。X与Y并不是独立事件。若观测Z,则P(X,Y|Z)=P(X,Y,Z)/P(Z)=(P(X)P(Z|X)P(Y|Z))/P(Z)=P(X|Z)P(Y|Z)。X与Y关于Z条件独立。
(推导中需要用到P(A|B)=P(AB)/P(B),以及P(B)P(A|B)=P(A)P(B|A))
间接因果作用(Y->Z->X)
若不观测Z,则
P(X,Y)=∑zP(X,Y,Z)=P(Y)P(X|Y) 。X与Y并不是独立事件。若观测Z,则P(X,Y|Z)=P(X,Y,Z)/P(Z)=(P(Y)P(Z|Y)P(X|Z))/P(Z)=P(Y|Z)P(X|Z)。X与Y关于Z条件独立。
共同的原因(X<-Z->Y)
若不观测Z,则
P(X,Y)=∑zP(X,Y,Z)=∑zP(X|Z)P(Y|Z)P(Z) 。X与Y并不是独立事件。若观测Z,则P(X,Y|Z)=P(X,Y,Z)/P(Z)=(P(X|Z)P(Z)P(Y|Z))/P(Z)=P(X|Z)P(Y|Z)。X与Y关于Z条件独立。
共同的作用(X->Z<-Y)
若不观测Z,则
P(X,Y)=∑zP(X,Y,Z)=P(X)P(Y)∑zP(Z)=P(X)P(Y) 。X与Y相互独立。若观测Z,则P(X,Y|Z)=P(X,Y,Z)/P(Z)=P(X)P(Y)P(Z|X,Y)/P(Z)。X与Y关于Z不独立。
简化
要去推导这些公式来验证X与Y是否关于Z有向分离
,太复杂了点。有没有简单点的方法来判断X与Y是否是关于Z有向分离
的呢?
当然可以,下面的文字就说明如何做到看图就能判断有向分离
。
X influence Y
若X与Y相互独立,就说明X不会影响(influence)Y。将上述4种情况总结起来,见下图:
Active Trails
当下面两个条件中有一个被满足,说明一个Trail(X1-X2-…-Xn)关于Z是Active的:
(1)对于任意V型结构:Xi->X<-Xj,X属于Z,或X的子事件属于Z
(2)没有Xi属于Z(Z不为空)
下面举例说明怎么用这个规则。
在下面这个贝叶斯网中
给定一个Trail:D->G<-I->S
* 若Z={},条件(2)不满足。考虑条件(1),Trail中有V型结构(D->G<-I),但该结构的所有事件(D,G,I)都不属于Z,,且G的子事件L也不属于Z,所以这个Tail不Active
若Z={L},则这个Trail中所有事件(D,G,I,S)都不属于Z,条件(2)被满足。考虑条件(1),Trail中有V型结构(D->G<-I),虽然该结构的所有事件(D,G,I)都不属于Z,但G的子事件L属于Z,所以条件(1)被满足。此时Trail是Active的。
若Z={L,I},则这个Trail中有(所有事件D,G,I,S),事件I属于Z,条件(2)不满足。所以这个Tail不Active。(虽然条件(1)被满足)
看图判断d-separation
定义:给定Z,只要在贝叶斯网中,X到Y的Trail不是Active,就说明X和Y关于Z是有向分离
(d-separation)的。
结论
给定一个贝叶斯网,只要看图判断一个从X到Y的Trail是不是Active,就能判断X与Y是不是有向分离
(Active则不是有向分离
)。用两句话总结本文:
- X和Y关于Z
有向分离
,等于X和Y关于Z条件独立
- X到Y的Tail不是Active,等于X和Y关于Z
条件独立
例子:判断下图C与D是不是关于F有向分离?
解答:先判断图中的整个Tail是不是Active:
考虑条件(1),图中有V结构(C->E<-D),虽然这个V结构中的所有事件(C,E,D)都不属于F,但中间点E的子事件F属于F。所以条件(1)满足,该Tail是Active的,所以C与D不满足有向分离
。
参考
- (1) Daphne Koller。概率图模型
- (2) 概率图论PGM的D-Separation(D分离)。https://my.oschina.net/dillan/blog/134011
- (3) 概率图模型(PGM)里的有向分离(D-separation)。http://blog.csdn.net/light_lj/article/details/39162251
- (4) http://classes.engr.oregonstate.edu/eecs/winter2015/cs536/slides/bayesnets3.2pp.pdf
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构