编程语言
首页 > 编程语言> > 概率图模型--变量消元法与团树传播算法

概率图模型--变量消元法与团树传播算法

作者:互联网

概率图模型–变量消元法与团树传播算法 – 潘登同学的Machine Learning笔记

文章目录

简单回顾概率图模型的推理任务

概率推理是核心问题, 概率推理相当于模型求解;

变量消元算法

通过从联合概率分布逐步消除变量, 来求解边缘概率

(就是最基础的 P ( A , B ) = ∑ C 、 D P ( A , B , C , D ) P(A, B)=\sum_{C、D}P(A,B,C,D) P(A,B)=∑C、D​P(A,B,C,D) 的形式)

我们从例子来理解变量消元算法

MRF应用变量消元算法

考虑这样一个链式MRF

链式MRF的图

P ( E ) ∝ ∑ D ∑ C ∑ B ∑ A P ~ ( A , B , C , D , E ) = ∑ D ∑ C ∑ B ∑ A ϕ 1 ( A , B ) ϕ 2 ( B , C ) ϕ 3 ( C , D ) ϕ 4 ( D , E ) = ∑ D ∑ C ∑ B ϕ 2 ( B , C ) ϕ 3 ( C , D ) ϕ 4 ( D , E ) ( ∑ A ϕ 1 ( A , B ) ) 注意 = ∑ D ∑ C ∑ B ϕ 2 ( B , C ) ϕ 3 ( C , D ) ϕ 4 ( D , E ) τ 1 ( B ) = ∑ D ∑ C ϕ 3 ( C , D ) ϕ 4 ( D , E ) ∑ B ϕ 2 ( B , C ) τ 1 ( B ) = ⋯ = τ 4 ( E ) ⇒ 归 一 化 ⇒ 概 率 值 \begin{aligned} P(E) &\propto \sum_D \sum_C \sum_B \sum_A \tilde{P}(A,B,C,D,E)\\ &= \sum_D \sum_C \sum_B \sum_A \phi_1(A,B) \phi_2(B,C) \phi_3(C,D) \phi_4(D,E) \\ &= \sum_D \sum_C \sum_B \phi_2(B,C) \phi_3(C,D) \phi_4(D,E)(\sum_A \phi_1(A,B)) & \text {注意}\\ &= \sum_D \sum_C \sum_B \phi_2(B,C) \phi_3(C,D) \phi_4(D,E)\tau_1(B) \\ &= \sum_D \sum_C \phi_3(C,D) \phi_4(D,E) \sum_B \phi_2(B,C)\tau_1(B) \\ &= \cdots \\ &= \tau_4(E) \\ &\Rightarrow 归一化 \Rightarrow 概率值 \end{aligned} P(E)​∝D∑​C∑​B∑​A∑​P~(A,B,C,D,E)=D∑​C∑​B∑​A∑​ϕ1​(A,B)ϕ2​(B,C)ϕ3​(C,D)ϕ4​(D,E)=D∑​C∑​B∑​ϕ2​(B,C)ϕ3​(C,D)ϕ4​(D,E)(A∑​ϕ1​(A,B))=D∑​C∑​B∑​ϕ2​(B,C)ϕ3​(C,D)ϕ4​(D,E)τ1​(B)=D∑​C∑​ϕ3​(C,D)ϕ4​(D,E)B∑​ϕ2​(B,C)τ1​(B)=⋯=τ4​(E)⇒归一化⇒概率值​注意

注意

贝叶斯网络应用变量消元算法

考虑这样一个贝叶斯网络

贝叶斯网络的图

消元顺序1(没有固定的说法, 一般从少的开始消)

