天天看點

無需數學知識:快速了解馬爾可夫鍊蒙特卡洛方法

對于大多數朋友而言,貝葉斯(Bayesian)統計就像是一種魔法甚至是巫術,當然也有人将其視為一種完全主觀的廢話。而在貝葉斯方法家族當中,馬爾可夫鍊蒙特卡洛方法(Markov chain Monte Carlo methods)顯得尤為神秘。雖然其中确實涉及大量數學知識且需要昂貴的計算資源,但與資料科學領域的衆多其它方法一樣,其中的基本推理過程同樣可以通過非常直覺的方式進行歸納。而這正是本文的核心主旨所在。

那麼,馬爾可夫鍊蒙特卡洛方法(Markov chain Monte Carlo,簡稱MCMC)究竟是什麼?簡而言之:

MCMC.方法用于通過在機率空間中進行随機采樣以近似地得出某一感興趣參數的後驗分布。

在本文當中,我将對這句簡單的答案進行深入分析——而且不用擔心,不涉及任何數學知識。

首先需要講解一些術語。其中提到的感興趣參數為用于總結我們所關注的某些現象的相關數字。一般來說,我們會利用統計方法估計此類參數。舉例來說,如果我們希望了解成年人的身高水準,那麼感興趣參數很可能是以英寸為機關的平均身高數字。分布代表的則是該參數每個可能值的數學表達以及我們觀察到各個數值的具體機率。其中最著名的當數貝爾(鐘形)曲線:

在貝葉斯統計方法當中,分布概念還擁有另一項額外解釋。貝葉斯不僅僅代表參數的數值,同時亦用于表現每項參數的真實值大小——更具體地講,貝葉斯可以被了解為我們對于某一參數的确定度。是以,以上貝爾曲線表明我們能夠基本确定參數的實際值非常接近于零,但我們認為其真實值高于或者低于此值的可能是相等的。

事實上,人體身高确實遵循一條正常曲線,是以假設我們認定人體平均身高的真實值遵循以下貝爾曲線:

很明顯,以上圖表所示的結果隻可能來源于“巨人族群”——因為可以看到,大多數平均成年人身高為6英尺2英寸(不過其對結果并不是非常确定)。

下面讓我們假想這位統計者收集到一批新的資料,其中出現了一部分身高在5英尺到6英尺之間的成年人。我們可以使用以下資料表達這種情況,由此得出的正常曲線能夠對這一平均身高資料作出最佳解釋:

在貝葉斯統計當中,對于參數的确定度分布被稱為先驗分布,因為其會在擷取任何實際資料之前首先捕捉到我們的确定度水準。似然分布則總結了觀測資料所提供的結論,即通過将參數值範圍同單項參數相結合以解釋我們目前所觀察資料的機率。對似然分布的參數值進行最大化估計,能夠回答這樣一個問題:哪些參數值決定了我們觀察到目前資料的機率。如果缺少這種先驗機率,我們将無法進一步作出分析。

不過貝葉斯分析的核心,在于将先驗分布與似然分布相結合以确定後驗分布。配合先驗機率,後驗分布能夠告訴我們哪些參數值能夠最大程度提升我們觀察到特定資料的機率。在我們的示例中,得出的後驗分布結果如下所示:

如上圖所示,紅色曲線表示後驗分布。大家可以将其視為一種先驗與可能性的分布平均值。由于先驗分布較短且更為分散,是以其代表着一種關于平均人體身高真實值的“不太确定”的預判。與此同時,機率會在相對較窄的範圍内進行資料彙總,是以其代表着對真實參數值的“更加确定”的猜測。

當先驗機率被合并進來後,該資料(表達為機率)成為假設個體在巨人族群内成長這一弱先驗分布結論的主體。盡管統計者仍然認為人類的平均身高比其實際獲得的資料略高一些,但其仍更相信實際資料所表達出的結果。

在擁有兩條貝爾曲線的情況下,我們能夠輕松解出後驗分布——使用一條簡單的方程式即可輕松将二者結合起來。但如果我們的先驗分布與機率分布結果不夠理想,又該如何?有時候,利用形狀不規律的分布進行資料或者先驗機率模組化能夠帶來更準确的結果。如果我們的機率結果需要使用一項包含兩個峰值的分布才能确切表達,而且出于某種原因我們需要解釋一些非常古怪的先驗分布結論,又該如何處理?下面,我以手工方式繪制了一條粗糙的先驗分布曲線:

