標籤:math gibbs採樣 拒絕 演算法應用 資料 具體流程 也會 情況 data-
1、MCMC概述
從名字我們可以看出,MCMC由兩個MC組成,即蒙特卡羅方法(Monte Carlo Simulation,簡稱MC)和馬爾科夫鏈(Markov Chain ,也簡稱MC)。之前已經介紹過蒙特卡洛方法,接下來介紹馬爾科夫鏈,以及結合兩者的採樣演算法。
2、馬爾科夫鏈
馬爾科夫鏈的概念在很多地方都被提及過,它的核心思想是某一時刻狀態轉移的機率只依賴於它的前一個狀態。
我們用數學定義來描述,則假設我們的序列狀態是...Xt?2, Xt?1, Xt, Xt+1,...,那麼我們的在時刻Xt+1的狀態的條件機率僅僅依賴於時刻Xt,即:
既然某一時刻狀態轉移的機率只依賴於它的前一個狀態,那麼我們只要能求出系統中任意兩個狀態之間的轉換機率,這個馬爾科夫鏈的模型就定了。狀態轉移情況如所示
則狀態轉移矩陣可以表示為
此時,我們給定一個初始狀態,然後經過該狀態轉移矩陣的轉換,最終會收斂到一個穩定的狀態,具體如馬爾科夫鏈定理所示
由於馬爾科夫鏈能收斂到平穩分布, 於是有了一個想法:如果我們能構造一個轉移矩陣為P的馬氏鏈,使得該馬氏鏈的平穩分布恰好是p(x), 那麼我們從任何一個初始狀態x0出發沿著馬氏鏈轉移, 得到一個轉移序列 x0, x1, x2,?xn, xn+1?, 如果馬氏鏈在第n步已經收斂了,於是我們就得到了 π(x) 的樣本xn, xn+1?(也就是從第n步收斂時開始,之後的x都服從同一個平穩分布,我們可以將這個分布設定為我們的目標採樣分布)。
從上面可以看出馬爾科夫鏈的平穩分布收斂主要依賴於狀態轉移矩陣,所以關鍵是如何構建狀態轉移矩陣,使得最終的平穩分布是我們所要的分布。想做到這一點主要依賴於細緻平穩定理
3、MCMC採樣和M-H採樣
在MCMC採樣中先隨機一個狀態轉移矩陣Q,然而該矩陣不一定能滿足細緻平穩定理,一次會做一些改進,具體過程如下
MCMC採樣演算法的具體流程如下
然而關於MCMC採樣有收斂太慢的問題,所以在MCMC的基礎上進行改進,引出M-H採樣演算法
M-H演算法的具體流程如下
M-H演算法在高維時同樣適用
一般來說M-H採樣演算法較MCMC演算法應用更廣泛,然而在大資料時代,M-H演算法面臨著兩個問題:
1)在高維時的計算量很大,演算法效率很低,同時存在拒絕轉移的問題,也會加大計算量
2)由於特徵維度大,很多時候我們甚至很難求出目標的各特徵維度聯合分布,但是可以方便求出各個特徵之間的條件機率分布(因此就思考是否能只知道條件機率分布的情況下進行採樣)。
4、Gibbs採樣
因此可以得出在二維的情況下Gibbs採樣演算法的流程如下
而在多維的情況下,比如一個n維的機率分布π(x1, x2, ...xn),我們可以通過在n個座標軸上輪換採樣,來得到新的樣本。對於輪換到的任意一個座標軸xi上的轉移,馬爾科夫鏈的狀態轉移機率為P(xi|x1, x2, ..., xi?1, xi+1, ..., xn),即固定n?1個座標軸,在某一個座標軸上移動。而在多維的情況下Gibbs採樣演算法的流程如下
由於Gibbs採樣在高維特徵時的優勢,目前我們通常意義上的MCMC採樣都是用的Gibbs採樣。當然Gibbs採樣是從M-H採樣的基礎上的進化而來的,同時Gibbs採樣要求資料至少有兩個維度,一維機率分布的採樣是沒法用Gibbs採樣的,這時M-H採樣仍然成立。
機器學習之MCMC演算法