消元顺序: C,D,I,H,G,S,L
P ( J ) = ∑ L , S , G , H , I , D , C ϕ C ( C ) ϕ D ( C , D ) ϕ I ( I ) ϕ G ( G , I , D ) ϕ S ( S , I ) ϕ L ( L , G ) ϕ J ( J , L , S ) ϕ H ( H , G , J ) = ∑ L , S , G , H , I , D ϕ I ( I ) ϕ G ( G , I , D ) ϕ S ( S , I ) ϕ L ( L , G ) ϕ J ( J , L , S ) ϕ H ( H , G , J ) ∑ C ϕ C ( C ) ϕ D ( C , D ) = ∑ L , S , G , H , I , D ϕ I ( I ) ϕ G ( G , I , D ) ϕ S ( S , I ) ϕ L ( L , G ) ϕ J ( J , L , S ) ϕ H ( H , G , J ) τ 1 ( D ) = ∑ L , S , G , H , I ϕ I ( I ) ϕ S ( S , I ) ϕ L ( L , G ) ϕ J ( J , L , S ) ϕ H ( H , G , J ) ∑ D ϕ G ( G , I , D ) τ 1 ( D ) = ∑ L , S , G , H , I ϕ I ( I ) ϕ S ( S , I ) ϕ L ( L , G ) ϕ J ( J , L , S ) ϕ H ( H , G , J ) τ 2 ( G , I ) = ∑ L , S , G , H ϕ L ( L , G ) ϕ J ( J , L , S ) ϕ H ( H , G , J ) ∑ I ϕ I ( I ) ϕ S ( S , I ) τ 2 ( G , I ) = ∑ L , S , G , H ϕ L ( L , G ) ϕ J ( J , L , S ) ϕ H ( H , G , J ) τ 3 ( G , S ) = ⋯ = τ 7 ( J ) ( 因 为 贝 叶 斯 网 络 中 的 势 函 数 就 是 条 件 概 率 , 无 需 归 一 化 , 所 以 t a u 7 ( J ) 就 是 P ( J ) \begin{aligned} P(J) &= \sum_{L,S,G,H,I,D,C} \phi_C(C)\phi_D(C,D)\phi_I(I)\phi_G(G,I,D)\phi_S(S,I)\phi_L(L,G)\phi_J(J,L,S)\phi_H(H,G,J) \\ &= \sum_{L,S,G,H,I,D}\phi_I(I)\phi_G(G,I,D)\phi_S(S,I)\phi_L(L,G)\phi_J(J,L,S)\phi_H(H,G,J)\sum_{C}\phi_C(C)\phi_D(C,D) \\ &= \sum_{L,S,G,H,I,D}\phi_I(I)\phi_G(G,I,D)\phi_S(S,I)\phi_L(L,G)\phi_J(J,L,S)\phi_H(H,G,J)\tau_1(D) \\ &= \sum_{L,S,G,H,I}\phi_I(I)\phi_S(S,I)\phi_L(L,G)\phi_J(J,L,S)\phi_H(H,G,J)\sum_{D}\phi_G(G,I,D)\tau_1(D) \\ &= \sum_{L,S,G,H,I}\phi_I(I)\phi_S(S,I)\phi_L(L,G)\phi_J(J,L,S)\phi_H(H,G,J)\tau_2(G,I) \\ &= \sum_{L,S,G,H}\phi_L(L,G)\phi_J(J,L,S)\phi_H(H,G,J)\sum_{I}\phi_I(I)\phi_S(S,I)\tau_2(G,I) \\ &= \sum_{L,S,G,H}\phi_L(L,G)\phi_J(J,L,S)\phi_H(H,G,J)\tau_3(G,S) \\ &= \cdots \\ &= \tau_7(J) {(因为贝叶斯网络中的势函数就是条件概率, 无需归一化, 所以tau_7(J)就是P(J)}\\ \end{aligned} P(J)​=L,S,G,H,I,D,C∑​ϕC​(C)ϕD​(C,D)ϕI​(I)ϕG​(G,I,D)ϕS​(S,I)ϕL​(L,G)ϕJ​(J,L,S)ϕH​(H,G,J)=L,S,G,H,I,D∑​ϕI​(I)ϕG​(G,I,D)ϕS​(S,I)ϕL​(L,G)ϕJ​(J,L,S)ϕH​(H,G,J)C∑​ϕC​(C)ϕD​(C,D)=L,S,G,H,I,D∑​ϕI​(I)ϕG​(G,I,D)ϕS​(S,I)ϕL​(L,G)ϕJ​(J,L,S)ϕH​(H,G,J)τ1​(D)=L,S,G,H,I∑​ϕI​(I)ϕS​(S,I)ϕL​(L,G)ϕJ​(J,L,S)ϕH​(H,G,J)D∑​ϕG​(G,I,D)τ1​(D)=L,S,G,H,I∑​ϕI​(I)ϕS​(S,I)ϕL​(L,G)ϕJ​(J,L,S)ϕH​(H,G,J)τ2​(G,I)=L,S,G,H∑​ϕL​(L,G)ϕJ​(J,L,S)ϕH​(H,G,J)I∑​ϕI​(I)ϕS​(S,I)τ2​(G,I)=L,S,G,H∑​ϕL​(L,G)ϕJ​(J,L,S)ϕH​(H,G,J)τ3​(G,S)=⋯=τ7​(J)(因为贝叶斯网络中的势函数就是条件概率,无需归一化,所以tau7​(J)就是P(J)​

C,D,I,H,G,S,L

步骤消元变量涉及因子涉及变量新因子
1C ϕ C ( C ) ϕ D ( C , D ) \phi_C(C)\phi_D(C,D) ϕC​(C)ϕD​(C,D)C,D τ 1 ( D ) \tau_1(D) τ1​(D)
2D τ 1 ( D ) ϕ G ( G , I , D ) \tau_1(D)\phi_G(G,I,D) τ1​(D)ϕG​(G,I,D)G,I,D τ 2 ( G , I ) \tau_2(G,I) τ2​(G,I)
3I τ 2 ( G , I ) ϕ I ( I ) ϕ S ( S , I ) \tau_2(G,I)\phi_I(I)\phi_S(S,I) τ2​(G,I)ϕI​(I)ϕS​(S,I)G,S,I τ 3 ( G , S ) \tau_3(G,S) τ3​(G,S)
4H ϕ H ( H , G , J ) \phi_H(H,G,J) ϕH​(H,G,J)H,G,J τ 4 ( G , J ) \tau_4(G,J) τ4​(G,J)
5G τ 3 ( G , S ) τ 4 ( G , J ) ϕ L ( L , G ) \tau_3(G,S)\tau_4(G,J)\phi_L(L,G) τ3​(G,S)τ4​(G,J)ϕL​(L,G)S,G,J,L τ 5 ( S , L , J ) \tau_5(S,L,J) τ5​(S,L,J)
6S τ 5 ( S , L , J ) ϕ J ( J , L , S ) \tau_5(S,L,J)\phi_J(J,L,S) τ5​(S,L,J)ϕJ​(J,L,S)S,L,J τ 6 ( L , J ) \tau_6(L,J) τ6​(L,J)
7L τ 6 ( L , J ) \tau_6(L,J) τ6​(L,J)L,J τ 7 ( J ) \tau_7(J) τ7​(J)

消元顺序2

G,I,S,L,H,C,D

这里就不再写公式了, 直接用表格展示

步骤消元变量涉及因子涉及变量新因子
1G ϕ G ( G , I , D ) ϕ L ( L , G ) ϕ H ( H , G , J ) \phi_G(G,I,D)\phi_L(L,G)\phi_H(H,G,J) ϕG​(G,I,D)ϕL​(L,G)ϕH​(H,G,J)G,I,D,L,H,J τ 1 ( I , D , L , H , J ) \tau_1(I,D,L,H,J) τ1​(I,D,L,H,J)
2I ϕ I ( I ) ϕ S ( S , I ) τ 1 ( I , D , L , H , J ) \phi_I(I)\phi_S(S,I)\tau_1(I,D,L,H,J) ϕI​(I)ϕS​(S,I)τ1​(I,D,L,H,J)S,I,D,L,H,J τ 2 ( D , L , S , H , J ) \tau_2(D,L,S,H,J) τ2​(D,L,S,H,J)
3S ϕ J ( J , L , S ) τ 2 ( D , L , S , H , J ) \phi_J(J,L,S)\tau_2(D,L,S,H,J) ϕJ​(J,L,S)τ2​(D,L,S,H,J)S,D,L,H,J τ 3 ( D , L , H , J ) \tau_3(D,L,H,J) τ3​(D,L,H,J)
4L τ 3 ( D , L , H , J ) \tau_3(D,L,H,J) τ3​(D,L,H,J)D,L,H,J τ 4 ( D , H , J ) \tau_4(D,H,J) τ4​(D,H,J)
5H τ 4 ( D , H , J ) \tau_4(D,H,J) τ4​(D,H,J)D,H,J τ 5 ( D , J ) \tau_5(D,J) τ5​(D,J)
6C τ 5 ( D , J ) ϕ C ( C ) ϕ D ( C , D ) \tau_5(D,J)\phi_C(C)\phi_D(C,D) τ5​(D,J)ϕC​(C)ϕD​(C,D)D,J,C τ 6 ( D , J ) \tau_6(D,J) τ6​(D,J)
7D τ 6 ( D , J ) \tau_6(D,J) τ6​(D,J)D,J τ 7 ( J ) \tau_7(J) τ7​(J)

可以看到, 这种消元方法:在前面几步的时候运算量很大, 就有可能增加算法的复杂度, 但是具体增加还是减少要具体分析, 下面会分析算法复杂度;

算法:变量消元法

S u m − P r o d u c t − V E ( Φ , Z ) Sum-Product-VE(\Phi,Z) Sum−Product−VE(Φ,Z)
/ i n p u t : Φ 为 因 子 集 , Z 为 消 元 变 量 集 1 令 变 量 消 元 顺 序 为 Z 1 , … , Z k 2 f o r i = 1 … k Φ ← S u m − P r o d u c t − E l i m i n a t e − V a r ( Φ , Z i ) 每次消一个元 3 r e t u r n ∏ ϕ ∈ Φ ϕ \begin{aligned} &\qquad /input: \Phi为因子集, Z为消元变量集\\ &\mathbf{1} 令变量消元顺序为Z_1, \ldots, Z_k\\ &\mathbf{2} \quad for \quad i=1\ldots k \\ & \qquad\qquad \Phi \leftarrow Sum-Product-Eliminate-Var(\Phi, Z_i) &\text{每次消一个元}\\ &\mathbf{3} \quad return \prod_{\phi\in\Phi}\phi \end{aligned} ​/input:Φ为因子集,Z为消元变量集1令变量消元顺序为Z1​,…,Zk​2fori=1…kΦ←Sum−Product−Eliminate−Var(Φ,Zi​)3returnϕ∈Φ∏​ϕ​每次消一个元​

S u m − P r o d u c t − E l i m i n a t e − V a r ( Φ , Z ) Sum-Product-Eliminate-Var(\Phi, Z) Sum−Product−Eliminate−Var(Φ,Z)
/ i n p u t : Φ 为 因 子 集 , Z 为 消 元 变 量 1 Φ ′ ← { ϕ ∈ Φ : Z ∈ S c o p e [ ϕ ] } 从因子集中挑出与消元变量Z有关的因子 2 Φ ′ ′ ← Φ − Φ ′ 因子集做差:与消元变量Z无关的因子 3 ψ ← ∏ ϕ ∈ Φ ′ ϕ 对每种情况的势函数做连乘 4 τ ← ∑ Z ψ 将所有情况加起来 5 r e t u r n    Φ ′ ′ ∪ { τ } 返回消元后的因子集 \\ \begin{aligned} &\qquad /input: \Phi为因子集, Z为消元变量\\ &\mathbf{1} \Phi' \leftarrow \{\phi\in\Phi:Z\in Scope[\phi]\}& \text {从因子集中挑出与消元变量Z有关的因子}\\ &\mathbf{2} \Phi'' \leftarrow \Phi-\Phi'&\text{因子集做差:与消元变量Z无关的因子}\\ &\mathbf{3} \psi \leftarrow \prod_{\phi\in\Phi'}\phi &\text{对每种情况的势函数做连乘}\\ &\mathbf{4} \tau \leftarrow\sum_{Z}\psi &\text{将所有情况加起来}\\ &\mathbf{5} \quad return \;\Phi'' \cup \{\tau\}&\text{返回消元后的因子集} \end{aligned} ​/input:Φ为因子集,Z为消元变量1Φ′←{ϕ∈Φ:Z∈Scope[ϕ]}2Φ′′←Φ−Φ′3ψ←ϕ∈Φ′∏​ϕ4τ←Z∑​ψ5returnΦ′′∪{τ}​从因子集中挑出与消元变量Z有关的因子因子集做差:与消元变量Z无关的因子对每种情况的势函数做连乘将所有情况加起来返回消元后的因子集​

算法复杂度分析

团树传播算法

问题: 既然是一样的, 为什么要创建一个这样的算法?

因为当实现变量消元算法的时候, 其实要构造图来进行变量消元, 而这个图经过优化之后就是团树传播算法;

聚类图

对于给定的概率图模型, 因子集 Φ = { ϕ } \Phi = \{\phi\} Φ={ϕ},变量集为 χ \chi χ。聚类图是定义在概率图模型上的一个无向图, 每个节点 i i i是变量集的子集, 即 C i ⊆ χ C_i\subseteq\chi Ci​⊆χ。 聚类图必须满足族保持, 即每个因子 ϕ \phi ϕ必须与一个节点 C i C_i Ci​关联, 使得 S c o p e [ ϕ ] ⊆ C i Scope[\phi]\subseteq C_i Scope[ϕ]⊆Ci​。 一对节点 C i C_i Ci​和 C j C_j Cj​之间的每条边与一个割集 S i , j S_{i,j} Si,j​关联, 其中 S i , j ⊆ C i ∩ C j S_{i,j}\subseteq C_i\cap C_j Si,j​⊆Ci​∩Cj​;

聚类图例子

由变量消元法导出团树传播算法

贝叶斯网络的图

步骤消元变量涉及因子涉及变量新因子
1C ϕ C ( C ) ϕ D ( C , D ) \phi_C(C)\phi_D(C,D) ϕC​(C)ϕD​(C,D)C,D τ 1 ( D ) \tau_1(D) τ1​(D)
2D τ 1 ( D ) ϕ G ( G , I , D ) \tau_1(D)\phi_G(G,I,D) τ1​(D)ϕG​(G,I,D)G,I,D τ 2 ( G , I ) \tau_2(G,I) τ2​(G,I)
3I τ 2 ( G , I ) ϕ I ( I ) ϕ S ( S , I ) \tau_2(G,I)\phi_I(I)\phi_S(S,I) τ2​(G,I)ϕI​(I)ϕS​(S,I)G,S,I τ 3 ( G , S ) \tau_3(G,S) τ3​(G,S)
4H ϕ H ( H , G , J ) \phi_H(H,G,J) ϕH​(H,G,J)H,G,J τ 4 ( G , J ) \tau_4(G,J) τ4​(G,J)
5G τ 3 ( G , S ) τ 4 ( G , J ) ϕ L ( L , G ) \tau_3(G,S)\tau_4(G,J)\phi_L(L,G) τ3​(G,S)τ4​(G,J)ϕL​(L,G)S,G,J,L τ 5 ( S , L , J ) \tau_5(S,L,J) τ5​(S,L,J)
6S τ 5 ( S , L , J ) ϕ J ( J , L , S ) \tau_5(S,L,J)\phi_J(J,L,S) τ5​(S,L,J)ϕJ​(J,L,S)S,L,J τ 6 ( L , J ) \tau_6(L,J) τ6​(L,J)
7L τ 6 ( L , J ) \tau_6(L,J) τ6​(L,J)L,J τ 7 ( J ) \tau_7(J) τ7​(J)

团树传播算法图

注意:节点1虽然看上去是C、D, 但是C、D本身没有含义, 节点其实是 ϕ C ( C ) ϕ D ( C , D ) \phi_C(C)\phi_D(C,D) ϕC​(C)ϕD​(C,D)

结合定义深刻理解聚类图的构造

深刻理解新因子就是消息传递

回想变量消元法的过程, 如第一步:消去变量C, 那就对涉及C、D的因子做乘积求和, 然后C的信息就蕴含在新因子 τ 1 ( D ) \tau_1(D) τ1​(D)中了;

那么后续第二步, 当想消去变量D的时候, 因为与变量C有关的那部分D的信息蕴含在 τ 1 ( D ) \tau_1(D) τ1​(D)中了, 所以这个因子就作为一个消息传递到2:D、I、G中;

关键还是要理解前面的注意:

进而:

又因为:

由变量消元法构造的聚类图满足什么性质?

如果聚类图满足上述三个性质, 则聚类图定义为团树;

显然, 由变量消元法得到的聚类图为团树;

算法: 团树传播算法

(算法)团树传播算法

  • 利用变量消元构造团树, 团树节点势函数初始化
  • 选取变量X所在的节点作为根节点
  • 计算叶子节点到根节点的消息
  • 根节点的势函数乘以来自邻接点的消息
  • 计算变量X所在节点的边缘概率

注意 之所以能把X作为根节点, 是因为树就是有这个特性, 树的任意一个节点都能作为根节点;

说白了就是变量消元法的程序实现罢了;

如何求概率图所有节点的边缘概率

一种很自然的想法就是, 对所有节点作为根节点, 多次计算边缘概率;

但是有更好的方法, 基于树的特性:

画图来说明:

传播两次

变量消元法与团树传播算法就是这样了, 继续下一章吧!pd的Machine Learning

标签:tau,phi,变量,--,sum,团树,消元,节点,元法
来源: https://blog.csdn.net/weixin_52185313/article/details/121025553