mcmc是(markov chain monte carlo)縮寫,中文馬爾科夫鏈蒙特卡羅。
最早的蒙特卡羅方法是為了求各或積分問題,比如
\[\theta=\int_a^bf(x)dx
\]使用蒙特卡羅方法求得積分的近似值。在\([a,b]\)區間上隨機取樣乙個近似點\(x_0\),然後用\(f(x_0)\)代表區間上所有\(f(x)\)的值,這樣近似求解的結果為
\[(b-a)f(x_0)
\]進一步,採用\([a,b]\)區間上的n個點近似代替,則近似結果為
\[\frac\sum_^f(x_i)
\]此時假設區間是均勻分布的,如不是均勻分布,則結果差很多。
我們假設\(x\)在區間\([a,b]\)上的概率分布函式為\(p(x)\),那麼我們定積分可以表示為
\]上式右邊即代入了蒙特卡羅方法。可以看出,假設\([a,b]\)間是均勻分布的,那麼\(p(x_i)=\frac\),代入後可得
\[\frac\sum_^\frac/}=\frac\sum_^f(x_i)
\]所以,使用蒙特卡羅方法的關鍵是得到x的概率分布p(x)。
如果得到了x的概率分布,我們可以基於此去取樣。對於均勻分布,常用的取樣方法即uniform(0,1),通過線性同餘發生器,可以很容易得到偽隨機樣本。地於其他常見的分布,也可以通過函式轉換而得。
對於不常見的分布,乙個可行的辦法是接受-拒絕取樣方法。即然p(x)太複雜沒有辦法直接取樣,那麼我們選擇乙個可取樣的分布比如高斯分布,然後按照一定的方法拒絕某些樣本,以達到近似p(x)的目的。
取樣過程中,設定乙個常用的概率分布函式q(x),以及乙個常數k,使得p(x)總在kq(x)的下方。採用均勻分布隨機取樣的方法,如果這此取樣落在了p(x)的上方,則拒絕此次取樣,否則接受,直到採夠n個樣本,最後結果為
\[\frac\sum_^\frac
\]整個過程就是用q(x)來模擬p(x)的概率分布的過程。
蒙特卡羅主要解決一些不常見分布的問題,但對於一些多維分布或是條件分布的問題無法使用。
馬爾科夫鏈,它假設某一時刻的狀態轉移概率只信賴於它的前乙個狀態。在乙個系統中,只要求出任意兩個狀態之間的轉換概率,這個馬爾科夫模型就定了。
馬爾科夫模型的狀態轉移矩陣收斂到穩定的概率分布與我們的初始概率分布無關。
我們達到平穩分布後,就很容易進行取樣。
馬爾科夫取樣過程:
輸入馬爾科夫狀態轉移矩陣,設定狀態轉移次數\(n_1\)和需要取樣的次數\(n_2\)
從任意簡單概率分布取樣得到初始狀態值\(x_0\)
for t=0 to \(n_1+n_2-1\):從條件概率分布\(p(x|x_t)\)中取樣得到樣本\(x_\)
樣本\((x_,x_,...,x_)\)即為我們需要的平穩分布的樣本集。
我們得到馬爾科夫狀態轉移矩陣,就可以取樣得到樣本集,然後進行蒙特卡羅模擬。
關鍵問題是又轉換到如何得到馬爾科夫狀態轉移矩陣,下面介紹mcmc方法解決該問題。
如果非週期馬爾科夫鏈的狀態轉移矩陣p和概率分布\(\pi(x)\)對所有的i,j滿足
\[\pi(i)p(i,j)=\pi(j)p(j,i)
\]則稱概率分布\(\pi(x)\)是狀態轉移矩陣p的平穩分布。由平穩分布條件有:
\[\sum_^\pi(i)p(i,j)=\sum_^\pi(j)p(j,i)=\pi(j)\sum_^p(j,x)=\pi(j)
\]將上式用矩陣表示為
\[\pi p=\pi
\]也就是說,只要我們找到了可以使概率分布\(\pi(x)\)滿足細緻平穩條件的矩陣p即可。如何找p呢
隨機找乙個狀態轉移矩陣q,很難滿足細緻平穩條件。
\[\pi(i)q(i,j)\ne\pi(j)q(j,i)
\]對細緻平穩條件進行改造
\[\pi(i)q(i,j)\alpha(i,j)=\pi(j)q(j,i)\alpha(j,i)
\]只需要
\[\alpha(i,j)=\pi(j)q(j,i)\\
\alpha(j,i)=\pi(i)q(i,j)
\]代入上式兩邊即可約為衡等式,即可使原不等式變為等式
\[\pi(i)q(i,j)=\pi(j)q(j,i)
\]即有
\[p(i,j)=q(i,j)\alpha(i,j)
\]也就是說,我們的目標矩陣p,可以通過任意乙個矩陣q,乘以\(\alpha(i,j)\)得到,我們稱\(\alpha(i,j)\)為接受率。
mcmc過程如下:
輸入矩陣q,平穩分布\(\pi\),狀態轉移次數閾值\(n_1\),需要樣本數\(n_2\)
從任意簡單概率分布取樣得到樣本\(x_0\)
for t=0 to \(n_1+n_2+1\):
從條件概率分布\(q(x|x_t)\)中取樣得到樣本x
從均勻分布取樣u~uniform[0,1]
如果\(u<\alpha(x_t,x_*)=\pi(x_*)q(x_*,x_t)\)則接受轉移\(x_t\to x_*\)即\(x_=x_*\)
否則不接受轉移,即\(x_=x_t\)
略
蒙特卡羅方法
概念 蒙特卡羅方法又稱統計模擬法 隨機抽樣技術 是一種隨機模擬方法,以概率和統計理論方法為基礎的一種計算方法,是使用隨機數來解決很多計算問題的方法。將所求解的問題同一定的概率模型相聯絡,用電子計算機實現統計模擬或抽樣,以獲得問題的近似解。為象徵性地表明這一方法地概率統計特徵,故借用賭城蒙特卡羅命名。...
蒙特卡羅方法
蒙特卡羅方法 monte carlo method 蒙特卡羅方法又稱統計模擬法 隨機抽樣技術,是一種隨機模擬方法。以概率和統計理論方法為基礎的一種計算方法,是使用隨機數 或更常見的偽隨機數 來解決很多計算問題的方法。將所求解的問題同一定的概率模型相聯絡,用電子計算機實現統計模擬或抽樣,以獲得問題的近...
matlab蒙特卡羅方法求體積 蒙特卡羅演算法
原創 袁恆 本文介紹了蒙特卡羅演算法,蒙特卡羅演算法是思想和技巧的藝術品,本文沒有演算法公式,共2000餘字,是領略演算法魅力的佳作。在介紹蒙特卡洛演算法之前,請大家先思考乙個問題 我們從小學就知道圓的面積 一 蒙特卡羅演算法簡介蒙特 卡羅方法 monte carlo method 也稱統計模擬方法...