注:这是全文的第三部分,前文传送门:
PRML读书会第五期——概率图模型(Graphical Models)【上】
PRML读书会第五期——概率图模型(Graphical Models)【中】
Hammesley-Clifford定理:
M R F ⇔ G i b b s MRF\Leftrightarrow Gibbs MRF⇔Gibbs
定义1 MRF
p ( x i ∣ X ∖ { x i } ) = p ( x i ∣ n e i ) p(x_i|X\setminus \{x_i\})=p(x_i|ne_i) p(xi∣X∖{xi})=p(xi∣nei)
定义2 Gibbs
p ( X ) = 1 Z ∏ C ψ C ( X C ) Z = ∑ X ∏ C ψ C ( X C ) p(X)=\dfrac{1}{Z}\prod\limits_C \psi_C(X_C)\\ Z=\sum\limits_X\prod\limits_C\psi_C(X_C) p(X)=Z1C∏ψC(XC)Z=X∑C∏ψC(XC)
注:
这里给出了马尔可夫随机场(Markov Random Field,MRF)和吉布斯分布(Gibbs)的定义
由于马尔可夫随机场的三条马尔可夫性等价,这里选取的是局部马尔可夫性,即 x i ⊥ ⊥ X ∖ ( x i ∪ n e i ) ∣ n e i x_i\perp\!\!\!\perp X\setminus (x_i\cup ne_i)|ne_i xi⊥⊥X∖(xi∪nei)∣nei,在此基础上,由于二者的独立,可以得到:
p ( x i ∣ n e i ) = p ( x i ∣ n e i , X ∖ ( x i ∪ n e i ) ) = p ( x i ∣ X ∖ { x i } ) p(x_i|ne_i)=p(x_i|ne_i,X\setminus (x_i\cup ne_i))=p(x_i|X\setminus \{x_i\}) p(xi∣nei)=p(xi∣nei,X∖(xi∪nei))=p(xi∣X∖{xi})此处吉布斯分布的因子分解中, C C C指团(不一定是最大团)
记号与说明:
下文对变量集合与节点集合做符号上的区分: X X X指全体随机变量, G G G指图的全部节点,但不对变量与节点做符号上的区分, x i x_i xi即可以指随机变量 x i x_i xi,又可以指随机变量对应的节点;同时记所有团的集合为 C G C_G CG.
下文中,将所有随机变量当作离散型随机变量处理。对于连续性随机变量,将 ∑ \sum ∑替换为 ∫ \int ∫即可。
由于下文为连续的推导过程,处于简洁考虑,所有式子默认采用 ( ∗ ) (*) (∗)标注,式前的 ( ∗ ) (*) (∗)默认指上一个式子。
只要证 p ( x i ∣ n e i ) = p ( x i ∣ X ∖ { x i } ) p(x_i|ne_i)=p(x_i|X\setminus \{x_i\}) p(xi∣nei)=p(xi∣X∖{xi}).
记 D i ≜ n e i ∪ x i D_i\triangleq ne_i\cup x_i Di≜nei∪xi(此处指节点集合),则由贝叶斯法则和加法法则得:
p ( x i ∣ n e i ) = p ( x i , n e i ) p ( n e i ) = ∑ G ∖ D i p ( X ) ∑ G ∖ n e i p ( X ) ( ∗ ) p(x_i|ne_i)=\dfrac{p(x_i,ne_i)}{p(ne_i)}=\dfrac{\sum\limits_{G\setminus D_i}p(X)}{\sum\limits_{G\setminus ne_i}p(X)}(*) p(xi∣nei)=p(nei)p(xi,nei)=G∖nei∑p(X)G∖Di∑p(X)(∗)
由定义知, G ∖ n e i = G ∖ ( D i ∖ { x i } ) = x i ∪ ( G ∖ D i ) G\setminus ne_i=G\setminus (D_i\setminus \{x_i\})={x_i}\cup(G\setminus D_i) G∖nei=G∖(Di∖{xi})=xi∪(G∖Di),因此 ∑ G ∖ n e i \sum\limits_{G\setminus ne_i} G∖nei∑可写作 ∑ x i ∑ G ∖ D i \sum\limits_{x_i}\sum\limits_{G\setminus D_i} xi∑G∖Di∑.
再带入Gibbs中 p ( X ) p(X) p(X)的表达,得:
( ∗ ) = ∑ G ∖ D i p ( X ) ∑ x i ∑ G ∖ D i p ( X ) = ∑ G ∖ D i ∏ C ∈ C G ψ C ( X C ) ∑ x i ∑ G ∖ D i ∏ C ∈ C G ψ C ( X C ) ( ∗ ) (*)=\dfrac{\sum\limits_{G\setminus D_i}p(X)}{\sum\limits_{x_i}\sum\limits_{G\setminus D_i}p(X)}=\dfrac{\sum\limits_{G\setminus D_i}\prod\limits_{C\in C_G}\psi_C(X_C)}{\sum\limits_{x_i}\sum\limits_{G\setminus D_i}\prod\limits_{C\in C_G}\psi_C(X_C)}(*) (∗)=xi∑G∖Di∑p(X)G∖Di∑p(X)=xi∑G∖Di∑C∈CG∏ψC(XC)G∖Di∑C∈CG∏ψC(XC)(∗)
如图,我们将 C G C_G CG按照是否含有 x i x_i xi进行分组,记
C i ≜ { C ∣ C ∈ C G , x i ∈ C } , R i ≜ { C ∣ C ∈ C G , x i ∉ C } C_i\triangleq\{C|C\in C_G,x_i\in C\},R_i\triangleq\{C|C\in C_G,x_i\notin C\} Ci≜{C∣C∈CG,xi∈C},Ri≜{C∣C∈CG,xi∈/C}
则
∏ C ∈ C G ψ C ( X C ) = ∏ C ∈ C i ψ C ( X C ) ∏ C ∈ R i ψ C ( X C ) \prod\limits_{C\in C_G}\psi_C(X_C)=\prod\limits_{C\in C_i}\psi_C(X_C)\prod\limits_{C\in R_i}\psi_C(X_C) C∈CG∏ψC(XC)=C∈Ci∏ψC(XC)C∈Ri∏ψC(XC)
可以证明: ∀ x ∈ C i , x ∉ G ∖ D i \forall x\in C_i,x\notin G\setminus D_i ∀x∈Ci,x∈/G∖Di,即 C i C_i Ci内的节点与 G G G中 D i D_i Di外的节点无关。
只要证 ∀ x ∈ C i , x ∈ D i \forall x\in C_i,x\in D_i ∀x∈Ci,x∈Di.根据团的定义,团内节点两两相连。又 x i ∈ C i x_i\in C_i xi∈Ci,则 ∀ x ∈ C i ( x ≠ x i ) \forall x\in C_i(x\not=x_i) ∀x∈Ci(x=xi), x x x与 x i x_i xi直接相连。
根据 n e i ne_i nei的定义,与 x i x_i xi直接相连的节点都是 x i x_i xi的邻居。则 x ∈ n e i x\in ne_i x∈nei.又 n e i ⊂ D i ne_i\sub D_i nei⊂Di,所以 x ∈ D i x\in D_i x∈Di.当 x = x i x=x_i x=xi时, x i ∈ D i x_i\in D_i xi∈Di也符合。即证。
因此, C i C_i Ci与 G ∖ D i G\setminus D_i G∖Di无关,因子 ∏ C ∈ C i ψ C ( X C ) \prod\limits_{C\in C_i}\psi_C(X_C) C∈Ci∏ψC(XC)可以提到 ∑ G ∖ D i \sum\limits_{G\setminus D_i} G∖Di∑外,同时, R i R_i Ri与 x i x_i xi无关,可将其提到 ∑ x i \sum\limits_{x_i} xi∑外,得:
( ∗ ) = ∑ G ∖ D i ∏ C ∈ C i ψ C ( X C ) ∏ C ∈ R i ψ C ( X C ) ∑ x i ∑ G ∖ D i ∏ C ∈ C i ψ C ( X C ) ∏ C ∈ R i ψ C ( X C ) = ∏ C ∈ C i ψ C ( X C ) ∑ G ∖ D i ∏ C ∈ R i ψ C ( X C ) ∑ x i ∏ C ∈ C i ψ C ( X C ) ∑ G ∖ D i ∏ C ∈ R i ψ C ( X C ) = ∏ C ∈ C i ψ C ( X C ) ∑ G ∖ D i ∏ C ∈ R i ψ C ( X C ) [ ∑ G ∖ D i ∏ C ∈ R i ψ C ( X C ) ] [ ∑ x i ∏ C ∈ C i ψ C ( X C ) ] = ∏ C ∈ C i ψ C ( X C ) ∑ x i ∏ C ∈ C i ψ C ( X C ) ( ∗ ) (*)=\dfrac{\sum\limits_{G\setminus D_i}\prod\limits_{C\in C_i}\psi_C(X_C)\prod\limits_{C\in R_i}\psi_C(X_C)}{\sum\limits_{x_i}\sum\limits_{G\setminus D_i}\prod\limits_{C\in C_i}\psi_C(X_C)\prod\limits_{C\in R_i}\psi_C(X_C)}\\ =\dfrac{\prod\limits_{C\in C_i}\psi_C(X_C)\sum\limits_{G\setminus D_i}\prod\limits_{C\in R_i}\psi_C(X_C)}{\sum\limits_{x_i}\prod\limits_{C\in C_i}\psi_C(X_C)\sum\limits_{G\setminus D_i}\prod\limits_{C\in R_i}\psi_C(X_C)}\\ =\dfrac{\prod\limits_{C\in C_i}\psi_C(X_C)\sum\limits_{G\setminus D_i}\prod\limits_{C\in R_i}\psi_C(X_C)}{\Big[\sum\limits_{G\setminus D_i}\prod\limits_{C\in R_i}\psi_C(X_C)\Big]\Big[\sum\limits_{x_i}\prod\limits_{C\in C_i}\psi_C(X_C)\Big]}\\ =\dfrac{\prod\limits_{C\in C_i}\psi_C(X_C)}{\sum\limits_{x_i}\prod\limits_{C\in C_i}\psi_C(X_C)}(*) (∗)=xi∑G∖Di∑C∈Ci∏ψC(XC)C∈Ri∏ψC(XC)G∖Di∑C∈Ci∏ψC(XC)C∈Ri∏ψC(XC)=xi∑C∈Ci∏ψC(XC)G∖Di∑C∈Ri∏ψC(XC)C∈Ci∏ψC(XC)G∖Di∑C∈Ri∏ψC(XC)=[G∖Di∑C∈Ri∏ψC(XC)][xi∑C∈Ci∏ψC(XC)]C∈Ci∏ψC(XC)G∖Di∑C∈Ri∏ψC(XC)=xi∑C∈Ci∏ψC(XC)C∈Ci∏ψC(XC)(∗)
其中最后一步进行了约分。
为了得到目标的形式,向分子分母同乘 ∏ C ∈ R i ψ C ( X C ) \prod\limits_{C\in R_i}\psi_C(X_C) C∈Ri∏ψC(XC)得:
( ∗ ) = ∏ C ∈ C i ψ C ( X C ) ∏ C ∈ R i ψ C ( X C ) ∑ x i ∏ C ∈ C i ψ C ( X C ) ∏ C ∈ R i ψ C ( X C ) = ∏ C ∈ C G ψ C ( X C ) ∑ x i ∏ C ∈ C G ψ C ( X C ) = p ( X ) ∑ x i p ( X ) = p ( X ) p ( X ∖ { x i } ) = p ( X ∖ { x i } ) p ( x i ∣ X ∖ { x i } ) p ( X ∖ { x i } ) = p ( x i ∣ X ∖ { x i } ) (*)=\dfrac{\prod\limits_{C\in C_i}\psi_C(X_C)\prod\limits_{C\in R_i}\psi_C(X_C)}{\sum\limits_{x_i}\prod\limits_{C\in C_i}\psi_C(X_C)\prod\limits_{C\in R_i}\psi_C(X_C)}\\ =\dfrac{\prod\limits_{C\in C_G}\psi_C(X_C)}{\sum\limits_{x_i}\prod\limits_{C\in C_G}\psi_C(X_C)} =\dfrac{p(X)}{\sum\limits_{x_i}p(X)}\\ =\dfrac{p(X)}{p(X\setminus\{x_i\})}=\dfrac{p(X\setminus\{x_i\})p(x_i|X\setminus\{x_i\})}{p(X\setminus\{x_i\})}=p(x_i|X\setminus\{x_i\}) (∗)=xi∑C∈Ci∏ψC(XC)C∈Ri∏ψC(XC)C∈Ci∏ψC(XC)C∈Ri∏ψC(XC)=xi∑C∈CG∏ψC(XC)C∈CG∏ψC(XC)=xi∑p(X)p(X)=p(X∖{xi})p(X)=p(X∖{xi})p(X∖{xi})p(xi∣X∖{xi})=p(xi∣X∖{xi})
其中最后两步分别运用加法法则和乘法法则。
综上,即证Gibbs ⇒ \Rightarrow ⇒MRF。
∀ S ⊂ G \forall S\sub G ∀S⊂G,构造
f S ( X S ) = ∏ Z ⊂ S p ( Z = X Z , G ∖ Z = 0 ) ( − 1 ) ∣ S ∣ − ∣ Z ∣ f_S(X_S)=\prod\limits_{Z\sub S}p(Z=X_Z,G\setminus Z=0)^{(-1)^{|S|-|Z|}} fS(XS)=Z⊂S∏p(Z=XZ,G∖Z=0)(−1)∣S∣−∣Z∣
其中 Z Z Z为 S S S的子集。
注:
- f S f_S fS定义在节点集合 S S S对应的变量集合 X S X_S XS上
- p ( Z = X Z , G ∖ Z = 0 ) p(Z=X_Z,G\setminus Z=0) p(Z=XZ,G∖Z=0)的含义是图中仅 Z Z Z中节点对应的随机变量取到对应( X S X_S XS中的) X Z X_Z XZ部分的值,而其余变量取0(默认值)时的概率
由于 Z ⊂ S Z\sub S Z⊂S,故 ∣ Z ∣ ⩽ ∣ S ∣ |Z|\leqslant|S| ∣Z∣⩽∣S∣;当 ∣ Z ∣ = ∣ S ∣ |Z|=|S| ∣Z∣=∣S∣时, f S ( X S ) = p ( S = X S , G ∖ S = 0 ) f_S(X_S)=p(S=X_S,G\setminus S=0) fS(XS)=p(S=XS,G∖S=0).
只要证:(1) ∏ S ⊂ G f S ( X S ) = p ( X ) \prod\limits_{S\sub G}f_S(X_S)=p(X) S⊂G∏fS(XS)=p(X) (2)若 S S S不是团,则 f S ( X S ) = 1 f_S(X_S)=1 fS(XS)=1
先证(1),只要证 ∏ S ⊂ G f S ( X S ) \prod\limits_{S\sub G}f_S(X_S) S⊂G∏fS(XS)中除项 p ( X ) p(X) p(X)外其余都可以互相抵消。
原求积顺序是考虑集合 S S S的全部子集。让我们更换求积顺序,考虑集合 Z Z Z的全部母集。
事实上,由于 p ( Z = X Z , G ∖ Z = 0 ) p(Z=X_Z,G\setminus Z=0) p(Z=XZ,G∖Z=0)只与 Z Z Z有关,当 Z Z Z确定后, p ( Z = X Z , G ∖ Z = 0 ) p(Z=X_Z,G\setminus Z=0) p(Z=XZ,G∖Z=0)也就唯一确定了。
对 ∀ Z ⊂ G \forall Z\sub G ∀Z⊂G,记 Δ = p ( Z = X Z , G ∖ Z = 0 ) \Delta=p(Z=X_Z,G\setminus Z=0) Δ=p(Z=XZ,G∖Z=0).下考虑 Z Z Z的所有母集 S S S.
当 S = Z S=Z S=Z时, Δ ( − 1 ) 0 = Δ \Delta^{(-1)^0}=\Delta Δ(−1)0=Δ
当 S = Z ∪ { x i } ( x i ∈ G ∖ Z ) S=Z\cup\{x_i\}(x_i\in G\setminus Z) S=Z∪{xi}(xi∈G∖Z)时, Δ ( − 1 ) 1 = Δ − 1 \Delta^{(-1)^1}=\Delta^{-1} Δ(−1)1=Δ−1,共 C ∣ G ∣ − ∣ Z ∣ 1 C_{|G|-|Z|}^{1} C∣G∣−∣Z∣1项,故总贡献为 Δ ( − 1 ) C ∣ G ∣ − ∣ Z ∣ 1 \Delta^{(-1)C_{|G|-|Z|}^{1}} Δ(−1)C∣G∣−∣Z∣1
当 S = Z ∪ { x i } ∪ { x j } ( ( x i , x j ∈ G ∖ Z ) ) S=Z\cup\{x_i\}\cup\{x_j\}((x_i,x_j\in G\setminus Z)) S=Z∪{xi}∪{xj}((xi,xj∈G∖Z))时, Δ ( − 1 ) 2 = Δ \Delta^{(-1)^2}=\Delta Δ(−1)2=Δ,共 C ∣ G ∣ − ∣ Z ∣ 2 C_{|G|-|Z|}^{2} C∣G∣−∣Z∣2项
以此类推, Z Z Z对结果的总贡献为:
Δ Δ ( − 1 ) C ∣ G ∣ − ∣ Z ∣ 1 Δ ( − 1 ) 2 C ∣ G ∣ − ∣ Z ∣ 2 ⋯ Δ ( − 1 ) ∣ G ∣ − ∣ Z ∣ C ∣ G ∣ − ∣ Z ∣ ∣ G ∣ − ∣ Z ∣ = Δ C ∣ G ∣ − ∣ Z ∣ 0 − C ∣ G ∣ − ∣ Z ∣ 1 + C ∣ G ∣ − ∣ Z ∣ 2 − ⋯ + ( − 1 ) ∣ G ∣ − ∣ Z ∣ C ∣ G ∣ − ∣ Z ∣ ∣ G ∣ − ∣ Z ∣ ( ∗ ) \Delta\Delta^{(-1)C_{|G|-|Z|}^{1}}\Delta^{(-1)^2C_{|G|-|Z|}^{2}}\cdots\Delta^{(-1)^{|G|-|Z|}C_{|G|-|Z|}^{|G|-|Z|}}=\Delta^{C_{|G|-|Z|}^{0}-C_{|G|-|Z|}^{1}+C_{|G|-|Z|}^{2}-\cdots+(-1)^{|G|-|Z|}C_{|G|-|Z|}^{|G|-|Z|}}(*) ΔΔ(−1)C∣G∣−∣Z∣1Δ(−1)2C∣G∣−∣Z∣2⋯Δ(−1)∣G∣−∣Z∣C∣G∣−∣Z∣∣G∣−∣Z∣=ΔC∣G∣−∣Z∣0−C∣G∣−∣Z∣1+C∣G∣−∣Z∣2−⋯+(−1)∣G∣−∣Z∣C∣G∣−∣Z∣∣G∣−∣Z∣(∗)
由二项式定理知,
0 = ( 1 − 1 ) k = C k 0 − C k 1 + C k 2 − ⋯ + ( − 1 ) k C k k ( k > 0 ) 0=(1-1)^k=C_k^0-C_k^1+C_k^2-\cdots+(-1)^kC_k^k(k>0) 0=(1−1)k=Ck0−Ck1+Ck2−⋯+(−1)kCkk(k>0)
因此,当 ∣ Z ∣ < ∣ G ∣ |Z|<|G| ∣Z∣<∣G∣时,贡献为 Δ 0 = 1 \Delta^{0}=1 Δ0=1;当 ∣ Z ∣ = ∣ G ∣ |Z|=|G| ∣Z∣=∣G∣时,贡献为 Δ { Z = G } \Delta_{\{Z=G\}} Δ{Z=G}.
所以 ∏ S ⊂ G f S ( X S ) = Δ { Z = G } = p ( X G ) = p ( X ) \prod\limits_{S\sub G}f_S(X_S)=\Delta_{\{Z=G\}}=p(X_G)=p(X) S⊂G∏fS(XS)=Δ{Z=G}=p(XG)=p(X),即证。
再证(2).
先对条件进行转化。若 S S S不是团,对团的定义取反,得 ∃ a , b ∈ S \exist a,b\in S ∃a,b∈S, a , b a,b a,b不直接相连。
利用这一性质,将 S S S划分为 { a } ∪ { b } ∪ ( S ∖ { a , b } ) \{a\}\cup\{b\}\cup (S\setminus \{a,b\}) {a}∪{b}∪(S∖{a,b}).原求积对象为 ∀ Z ⊂ S \forall Z\sub S ∀Z⊂S,现考虑 ∀ W ⊂ S ∖ { a , b } \forall W\sub S\setminus\{a,b\} ∀W⊂S∖{a,b},则由一个 W W W可以衍生出四个不同的 S S S: W , W ∪ { a } , W ∪ { b } , W ∪ { a , b } W,W\cup\{a\},W\cup\{b\},W\cup\{a,b\} W,W∪{a},W∪{b},W∪{a,b},且不同的 W W W衍生出的 S S S各不相同。
故 p ( Z = X Z , G ∖ Z = 0 ) ( − 1 ) ∣ S ∣ − ∣ Z ∣ p(Z=X_Z,G\setminus Z=0)^{(-1)^{|S|-|Z|}} p(Z=XZ,G∖Z=0)(−1)∣S∣−∣Z∣可化为以下四项乘积:
p ( W = X W , G ∖ W = 0 ) ( − 1 ) ∣ S ∣ − ∣ W ∣ ( 1 ) p ( W ∪ { a } = X W ∪ { x a } , G ∖ ( W ∪ { a } ) = 0 ) ( − 1 ) ∣ S ∣ − ( ∣ W ∣ + 1 ) ( 2 ) p ( W ∪ { b } = X W ∪ { x b } , G ∖ ( W ∪ { b } ) = 0 ) ( − 1 ) ∣ S ∣ − ( ∣ W ∣ + 1 ) ( 3 ) p ( W ∪ { a , b } = X W ∪ { x a , x b } , G ∖ ( W ∪ { a , b } ) = 0 ) ( − 1 ) ∣ S ∣ − ( ∣ W ∣ + 2 ) ( 4 ) p(W=X_W,G\setminus W=0)^{(-1)^{|S|-|W|}}\quad(1)\\ p(W\cup\{a\}=X_W\cup\{x_a\},G\setminus (W\cup\{a\})=0)^{(-1)^{|S|-(|W|+1)}}\quad(2)\\ p(W\cup\{b\}=X_W\cup\{x_b\},G\setminus (W\cup\{b\})=0)^{(-1)^{|S|-(|W|+1)}}\quad(3)\\ p(W\cup\{a,b\}=X_W\cup\{x_a,x_b\},G\setminus (W\cup\{a,b\})=0)^{(-1)^{|S|-(|W|+2)}}\quad(4) p(W=XW,G∖W=0)(−1)∣S∣−∣W∣(1)p(W∪{a}=XW∪{xa},G∖(W∪{a})=0)(−1)∣S∣−(∣W∣+1)(2)p(W∪{b}=XW∪{xb},G∖(W∪{b})=0)(−1)∣S∣−(∣W∣+1)(3)p(W∪{a,b}=XW∪{xa,xb},G∖(W∪{a,b})=0)(−1)∣S∣−(∣W∣+2)(4)
观察一下四项的指数,可以发现式 ( 1 ) (1) (1)与式 ( 4 ) (4) (4)指数相等,为 ( − 1 ) ∣ S ∣ − ∣ W ∣ (-1)^{|S|-|W|} (−1)∣S∣−∣W∣,而式 ( 2 ) (2) (2)式 ( 3 ) (3) (3)指数相等,为 − ( − 1 ) ∣ S ∣ − ∣ W ∣ -(-1)^{|S|-|W|} −(−1)∣S∣−∣W∣.将指数部分 ( − 1 ) ∣ S ∣ − ∣ W ∣ (-1)^{|S|-|W|} (−1)∣S∣−∣W∣提出后,式 ( 2 ) , ( 3 ) (2),(3) (2),(3)将多出 − 1 -1 −1次幂,带上 − 1 -1 −1次幂后变为分母。
提出指数部分 ( − 1 ) ∣ S ∣ − ∣ W ∣ (-1)^{|S|-|W|} (−1)∣S∣−∣W∣后,四项乘积化为:
[ p ( W = X W , G ∖ W = 0 ) p ( W ∪ { a , b } = X W ∪ { x a , x b } , G ∖ ( W ∪ { a , b } ) = 0 ) p ( W ∪ { a } = X W ∪ { x a } , G ∖ ( W ∪ { a } ) = 0 ) p ( W ∪ { b } = X W ∪ { x b } , G ∖ ( W ∪ { b } ) = 0 ) ] ( − 1 ) ∣ S ∣ − ∣ W ∣ ( ∗ ) \Big[\dfrac{p(W=X_W,G\setminus W=0)p(W\cup\{a,b\}=X_W\cup\{x_a,x_b\},G\setminus (W\cup\{a,b\})=0)}{p(W\cup\{a\}=X_W\cup\{x_a\},G\setminus (W\cup\{a\})=0)p(W\cup\{b\}=X_W\cup\{x_b\},G\setminus (W\cup\{b\})=0)}\Big]^{(-1)^{|S|-|W|}}(*) [p(W∪{a}=XW∪{xa},G∖(W∪{a})=0)p(W∪{b}=XW∪{xb},G∖(W∪{b})=0)p(W=XW,G∖W=0)p(W∪{a,b}=XW∪{xa,xb},G∖(W∪{a,b})=0)](−1)∣S∣−∣W∣(∗)
故原式化为
f S ( X S ) = ∏ Z ⊂ S p ( Z = X Z , G ∖ Z = 0 ) ( − 1 ) ∣ S ∣ − ∣ Z ∣ = ∏ W ⊂ S ∖ { a , b } ( ∗ ) f_S(X_S)=\prod\limits_{Z\sub S}p(Z=X_Z,G\setminus Z=0)^{(-1)^{|S|-|Z|}}=\prod\limits_{W\sub S\setminus\{a,b\}}\Big(*\Big) fS(XS)=Z⊂S∏p(Z=XZ,G∖Z=0)(−1)∣S∣−∣Z∣=W⊂S∖{a,b}∏(∗)
要证 f S ( X S ) = 1 f_S(X_S)=1 fS(XS)=1,只要证 ( ∗ ) ≡ 1 (*)\equiv 1 (∗)≡1即可。事实上,由于指数的取值仅有 { 1 , − 1 } \{1,-1\} {1,−1},故只要证
p ( W = X W , G ∖ W = 0 ) p ( W ∪ { a , b } = X W ∪ { x a , x b } , G ∖ ( W ∪ { a , b } ) = 0 ) p ( W ∪ { a } = X W ∪ { x a } , G ∖ ( W ∪ { a } ) = 0 ) p ( W ∪ { b } = X W ∪ { x b } , G ∖ ( W ∪ { b } ) = 0 ) = 1 \dfrac{p(W=X_W,G\setminus W=0)p(W\cup\{a,b\}=X_W\cup\{x_a,x_b\},G\setminus (W\cup\{a,b\})=0)}{p(W\cup\{a\}=X_W\cup\{x_a\},G\setminus (W\cup\{a\})=0)p(W\cup\{b\}=X_W\cup\{x_b\},G\setminus (W\cup\{b\})=0)}=1 p(W∪{a}=XW∪{xa},G∖(W∪{a})=0)p(W∪{b}=XW∪{xb},G∖(W∪{b})=0)p(W=XW,G∖W=0)p(W∪{a,b}=XW∪{xa,xb},G∖(W∪{a,b})=0)=1
由于a,b为不直接相连的节点,为了利用 M R F MRF MRF中的成对马尔可夫性,我们将上式分组,只要证
p ( W = X W , G ∖ W = 0 ) p ( W ∪ { a } = X W ∪ { x a } , G ∖ ( W ∪ { a } ) = 0 ) = p ( W ∪ { b } = X W ∪ { x b } , G ∖ ( W ∪ { b } ) = 0 ) p ( W ∪ { a , b } = X W ∪ { x a , x b } , G ∖ ( W ∪ { a , b } ) = 0 ) \dfrac{p(W=X_W,G\setminus W=0)}{p(W\cup\{a\}=X_W\cup\{x_a\},G\setminus (W\cup\{a\})=0)}=\dfrac{p(W\cup\{b\}=X_W\cup\{x_b\},G\setminus (W\cup\{b\})=0)}{p(W\cup\{a,b\}=X_W\cup\{x_a,x_b\},G\setminus (W\cup\{a,b\})=0)} p(W∪{a}=XW∪{xa},G∖(W∪{a})=0)p(W=XW,G∖W=0)=p(W∪{a,b}=XW∪{xa,xb},G∖(W∪{a,b})=0)p(W∪{b}=XW∪{xb},G∖(W∪{b})=0)
利用乘法法则对左边进行化简,有
p ( W = X W , G ∖ W = 0 ) p ( W ∪ { a } = X W ∪ { x a } , G ∖ ( W ∪ { a } ) = 0 ) = p ( b = 0 , W = X W , G ∖ ( W ∪ { a , b } ) = 0 ) p ( a = 0 ∣ b = 0 , W = X W , G ∖ ( W ∪ { a , b } ) = 0 ) p ( b = 0 , W = X W , G ∖ ( W ∪ { a , b } ) = 0 ) p ( a = x a ∣ b = 0 , W = X W , G ∖ ( W ∪ { a , b } ) = 0 ) ( ∗ ) \dfrac{p(W=X_W,G\setminus W=0)}{p(W\cup\{a\}=X_W\cup\{x_a\},G\setminus (W\cup\{a\})=0)}\\ =\dfrac{p(b=0,W=X_W,G\setminus (W\cup\{a,b\})=0)p(a=0|b=0,W=X_W,G\setminus (W\cup\{a,b\})=0)}{p(b=0,W=X_W,G\setminus (W\cup\{a,b\})=0)p(a=x_a|b=0,W=X_W,G\setminus (W\cup\{a,b\})=0)}(*) p(W∪{a}=XW∪{xa},G∖(W∪{a})=0)p(W=XW,G∖W=0)=p(b=0,W=XW,G∖(W∪{a,b})=0)p(a=xa∣b=0,W=XW,G∖(W∪{a,b})=0)p(b=0,W=XW,G∖(W∪{a,b})=0)p(a=0∣b=0,W=XW,G∖(W∪{a,b})=0)(∗)
这一步的实际含义是将状态分子分母中的状态看作由状态 ( b = 0 , W = X W , G ∖ ( W ∪ { a , b } ) = 0 ) (b=0,W=X_W,G\setminus (W\cup\{a,b\})=0) (b=0,W=XW,G∖(W∪{a,b})=0)得来。此时 W W W中的点取到对应值,而 W ∪ { a , b } W\cup\{a,b\} W∪{a,b}外的点取到默认值,并且我们只考虑到让点b取默认值,并未考虑点a所处的状态。
在此基础上,分子的状态是要 W W W中的点取到对应值,而 W W W外的点取到默认值。与状态 ( b = 0 , W = X W , G ∖ ( W ∪ { a , b } ) = 0 ) (b=0,W=X_W,G\setminus (W\cup\{a,b\})=0) (b=0,W=XW,G∖(W∪{a,b})=0)对比可知,我们还需令点a取到默认值,利用乘法法则对这一步骤进行表达。
类似的,分母要求 W W W中的点与点a取到对应值,而 W W W外的点取到默认值。我们还需令点a取到对应值,同样可以利用乘法法则来表达这一步骤。
不难发现,分子分母可以约分,得
( ∗ ) = p ( a = 0 ∣ b = 0 , W = X W , G ∖ ( W ∪ { a , b } ) = 0 ) p ( a = x a ∣ b = 0 , W = X W , G ∖ ( W ∪ { a , b } ) = 0 ) ( ∗ ) (*)=\dfrac{p(a=0|b=0,W=X_W,G\setminus (W\cup\{a,b\})=0)}{p(a=x_a|b=0,W=X_W,G\setminus (W\cup\{a,b\})=0)}(*) (∗)=p(a=xa∣b=0,W=XW,G∖(W∪{a,b})=0)p(a=0∣b=0,W=XW,G∖(W∪{a,b})=0)(∗)
在给定的条件下, W ∪ ( G ∖ ( W ∪ { a , b } ) ) = G ∖ { a , b } W\cup(G\setminus (W\cup\{a,b\}))=G\setminus\{a,b\} W∪(G∖(W∪{a,b}))=G∖{a,b}中的节点状态都已确定,意味着 X ∖ { x a , x b } X\setminus\{x_a,x_b\} X∖{xa,xb}都已被观测,又a,b不直接相连,由成对马尔可夫性知
x a ⊥ ⊥ x b ∣ X ∖ { x a , x b } x_a\perp\!\!\!\perp x_b|X\setminus\{x_a,x_b\} xa⊥⊥xb∣X∖{xa,xb}
x a , x b x_a,x_b xa,xb互不干扰,我们可以修改条件概率对应条件中节点b的状态而不影响对应的概率值。为了得到目标的形式,我们将点b的状态修改为取到它的对应值,有
( ∗ ) = p ( a = 0 ∣ b = x b , W = X W , G ∖ ( W ∪ { a , b } ) = 0 ) p ( a = x a ∣ b = x b , W = X W , G ∖ ( W ∪ { a , b } ) = 0 ) ( ∗ ) (*)=\dfrac{p(a=0|b=x_b,W=X_W,G\setminus (W\cup\{a,b\})=0)}{p(a=x_a|b=x_b,W=X_W,G\setminus (W\cup\{a,b\})=0)}(*) (∗)=p(a=xa∣b=xb,W=XW,G∖(W∪{a,b})=0)p(a=0∣b=xb,W=XW,G∖(W∪{a,b})=0)(∗)
继续向目标靠拢,向分子分母同乘 p ( b = x b , W = X W , G ∖ ( W ∪ { a , b } ) = 0 ) p(b=x_b,W=X_W,G\setminus (W\cup\{a,b\})=0) p(b=xb,W=XW,G∖(W∪{a,b})=0),结合乘法法则,有
( ∗ ) = p ( a = 0 ∣ b = x b , W = X W , G ∖ ( W ∪ { a , b } ) = 0 ) p ( b = x b , W = X W , G ∖ ( W ∪ { a , b } ) = 0 ) p ( a = x a ∣ b = x b , W = X W , G ∖ ( W ∪ { a , b } ) = 0 ) p ( b = x b , W = X W , G ∖ ( W ∪ { a , b } ) = 0 ) = p ( b = x b , W = X W , G ∖ ( W ∪ { a , b } ) = 0 , a = 0 ) p ( a = x a , b = x b , W = X W , G ∖ ( W ∪ { a , b } ) = 0 ) = p ( W ∪ { b } = X W ∪ { x b } , G ∖ ( W ∪ { b } ) = 0 ) p ( W ∪ { a , b } = X W ∪ { x a , x b } , G ∖ ( W ∪ { a , b } ) = 0 ) (*)=\dfrac{p(a=0|b=x_b,W=X_W,G\setminus (W\cup\{a,b\})=0)p(b=x_b,W=X_W,G\setminus (W\cup\{a,b\})=0)}{p(a=x_a|b=x_b,W=X_W,G\setminus (W\cup\{a,b\})=0)p(b=x_b,W=X_W,G\setminus (W\cup\{a,b\})=0)}\\ =\dfrac{p(b=x_b,W=X_W,G\setminus (W\cup\{a,b\})=0,a=0)}{p(a=x_a,b=x_b,W=X_W,G\setminus (W\cup\{a,b\})=0)}\\ =\dfrac{p(W\cup\{b\}=X_W\cup\{x_b\},G\setminus (W\cup\{b\})=0)}{p(W\cup\{a,b\}=X_W\cup\{x_a,x_b\},G\setminus (W\cup\{a,b\})=0)} (∗)=p(a=xa∣b=xb,W=XW,G∖(W∪{a,b})=0)p(b=xb,W=XW,G∖(W∪{a,b})=0)p(a=0∣b=xb,W=XW,G∖(W∪{a,b})=0)p(b=xb,W=XW,G∖(W∪{a,b})=0)=p(a=xa,b=xb,W=XW,G∖(W∪{a,b})=0)p(b=xb,W=XW,G∖(W∪{a,b})=0,a=0)=p(W∪{a,b}=XW∪{xa,xb},G∖(W∪{a,b})=0)p(W∪{b}=XW∪{xb},G∖(W∪{b})=0)
综上,即证MRF ⇒ \Rightarrow ⇒Gibbs。
综合两节内容,定理得证。
通过上述证明过程,我们会发现两个问题:
(1)Gibbs仅要求势函数定义在团上,并未要求定义在最大团上 (2)推导过程中未见到归一化常数
对于问题(1),事实上,通过上述讨论,我们发现势函数并不一定要取自最大团。假设现在有团 C = { a , b , c } C=\{a,b,c\} C={a,b,c},其所有团的势函数乘积为
ψ a ( a ) ψ b ( b ) ψ c ( c ) ψ a , b ( a , b ) ψ a , c ( a , c ) ψ b , c ( b , c ) ψ a , b , c ( a , b , c ) ( ∗ ) \psi_a(a)\psi_b(b)\psi_c(c)\psi_{a,b}(a,b)\psi_{a,c}(a,c)\psi_{b,c}(b,c)\psi_{a,b,c}(a,b,c)\quad(*) ψa(a)ψb(b)ψc(c)ψa,b(a,b)ψa,c(a,c)ψb,c(b,c)ψa,b,c(a,b,c)(∗)
而这些乘积可以看作一个整体 Ψ a , b , c ( a , b , c ) = ( ∗ ) \Psi_{a,b,c}(a,b,c)=\big(*\big) Ψa,b,c(a,b,c)=(∗).由于已知 C C C为团,故 Ψ a , b , c ( a , b , c ) \Psi_{a,b,c}(a,b,c) Ψa,b,c(a,b,c)的定义是合理的。另一方面,将上述7项乘积整合在一起,可以大大减少因子的数量,故尽可能取最大团能让计算得到极大的简化。
对于问题(2),从MRF ⇒ \Rightarrow ⇒Gibbs的讨论中,我们发现并没有归一化的必要。因为此时我们构造的势函数在累乘后直接得到了联合概率,而联合概率本身是归一化的。
但实际应用中,由于所取的势函数不同,为了保证最终的结果可以用来衡量可能性的大小,我们需要人为的对其进行归一化,使得它能够被看作概率。
让我们继续对变量消除法的讨论。考虑下面的贝叶斯网络:
我们想知道边缘概率 p ( e ) p(e) p(e).利用加法法则与贝叶斯网络的因子分解,有
p ( e ) = ∑ a , b , c , d p ( a , b , c , d , e ) = ∑ a , b , c , d p ( a ) p ( b ∣ a ) p ( c ∣ b ) p ( d ∣ c ) p ( e ∣ d ) ( ∗ ) p(e)=\sum\limits_{a,b,c,d}p(a,b,c,d,e)\\ =\sum\limits_{a,b,c,d}p(a)p(b|a)p(c|b)p(d|c)p(e|d)(*) p(e)=a,b,c,d∑p(a,b,c,d,e)=a,b,c,d∑p(a)p(b∣a)p(c∣b)p(d∣c)p(e∣d)(∗)
对其进行变量消除,得
( ∗ ) = ∑ d ∑ c ∑ b ∑ a p ( a ) p ( b ∣ a ) p ( c ∣ b ) p ( d ∣ c ) p ( e ∣ d ) = ∑ d p ( e ∣ d ) ∑ c p ( d ∣ c ) ∑ b p ( c ∣ b ) ∑ a p ( b ∣ a ) p ( a ) (*)=\sum\limits_{d}\sum\limits_{c}\sum\limits_{b}\sum\limits_{a}p(a)p(b|a)p(c|b)p(d|c)p(e|d)\\ =\sum\limits_{d}p(e|d)\sum\limits_{c}p(d|c)\sum\limits_{b}p(c|b)\sum\limits_{a}p(b|a)p(a) (∗)=d∑c∑b∑a∑p(a)p(b∣a)p(c∣b)p(d∣c)p(e∣d)=d∑p(e∣d)c∑p(d∣c)b∑p(c∣b)a∑p(b∣a)p(a)
同时,我们又想知道边缘概率 p ( c ) p(c) p(c).重复上述操作,我们有
p ( c ) = ∑ a , b , d , e p ( a , b , c , d , e ) = ∑ a , b , d , e p ( a ) p ( b ∣ a ) p ( c ∣ b ) p ( d ∣ c ) p ( e ∣ d ) = ∑ b p ( c ∣ b ) ∑ a p ( b ∣ a ) p ( a ) ∑ d p ( d ∣ c ) ∑ e p ( e ∣ d ) = [ ∑ b p ( c ∣ b ) ∑ a p ( b ∣ a ) p ( a ) ] [ ∑ d p ( d ∣ c ) ∑ e p ( e ∣ d ) ] p(c)=\sum\limits_{a,b,d,e}p(a,b,c,d,e)\\ =\sum\limits_{a,b,d,e}p(a)p(b|a)p(c|b)p(d|c)p(e|d)\\ =\sum\limits_{b}p(c|b)\sum\limits_{a}p(b|a)p(a)\sum\limits_{d}p(d|c)\sum\limits_{e}p(e|d)\\ =\Big[\sum\limits_{b}p(c|b)\sum\limits_{a}p(b|a)p(a)\Big]\Big[\sum\limits_{d}p(d|c)\sum\limits_{e}p(e|d)\Big] p(c)=a,b,d,e∑p(a,b,c,d,e)=a,b,d,e∑p(a)p(b∣a)p(c∣b)p(d∣c)p(e∣d)=b∑p(c∣b)a∑p(b∣a)p(a)d∑p(d∣c)e∑p(e∣d)=[b∑p(c∣b)a∑p(b∣a)p(a)][d∑p(d∣c)e∑p(e∣d)]
对比上面的计算过程,我们明显的发现,因式 ∑ b p ( c ∣ b ) ∑ a p ( b ∣ a ) p ( a ) \sum\limits_{b}p(c|b)\sum\limits_{a}p(b|a)p(a) b∑p(c∣b)a∑p(b∣a)p(a)被重复计算了。如果能够重用这些计算结果,将大大提升变量消除法的效率,出于这一目的,我们引入信念传播算法。
为了使传播更加生动形象,针对上文给出的记号 ϕ x ( y ) \phi_x(y) ϕx(y),我们使用 m x → y ( x y ) m_{x\to y}(x_y) mx→y(xy)来代替它。我们曾经提到过,默认情况下不区分 y y y与 x y x_y xy,由于下面需对具体变量进行求和,故在此记号中我们显式地将随机变量与它对应的节点区别开。
另外,我们延用上文中的 ψ S \psi_S ψS记号,指代在因子分解中涉及变量集合 X S X_S XS的那一部分因式。同样的,在这里它并不仅仅指代团上定义的势函数。
在算法推导过程中,我们不特意地考虑归一化常数(随时可能将其忽略),具体处理已在正文中介绍。
我们结合具体实例进行推导。有兴趣的读者可以尝试直接证明一般化的结论。
考虑如下的马尔可夫随机场,我们想求得边缘概率 p ( a ) p(a) p(a).
写出它的因子分解,有
p ( a , b , c , d ) = 1 Z ψ a ( a ) ψ b ( b ) ψ c ( c ) ψ d ( d ) ψ a , b ( a , b ) ψ b , c ( b , c ) ψ b , d ( b , d ) p(a,b,c,d)=\dfrac{1}{Z}\psi_a(a)\psi_b(b)\psi_c(c)\psi_d(d)\psi_{a,b}(a,b)\psi_{b,c}(b,c)\psi_{b,d}(b,d) p(a,b,c,d)=Z1ψa(a)ψb(b)ψc(c)ψd(d)ψa,b(a,b)ψb,c(b,c)ψb,d(b,d)
仿照引例的手法进行处理,有
p ( a ) = ∑ x b , x c , x d p ( a , b , c , d ) = ∑ x b ∑ x c ∑ x d ψ a ( a ) ψ b ( b ) ψ c ( c ) ψ d ( d ) ψ a , b ( a , b ) ψ b , c ( b , c ) ψ b , d ( b , d ) = ψ a ( a ) ∑ x b ψ b ( b ) ψ a , b ( a , b ) ∑ x c ψ c ( c ) ψ b , c ( b , c ) ∑ x d ψ d ( d ) ψ b , d ( b , d ) p(a)=\sum\limits_{x_b,x_c,x_d}p(a,b,c,d)\\ =\sum\limits_{x_b}\sum\limits_{x_c}\sum\limits_{x_d}\psi_a(a)\psi_b(b)\psi_c(c)\psi_d(d)\psi_{a,b}(a,b)\psi_{b,c}(b,c)\psi_{b,d}(b,d)\\ =\psi_a(a)\sum\limits_{x_b}\psi_b(b)\psi_{a,b}(a,b)\sum\limits_{x_c}\psi_c(c)\psi_{b,c}(b,c)\sum\limits_{x_d}\psi_d(d)\psi_{b,d}(b,d) p(a)=xb,xc,xd∑p(a,b,c,d)=xb∑xc∑xd∑ψa(a)ψb(b)ψc(c)ψd(d)ψa,b(a,b)ψb,c(b,c)ψb,d(b,d)=ψa(a)xb∑ψb(b)ψa,b(a,b)xc∑ψc(c)ψb,c(b,c)xd∑ψd(d)ψb,d(b,d)
引入 m x → y ( x y ) m_{x\to y}(x_y) mx→y(xy)的记号,得
ψ a ( a ) ∑ x b ψ b ( b ) ψ a , b ( a , b ) ∑ x c ψ c ( c ) ψ b , c ( b , c ) ⏟ m c → b ( x b ) ∑ x d ψ d ( d ) ψ b , d ( b , d ) ⏟ m d → b ( x b ) = ψ a ( a ) ∑ x b ψ b ( b ) ψ a , b ( a , b ) m c → b ( x b ) m d → b ( x b ) ⏟ m b → a ( x a ) = ψ a ( a ) m b → a ( x a ) \psi_a(a)\sum\limits_{x_b}\psi_b(b)\psi_{a,b}(a,b)\underbrace{\sum\limits_{x_c}\psi_c(c)\psi_{b,c}(b,c)}_{m_{c\to b}(x_b)}\underbrace{\sum\limits_{x_d}\psi_d(d)\psi_{b,d}(b,d)}_{m_{d\to b}(x_b)}\\ =\psi_a(a)\underbrace{\sum\limits_{x_b}\psi_b(b)\psi_{a,b}(a,b)m_{c\to b}(x_b)m_{d\to b}(x_b)}_{m_{b\to a}(x_a)}=\psi_a(a)m_{b\to a}(x_a) ψa(a)xb∑ψb(b)ψa,b(a,b)mc→b(xb) xc∑ψc(c)ψb,c(b,c)md→b(xb) xd∑ψd(d)ψb,d(b,d)=ψa(a)mb→a(xa) xb∑ψb(b)ψa,b(a,b)mc→b(xb)md→b(xb)=ψa(a)mb→a(xa)
上述过程又可写作
{ m b → a ( x a ) = ∑ x b ψ b ( b ) ψ a , b ( a , b ) m c → b ( x b ) m d → b ( x b ) p ( a ) = ψ a ( a ) m b → a ( x a ) \left\{ \begin{array}{ll} m_{b\to a}(x_a)=\sum\limits_{x_b}\psi_b(b)\psi_{a,b}(a,b)m_{c\to b}(x_b)m_{d\to b}(x_b)\\ p(a)=\psi_a(a)m_{b\to a}(x_a) \end{array} \right. {mb→a(xa)=xb∑ψb(b)ψa,b(a,b)mc→b(xb)md→b(xb)p(a)=ψa(a)mb→a(xa)
从图中不难发现, c , d c,d c,d节点都是 b b b节点的邻居。与正文类似的,我们引入记号 n e ( i ) ne(i) ne(i),代指 i i i节点的全部邻居节点,这样,上式又可以写作
{ m b → a ( x a ) = ∑ x b ψ b ( b ) ψ a , b ( a , b ) ∏ k ∈ n e ( b ) ∖ a m k → b ( x b ) p ( a ) = ψ a ( a ) ∏ k ∈ n e ( a ) m k → a ( x a ) \left\{ \begin{array}{ll} m_{b\to a}(x_a)=\sum\limits_{x_b}\psi_b(b)\psi_{a,b}(a,b)\prod\limits_{k\in ne(b)\setminus a}m_{k\to b}(x_b)\\ p(a)=\psi_a(a)\prod\limits_{k\in ne(a)}m_{k\to a}(x_a) \end{array} \right. ⎩ ⎨ ⎧mb→a(xa)=xb∑ψb(b)ψa,b(a,b)k∈ne(b)∖a∏mk→b(xb)p(a)=ψa(a)k∈ne(a)∏mk→a(xa)
进一步泛化 a , b a,b a,b为 i , j i,j i,j,我们将得到Sum-product算法的最终形式
{ m j → i ( x i ) = ∑ x j ψ i , j ( i , j ) ψ j ( j ) ∏ k ∈ n e ( j ) ∖ i m k → j ( x j ) p ( x i ) = ψ i ( i ) ∏ k ∈ n e ( i ) m k → i ( x i ) \left\{ \begin{array}{ll} m_{j\to i}(x_i)=\sum\limits_{x_j}\psi_{i,j}(i,j)\psi_j(j)\prod\limits_{k\in ne(j)\setminus i}m_{k\to j}(x_j)\\ p(x_i)=\psi_i(i)\prod\limits_{k\in ne(i)}m_{k\to i}(x_i) \end{array} \right. ⎩ ⎨ ⎧mj→i(xi)=xj∑ψi,j(i,j)ψj(j)k∈ne(j)∖i∏mk→j(xj)p(xi)=ψi(i)k∈ne(i)∏mk→i(xi)
同样地,它具有传递的形式,我们可以认为节点 j j j携带的信息量为
b e l i e f ( j ) = ψ j ( j ) ∏ k ∈ n e ( j ) ∖ i m k → j ( x j ) belief(j)=\psi_j(j)\prod\limits_{k\in ne(j)\setminus i}m_{k\to j}(x_j) belief(j)=ψj(j)k∈ne(j)∖i∏mk→j(xj)
文艺地,我们可以称之为 j j j的“信仰(念)”(belief),由它自己的信息和孩子们传给它的信息构成;而节点 j j j所能向节点 i i i传递的信息 m j → i m_{j\to i} mj→i为
m j → i ( x i ) = ∑ x j ψ i , j ( i , j ) b e l i e f ( j ) m_{j\to i}(x_i)=\sum\limits_{x_j}\psi_{i,j}(i,j)belief(j) mj→i(xi)=xj∑ψi,j(i,j)belief(j)
这便是信念传播的最终表现。
同样地,这种形式的Sum-Product算法只需求出所有的信息,就可以用这些信息组装出所有的边缘概率。
具体而言,这有两种实现模式:
串行算法(Sequential Implementation)
初始化:任意选定一个根节点,如图中的节点 a a a.
收集信息:按dfs的形式,递归地收集节点信息,叶子节点为递归边界,如图(a)。伪代码如下:
def collectMsg(x, last):
for neighbor in ne[x]:
if neighbor == last:
continue
collectMsg(neighbor, x)
#
# Calculate x's message
#
collectMsg(Root, None)
分发信息:按dfs的形式,递归地分发节点信息,如图(b)。伪代码如下:
def distributeMsg(x, last):
for neighbor in ne[x]:
if neighbor == last:
continue
#
# Distribute x's message
#
distributeMsg(neighbor, x)
distributeMsg(Root, None)
组装信息:至此,所有信息均完成计算,故所求的边缘概率能够从这些信息中得出
并行算法(Parallel Implementation)
如图,我们以点为单位开启线程。当每个线程收集到其它节点发送过来的信息后,便立即将其发送出去。同时借助数据结构来记录更新的时序。可以证明,这个算法是收敛的,最终能够有效地求出所有信息,从而组装出我们想要的边缘概率。
同样地,这种形式的Sum-Product算法有其对应的衍生算法。
与正文思路一致,我们得到非因子形式的Max-Product:
{ m j → i ( x i ) = max x j ψ i , j ( i , j ) ψ j ( j ) ∏ k ∈ n e ( j ) ∖ i m k → j ( x j ) max X p ( X ) = max x i ψ i ( i ) ∏ k ∈ n e ( i ) m k → i ( x i ) \left\{ \begin{array}{ll} m_{j\to i}(x_i)=\max\limits_{x_j}\psi_{i,j}(i,j)\psi_j(j)\prod\limits_{k\in ne(j)\setminus i}m_{k\to j}(x_j)\\ \max\limits_{X}p(X)=\max\limits_{x_i}\psi_i(i)\prod\limits_{k\in ne(i)}m_{k\to i}(x_i) \end{array} \right. ⎩ ⎨ ⎧mj→i(xi)=xjmaxψi,j(i,j)ψj(j)k∈ne(j)∖i∏mk→j(xj)Xmaxp(X)=ximaxψi(i)k∈ne(i)∏mk→i(xi)
与因子形式的Max-Product相比,有趣的是,此处的信息传递仅涉及对一个变量的最优化。我们通过一个实例来体会这一点。
同样是上文中的马尔可夫随机场,现在我们想求得相应的最大后验。
与因子形式的Max-Product类似,我们只需要进行收集信息的过程,如图所示,有
m c → b ( x b ) = max x c ψ c ( c ) ψ b , c ( b , c ) m d → b ( x b ) = max x d ψ d ( d ) ψ b , d ( b , d ) m b → a ( x a ) = max x b ψ b ( b ) ψ a , b ( a , b ) m c → b ( x b ) m d → b ( x b ) max a , b , c p ( a , b , c ) = max x a ψ a ( a ) m b → a ( x a ) m_{c\to b}(x_b)=\max_{x_c}\psi_c(c)\psi_{b,c}(b,c)\\ m_{d\to b}(x_b)=\max_{x_d}\psi_d(d)\psi_{b,d}(b,d)\\ m_{b\to a}(x_a)=\max\limits_{x_b}\psi_b(b)\psi_{a,b}(a,b)m_{c\to b}(x_b)m_{d\to b}(x_b)\\ \max_{a,b,c}p(a,b,c)=\max_{x_a}\psi_a(a)m_{b\to a}(x_a) mc→b(xb)=xcmaxψc(c)ψb,c(b,c)md→b(xb)=xdmaxψd(d)ψb,d(b,d)mb→a(xa)=xbmaxψb(b)ψa,b(a,b)mc→b(xb)md→b(xb)a,b,cmaxp(a,b,c)=xamaxψa(a)mb→a(xa)
我们依次对每个变量进行优化,实现起来将更加清晰明了。
相应地,它也具有数值优化版本——Max-Sum算法。此处不再赘述。
事实上,通过上述推导过程,我们发现仅有两类因子出现: ψ i , j \psi_{i,j} ψi,j与 ψ i \psi_i ψi;相应地,我们可以反推出它的因子图具有这样的特点:每个因子节点都只与至多两个变量节点相连。
这是可以做到的。对于马尔可夫随机场来说,通过Hammesley-Clifford定理的证明,我们知道可以将势函数定义在任意的团结构上,而任意相互连接的两点都将构成合法的团结构。因此,我们通过在每条边上插入因子节点的手段来构造相应的因子图。除此之外,每个节点本身也是合法的团结构,所以我们可以自由地向每个节点额外连上一个因子节点。而对于贝叶斯网络来说,我们利用道德图将其转化为对应的马尔可夫随机场。
比如上面我们讨论的例子,对应的因子图为
从这种意义上来说,非因子形式的Sum-Product算法可以看作是因子形式的Sum-Product算法的一个特例。由于没有充分利用因子图将节点进行“集中”的特性,非因子形式的Sum-Product算法将无法处理道德图“伦理”过程形成的环结构;但反过来,正因为它一次至多考虑两个节点,在利用衍生算法求最大后验时,将更易实现。
两种形式的Sum-Product算法各有特色,根据具体任务的需要与个人喜好进行挑选。