MCMC 和 Gibbs采样
0. MCMC
從名字我們可以看出,MCMC由兩個MC組成,即蒙特卡羅方法(Monte Carlo Simulation,簡稱MC)和馬爾科夫鏈(Markov Chain ,也簡稱MC)。
Monte Carlo (蒙特卡羅)的核心是尋找一個隨機的序列。
0.1 MCMC是什么
那MCMC到底是什么呢?《告別數學公式,圖文解讀什么是馬爾可夫鏈蒙特卡羅方法》里面這樣解釋:MCMC方法是用來在概率空間,通過隨機采樣估算興趣參數的后驗分布。
說的很玄,蒙特卡羅本來就可以采樣,馬爾科夫鏈可以采樣,為啥要將他們合在一起?下面給出兩個動機,后面將從蒙特卡羅開始一直推到gibbs采樣,來深入了解為什么需要MCMC。
再次感謝劉建平MCMC,他是網上寫的最詳細的——將整個脈絡梳理出來了,看完收獲很多。本文幾乎涵蓋了它所有內容,因此只能算一篇讀書筆記。
1.2 為什么需要MCMC
1. 背景
給定一個的概率分布 P(x), 我們希望產生服從該分布的樣本。
前面介紹過一些隨機采樣算法(如拒絕采樣、重要性采樣)可以產生服從特定分布的樣本,但是這些采樣算法存在一些缺陷(如難以選取合適的建議分布,只適合一元隨機變量等)。
下面將介紹一種更有效的隨機變量采樣方法:MCMC 和 Gibbs采樣,這兩種采樣方法不僅效率更高,而且適用于多元隨機變量的采樣。
2. MCMC 采樣
2.1 隨機矩陣
在MCMC采樣中先隨機一個狀態轉移矩陣Q,然而該矩陣不一定能滿足細致平穩定理,一次會做一些改進,具體過程如下
2.2 算法具體流程
MCMC采樣算法的具體流程如下
2.3 MCMC: Metropolis-Hastings algorithm
然而關于MCMC采樣有收斂太慢的問題,所以在MCMC的基礎上進行改進,引出M-H采樣算法
M-H 算法的具體流程如下
M-H算法在高維時同樣適用
2.3.1 基本概念
從一個概率分布(目標分布P(x)P(x)P(x))中得到隨機樣本序列
這個序列可以用于:a) 近似估計分布P(x)P(x)P(x); b) 計算積分(期望)
用于高維分布取樣
缺陷: MCMC固有缺點, 樣本自相關性
2.3.2 優勢
可以從任意的概率分布P(x)P(x)P(x)中取樣,只要滿足條件:函數f(x)成比例于P(x)P(x)P(x)的密度。
更寬松的要求:f(x)f(x)f(x)僅需要與P(x)P(x)P(x)的密度成比例。
2.3.3 要點
- 生成樣本值序列;樣本值產生得越多,這些值的分布就越近似于P(x)P(x)P(x)
- 迭代產生樣本值:下一個樣本的分布僅僅取決于當前樣本值(馬爾科夫鏈特性)
- 接受/拒絕概率:接受計算出的值為下一個樣本值/拒絕并重復使用當前樣本值;基于P(x)P(x)P(x),接受概率通過比較f(xt)f(x_t)f(xt?)(當前值)和f(x′)f(x')f(x′)(備選值)得出
2.3.4 Metropolis Algorithm (對稱分布)
Input: f(x)f(x)f(x),與目標分布P(x)P(x)P(x)成比例的函數
2.3.4.1 初始化:
2.3.4.2 迭代ttt
2.3.5 缺陷
- 樣本自相關:相鄰的樣本會相互相關,雖然可以通過每nnn步取樣的方式來減少相關性,但這樣的后果就是很難讓樣本近似于目標分布P(x)P(x)P(x)。
- 初始值的選擇:盡管Markov Chain最后都會收斂到目標分布,然而初始值的選擇直接影響到運算時間,尤其是把初始值選在在了“低密度”區域。因此,選擇初值時,最好加入一個“burn-in period”(預燒期,預選期)。
2.3.6 優勢
- 抗“高維魔咒”(curse of dimensionality):維度增加,對于rejection sampling方法來說,拒絕的概率就是呈指數增長。而MCMC則成為了解決這種問題的唯一方法
- 多元分布中,為了避免多元初始值以及 g(x∣y)g(x|y)g(x∣y)選擇不當而導致的問題,Gibbs sampling是另外一個更適合解決多元分布問題的MCMC 方法。Gibbs sampling從多元分布的各個維度中分別選擇初始值,然后這些變量分別同時取樣。
2.3.7 衍生算法
2.3.8 小結
一般來說M-H采樣算法較MCMC算法應用更廣泛,然而在大數據時代,M-H算法面臨著兩個問題:
1)在高維時的計算量很大,算法效率很低,同時存在拒絕轉移的問題,也會加大計算量
2)由于特征維度大,很多時候我們甚至很難求出目標的各特征維度聯合分布,但是可以方便求出各個特征之間的條件概率分布(因此就思考是否能只知道條件概率分布的情況下進行采樣)。
3. Gibbs 采樣
3.1 二維的流程
因此可以得出在二維的情況下Gibbs采樣算法的流程如下
3.2 多維
而在多維的情況下,比如一個n維的概率分布π(x1, x2, …xn),我們可以通過在n個坐標軸上輪換采樣,來得到新的樣本。
對于輪換到的任意一個坐標軸xi上的轉移,馬爾科夫鏈的狀態轉移概率為 P(xi|x1, x2, …, xi?1, xi+1, …, xn),即固定n?1個坐標軸,在某一個坐標軸上移動。
而在多維的情況下Gibbs采樣算法的流程如下
3.3 小結
由于Gibbs采樣在高維特征時的優勢,目前我們通常意義上的MCMC采樣都是用的Gibbs采樣。
當然Gibbs采樣是從M-H采樣的基礎上的進化而來的,同時Gibbs采樣要求數據至少有兩個維度,一維概率分布的采樣是沒法用Gibbs采樣的,這時M-H采樣仍然成立。
4. 其他算法
除了最常見的MH那幾個算法,后來還有很多新的比較驚艷的算法出現,比如說slice sampling,elliptical slice sampling,generalized elliptical slice sampling,上面說的BPS, forward event chain MC,還有和神經網絡結合的NNGHMC,A-Nice-MC,以及利用了batch optimization思想的stochastic gradient HMC以及stochastic gradient Langevin dynamic等。
5. 參考資料
以下為列表,鏈接見原文
統計之都-MCMC
HANS-MCMC 算法及其應用
知乎-MCMC 專欄
機器學習之MCMC算法
知乎-MCMC 算法
知乎-MCMC 算法中接受概率是什么意思
MCMC 和 Metropolis–Hastings 算法
馬爾可夫鏈蒙特卡洛(MCMC)算法
CSDN-MCMC
MCMC相關算法介紹及代碼實現
算法資料
http://civs.stat.ucla.edu/MCMC/MCMC_tutorial.htm
http://www.soe.ucsc.edu/classes/cmps290c/Winter06/paps/mcmc.pdf
http://public.lanl.gov/kmh/talks/maxent00b.pdf
http://en.wikipedia.org/wiki/Markov_chain_Monte_Carlo
google keywords: MCMC tutorial
MCMC preprint service:
http://www.statslab.cam.ac.uk/~mcmc/
David MacKay’s book (electronic version availiable):
http://www.inference.phy.cam.ac.uk/mackay/itila/
Radford M. Neal’s review: Probabilistic Inference using Markov Chain Monte Carlo Methods
http://www.cs.toronto.edu/~radford/review.abstract.html
原文鏈接:
https://zhuanlan.zhihu.com/p/37121528
https://houbb.github.io/2020/01/28/math-05-mcmc
https://zhuanlan.zhihu.com/p/21112618
總結
以上是生活随笔為你收集整理的MCMC 和 Gibbs采样的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓手机当电脑摄像头的软件都有哪些(安卓
- 下一篇: linux查询端口号命令(linux查询