如前所述,存在某些後驗分布能夠給出每項參數值的具體機率。但單純從圖形上來看,我們很難了解其具體表達的含義,而且這種情況無法通過分析進行解決。這時,我們就需要使用MCMC方法。

MCMC方法允許我們對後驗分布的形狀進行估計,進而解決這類無法直接計算的問題。這裡再次強調,MCMC的全稱即為馬爾可夫鍊蒙特卡洛方法。為了了解其工作原理,我将首先介紹蒙特卡洛模拟,而後再讨論馬爾可夫鍊概念。

所謂蒙特卡洛模拟(Monte Carlo simulations),是指一種通過重複生成随機數來估計固定參數的方法。通過生成随機數并對其進行一些計算,蒙特卡洛模拟能夠為某一無法直接計算(或者直接計算成本過于高昂)的參數提供近似值。

假設我們需要估算下圖中圓圈的面積:

由于圓形處于邊長為10英寸的正方形之内,是以可以輕松計算出其面積為78.5平方英寸。不過在這裡我們不使用簡單的面積公式,而是在正方形内随機抽取20個點,而後計算處于圓内的點的比例,并乘以正方形的面積。由此得出的數字即為相當趨近于圓形面積的近似值。

由于20個點中有15個處于圓形之内,是以圓形的大概面積為75平方英寸。雖然結果仍有誤差,但考慮到僅使用了20個随機點,可以看到蒙特卡洛模拟的效果确實值得肯定。

現在,我們設想需要計算蝙蝠俠标志的面積:

對于這樣的形狀,顯然沒有任何現成的面積求取公式可以使用!不過,我們可以在矩形區域内随機取點,并利用蒙特卡洛模拟輕松獲得該标志面積的近似值。

蒙特卡洛模拟不僅适用于各種異形面積的求取。事實上,通過生成大量随機數,其亦可用于模拟其它非常複雜的流程——例如實踐當中的天氣預測或者候選人在選舉中勝出的可能性等。

了解MCMC方法的第二大關鍵在于馬爾可夫鍊。其代表的是事件機率之間互相關聯的序列。每個事件來自一組結果,而每項結果都由上一組結果配合固定機率确定而來。

馬爾可夫鍊的一大重要特征在于其無記憶屬性:在預測下一個事件時,我們隻需要考慮目前狀态,而以往的曆史狀态皆與此無關。雖然現實世界中很少有運作方式如此規則的場景,但馬爾可夫鍊仍是我們了解種種現實問題的有力手段。

在十九世紀,貝爾曲線被視為一種正常性模式(舉例來說,我們已經注意到人類身高分布即遵循一條貝爾曲線)。高爾頓釘闆則通過在裝有木質隔闆的平面上撒下大理石球的方式模拟重複随機事件的平均值情況,旨在重制大理石球分布的正态曲線:

俄羅斯數學家兼神學家帕維爾·涅克拉索夫(Pavel Nekrasov)認為,貝爾曲線以及更為正常的大數定律隻不過是兒童遊戲與瑣碎拼圖中的産物,事實上其中的每個事件都以完全獨立的形式存在。在他看來,現實世界中互相依存的事物——例如人類行為——不會恰好符合數學模式或者分布。

但作為馬爾可夫鍊的命名來源安德烈-馬爾可夫(AndreyMarkov)則試圖證明非獨立事件也可能符合這種模式。他提出的最為著名的執行個體就是從一本俄羅斯詩歌作品中提出數以千計的雙字元對。利用這些字元對,他計算出各個字元的條件機率。具體來講,給定前一字母或者空格,即可判斷接下來的字元為A、T或者空格的機率。利用這些機率,馬爾可夫即可模拟出任意長度的字元序列。這就是一條馬爾可夫鍊。盡管最初的幾個字母在很大程度上取決于起始字元的選擇,但從研究結果表明,從長期角度來看字元分布同樣遵循一種模式。是以,即使是存在互相關聯的事件,如果其受到固定機率的影響,那麼仍然擁有一緻的平均值表現。

下面我們舉個距離生活更近的例子。假設您生活在一棟擁有五個房間的房子裡,這些房間分别為卧室、衛生間、客廳、餐廳與廚房。我們将收集一些資料,并嘗試判斷在任意時間點身處某一房間時,進入另一特定房間的機率。假設您身在廚房,那麼可能有30%的機率繼續留在廚房中、30%機率進入餐廳、20%機率進入客廳、10%的機率進入衛生間,最後10%機率進入卧室。利用這組機率資料,我們就能夠建構起一條用于預測接下來前往目的地的馬爾可夫鍊(Markov chains)。

