您現在的位置是:首頁 > 足球

怎麼計算“蝙蝠俠”的面積?室友唱的瑪卡巴卡之歌,給了我靈感……

  • 由 中科院物理所 發表于 足球
  • 2023-01-09
簡介”這個問題的簡短回答:MCMC方法就是在機率空間中透過隨機抽樣逼近感興趣引數的後驗分佈的方法

室友長出花x怎麼辦

認真閱讀下面的文章,並思考文末互動提出的問題,嚴格按照

互動:你的答案

格式在評論區留言,就有機會獲得由

機械工業出版社

提供的優質科普書籍

《web3.0 漫遊指南

對於大多數人來說,貝葉斯統計可能只是聽說過的概念。作為其標誌性方法之一的馬爾科夫鏈蒙特卡洛方法更是有幾分神秘色彩。雖然這種方法包含巨大的運算量,但是其背後的基本原理卻可以直觀地表達出來。這便是本文想呈現給大家的。

所以,什麼是

馬爾科夫鏈蒙特卡洛(

Markov Chain Monte Carlo,MCMC)

方法?簡單來說是:

MCMC方法是一種在機率空間中透過隨機取樣的方法來逼近所感興趣的引數的後驗分佈的方法。

看不懂?別怕,我將在這篇文章中解釋這個簡單的表述,但不用任何數學推演!

首先介紹一些術語。我們感興趣的

Markov Chain Monte Carlo

就是一些數字,即我們對什麼量感興趣。通常我們使用統計方法來評估引數。例如,如果我們想了解成年人的身高,我們感興趣的引數可能就是平均高度(英寸)。

引數

是對於引數可能取值以及取值機率的數學呈現。最知名的例子是鐘形曲線:

怎麼計算“蝙蝠俠”的面積?室友唱的瑪卡巴卡之歌,給了我靈感……

如果採用貝葉斯統計的方法,我們對於分佈會有更多的理解。除了將分佈單純理解為一個引數的值以及這些值取真實值的可能性大小,貝葉斯統計還認為分佈描述了我們對於一個引數的期許,即在看到真實測量的資料前預計資料怎麼樣以及相應的可能性。因此,上面的鐘形線顯示出我們非常確信引數的值是接近0的,但是我們在一定程度上認為真實的值大於或小於0的機率是相同的。

這樣來看,人類的身高確實遵循一個正態曲線,假如我們相信人類真實的平均身高遵循如下的鐘形曲線:

怎麼計算“蝙蝠俠”的面積?室友唱的瑪卡巴卡之歌,給了我靈感……

顯然,懷有如圖所示認知的人們可能生活在巨人國,因為他們認為成年人最可能的平均身高是6英尺2英寸(約188cm)。

讓我們想象這個人前去搜集一些資料,他發現了一些身高在5到6英尺的人。我們可以按如下方法呈現這些資料,另外一條正態曲線為這些資料提供了最好的解釋。

怎麼計算“蝙蝠俠”的面積?室友唱的瑪卡巴卡之歌,給了我靈感……

在貝葉斯統計中,代表我們對於一個引數的預期的分佈被稱為

分佈

(prior distribution),因為這種認識是在我們在看到一組真實資料之前就有的。而

先驗分佈

(likelihood distribution)則透過呈現引數取值範圍以及取值機率來總結我們所觀察到的資料呈現給我們的資訊。評估使

似然分佈

的引數值就是在回答下面的問題:什麼引數取值是我們觀察到的資料中出現機率最高的?如果沒有先驗的認知,我們可能就止步於此。

然而貝葉斯統計的關鍵在於綜合先驗以及似然分佈從而給出

似然分佈最大化

後驗

(posterior distribution)。這告訴我們如果考慮了先驗認知,什麼引數取值是最可能被觀察到的。在我們所舉的例子中,後驗分佈看起來像這樣:

怎麼計算“蝙蝠俠”的面積?室友唱的瑪卡巴卡之歌,給了我靈感……

上圖中,紅線代表了後驗分佈。大家可以將它視作對於先驗和似然分佈的某種平均。由於先驗分佈是更矮且展寬更大的,它代表我們預計真實人類身高平均值具有更大的“不確定性”。然而,似然分佈則總結了分佈在一個較窄的範圍內的資料,因此它代表了對於真實引數值應當具有更強的“確定性”。

當先驗和似然分佈被綜合考慮,得到的後驗分佈很接近似然分佈,即那個我們假想的在巨人中成長起來的人脆弱的先驗信念看上去被資料左右了。儘管這個人仍然相信人類身高的平均值比資料告訴我們的要更高一點,但是他已經在很大程度上被資料說服了。

對於兩個鐘形曲線的情況,求解後驗機率很容易。用一個簡單的方程就可以將兩者結合。但是如果我們的先驗和似然分佈長得不是這樣完美呢?有時候,使用一個不是很規則的形狀的分佈去描述我們的資料反而是更準確的。如果我們需要用雙峰分佈去描述我們的資料,而且我們的先驗分佈的形狀較為古怪該怎麼做呢?比如下圖的例子,其中的先驗分佈被故意畫得很醜:

