對于大多數(shù)人來說,貝葉斯統(tǒng)計可能只是聽說過的概念。作為其標志性方法之一的馬爾科夫鏈蒙特卡洛方法更是有幾分神秘色彩。雖然這種方法包含巨大的運算量,但是其背后的基本原理卻可以直觀地表達出來。這便是本文想呈現(xiàn)給大家的。
所以,什么是馬爾科夫鏈蒙特卡洛 (Markov Chain Monte Carlo,MCMC) 方法?簡單來說是:
MCMC 方法是一種在概率空間中通過隨機取樣的方法來逼近所感興趣的參數(shù)的后驗分布的方法。
看不懂?別怕,我將在這篇文章中解釋這個簡單的表述,但不用任何數(shù)學推演!
首先介紹一些術(shù)語。我們感興趣的參數(shù)就是一些數(shù)字,即我們對什么量感興趣。通常我們使用統(tǒng)計方法來評估參數(shù)。例如,如果我們想了解成年人的身高,我們感興趣的參數(shù)可能就是平均高度(英寸)。分布是對于參數(shù)可能取值以及取值幾率的數(shù)學呈現(xiàn)。最知名的例子是鐘形曲線:
如果采用貝葉斯統(tǒng)計的方法,我們對于分布會有更多的理解。除了將分布單純理解為一個參數(shù)的值以及這些值取真實值的可能性大小,貝葉斯統(tǒng)計還認為分布描述了我們對于一個參數(shù)的期許,即在看到真實測量的數(shù)據(jù)前預計數(shù)據(jù)怎么樣以及相應的可能性。因此,上面的鐘形線顯示出我們非常確信參數(shù)的值是接近 0 的,但是我們在一定程度上認為真實的值大于或小于 0 的幾率是相同的。
這樣來看,人類的身高確實遵循一個正態(tài)曲線,假如我們相信人類真實的平均身高遵循如下的鐘形曲線:
顯然,懷有如圖所示認知的人們可能生活在巨人國,因為他們認為成年人最可能的平均身高是 6 英尺 2 英寸(約 188cm)。
讓我們想象這個人前去搜集一些數(shù)據(jù),他發(fā)現(xiàn)了一些身高在 5 到 6 英尺的人。我們可以按如下方法呈現(xiàn)這些數(shù)據(jù),另外一條正態(tài)曲線為這些數(shù)據(jù)提供了最好的解釋。
在貝葉斯統(tǒng)計中,代表我們對于一個參數(shù)的預期的分布被稱為先驗分布(prior distribution),因為這種認識是在我們在看到一組真實數(shù)據(jù)之前就有的。而似然分布(likelihood distribution)則通過呈現(xiàn)參數(shù)取值范圍以及取值幾率來總結(jié)我們所觀察到的數(shù)據(jù)呈現(xiàn)給我們的信息。評估使似然分布最大化的參數(shù)值就是在回答下面的問題:什么參數(shù)取值是我們觀察到的數(shù)據(jù)中出現(xiàn)幾率最高的?如果沒有先驗的認知,我們可能就止步于此。
然而貝葉斯統(tǒng)計的關(guān)鍵在于綜合先驗以及似然分布從而給出后驗分布(posterior distribution)。這告訴我們?nèi)绻紤]了先驗認知,什么參數(shù)取值是最可能被觀察到的。在我們所舉的例子中,后驗分布看起來像這樣:
上圖中,紅線代表了后驗分布。大家可以將它視作對于先驗和似然分布的某種平均。由于先驗分布是更矮且展寬更大的,它代表我們預計真實人類身高平均值具有更大的“不確定性”。然而,似然分布則總結(jié)了分布在一個較窄的范圍內(nèi)的數(shù)據(jù),因此它代表了對于真實參數(shù)值應當具有更強的“確定性”。
當先驗和似然分布被綜合考慮,得到的后驗分布很接近似然分布,即那個我們假想的在巨人中成長起來的人脆弱的先驗信念看上去被數(shù)據(jù)左右了。盡管這個人仍然相信人類身高的平均值比數(shù)據(jù)告訴我們的要更高一點,但是他已經(jīng)在很大程度上被數(shù)據(jù)說服了。
對于兩個鐘形曲線的情況,求解后驗概率很容易。用一個簡單的方程就可以將兩者結(jié)合。但是如果我們的先驗和似然分布長得不是這樣完美呢?有時候,使用一個不是很規(guī)則的形狀的分布去描述我們的數(shù)據(jù)反而是更準確的。如果我們需要用雙峰分布去描述我們的數(shù)據(jù),而且我們的先驗分布的形狀較為古怪該怎么做呢?比如下圖的例子,其中的先驗分布被故意畫得很丑:
和前面一樣,后驗分布是存在的,它給出了每個參數(shù)取值的可能性。但是比較難看出它像什么,也很難給出解析解。于是 MCMC 方法就登場了。
MCMC 方法允許我們在無法直接計算的情況下估計后驗分布的形狀。為了理解其工作原理,我將首先介紹蒙特卡洛模擬,接下來再討論馬爾科夫鏈。
蒙特卡洛模擬是一種通過反復生成隨機數(shù)來估計特定參數(shù)的方法。通過使用生成的隨機數(shù)并對其進行一些計算,我們可以得到對參數(shù)的估計值,而直接計算這個值是不可能的或者代價非常昂貴。
假設(shè)我們要估計下面這個圓的面積:
因為圓是邊長十英寸的正方形的內(nèi)接圓,所以很容易計算得到它的面積是 78.5 平方英寸。換個思路,我們可以隨機在方形空間里撒點。接著,我們數(shù)落在圓形內(nèi)的點所占的比例,然后乘上方形的面積。得到的數(shù)字非常接近圓的面積。
因為 20 個點中,有 15 個落在了圓內(nèi),看上去圓的大概面積是 75 平方英寸。看來即使只用了 20 個點,蒙特卡洛方法也能得到不錯的答案。
現(xiàn)在,想象一個場景,我們需要計算下面這個“蝙蝠俠”方程對應的圖形面積:
這個形狀的面積怎么求?我們從沒有學過!因此這看起來是個很困難的任務。然而,通過隨機在包含這個圖形的矩形空間撒點,蒙特卡洛模擬可以很輕松地給我們一個近似的答案!
蒙特卡洛模擬不僅可以用來估計一個復雜形狀的面積。通過生成很多隨機的數(shù)字,它們可以被用于對一個復雜過程建模。事實上,它們被用于預報天氣,或者評估贏得選舉的可能性。
為了理解 MCMC 方法,我們要了解的第二個元素是馬爾科夫鏈。這是一系列在幾率上相互關(guān)聯(lián)的事件。每一個事件都是一系列結(jié)果導致的,而且每一個結(jié)果根據(jù)一組固定的幾率決定接下來將要發(fā)生什么。
馬爾科夫鏈的一個重要特征就是無記憶性:在當前時刻,任何預測下一時刻事件所需要的信息都是已知的,追溯歷史并不會帶來新的信息。像《Chutes and Ladders》等游戲便呈現(xiàn)出了這種無記憶性或馬爾可夫?qū)傩浴,F(xiàn)實世界中很少有事件是這樣運作的,然而馬爾科夫鏈依然是我們理解世界的有力武器。
在 19 世紀,人們觀察到鐘形曲線是自然界中的一種常見模式。(比如我們已經(jīng)注意到,人類的身高遵循一個鐘形曲線。)在使用高爾頓(Galton)板時,人們通過在裝有釘子的板子上投擲彈珠來模擬重復隨機事件的平均值,而在彈珠的分布中再現(xiàn)了正態(tài)曲線:
俄羅斯數(shù)學家和神學家帕維爾-涅克拉索夫(Pavel Nekrasov)認為,鐘形曲線和更普遍的大數(shù)定律只是兒童游戲和瑣碎謎題的產(chǎn)物,其中每個事件是完全獨立的。他認為,現(xiàn)實世界中相互依賴的事件,如人類的行為,并不符合漂亮的數(shù)學模式或分布。
安德烈-馬爾科夫(Andrey Markov)試圖證明非獨立的事件也可能符合某種模式,而馬爾科夫鏈正是以他的名字命名的。他的代表工作之一是需要計算一部俄羅斯詩歌作品中成千上萬的兩字符對。利用這種字對,他計算了每個字的條件概率。也就是說,給定前面的某個字母或空白,下一個字母有一定的機會是 A、T、空白或其他字符。利用這些概率,馬爾科夫有能力模擬一個任意長的字符序列。這就是一個馬爾科夫鏈。盡管前幾個字符在很大程度上是由起始字符的選擇決定的,但馬爾科夫表明字符的分布經(jīng)過足夠長的時間會形成一種模式。因此只要受到固定概率的影響,即使是相互依賴的事件也符合一個平均值。
舉一個更實用的例子,想象你住在一個有五個房間的房子里。你分別有一間臥室、浴室、客廳、餐廳和廚房。讓我們收集一些數(shù)據(jù):假設(shè)你在任何給定的時間點處在哪個房間,我們需要了解你接下來可能會進入哪個房間。例如,如果你在廚房,接下來你有 30% 的機會呆在廚房,30% 的機會進入餐廳,20% 的機會進入客廳,10% 的機會進入浴室,10% 的機會進入臥室。利用每個房間的一組概率,我們可以構(gòu)建一個預測鏈,預測你接下來可能會處于哪些房間。
如果我們想預測房子里的某個人在進入廚房后的一段時間內(nèi)會在哪里,那么對隨后的幾個狀態(tài)進行預測可能是有用的。但是,由于我們的預測只是基于對一個人在房子里的位置的觀察,我們有理由認為這種預測不是很完善。例如,如果有人從臥室到浴室,他們更有可能直接回到臥室,而不是從廚房出來。所以馬爾科夫?qū)傩酝ǔ2贿m用于現(xiàn)實世界。
然而,利用馬爾可夫鏈進行數(shù)千次的迭代,確實可以得出你可能在哪個房間的長期預測。更重要的是,這個預測完全不受這個人開始在哪個房間的影響! 從直覺上講,這是有道理的:為了模擬和描述一個人在長期或一般情況下可能在哪里,他在房子里某個時間點的行為并不重要。因此,馬爾科夫鏈用于預測一個隨機變量在幾個時間步內(nèi)的行為并不完全合理,但只要我們了解支配其行為的概率,就可以用來計算該變量的長期趨勢。
了解了一些關(guān)于蒙特卡洛模擬和馬爾科夫鏈的知識后,我希望不加數(shù)學推演而直觀地展現(xiàn) MCMC 方法示如何工作的。
回顧一下,我們正試圖估計我們感興趣的參數(shù)的后驗分布,即人類平均身高。
我不是可視化專家,顯然我也不擅長將我的例子保持在常識范圍內(nèi):我的后驗分布的例子嚴重高估了人類的平均身高。
我們知道后驗分布的信息包含在我們的先驗分布和似然分布范圍內(nèi),但無論出于什么原因,我們都不能直接計算它。使用 MCMC 方法,我們將有效地從后驗分布中抽取樣本,然后計算所抽取樣本的平均值等統(tǒng)計數(shù)據(jù)。
首先,采用 MCMC 方法會選擇一個隨機參數(shù)值。模擬將繼續(xù)產(chǎn)生隨機值(這是蒙特卡洛部分),但要遵守一些規(guī)則來確定什么是好的參數(shù)值。訣竅在于我們擁有對于數(shù)據(jù)先驗的認知,因此對于一對參數(shù)值,可以通過計算哪個參數(shù)值更好地解釋數(shù)據(jù)來評估哪個是更好的參數(shù)值。如果一個隨機產(chǎn)生的參數(shù)值比上一個更好,它就會被添加到參數(shù)值鏈中,其概率由其“好”的程度決定(這是馬爾科夫鏈部分)。
為了直觀地解釋這一點,讓我們回憶一下,分布在某一數(shù)值上的高度代表觀察到該數(shù)值的概率。因此,可以認為我們的參數(shù)值(X 軸)表現(xiàn)出高和低的概率區(qū)域,顯示在 Y 軸上。對于單個參數(shù),MCMC 方法首先沿 x 軸隨機采樣:
由于隨機樣本服從于固定的概率,它們傾向于在一段時間后向我們感興趣參數(shù)概率最高的區(qū)域內(nèi)收斂:
藍點只是代表任意時間點后的隨機樣本,此時預計會出現(xiàn)收斂。注意:我純粹是為了說明問題而將點垂直堆放。
收斂發(fā)生后,MCMC 抽樣產(chǎn)生了一組點,這些點是后驗分布的樣本。在這些點周圍畫一個直方圖,并可以計算任何想做的統(tǒng)計。
在 MCMC 模擬產(chǎn)生的樣本集上計算的任何統(tǒng)計量都是我們對該統(tǒng)計量在真實后驗分布上的最佳猜測。
MCMC 方法也可以用來估計一個以上參數(shù)的后驗分布(比如說人的身高和體重)。對于 n 個參數(shù)來說,在 n 維空間中存在著概率高的區(qū)域,其中某些參數(shù)值集能更好地解釋觀測數(shù)據(jù)。因此,我認為 MCMC 方法是在一個概率空間內(nèi)隨機抽樣以接近后驗分布的過程。
回顧一下對 "什么是馬爾科夫鏈蒙特卡洛方法?" 這個問題的簡短回答:
MCMC 方法就是在概率空間中通過隨機抽樣逼近感興趣參數(shù)的后驗分布的方法。
我希望我已經(jīng)解釋清楚了這句話,即為什么你會使用 MCMC 方法,以及它們?nèi)绾喂ぷ?。這篇文章的靈感來自于我在美國華盛頓所作的關(guān)于數(shù)據(jù)科學的演講。那次演講的目的是向非專業(yè)聽眾解釋馬爾科夫鏈蒙特卡洛方法,我在文中也是這樣嘗試去做的。
本文來自微信公眾號:中科院物理所 (ID:cas-iop),作者:b,翻譯:云開葉落,審校:Nothing
廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。