但這種方法可能隻适用于預測少數特殊情況——更具體地講,由于我們的預測結論僅基于單一對象在家中的活動,是以結果可能并不足以反映真實情況。舉例來說,如果有人從卧室前往衛生間,那麼接下來其很可能直接傳回卧室而非前往我們預設的起始位置——廚房。正因為如此,馬爾可夫鍊往往并不适用于現實場景。

然而,如果對馬爾可夫鍊進行數千次疊代,則完全可以立足長期角度預測人物對象的活動趨勢。更重要的是,這一預測将不會受到具體起始房間的影響!更直覺地講,這一點非常重要:某人某個時間點處于家中的具體哪個位置其實并不重要,更重要的是對其長期或者一般性駐留情況進行模拟與描述。是以,隻要我們能夠了解控制其具體行為的機率,即可将馬爾可夫鍊由一種在短期内進行随機變量模組化的非合理性方法轉化為計算變量長期趨勢的有效手段。

擁有了上述蒙特卡洛模拟與馬爾可夫鍊相關知識,相信大家将能夠更為直覺地了解以下關于MCMC方法的數學解釋。

各位應該還記得,我們的目标是估算感興趣參數的後驗分布,即人均身高:

我本人不是可視化專家,而且作為示例這裡使用的資料也沒有刻意追求真實性:我的後驗分布示例顯然嚴重高估了人類的平均身高。

我們都知道,後驗分布存在于我們的先驗分布範圍與似然分布範圍之内。但無論如何,我們都無法直接計算出結果。利用MCMC方法,我們将能夠有效從後驗分布中提取樣本,而後計算這批樣本的平均值。

首先,MCMC方法會選擇一個随機參數值作為起點。模拟流程會繼續生成随機值(即蒙特卡洛模拟),并根據相關規則以确定更為準确的參數值。其中的訣竅在于,對于兩個參數值,我們可以計算每個值在解釋資料時的具體機率,借此計算哪個參數值更加準确。如果随機生成的參數值比上一個參數值更準确,則将其添加到參數值鍊當中,并以一定機率(即馬爾可夫鍊方法)确定其改程序度。

為了直覺地作出解釋,我們這裡再次強調,某一值的分布高度代表着觀察到該值的機率。是以,我們可以想象自己的參數值(x軸)将在y軸上呈現出高低機率區域。對于單一參數,MCMC方法會沿x軸進行随機采樣:

圖:紅點代表随機參數樣本

由于随機樣本受到固定機率的影響,是以預計其會在一段時間後在感興趣度參數出現機率最高的區域發生收斂:

圖:藍點代表任意時間點之後的随機樣本,此時預計收斂已經開始發生。請注意:為了易于了解,這裡我單純将各點進行垂直堆疊。

在收斂發生之後,MCMC會從後驗分布内抽取一組樣本點。在這些點周圍繪制直方圖,并借此計算您感興趣的任何統計結果:

由MCMC模拟所生成的樣本集所計算出的統計結果,即為我們對于該真實後驗分布統計結果的最佳猜測。

MCMC方法亦可用于估算多面參數的後驗分布(例如人的身高與體重)。對于n個參數,其會在n維空間中存在高機率區域,且其中某些參數值集合能夠更好地解釋觀察到的資料。是以,我認為MCMC方法實際上是在機率空間内進行随機采樣以求取後驗分布的近似值。

在文章的最後,我想幫助大家再次簡要回顧一下“馬爾可夫鍊蒙特卡洛方法是什麼?”

MCMC方法用于通過在機率空間中進行随機采樣以近似地得出某一感興趣參數的後驗分布。

希望我作出的上述簡短答案能夠幫助大家了解MCMC方法、為何要使用這種方法及其工作原理。這篇文章的靈感源自我在華盛頓特區召開的全體會議上參加的資料科學沉浸式課程。該項課程的目的是向無技術背景的觀衆解釋馬爾可夫鍊蒙特卡洛方法,而本篇文章的意義也同樣在于此。

原文出處:科技行者

轉載請與作者聯系,同時請務必标明文章原始出處和原文連結及本聲明。

繼續閱讀