怎麼計算“蝙蝠俠”的面積?室友唱的瑪卡巴卡之歌,給了我靈感……

在Matplotlib中渲染的視覺化,使用MS Paint增強

和前面一樣,後驗分佈是存在的,它給出了每個引數取值的可能性。但是比較難看出它像什麼,也很難給出解析解。於是

分佈

方法就登場了。

MCMC方法允許我們在無法直接計算的情況下估計後驗分佈的形狀。為了理解其工作原理,我將首先介紹

MCMC

,接下來再討論

蒙特卡洛模擬

馬爾科夫鏈

是一種透過反覆生成隨機數來估計特定引數的方法。透過使用生成的隨機數並對其進行一些計算,我們可以得到對引數的估計值,而直接計算這個值是不可能的或者代價非常昂貴。

假設我們要估計下面這個圓的面積:

怎麼計算“蝙蝠俠”的面積?室友唱的瑪卡巴卡之歌,給了我靈感……

因為圓是邊長十英寸的正方形的內接圓,所以很容易計算得到它的面積是78。5平方英寸。換個思路,我們可以隨機在方形空間裡撒點。接著,我們數落在圓形內的點所佔的比例,然後乘上方形的面積。得到的數字非常接近圓的面積。

怎麼計算“蝙蝠俠”的面積?室友唱的瑪卡巴卡之歌,給了我靈感……

因為20個點中,有15個落在了圓內,看上去圓的大概面積是75平方英寸。看來即使只用了20個點,蒙特卡洛方法也能得到不錯的答案。

現在,想象一個場景,我們需要計算下面這個“蝙蝠俠”方程對應的圖形面積:

怎麼計算“蝙蝠俠”的面積?室友唱的瑪卡巴卡之歌,給了我靈感……

這個形狀的面積怎麼求?我們從沒有學過!因此這看起來是個很困難的任務。然而,透過隨機在包含這個圖形的矩形空間撒點,蒙特卡洛模擬可以很輕鬆地給我們一個近似的答案!

蒙特卡洛模擬不僅可以用來估計一個複雜形狀的面積。透過生成很多隨機的數字,它們可以被用於對一個複雜過程建模。事實上,它們被用於預報天氣,或者評估贏得選舉的可能性。

為了理解MCMC方法,我們要了解的第二個元素是

蒙特卡洛模擬

。這是一系列在機率上相互關聯的事件。每一個事件都是一系列結果導致的,而且每一個結果根據一組固定的機率決定接下來將要發生什麼。

馬爾科夫鏈的一個重要特徵就是

馬爾科夫鏈

:在當前時刻,任何預測下一時刻事件所需要的資訊都是已知的,追溯歷史並不會帶來新的資訊。像《Chutes and Ladders》等遊戲便呈現出了這種無記憶性或馬爾可夫屬性。現實世界中很少有事件是這樣運作的,然而馬爾科夫鏈依然是我們理解世界的有力武器。

在19世紀,人們觀察到鐘形曲線是自然界中的一種常見模式。(比如我們已經注意到,人類的身高遵循一個鐘形曲線。)在使用高爾頓(Galton)板時,人們透過在裝有釘子的板子上投擲彈珠來模擬重複隨機事件的平均值,而在彈珠的分佈中再現了正態曲線:

怎麼計算“蝙蝠俠”的面積?室友唱的瑪卡巴卡之歌,給了我靈感……

俄羅斯數學家和神學家帕維爾-涅克拉索夫(Pavel Nekrasov)認為,鐘形曲線和更普遍的大數定律只是兒童遊戲和瑣碎謎題的產物,其中每個事件是完全獨立的。他認為,現實世界中相互依賴的事件,如人類的行為,並不符合漂亮的數學模式或分佈。

安德烈-馬爾科夫(Andrey Markov)試圖證明非獨立的事件也可能符合某種模式,而馬爾科夫鏈正是以他的名字命名的。他的代表工作之一是需要計算一部俄羅斯詩歌作品中成千上萬的

無記憶性

。利用這種字對,他計算了每個字的條件機率。也就是說,給定前面的某個字母或空白,下一個字母有一定的機會是A、T、空白或其他字元。利用這些機率,馬爾科夫有能力模擬一個任意長的字元序列。這就是一個馬爾科夫鏈。儘管前幾個字元在很大程度上是由起始字元的選擇決定的,但馬爾科夫表明字元的分佈經過足夠長的時間會形成一種模式。因此只要受到固定機率的影響,即使是相互依賴的事件也符合一個平均值。

舉一個更實用的例子,想象你住在一個有五個房間的房子裡。你分別有一間臥室、浴室、客廳、餐廳和廚房。讓我們收集一些資料:假設你在任何給定的時間點處在哪個房間,我們需要了解你接下來可能會進入哪個房間。例如,如果你在廚房,接下來你有30%的機會呆在廚房,30%的機會進入餐廳,20%的機會進入客廳,10%的機會進入浴室,10%的機會進入臥室。利用每個房間的一組機率,我們可以構建一個預測鏈,預測你接下來可能會處於哪些房間。

