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