以学生网络为例 :
.
求 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.
m
a
x
x
max_x
maxx。对于其它变量的各种组合,尝试消除变量x的可能取值,得到的各种组合最大值。
如对于条件概率表:
要消除S,当 S = s 0 S=s^0 S=s0 时 i 0 i^0 i0 取最大值 0.95,当 S = s 1 S=s^1 S=s1 时 i 1 i^1 i1 取最大值 0.8
表示为:
m a x S ( [ 0.95 , 0.05 0.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 ) = m a x S ( ϕ S ( I , S ) ) = m a x S ( [ 0.95 , 0.05 0.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 ) = m a x I ( ϕ I ( I ) ∗ τ 1 ( I ) ∗ ϕ G ( G , I , D ) ) = [ 0.7 , 0.3 ] ∗ [ 0.95 , 0.8 ] ∗ m a x G D ( [ 0.3 , 0.4 , 0.3 0.05 , 0.25 , 0.7 0.9 , 0.08 , 0.02 0.5 , 0.3 , 0.2 ] ) = [ 0.665 , 0.024 ] ∗ m a x G D ( [ 0.3 , 0.4 , 0.3 0.05 , 0.25 , 0.7 0.9 , 0.08 , 0.02 0.5 , 0.3 , 0.2 ] ) = m a x G D ( [ 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 ] ) = [ 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.3 , 0.4 , 0.3 0.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 = i 0 I = i^0 I=i0时 G和D的各种联合概率最大,所以又把 0.665提出来,减少运算,因为常数不影响比较。
- 消除 I
-
- 消除 D
τ 3 ( G ) = m a x D ( ϕ D ( D ) ∗ τ 2 ( G , D ) ) = m a x D ( [ 0.6 , 0.4 ] ∗ [ 0.3 , 0.4 , 0.3 0.05 , 0.25 , 0.7 ] ∗ 0.665 ) = m a x D ( [ 0.18 , 0.24 , 0.18 0.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 ) = m a x L ( ϕ L ( L , G ) ) = m a x L ( [ 0.1 , 0.9 0.4 , 0.6 0.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 ( ) = m a x G ( τ 3 ( G ) ∗ τ 4 ( G ) ) = m a x G ( [ 0.18 , 0.24 , 0.28 ] ∗ 0.665 ∗ [ 0.9 , 0.6 , 0.99 ] ) = m a x G ( [ 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 即 m a x S I D L G P ( S , I , D , L , G ) = 0.184 max_{SIDLG}P(S,I,D,L,G)=0.184 maxSIDLGP(S,I,D,L,G)=0.184