怎麼計算“蝙蝠俠”的面積?室友唱的瑪卡巴卡之歌,給了我靈感……

如果我們想預測房子裡的某個人在進入廚房後的一段時間內會在哪裡,那麼對隨後的幾個狀態進行預測可能是有用的。但是,由於我們的預測只是基於對一個人在房子裡的位置的觀察,我們有理由認為這種預測不是很完善。例如,如果有人從臥室到浴室,他們更有可能直接回到臥室,而不是從廚房出來。所以馬爾科夫屬性通常不適用於現實世界。

然而,利用馬爾可夫鏈進行數千次的迭代,確實可以得出你可能在哪個房間的長期預測。更重要的是,這個預測完全不受這個人開始在哪個房間的影響! 從直覺上講,這是有道理的:為了模擬和描述一個人在長期或一般情況下可能在哪裡,他在房子裡某個時間點的行為並不重要。因此,馬爾科夫鏈用於預測一個隨機變數在幾個時間步內的行為並不完全合理,但只要我們瞭解支配其行為的機率,就可以用來計算該變數的

兩字元對

瞭解了一些關於蒙特卡洛模擬和馬爾科夫鏈的知識後,我希望不加數學推演而直觀地展現MCMC方法示如何工作的。

回顧一下,我們正試圖估計我們感興趣的引數的後驗分佈,即人類平均身高。

怎麼計算“蝙蝠俠”的面積?室友唱的瑪卡巴卡之歌,給了我靈感……

我不是視覺化專家,顯然我也不擅長將我的例子保持在常識範圍內:我的後驗分佈的例子嚴重高估了人類的平均身高。

我們知道後驗分佈的資訊包含在我們的先驗分佈和似然分佈範圍內,但無論出於什麼原因,我們都不能直接計算它。使用MCMC方法,我們將有效地從後驗分佈中抽取樣本,然後計算所抽取樣本的平均值等統計資料。

首先,採用MCMC方法會選擇一個隨機引數值。模擬將繼續產生隨機值(這是蒙特卡洛部分),但要遵守一些規則來確定什麼是好的引數值。訣竅在於我們擁有對於資料先驗的認知,因此對於一對引數值,可以透過計算哪個引數值更好地解釋資料來評估哪個是更好的引數值。如果一個隨機產生的引數值比上一個更好,它就會被新增到引數值鏈中,其機率由其“好”的程度決定(這是馬爾科夫鏈部分)。

為了直觀地解釋這一點,讓我們回憶一下,分佈在某一數值上的高度代表觀察到該數值的機率。因此,可以認為我們的引數值(X軸)表現出高和低的機率區域,顯示在Y軸上。對於單個引數,MCMC方法首先沿x軸隨機取樣:

怎麼計算“蝙蝠俠”的面積?室友唱的瑪卡巴卡之歌,給了我靈感……

紅色點為隨機引數樣本

由於隨機樣本服從於固定的機率,它們傾向於在一段時間後向我們感興趣引數機率最高的區域內收斂:

怎麼計算“蝙蝠俠”的面積?室友唱的瑪卡巴卡之歌,給了我靈感……

藍點只是代表任意時間點後的隨機樣本,此時預計會出現收斂。注意:我純粹是為了說明問題而將點垂直堆放。

收斂發生後,MCMC抽樣產生了一組點,這些點是後驗分佈的樣本。在這些點周圍畫一個直方圖,並可以計算任何想做的統計。

怎麼計算“蝙蝠俠”的面積?室友唱的瑪卡巴卡之歌,給了我靈感……

在MCMC模擬產生的樣本集上計算的任何統計量都是我們對該統計量在真實後驗分佈上的最佳猜測。

MCMC方法也可以用來估計一個以上引數的後驗分佈(比如說人的身高和體重)。對於n個引數來說,在n維空間中存在著機率高的區域,其中某些引數值集能更好地解釋觀測資料。因此,我認為MCMC方法是在一個機率空間內隨機抽樣以接近後驗分佈的過程。

回顧一下對 “什麼是馬爾科夫鏈蒙特卡洛方法?”這個問題的簡短回答:

MCMC方法就是在機率空間中透過隨機抽樣逼近感興趣引數的後驗分佈的方法。

我希望我已經解釋清楚了這句話,即為什麼你會使用MCMC方法,以及它們如何工作。這篇文章的靈感來自於我在美國華盛頓所作的關於資料科學的演講。那次演講的目的是向非專業聽眾解釋馬爾科夫鏈蒙特卡洛方法,我在文中也是這樣嘗試去做的。

翻譯內容僅代表作者觀點

不代表中科院物理所立場

作者:b

翻譯:雲開葉落

審校:Nothing

編輯:掃地僧

Top