[概率图模型]最大后验概率(MAP)变量消除实例

文章详细介绍了如何使用最大-积变量消除算法(Max-ProductMessagePassing)来计算给定网络的MAP(最大后验概率)值。通过逐步消除网络中的变量,如学生网络中的S(学生状态)、I(兴趣)、D(难度)、L(学习)和G(成绩),最终计算出整个系统的最大概率。该过程涉及矩阵乘法和选取最大值的操作,展示了概率推理在处理复杂系统中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以学生网络为例 :
概率图模型

.

求 MAP

最大-积 变量消除算法的顺序为:
概率图模型变量消除顺序

联合概率

联合概率为:P(S,I,D,L,G)=ϕs(I,S)∗ϕI(I)∗ϕD(D)∗ϕG(G,D,I)∗ϕL(L)P(S,I,D,L,G)=\phi_s(I,S)*\phi_I(I)*\phi_D(D)*\phi_G(G,D,I)*\phi_L(L)P(S,I,D,L,G)=ϕs(I,S)ϕI(I)ϕD(D)ϕG(G,D,I)ϕL(L)
每个ϕ\phiϕ对应于图中节点的条件概率表。

本文的两个约定
  • a. 因子表示为矩阵形式,因子间相乘对应于矩阵相乘,这里的矩阵乘法,是指待消除变量取值相同的元素相乘,如
    ϕI(I)∗τ1(I)=[0.7,0.3]∗[0.95,0.8]=[0.7∗0.95,0.3∗0.8]=[0.665,0.024]\phi_I(I)*\tau_1(I) =[0.7,0.3]*[0.95,0.8]=[0.7*0.95,0.3*0.8]=[0.665,0.024]ϕI(I)τ1(I)=[0.7,0.3][0.95,0.8]=[0.70.95,0.30.8]=[0.665,0.024]
  • b. maxxmax_xmaxx。对于其它变量的各种组合,尝试消除变量x的可能取值,得到的各种组合最大值。
    如对于条件概率表:
    概率图条件概率表
    要消除S,当S=s0S=s^0S=s0i0i^0i0 取最大值 0.95,当S=s1S=s^1S=s1i1i^1i1 取最大值 0.8
    表示为:
    maxS([0.95,0.050.2,0.8])=[0.95,0.8]max_S(\begin{bmatrix} 0.95,0.05\\ 0.2,0.8\\ \end{bmatrix})=[0.95,0.8]maxS([0.95,0.050.2,0.8])=[0.95,0.8]
