以学生网络为例 :
.
求 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.7∗0.95,0.3∗0.8]=[0.665,0.024] - b. maxxmax_xmaxx。对于其它变量的各种组合,尝试消除变量x的可能取值,得到的各种组合最大值。
如对于条件概率表:
要消除S,当S=s0S=s^0S=s0 时 i0i^0i0 取最大值 0.95,当S=s1S=s^1S=s1 时 i1i^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]
消除步骤
-
- 消除 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]
- 消除 S
-
- 消除 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.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
这里正好巧了,都是取I=i0I = i^0I=i0时 G和D的各种联合概率最大,所以又把 0.665提出来,减少运算,因为常数不影响比较。
- 消除 I
-
- 消除 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
- 消除 D
-
- 消除 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]
- 消除 L
-
- 消除 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.277∗0.665=0.184
- 消除 G
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