马尔可夫蒙特卡罗 MCMC 原理及经典实现
我們在做機器學習、深度學習或自然語言處理等項目時,經常采用什么方法采樣呢?大家馬上會想到吉布斯 Gibbs 采樣,今天我們來分享一種比較實用的采樣方法:馬爾可夫蒙特卡羅方法,吉布斯采樣是其中的一種。
Markov chain Monte Carlo methods中的 Markov chain 是因為這些方法生成的序列都是馬爾科夫鏈,每個值都只和自己前后幾個值有關; Monte Carlo是因為這些方法是用隨機化的方法解決確定性問題,從已知概率分布中采樣出一系列符合這個分布的樣本。
要弄懂MCMC的原理,我們首先得搞清楚蒙特卡羅方法和馬爾科夫鏈的原理。個人總結如圖一所示。
圖一:馬爾可夫蒙特卡羅MCMC方法
1. 蒙特卡羅方法
蒙特卡羅方法是很寬泛的一類計算方法,依賴重復的隨機采樣去獲得數值結果。
(原文:Monte Carlo methods is a broad class of computational algorithms that rely on repeated random sampling to obtain numerical results。)
其本質是使用隨機性去解決確定性的問題。
主要用于解決三種問題:**優化,數值積分,從概率分布中采樣。**原則上,蒙特卡羅方法可以用來解決任何具有概率解釋的問題。根據大數定律,某一隨機變量的期望可以用該變量的樣本的經驗均值(即樣本均值)來近似。
當變量的概率分布參數化時(參數確定下來時),數學家們經常使用**馬爾可夫鏈蒙特卡羅(MCMC)采樣器 。其核心思想是設計一個具有給定平穩概率分布的馬爾科夫鏈模型。**根據遍歷理論,用MCMC采樣器的隨機狀態的經驗測度來近似平穩分布。
1.1 蒙特卡羅概念及引入
蒙特卡羅方法就是生成樣本,即蒙特卡羅采樣。即根據某已知分布的概率密度函數f(x)f(x)f(x),產生服從此分布的樣本XXX。最早的蒙特卡羅方法都是為了解決一些求和或者積分問題。比如積分:
也就是說,我們最上面的均勻分布也可以作為一般概率分布函數p(x)p(x)p(x)在均勻分布時候的特例。那么我們現在的問題轉到了如何求出分布p(x)p(x)p(x)對應的若干個樣本來。
1.2 概率分布采樣
上一節我們講到蒙特卡羅方法的關鍵是得到 xxx的概率分布,那如何基于常見概率分布$$取得樣本集 xxx呢。
1.3 接受-拒絕采樣
對于概率分布不是常見的分布,一個可行的辦法是采用接受-拒絕采樣來得到該分布的樣本。 既然 p(x)p(x)p(x)太復雜在程序中沒法直接采樣,那么我設定一個程序可采樣的分布 q(x)q(x)q(x)比如高斯分布,然后按照一定的方法拒絕某些樣本,以達到接近 p(x)p(x)p(x)分布的目的,其中q(x)q(x)q(x)叫做 proposal distribution。
1.4 蒙特卡羅方法缺陷
使用接受-拒絕采樣,我們可以解決一些概率分布不是常見的分布的時候。但是接受-拒絕采樣也只能部分滿足我們的需求,在很多時候我們還是很難得到我們的概率分布的樣本集。比如:
1)對于一些二維分布p(x,y),有時候我們只能得到條件分布p(x|y) 和p(y|x) 的和,卻很難得到二維分布p(x,y) 一般形式,這時我們無法用接受-拒絕采樣得到其樣本集。
2)對于一些高維的復雜非常見分布p(x1,x2,…,xn),我們要找到一個合適的q(x)和 k 非常困難。
蒙特卡羅法的缺陷
通常的蒙特卡羅方法可以模擬生成滿足某個分布的隨機向量,但是蒙特卡羅方法的缺陷就是難以對高維分布進行模擬。對于高維分布的模擬,最受歡迎的算法當屬馬爾科夫鏈蒙特卡羅算法(MCMC)。
2.馬爾科夫鏈方法
2.1 馬爾科夫鏈定義
某一時刻狀態轉移的概率只依賴于它的前一個狀態,我們只要能求出系統中任意兩個狀態之間的轉換概率,這個馬爾科夫鏈模型就能確定。每一個狀態都以一定的概率轉化到下一個狀態,這個狀態概率轉化圖可以用矩陣的形式表示。這就是我們常說的馬爾科夫鏈模型狀態轉移矩陣。
那么馬爾科夫鏈模型的狀態轉移矩陣和我們蒙特卡羅方法需要的概率分布樣本集有什么關系呢?
2.2 馬爾科夫鏈模型狀態轉移矩陣的性質
實驗得出:從不同初始概率分布開始,代入狀態轉移矩陣,最終狀態概率分布趨于同一個穩定的概率分布, 也就是說馬爾科夫鏈模型的狀態轉移矩陣收斂到的穩定概率分布與我們的初始狀態概率分布無關。
這個性質對離散狀態、連續狀態都成立。
2.3 基于馬爾科夫鏈采樣
2.4 馬爾科夫鏈采樣小結
如果假定我們可以得到馬爾科夫鏈狀態轉移矩陣,那么我們就可以用馬爾科夫鏈采樣得到我們需要的樣本集,進而進行蒙特卡羅模擬。但是一個重要的問題是,隨意給定一個平穩分布π\piπ,如何得到它所對應的馬爾科夫鏈狀態轉移矩陣PPP呢?這是個大問題。我們繞了一圈似乎還是沒有解決任意概率分布采樣樣本集的問題。
幸運的是,MCMC采樣通過迂回的方式解決了上面這個大問題,下面將討論MCMC采樣,以及改進版: M-H采樣和Gibbs采樣。
3 MCMC采樣
MCMC方法包含了一類用于從特定概率分布中采樣的算法。
它們是通過構建一個自身的分布接近它的平穩分布的馬爾科夫鏈,這個馬爾科夫鏈就是被采樣的分布的一組采樣值,這需要觀察這個馬爾科夫鏈一些步驟才能完成,且觀察的步驟越多,得到的采樣值的分布就越接近于想要的分布。
By constructing a Markov chain that has the desired distribution as its equilibrium distribution, one can obtain a sample of the desired distribution by observing[clarification needed] the chain after a number of steps. The more steps there are, the more closely the distribution of the sample matches the actual desired distribution.
MCMC方法最初是被用于計算多維積分的數值近似值。
MCMC方法從一個連續隨機變量中,以和已知函數成比例的概率密度生成一組采樣樣本,這組樣本就可以用于計算這個變量的期望和方差。
3.1 馬爾科夫鏈的細致平穩條件
那么如何使這個等式滿足呢?下面我們來看MCMC采樣如何解決這個問題。
3.2 MCMC采樣
好了,現在我們來總結下MCMC的采樣過程。
3.3 M-H采樣
M-H采樣是Metropolis-Hastings采樣的簡稱,這個算法首先由Metropolis提出,被Hastings改進,因此被稱之為Metropolis-Hastings采樣或M-H采樣。M-H采樣解決了我們上一節MCMC采樣接受率過低的問題。
3.4 M-H采樣總結
M-H采樣完整解決了使用蒙特卡羅方法需要的任意概率分布樣本集的問題,因此在實際生產環境得到了廣泛的應用。
但是在大數據時代,M-H采樣面臨著兩大難題:
Gibbs采樣解決了上面兩個問題,因此在大數據時代,MCMC采樣基本是Gibbs采樣的天下。
MCMC方法從一個連續隨機變量中,以和已知函數成比例的概率密度生成一組采樣樣本,這組樣本就可以用于計算這個變量的期望和方差。
3.5 吉布斯Gibbs采樣基礎概念
吉布斯采樣就是一種MCMC方法,用于在直接采樣聯合分布很困難時,生成某特定多參數的概率分布的一組近似觀測值。
當聯合分布不被明確知道或者聯合分布很難直接采樣但每個變量的條件分布已知且容易采樣時,吉布斯采樣適用。
吉布斯采樣是一種用于統計推斷的方法,尤其是貝葉斯推斷 。它是一種隨機化算法(即使用隨機數的算法),是用于統計推斷的確定性算法(如EM算法)的替代品。
最初的吉布斯采樣是Metropolis–Hastings 算法的一個特例。但后來得到擴展,它可以被看成是一個通用的用于通過依次采樣每一個變量從一組變量中采樣的框架,而且可以把M-H算法,甚至更高級的算法比如 slice sampling切片采樣, adaptive rejection sampling 自適應拒絕采樣,合并進來實現采樣過程的一些步驟。
這組生成的近似觀測值可以用于近似聯合概率分布;也可以去近似某個變量的邊緣分布;或者近似其中部分變量的聯合分布;或者計算某個變量的期望。
就像其他MCMC算法一樣,吉布斯采樣生成的一組近似觀測值是一個馬爾科夫鏈,即每個觀測值只和附近幾個值有相關性。所以如果要采樣出完全獨立的觀測值,需要特別注意這一點。而且一般來自馬爾科夫鏈開端的那些樣本不能很好的表示原概率分布,會被去掉。而且采樣值的馬爾可夫鏈越長越有利于逼近原分布。
吉布斯采樣依次從每個變量的分布中生成一個實例,基于其他變量的當前值。可以證明,這樣生成的采樣值序列是一個馬爾科夫鏈,并且這個馬爾科夫鏈的平穩分布就是我們想要采樣的那個后驗分布。
對于從多變量的聯合分布中采樣出一個向量(所有變量是向量的分量),從條件分布中采樣比做積分算邊緣概率簡單得多。
The point of Gibbs sampling is that given a multivariate distribution it is simpler to sample from a conditional distribution than to marginalize by integrating over a joint distribution.
吉布斯采樣尤其適用于采樣貝葉斯網絡的后驗分布,因為一般貝葉斯網絡就是用一組條件分布描述的。
Gibbs sampling is particularly well-adapted to sampling the posterior distribution of a Bayesian network, since Bayesian networks are typically specified as a collection of conditional distributions.
3.6 多維吉布斯Gibbs采樣實現
3.7 吉布斯Gibbs采樣小結
由于Gibbs采樣在高維特征時的優勢,目前我們通常意義上的MCMC采樣都是用的Gibbs采樣。當然Gibbs采樣是從M-H采樣的基礎上的進化而來的,同時Gibbs采樣要求數據至少有兩個維度,一維概率分布的采樣是沒法用Gibbs采樣的,這時M-H采樣仍然成立。
有了Gibbs采樣來獲取概率分布的樣本集,有了蒙特卡羅方法來用樣本集模擬求和,他們一起就奠定了MCMC算法在大數據時代高維數據模擬求和時的作用。
梳理資料主要來自以下鏈接、大學教材以及一些博客文章,在這里就不一一感謝!
https://www.cnblogs.com/pinard/p/6625739.html
原文鏈接
https://zhuanlan.zhihu.com/p/392917306
總結
以上是生活随笔為你收集整理的马尔可夫蒙特卡罗 MCMC 原理及经典实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: App 追踪功能有什么用iPhone13
- 下一篇: iPhone 13与iPhone 13