概率取樣3 MCMC

2021-07-02 05:34:32 字數 3239 閱讀 4017

前面的取樣方法受限於高維,這裡mcmc解決了這個問題。我們知道很多mc都有乙個穩態特性,此時乙個mc對應於乙個概率分布,如果能使這個分布和要取樣的分布p(z)一樣,那麼每次對p(z)的取樣就等同於狀態的一次轉移。如果我們將轉移概率分成兩個部分:建議轉移和判斷轉移,即先從當前狀態和建議轉移獲得樣本,然後通過判定標準判斷是否接受樣本,這樣就可以實現對該mc的每次狀態轉移取樣。如果mc已經達到穩定狀態,那麼每次狀態轉移的結果都是可以接受的。

但是這裡涉及到幾個問題:

1、如何保證mc可以有穩態?

2、如何構造轉移概率保證mc收斂於p(z)?

3、如何避免隨機遊走和高拒絕率的問題?

note:這裡提一下幾種方法的關係,mcmc是一種利用建議概率和待取樣概率構建穩態mc的轉移概率,以便高維取樣的思想,具體實現方法有mh法 、gibbs法和slice法。其中gibbs方法是mh方法的乙個特例,slice法是為了解決第三個問題的乙個自適應改進方法。

定義: z(

m)取值為狀態空間,m為時間或者step。

當一系列隨機變數滿足p(

z(m+

1)|z

(1),

...,

z(m)

)=p(

z(m+

1)|z

(m))

,則構成mc。

穩態:

達到一定次數後,滿足:π(

zm+1

)=∑z

mp(z

m,zm

+1)∗

π(zm

) 穩態滿足條件(或關係):

1、如果存在k,對於每乙個(x->y),k步p(x->y)>0

2、狀態兩兩相連

3、每乙個狀態都有self-transition。

4、平衡方程: p(

zm,z

m+1)

∗π(z

m)=p

(zm+

1,zm

)∗π(

zm+1

) π

(x)t

(x−>x′

)=π(

x′)t

(x′−

>x)

該方程可以保證mc的收斂性,左右都對x積分(求和)就可以證明

(2)mh chain

這裡先說一下大致過程:

先選取建議分布:q(x->x』)

確定接受概率:a(x->x』)

對於每乙個狀態x,取樣x』~q(x->x』)

對該樣本以a(x->x』)概率接受

->如果接受,x更新為x』

->否則x不變

end

這裡轉移概率t(x->x』)=q(x->x』)*a(x->x』);

t(x->x)=q(x->x)+q(x->x』)*a(x->x)

為了滿足平衡方程: π(

x)q(

x−>x′

)a(x

−>x′

)=π(

x′)q

(x′−

>x)

a(x′

−>x)

然後有: a(

x→x′

)a(x

′→x)

=π(x

′)q(

x′→x

)π(x

)q(x

→x′)

不失一般性,令a(x』->x)=1,那麼可以得到: a(

x→x′

)=min(1,

π(x′

)q(x

′→x)

π(x)

q(x→

x′))

這就是mh方法的接受概率。

那麼怎麼選擇q呢?q首先必須大於0,然後要保證兩點:使狀態轉移步長要大但是不能使接受概率太低,其實就是要解決開始提出的第三個問題。

note:

轉移步長:可以參考random walk,比如以(-1:0.25;0:0.5,1:0.25)概率隨機遊走為例,第i步後,當前隨機變數的方差為i/2,也就是說隨機遊走的距離平均是i的平方根,這對狀態遍歷是十分不利的,當然不容易達到收斂了。

接受概率過低:試想如果轉移概率方差很大,有可能導致乙個高概率狀態轉移到低概率狀態,從而使接受概率過低,樣本不能接受。

gibbs過程比較簡單:

比如要對p(

z1,z

2,z3

) 取樣,首先初始化,然後:

for i=1:t,

->sample zi

+11∼

p(z1

∣zi2

,zi3

) ->sample zi

+12∼

p(z2

∣zi+

11,z

i3)

->sample zi

+13∼

p(z3

∣zi+

11,z

i+12

) 現在來證明為什麼這個過程就是從p(

z1,z

2,z3

) 進行取樣。

prove:整個取樣過程中p(

z1,z

2,z3

) 都是不變的。因為初始化乙個樣本點可以認為服從p(

z1,z

2,z3

) ,然後第一次取樣後p(

z2,z

3)沒有變化,是從原概率積分得到的,而根據第一次取樣pn

ew(z

new1

,z2,

z3)=

pold

(zol

d1∣z

2,z3

)∗po

ld(z

2,z3

)=po

ld(z

1,z2

,z3)

也就是說是服從原概率分布。這樣mc必然收斂於p(

z1,z

2,z3

) 。

也可以從mh方法來理解,計算接受概率: a(

x→x′

)=min(1,

π(x′

)q(x

′→x)

π(x)

q(x→

x′))

其中: π(

x′)=

π(x′

k|x∖

k)∗π

(x∖k

) q(

x′→x

)=π(

xk|x

′∖k)

注意到x′

∖k=x

∖k帶入可知a=1。表明只要取樣就接受。

泛統計理論初探 初探MCMC取樣和MH取樣

初探mcmc取樣方法和mh取樣方法 在之前介紹的文章中,我們介紹了基本的取樣方法。在了解簡單的取樣方法後,本次文章將會介紹mcmc取樣方法與優化的mh取樣方法,這兩種方法對於一些高維度特徵的資料可以進行比較合理的取樣。mcmc取樣方法其實就是蒙特卡洛馬爾科夫鏈的取樣方法,因為這兩個術語的英文簡寫都是...

概率取樣問題

問題 程式輸入兩個整數m和n,其中m 顯然,演算法的執行時間為o n 2 基於集合的演算法 在乙個初始為空的集合裡面插入隨機整數,直到個數足夠,核心問題是如何實現集合s。我們可以考慮有序鍊錶 二叉樹等資料結構,但最直接的辦法是利用c 標準模板庫中的set容器。c stl規範要求每次插入操作都在o l...

MCMC取樣法 一些前置知識

作為一種隨機取樣方法,馬爾科夫鏈蒙特卡羅 markov chain monte carlo,以下簡稱mcmc 在機器學習,深度學習以及自然語言處理等領域都有廣泛的應用,是很多複雜演算法求解的基礎 下面我們就對mcmc的原理做乙個總結。從名字我們可以看出,mcmc由兩個mc組成,即蒙特卡羅方法 mon...