MCMC采样算法
ref:
https://www.cs.ubc.ca/~arnaud/andrieu_defreitas_doucet_jordan_intromontecarlomachinelearning.pdf
MCMC(Markov chain Monte Carlo)是一類采樣方法,起源與1930年代的研究。MCMC模擬是解決某些高維困難問題的唯一有效方法,通過選擇統計樣本來近似困難組合問題是現代MCMC模擬的核心。
MCMC計技術經常被用于解決高維空間下的積分和優化問題,比如求期望,求目標函數極值等。MCMC方法從目標分布p(x) iid的采樣N個樣點,那么便可由大數定律保證如下的近似:
但有時候p(x)并不是像高斯分布那樣易于采樣的形式,此時需要一些更復雜的技術,如拒絕采樣,重要性采樣和MCMC。
拒絕采樣算法如下所示:
其中q分布一般取好采樣的分布比如均勻分布和高斯分布,稱參考分布,顯然p q若比較接近那么采樣效率會比較好,之后乘系數M使得參考分布能完全包住目標分布,之后的采樣操作很巧妙,可以看做是以正比于p的概率接收樣點。此方法的一個問題是為滿足約束M有時會被迫取的很大,從而導致:
這一問題使得拒絕采樣在高維場景下不佳。
https://blog.csdn.net/jteng/article/details/54344766
重要性采樣:
https://www.jianshu.com/p/3d30070932a8
MCMC采樣:
馬爾科夫鏈(MC)精髓之一在于定義狀態轉移的概率只依賴于前一個狀態。MC有一個有名的收斂定理指出不管鏈的初始狀態如何,最終狀態都將收斂到一個固定的終止分布。(需滿足以下條件:可能的狀態數是有限的,轉移概率固定不變,從任意狀態能夠轉變到任意其他狀態)
https://www.cnblogs.com/pinard/p/6632399.html
https://cosx.org/2013/01/lda-math-mcmc-and-gibbs-sampling/
MCMC方法利用了MC鏈會收斂到確定分布的性質,即如果我們能構造一個轉移矩陣為P的馬氏鏈,使得該馬氏鏈的平穩分布恰好是p(x), 那么我們從任何一個初始狀態x0出發沿著馬氏鏈轉移, 得到一個轉移序列 x0,x1,x2,?xn,xn+1?,, 如果馬氏鏈在第n步已經收斂了,于是我們就得到了p(x)的樣本xn,xn+1?!!!
上述方法起源于Metropolis,經一些優化后成為了經典的MH-MCMC算法。
關于MH-MCMC的原理詳見:
https://zhuanlan.zhihu.com/p/37121528
https://cosx.org/2013/01/lda-math-mcmc-and-gibbs-sampling/
簡言之,MH-MCMC目標是設計能收斂到目標分布的MC鏈的巧妙方法。直接找到理想轉移矩陣是幾乎不可行的,MH方法引入接受率概念對不完美的轉移矩陣進行修正,使得滿足收斂條件。
上面資料主要以離散形式進行說明,在連續問題上,MC鏈的狀態轉移如下計算,
原來的轉移矩陣變為了積分核K,經常為高斯分布。這種形式的MCMC在實踐中更為多見,積分核K的具體設計是個關鍵問題,很多MCMC的改進變種都針對積分核K進行(比如著名的吉布斯采樣,進來還有用深度學習來做核的)。下圖為使用不同方差高斯積分核K的采樣結果,展示了因核不佳造成采樣效率低和視野窄的問題,這也是設計新核的最主要關注點和最期望改善的問題。
https://zhuanlan.zhihu.com/p/67691581
簡介了一種重要的改進算法:HMC,HMC是很多概率建模軟件如pymc stan等的默認MCMC方法,工程上使用非常普遍。
總結
- 上一篇: 好用的shell工具_精选5个酷毙的Py
- 下一篇: unity中怎么做河流_【干货】工作中怎