前面的取樣方法受限於高維,這裡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...