PRML中,說到,概率圖模型中,
有向圖的典型代表是貝葉斯網絡,
無向圖模型的典型代表是馬爾科夫隨機場。
朴素貝葉斯其實是一種簡單的貝葉斯網絡。

Priors P(Y) and conditionals P(Xi|Y) for Naïve Bayes provide CPTs for the network.
同時包含離散隨機變量和連續隨機變量的網絡稱為
混合貝葉斯網絡(hybrid Bayesian network)。
貝葉斯網絡的精確推理:
(1)枚舉法(低效,會重復計算)
(2)變量消元法
(3)團算法(也稱“聯合樹”算法。基本思想是將網絡中的單獨節點聯合起來形成團cluster節點)
大規模多連通網絡中的精確推理(需要花費與網絡規模呈線性關系的時間)是不可操作的,故,考慮近似的推理方法是必要的。隨機采樣算法,也稱蒙特卡洛算法(Monte Carlo algorithm)能夠給出一個問題的近似解答,而其近似的精度依賴於所生成采樣點的多少。
模擬退火算法就是一種用於優化問題的蒙特卡洛算法。
貝葉斯網絡的近似推理:
應用於后驗概率計算的采樣方法的兩個算法族:
(1)直接采樣方法
a. 拒絕采樣(Rejection sampling):reject samples disagreeing with evidence.
這是一類由一個易於采樣的分布出發,為一個難以直接采樣的分布產生采樣樣本的通用算法。首先,它根據網絡指定的先驗概率分布生成采樣樣本;然后,它拒絕所有與證據不匹配的樣本;最后通過在剩余樣本中對事件X=x的出現頻繁程度計數從而得到估計概率 P(X=x|e)。
存在的最大問題:它拒絕了太多的樣本!隨着證據變量個數的增多,與證據e 相一致的樣本再所有樣本中所占的比例呈指數下降,所以對於復雜問題這種方法是完全不可用的。
注意拒絕采樣方法與直接根據現實世界對條件概率進行估計的過程非常相似。
例如,要估計 P(Rain | RedSkyAtNight=true)(晚上出現紅色天空時,第二天下雨的概率分布),我們可以簡單地對前一天晚上觀察到紅色天空后下雨的頻度計數——而忽略天空不紅的那些夜晚。(這里,現實世界本身扮演了采樣生成算法的角色)。顯然,如果天空很少發紅,這個過程可能要花很長時間,而這就是拒絕采樣方法的弱點。
b. 似然加權(Likelihood weighting):use evidence to weight samples.
只生成與證據 e 一致的事件,從而避免拒絕采樣算法的低效率。它固定證據變量 E 的值,只對證據以外的其余變量X和Y進行采樣,這保證了生成的每個采樣樣本都與證據一致。
(2)馬爾科夫鏈采樣方法
Markov Chain Monte Carlo(MCMC):sample from a stochastic process whose stationary distribution is the true posterior.
MCMC方法的隨機近似技術能夠提供對網絡的真實后驗概率的合理統計,並能夠處理比精確算法規模大得多的網絡。
相比於直接采樣的拒絕采樣和似然加權這兩種為每個事件都重新生成樣本的采樣算法不同,MCMC算法總是通過對前一個事件進行隨機改變而生成每個事件樣本。因此可以認為網絡處於為每一個變量指定了值的一個特定的當前狀態;而下一個狀態則通過對某個非證據變量X_i進行采樣來產生,取決於X_i的馬爾科夫覆蓋中的變量當前值。(單變量
馬爾科夫覆蓋是由節點的父節點、子節點以及子節點的父節點組成的。the Markov blanket for a
node in a
Bayesian network is the set of nodes composed of its parents, its children, and its children‘s other parents.)
如下圖:給定MArkov覆蓋(灰色區域),節點X和網絡中的所有其它節點都是條件獨立的。

采樣的例子:π的計算


計算機采樣:也稱Monte Carlo
采樣需要用隨機數發生器,比如上圖需要一個產生0-1 間的隨機數發生器。
馬爾可夫鏈的數學描述:馬爾可夫鏈是一種簡化的隨機過程,假設一個狀態只依賴於前一狀態(稱為馬爾可夫性質)
吉布斯采樣是一個簡單的並且廣泛應用的馬爾科夫鏈蒙特卡洛(MCMC)算法,可以被看做Metropolis-Hastings算法的一個具體的情形。
MCMC算法執行過程示例:
【要求】:計算P(Rain | Sprinkler = true, WetGrass = true)的概率
MCMC算法執行步驟:
- 證據變量Sprinkler, WetGrass固定為true
- 隱變量Cloudy和查詢變量Rain隨機初始化,例如,Cloudy = true, Rain = false,初始狀態為:[C=true,S=true,R=false,W=true]
3. 反復執行如下步驟:
(1)根據Cloudy的馬爾可夫覆蓋(MB)變量的當前值,
對Cloudy采樣,即根據P(Cloudy|Sprinkler= true, Rain=false)來采樣:
P(C|S, ~R) = P(C,S,~R) / P(S, ~R)
= P(C)P(S|C)P(~R|C) / [P(C)P(S|C)P(~R|C)+P(~C)P(S|~C)P(~R|~C)]
=(0.5´0.1´0.2) / [0.5´0.1´0.2+0.5´ 0.5´0.8]
=0.04762
假設采樣結果為:Cloudy = false。故新的當前狀態為:
[C=false, S=true, R=false, W=true]
(2)根據Rain節點的馬爾可夫覆蓋(MB)變量的當前值,
對Rain采樣,即根據P(Rain | Cloudy = false, Sprinkler = true, WetGrass = true)來采樣。假設采樣結果為:Rain = true。故新的當前狀態為:
[C=false, S=true, R=true, W=true]
【注】: 上述過程中所訪問的每一個狀態都是一個樣本,能對查詢變量Rain的估計有貢獻。
(3)重復上述步驟,直到所要求的訪問次數N。
若為true, false的次數分別為n1, n2,則查詢解為:
Normalize(<n1, n2>) = < n1 /N, n1 /N>
若上述過程訪問了20個Rain=true的狀態和60個Rain = false的狀態,則所求查詢的解為<0.25, 0.75>。
【References】
[1] Artificial Intelligence _A Modern Approach(Second Edition)
[2]
Pattern Recognition and Machine Learning