蒙特卡洛 馬爾科夫鏈 MCMC 初步

2021-10-01 14:10:47 字數 2131 閱讀 9911

解決什麼問題?

我們常常遇到這樣的問題:模型構建好之後,有乙個概率p(x)p(x)(稱為目標分布),不能顯式的給出其表達,只能生成一系列符合這個分布的xx。這種問題稱為「取樣」。

特別地,在貝葉斯方法中,關注的是後驗概率p(x|d)p(x|d)。在給定觀測dd的情況下,需要估計系統引數xx。如果後驗概率沒有明確表達,或者由於多重積分難以計算,則無法直接求解xx,但是可以生成一系列符合此概率的分布。

常見的情況是,後驗概率難以明確表達。在已知觀測資料x的情況下,利用p(x|d)=p(x)⋅p(d|x)/p(d)∝p(d|x)p(x|d)=p(x)⋅p(d|x)/p(d)∝p(d|x)。對似然函式進行取樣。

名字解析

monte carlo方法:用多次隨機求平均的方法來逼近乙個值。實際是取樣方法的核心

設計mcmc方法的乙個難處,在於如何設計合理的轉移概率函式,使得mc鏈的穩態分布等於要求的概率分布。

mcmc的另乙個問題是混合速度,在這篇部落格中有所討論。

mcmc是乙個大類,有許多種具體演算法,以下舉例幾種最為著名的。

gibbs sampling

gibbs sampling處理這樣的問題:對於乙個高維隨機變數x=[x1,x2,x3]x=[x1,x2,x3],不能寫出其各分量的聯合概率p(x)p(x),但是可以寫出各個分量之間的條件概率。

首先任取初始值x0x0。在已知當前取樣xtxt時,按照如下方法生成t+1時刻取樣。

根據x2x2,x3x3取樣x1x1:x1t+1∝p(x1|x2t,x3t)xt+11∝p(x1|xt2,xt3)

根據x1x1,x3x3取樣x2x2:x2t+1∝p(x2|x1t+1,x3t)xt+12∝p(x2|xt+11,xt3)

根據x1x1,x2x2取樣x3x3:x3t+1∝p(x3|x1t+1,x2t+1)xt+13∝p(x3|xt+11,xt+12)

每一次取樣,都盡可能利用其他分量的最新結果。gibbs sampling特別適用於貝葉斯網路的取樣,因為該網路本身就包含一系列條件概率。

metropolis-hastings(mh)

mh方法的乙個優點是,即使不能寫出概率密度函式p(x)p(x),可以用乙個和其成正比的函式f(x)f(x)來取樣。如前所述,這在貝葉斯方法中非常方便。

首先任取初始值x0x0。在已知當前取樣xtxt時,按照如下方法生成t+1時刻取樣。

根據乙個概率分布q(xt+1|xt)q(xt+1|xt)生成乙個候選取樣xt+1xt+1。

其中qq稱為proposal density或者jumping distribution。可以取以xtxt為中心的高斯分布。

比較新舊取樣的概率密度函式

如果f(xt+1)>f(xt)f(xt+1)>f(xt),接受xt+1xt+1為新取樣;

否則,按照p=f(xt+1)/f(xt)p=f(xt+1)/f(xt)選擇xt+1xt+1為新取樣,或者維持xtxt為新取樣。

一種常見的情況,如果待求概率是乙個後驗p(x|d)p(x|d),且其先驗是高斯,則可以做如下變換:

p(x|d)∝p(x)⋅p(d|x)=n(x;0,σ)⋅p(d|x)

p(x|d)∝p(x)⋅p(d|x)=n(x;0,σ)⋅p(d|x)

直接使用以下方法生成候選樣本

xt+1=1−ϵ2−−−−−√xt+ϵν

xt+1=1−ϵ2xt+ϵν

其中ν∼n(0,σ)ν∼n(0,σ),ϵ∈[−1,+1]ϵ∈[−1,+1]是擾動步長。新樣本等於當前樣本和先驗的加權和。另一種表達方法是

xt+1=cosθ⋅xt+sinθ⋅ν

xt+1=cos⁡θ⋅xt+sin⁡θ⋅ν

不同的ϵϵ對應的新取樣的軌跡是半個橢圓圓周。橢圓的兩軸分別為xtxt和νν。如果ϵ=0ϵ=0,則新取樣和舊取樣相同(紅色)。ϵ或者θϵ或者θ控制擾動幅度。

深度學習(四) 馬爾科夫鏈蒙特卡洛取樣(MCMC)

拒絕取樣,重要性取樣的效率在高維空間很低,隨維度增長其難度也指數型增長,主要適用於一維的取樣。對於二維以上可以用馬氏鏈。馬爾可夫鏈蒙特卡洛取樣方法就是在高維空間取樣的方法。馬爾可夫鏈就是滿足馬爾可夫假設的一組狀態序列 left right x x x x 其中假設某一時刻狀態 x 發生狀態轉移的概率...

蒙特卡洛方法 簡潔清晰解釋馬爾可夫鏈蒙特卡洛方法

有三種解釋mcmc的方法 本文,讓你達到中級水平。什麼是mcmc?要回答這個問題,我們首先需要重新審視貝葉斯統計。貝葉斯統計建立在這樣一種觀點的基礎上,即事物發生的概率受先驗概率假設和事件發生的可能性的影響,如資料所示。對於貝葉斯統計,概率由分布表示。如果先驗和似然概率分布是正態分佈的,我們能夠用函...

馬爾科夫鏈

馬爾科夫鏈,是數學中具有馬爾科夫性質的離散事件隨機過程。該過程中,在給定當前知識和資訊的情況下,過去 即當前以前的歷史狀態 對於 將來 即當前以後的未來狀態 是無關的 一 馬爾科夫性質 原理簡潔 x1,x2,x3 馬爾科夫鏈 描述了乙個狀態序列,其每個狀態值取決於前面有限個狀態。馬爾科夫鏈是具有馬爾...