消除步骤
    1. 消除 S
      τ1(I)=maxS(ϕS(I,S))=maxS([0.95,0.050.2,0.8])=[0.95,0.8]\tau_1(I)=max_S(\phi_S(I,S))=max_S(\begin{bmatrix} 0.95,0.05\\ 0.2,0.8\\ \end{bmatrix})=[0.95,0.8]τ1(I)=maxS(ϕS(I,S))=maxS([0.95,0.050.2,0.8])=[0.95,0.8]
    1. 消除 I
      τ2(G,D)=maxI(ϕI(I)∗τ1(I)∗ϕG(G,I,D))=[0.7,0.3]∗[0.95,0.8]∗maxGD([0.3,0.4,0.30.05,0.25,0.70.9,0.08,0.020.5,0.3,0.2])=[0.665,0.024]∗maxGD([0.3,0.4,0.30.05,0.25,0.70.9,0.08,0.020.5,0.3,0.2])=maxGD([0.3∗0.665,0.4∗0.665,0.3∗0.6650.05∗0.665,0.25∗0.665,0.7∗0.6650.9∗0.024,0.08∗0.024,0.02∗0.0240.5∗0.024,0.3∗0.024,0.2∗0.024])=[0.3∗0.665,0.4∗0.665,0.3∗0.6650.05∗0.665,0.25∗0.665,0.7∗0.665]=[0.3,0.4,0.30.05,0.25,0.7]∗0.665\tau_2(G,D)=max_I(\phi_I(I)*\tau_1(I)*\phi_G(G,I,D))=[0.7,0.3]*[0.95,0.8]*max_{GD}(\begin{bmatrix} 0.3,0.4,0.3\\ 0.05,0.25,0.7\\ 0.9,0.08,0.02\\ 0.5,0.3,0.2\\ \end{bmatrix})=[0.665,0.024]*max_{GD}(\begin{bmatrix} 0.3,0.4,0.3\\ 0.05,0.25,0.7\\ 0.9,0.08,0.02\\ 0.5,0.3,0.2\\ \end{bmatrix})=max_{GD}(\begin{bmatrix} 0.3*0.665,0.4*0.665,0.3*0.665\\ 0.05*0.665,0.25*0.665,0.7*0.665\\ 0.9*0.024,0.08*0.024,0.02*0.024\\ 0.5*0.024,0.3*0.024,0.2*0.024\\ \end{bmatrix})=\begin{bmatrix} 0.3*0.665,0.4*0.665,0.3*0.665\\ 0.05*0.665,0.25*0.665,0.7*0.665\\ \end{bmatrix}=\begin{bmatrix} 0.3,0.4,0.3\\ 0.05,0.25,0.7\\ \end{bmatrix}*0.665τ2(G,D)=maxI(ϕI(I)τ1(I)ϕG(G,I,D))=[0.7,0.3][0.95,0.8]maxGD(0.3,0.4,0.30.05,0.25,0.70.9,0.08,0.020.5,0.3,0.2)=[0.665,0.024]maxGD(0.3,0.4,0.30.05,0.25,0.70.9,0.08,0.020.5,0.3,0.2)=maxGD(0.30.665,0.40.665,0.30.6650.050.665,0.250.665,0.70.6650.90.024,0.080.024,0.020.0240.50.024,0.30.024,0.20.024)=[0.30.665,0.40.665,0.30.6650.050.665,0.250.665,0.70.665]=[0.3,0.4,0.30.05,0.25,0.7]0.665
      这里正好巧了,都是取I=i0I = i^0I=i0时 G和D的各种联合概率最大,所以又把 0.665提出来,减少运算,因为常数不影响比较。
    1. 消除 D
      τ3(G)=maxD(ϕD(D)∗τ2(G,D))=maxD([0.6,0.4]∗[0.3,0.4,0.30.05,0.25,0.7]∗0.665)=maxD([0.18,0.24,0.180.02,0.1,0.28]∗0.665)=[0.18,0.24,0.28]∗0.665\tau_3(G)=max_D(\phi_D(D)*\tau_2(G,D))=max_D([0.6, 0.4]*\begin{bmatrix} 0.3,0.4,0.3\\ 0.05,0.25,0.7\\ \end{bmatrix}*0.665)=max_D(\begin{bmatrix} 0.18,0.24,0.18\\ 0.02,0.1,0.28\\ \end{bmatrix}*0.665)=[0.18,0.24,0.28]*0.665τ3(G)=maxD(ϕD(D)τ2(G,D))=maxD([0.6,0.4][0.3,0.4,0.30.05,0.25,0.7]0.665)=maxD([0.18,0.24,0.180.02,0.1,0.28]0.665)=[0.18,0.24,0.28]0.665
    1. 消除 L
      τ4(G)=maxL(ϕL(L,G))=maxL([0.1,0.90.4,0.60.99,0.01])=[0.9,0.6,0.99]\tau_4(G)=max_L(\phi_L(L,G))=max_L(\begin{bmatrix} 0.1,0.9\\ 0.4,0.6\\ 0.99,0.01\\ \end{bmatrix})=[0.9,0.6,0.99]τ4(G)=maxL(ϕL(L,G))=maxL(0.1,0.90.4,0.60.99,0.01)=[0.9,0.6,0.99]
    1. 消除 G
      τ5()=maxG(τ3(G)∗τ4(G))=maxG([0.18,0.24,0.28]∗0.665∗[0.9,0.6,0.99])=maxG([0.162,0.144,0.277]∗0.665)=0.277∗0.665=0.184\tau_5()=max_G(\tau3(G)*\tau4(G))=max_G([0.18,0.24,0.28]*0.665*[0.9,0.6,0.99])=max_G([0.162,0.144,0.277]*0.665)=0.277*0.665=0.184τ5()=maxG(τ3(G)τ4(G))=maxG([0.18,0.24,0.28]0.665[0.9,0.6,0.99])=maxG([0.162,0.144,0.277]0.665)=0.2770.665=0.184

MAP 即 maxSIDLGP(S,I,D,L,G)=0.184max_{SIDLG}P(S,I,D,L,G)=0.184maxSIDLGP(S,I,D,L,G)=0.184

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值