機率統計教學錄影數學符號數學基礎排列組合機率統計簡介機率機率公理隨機變數連續測度單一分布條件機率聯合分布貝氏定理動差生成函數特徵函數機率法則匯總離散分布二項分布多項分布負二項分布幾何分布超幾何分布布瓦松分布連續分布均勻分布常態分布Gamma 分布指數分布卡方分布柯西分布Weibull 分布T 分布F 分布Beta 分布多維分布統計抽樣敘述統計推論統計中央極限定理估計方法單組樣本估計兩組樣本估計檢定方法單組樣本檢定兩組樣本檢定平均値的推論變異數的推論無母數推論迴歸分析變異數分析實驗設計因子實驗品質管制時間序列數據分類統計定理匯總統計情況分類計算統計蒙地卡羅法最大似然法則假說與學習EM 算法簡單貝氏分類貝氏網路隨機過程馬可夫鏈蒙地卡羅馬可夫資源範例投影片教學錄影練習題考題解答訊息相關網站參考文獻最新修改簡體版English |
簡介Metropolis-Hasting (MH) 程序是用來學習馬可夫狀態轉移矩陣的一種演算法,假如我們用 S 代表所有可能的狀態, Q 代表狀態轉移矩陣,那麼 Q(x,y) 就代表由狀態 x 轉移到狀態 y 的機率。 MH 程序用疊代的方式學習 Q(x,y) ,首先將 Q(x,y) 的初始值設定為平均的機率分布 Q(x,y) = 1/|S| ,然後就可以透過疊代程序不斷的修改 Q 矩陣,直到整個程序收斂為止,其疊代方法如下。 馬可夫系統的平衡條件MH 疊代程序的想法如下,假如我們模擬機率性粒子在馬可夫鏈中的移動行為,最後這些移動將達到一個平衡。在達到平衡後,從 x 狀態流出去的粒子數,將會等於流回該狀態的粒子數,也就是必須滿足下列『平衡條件』的要求。 (1)\begin{align} \sum_y P(x) Q(x , y) = \sum_y P(y) Q(y , x) \end{align}
當隨機的粒子移動時,如果從 x 流出的粒子較多,自然會讓 P(x) 下降,最後仍然達到平衡,如果流入 x 的粒子比流出的多,那麼 P(x) 自然就會上升,只要我們能模擬流出流入的程序,最後整個馬可夫系統將會達到平衡。 但問題是,我們所想要學習的是狀態轉移矩陣 Q(x,y) 而非 P(x),所以公式 1 的平衡條件是不夠的,我們需要如下的『細緻平衡條件』。 (2)\begin{equation} P(x) Q(x , y) = P(y) Q(y , x) \end{equation}
只要符合公式 2 的細緻平衡條件要求,就能夠利用此一條件設計出學習程序,以便透過反覆的疊代運算找出讓 Q(x,y) 達成平衡的數值,這就是整個 MH 程序的想法。 Metropolis-Hasting 程序的原理MH 程序是一個不斷調整 Q(x,y) 的演算法,該算法所關注的焦點在於 (x, y) 通道上,假如從 x 流向 y 的粒子較多,那麼就應當讓粒子全部從 x 流向 y,也就是 Q(x,y) 的流量均可順利流出,假如從 y 流向 x 的粒子較多,那麼我們就讓某些粒子卡住,不要流出。但是究竟要流出多少粒子,卡住多少粒子呢?MH 方法利用下列的 A(x,y) 比例進行調節,以便能透過堵塞通道 Q(y,x) 的方法,讓系統趨向平衡。 (3)\begin{align} A(x,y) = \frac{P(x) Q(x,y)}{P(y) Q(y,x)} \end{align}
因此,Metropolis 設計出了下列通道流量的調整公式,以便用疊代的方式調整狀態轉移機率矩陣 Q。 (4)\begin{align} Q_{t+1}(x,y) = \begin{cases} Q_t(x,y) & \text{if $ x \neq y , A(x,y) \geq 1$;}\\ Q_t(x,y) A(x,y) & \text{if $x \neq y , A(x,y) < 1$;}\\ Q_t(x,y) + \sum_{z:A(x,z) < 1} Q_t(x,z) (1 - A(x,z)) & \text{if $x = y $.} \end{cases} \end{align}
Metropolis-Hasting 算法在理解了平衡條件與 MH 程序的想法後,我們就可以正式撰寫出 Metropolis-Hasting 程序的演算法。 Algorithm Metropolis-Hasting(P(S)) output Q(S,S) foreach (x,y) in (S, S) MH 算法的進一步簡化在上述的 MH 程序中,$Q'(x,y) = Q_t(x,y) + \sum_{z:A(x,z) < 1} Q_t(x,z) (1 - A(x,z))$ 的計算較為複雜,事實上,這個值就是為了讓 Q'(x,y) 能夠『規一化』的條件,也就是讓 $\sum_y Q'(x,y)=1$ 的差額補償值。因此我們也可以將上述演算法改寫如下。 Algorithm Metropolis-Hasting(P(S)) output Q(S,S) foreach (x,y) in (S, S) 結語Metropolis-Hasting 程序可以用來學習具有『細緻平衡』特性的狀態轉移機率 Q(x,y),一但取得了狀態轉移機率,整個系統的機率行為就確定下來了,透過這樣的程序,我們可以學習到一個馬可夫模型,然後再利用這個模型進行『預測』,以便讓程式的行為模擬該馬可夫系統的行為。Metropolis-Hasting 程序對這些可用隨機系統描述的行為而言,是一個重要的學習程序,因此被廣泛應用在機器翻譯、文件分類、分群或貝氏網路的學習等領域上,這是數學領域在電腦上應用的一個優良方法。 |
用 Metropolis-Hasting 程序學習馬可夫狀態轉移機率
page revision: 8, last edited: 11 Sep 2010 00:21
Post preview:
Close preview