置信度傳播演算法(Belief Propagation)
基礎知識
相互獨立時,p(A | B) = p(A)
貝葉斯規則
貝葉斯網路(Bayesian Network)定了一個獨立的結構:一個節點的概率僅依賴於它的父節點。貝葉斯網路適用於稀疏模型,即大部分節點之間不存在任何直接的依賴關係。
我們最終的目標是計算準確的,比如計算Hangover的概率,邊緣概率為各種狀態下所有其他節點對本節點影響的概率的和。
邊緣概率(Marginal Probability):即某個事件發生的概率,而與其它事件無關。邊緣概率是這樣計算的:在聯合概率中,把最終結果中不需要的那些事件合併成其事件的全概率而消失(在兩個離散隨機變數的條件下,對於其中任一行或任一列求和,得到的概率就是邊緣概率)。在本例中,針對不同的Hangover進行求和,得到的就是Hangover的邊緣概率:
優化
接下來就是要獲得觀測變數 xh 的估計,需要使 p(xh)的值最大, 即:
如果貝葉斯網路比較小,我們可以很簡單的做邊緣求和運算,但是如果問題規模較大,整個運算複雜度和資料將會以指數級增長。而利用BP演算法去計算這樣的網路問題,可以使得運算複雜度只和節點數線性相關。在這種意義上,BP演算法在大型貝葉斯網路推斷問題中扮演著越來越重要的作用。
馬爾科夫隨機場(Markov Random Field,MRF)
在概率圖模型中,每個結點表示一個隨機變數,結點之間的邊表示這些隨機變數之間的概率關係。在概率圖模型中,所有隨機變數的聯合概率分佈可以表示成若干隨機變數子集的乘積。典型的概率圖模型包括貝葉斯網和馬爾科夫網。貝葉斯網是有向圖模型,
BP演算法的基礎就是建立於MRF上,MRF是一種條件概率模型,它可以被認為是馬爾科夫鏈的一種推廣,其對於場內所有節點的相關性都能很有效的描述。
假設我們觀察到yi的一些資訊,需要利用這些已知資訊去推斷關於隱含的場景xi的另外一些資訊。每個頂點i都有一個狀態值xi和一個觀測值yi,每個狀態值和觀測值之間的似然函式為Фi(xi,yi),反映了i處的
xi和 yi存在統計依賴性,表示節點i的聯合相容度,相鄰鄰居節點之間的勢能量為Ψij(xi,xj),Ψij(xi,xj
灰色點表示隱含節點xi,黑色點表示顯式節點yi,實線表示存在似然函式Фi,虛線表示存在一對勢函式Ψij和Ψji。
聯合概率為:
其中,Z 是一個歸一化常數。
邊緣概率為:
馬爾科夫隨機場被認為是成對的,正是因為隱含節點和顯式節點的成對性,而每一對節點中的隱含節點的似然函式只受其對應的顯式節點所影響。成對的MRF相比較與貝葉斯網路來說它是非直接的。同樣的,直接計算邊緣概率同樣也會導致時間上的指數級增長。
置信度傳播(Belief Propagation,BP)
置信度傳播演算法利用結點與結點之間相互傳遞資訊而更新當前整個MRF的標記狀態,是基於MRF的一種近似計算。該演算法是一種迭代的方法,可以解決概率圖模型概率推斷問題,而且所有資訊的傳播可以並行實現。經過多次迭代後,所有結點的信度不再發生變化,就稱此時每一個結點的標記即為最優標記,MRF也達到了收斂狀態。對於無環環路的MRF,BP演算法可以收斂到其最優解。
BP演算法的兩個關鍵過程:(1)通過加權乘積計算所有的區域性訊息;(2)節點之間概率訊息在隨機場中的傳遞。
置信度替換為概率:
bi(xi)為節點i的聯合概率分佈,其中mji(xi)代表隱含節點j傳遞給隱含節點i的訊息,表明了隱含節點i對隱含節點j當前狀態的影響。Фi(xi,yi) 表示節點i的區域性證據,表示節點i的聯合相容度。節點i的置信度bi(xi)與 i 的鄰域向 i 傳遞的所有訊息的乘積成正比,同時也正比於Фi(xi,yi) ,1/zi為歸一化常數,可使置信度的和為1,N(i) 為節點i的MRF一階鄰域。
訊息傳播的資訊:
包含所有其他傳入節點i的訊息乘積,N(j)\i表示節點j的MRF一階鄰域中排除掉目標節點i的鄰域。
有了訊息更新規則以及置信度計算公式,就可以先任意初始化每個bi(xi),然後迭代的求解mij和bi(xi)直至收斂,也就是說mij不再發生變化。也就是說首先對一些初始節點的訊息賦初值,然後多次迭代訊息傳播和置信度更新直到它們穩定,最後就能從置信度中獲取相應的概率。
置信度傳播演算法中迭代運算步驟可以表示如下:
(1)隨機選擇相鄰的隱含節點xi,xj
(2)從xi向xj傳送訊息mij
(3)更新節點xj的置信度
(4)跳至步驟(1),直到演算法收斂
在以此為規則的計算中,從無環圖的邊緣節點開始傳播,然後如果一個節點所有相鄰節點的訊息都已經計算出來,則計算該節點的訊息。易得整個無環圖僅僅只需計算一遍就可以得到所有隱含節點的邊緣概率分佈。可以看出,BP 演算法相對於一般的演算法,時間複雜度上是大幅下降的。
標準最大乘置信度傳播演算法
舉例:
通過整理上述公式,就可以得到節點2的置信度,正好就是節點2的邊緣概率:b2(x2)=
p2(x2)。
參考資料: