不用數學也能講清貝葉斯理論的馬爾可夫鏈蒙特卡洛方法?這篇文章做到了
大多數時候,貝葉斯統計在結果在最好的情況下是魔法,在最糟糕時是一種完全主觀的廢話。在用到貝葉斯方法的理論體系中,馬爾可夫鏈蒙特卡洛方法尤其神祕。
這篇文章將介紹馬爾可夫鏈蒙特卡洛方法,極其背後的基本數學推理。
首先,什麼是馬爾可夫鏈蒙特卡洛(MCMC)方法呢?
最簡短的回答就是:
“MCMC就是一種通過在概率空間中隨機取樣來近似感興趣引數的後驗分佈的方法”
在這篇文章中,我不用任何數學知識就可以解釋上面這個簡短的答案。
貝葉斯理論體系基本術語
首先是一些術語。
感興趣的引數只是用來抽象我們感興趣的現象的一些數字。通常我們會使用統計的方法來估計這些引數。例如,如果我們想了解成年人的身高,那麼我們需要的引數可能就是以英寸為單位的平均身高。
分佈就是引數的各個可能值和我們能觀察到每個引數的可能性的數學表示。
最好的例子就是鐘形曲線:
在貝葉斯統計方式中,分佈還有另一個解釋。貝葉斯不僅僅代表引數的值和每個引數的真實值有多大,而是認為分佈描述了我們對引數的確信度。因此,上面的鐘形曲線可以表明我們非常確定引數的值接近於零,同時我們認為真實值高於或低於該值的可能性是相等的。
事實上,人的身高是遵循一個正態分佈的,所以我們假設平均人體高度的真實值遵循如下的鐘形曲線:
顯然,這個圖表顯示這個人群以巨人的身高生活了很多年,因為據調查所知,最有可能的平均成年身高是6'2''英寸。
讓我們想象某人去收集了一些資料,然後他們觀察到了一批5英寸和6英寸之間的人。 我們可以用另一個正態分佈曲線來表示這些資料,這個曲線顯示了哪個人體平均身高值最能解釋資料:
在貝葉斯統計中,表示我們對引數確信度的分佈被稱為先驗分佈,因為它在看到任何資料之前捕捉到了我們的知識。
似然分佈以引數值範圍的形式總結了資料可以告訴我們什麼,而引數值中的每個引數解釋了我們正在觀察的資料的可能性。估計最大似然分佈的引數值就是回答了這個問題:什麼樣的引數值能使分佈最有可能觀察到我們觀察到的資料?在沒有先驗資訊的情況下,我們可能會就此打住了。
然而,貝葉斯分析的關鍵是將先驗資訊和似然分佈結合起來去確定後驗分佈。這告訴我們,在有先驗資料的情況下,哪些引數值能夠最大化觀察到我們指定資料的概率。在上面的例子中,後驗分佈應該是這樣的:
在上面的圖中,紅線表示後驗分佈。你可以把它看作一種先驗和可能性分佈的平均值。由於先驗分佈較短且較為分散,所以它代表了一組關於平均人體身高真實值“不太確定”的概率。 同時,可能性分佈在相對較窄的範圍內就可以總結資料,因此它代表了對真實引數值“更確定”的概率。
當先驗和可能性結合在一起時,資料(可能性分佈表示)弱化了個體在巨人中長大的可能性。 儘管那個人仍然認為人的平均身高比資料告訴他的稍高一些,但是他最相信的還是資料。
在兩條鐘形曲線的情況下,求解後驗分佈是非常容易的。 有一個簡單的方程來結合這兩者。 但是如果我們的先驗分佈和可能性分佈不那麼好呢?
有時,使用不是常規形狀的分佈來模型化我們的資料或我們先驗資訊是最準確的。如果我們的可能性分佈用兩個峰值來表示更好,而且由於某種原因,我們想要解釋一些非常古怪的先驗分佈時該怎麼辦呢?我已經通過手工繪製了一個醜陋的先驗分佈:
在Matplotlib中呈現的視覺化,使用MS Paint進行了增強
如之前所講,有一些後驗分佈可以給出每個引數值的可能性。但是很難確定分佈曲線的具體樣子,而且通過分析也無法解決。
因此進入MCMC方法。
MCMC方法
MCMC方法允許我們估計後驗分佈的形狀,以防我們無法直接計算。事實上,MCMC就是馬爾可夫鏈蒙特卡洛方法。為了理解它們是如何工作的,我將首先介紹蒙特卡洛估計,然後是討論馬爾可夫鏈。
蒙特卡洛估計
蒙特卡洛估計是一種通過重複生成隨機數來估計固定引數的方法。在通過生成隨機數並對其進行一些計算時,有時直接計算這個引數不現實時,蒙特卡洛估計可以提供一個引數的近似值。
假設我們想估計下面圓圈的面積:
由於圓是在邊長為10英寸的正方形內,因此可以容易地計算出它的面積為78.5平方英寸。 另一種方式,我們可以在正方形內隨機抽取20個點。然後,我們計算在圓內的點的比例,並乘以正方形的面積。而這個數字是一個非常好的圓圈面積的近似值。
由於20個點中有15個都位於圓內,所以看起來圓的面積大約是75平方英寸。這個結果對於只有20個隨機點的蒙特卡羅模擬方法來說也不算太壞。
現在,想象一下我們想要計算蝙蝠俠曲線方程(Batman Equation)繪製的形狀的面積:
這是一個我們從來沒有學過的方程的形狀!因此,找到蝙蝠訊號的區域非常困難。不過,通過在包含蝙蝠形狀的矩形內隨機地打點,蒙特卡羅模擬方法就可以非常容易地找到該形狀面積的近似值!
蒙特卡羅模擬不僅僅是用於估計複雜形狀的面積。通過生成大量的隨機數,它們可以用來模擬非常複雜的過程。在實踐中,習慣用該方法來預測天氣,或者估計贏得選舉的可能性。
馬爾可夫鏈
理解MCMC方法的第二個要素就是馬爾可夫鏈。 這個就是事件相互關聯概率的序列。每個事件來自一組結果,而其中的每個事件的結果根據一組固定的概率來確定下一個事件的結果。
馬爾可夫鏈的一個重要性質就是它們是無記憶的:在當前狀態下,你可能需要一切可用的事件來預測下一個事件,並且不能有從舊事件來的新資訊。像Chutes和Ladders這樣的遊戲展現了這種無記憶性或者叫馬爾科夫屬性。
但是在現實世界中,實際上很少有事件以這種方式工作。不過,馬爾可夫鏈是一種理解世界的有力方式。
在十九世紀,鐘形曲線被看作是自然界中一種常見的模式。(例如,我們已經注意到,人的身高分佈是一個鐘形曲線)。Galton Boards通過在裝有釘子的木板上放置大理石來模擬重複隨機事件的平均值,重現了大理石分佈的正態曲線:
俄羅斯數學家和神學家帕維爾·涅克拉索夫(Peter Pavel Nekrasov)認為,鐘形曲線以及更一般的大數定律只不過是兒童遊戲和瑣碎謎題的產物,因為它的假設是每個事件都是完全獨立的。而涅克拉索夫認為現實世界中的事物是相互依存的,比如人的行為,所以現實中的事物並不符合好的數學模式或分佈。
安德烈·馬爾可夫試圖證明非獨立事件也有可能符合這種模式。他最著名的實驗例子之一就是要從俄羅斯詩歌作品中計算數以千計的兩個字元對。使用這些字元對,他計算出了每個角色的條件概率。也就是說,給定某個前面的字母或空格,下一個字母就有可能是一個A,一個T或一個空格。
使用這些概率,馬爾可夫能夠模擬任意長的字元序列。這就是一個馬爾可夫鏈。
儘管前幾個字母很大程度上取決於起始字元的選擇,但是馬爾可夫表明,從長遠來看,字元的分佈是一種模式。因此,即使是相互依賴的事件,如果它們受到固定概率的影響,也是一致的。
舉一個更有說服力的例子,假設你住在一個有五個房間的房子裡,其中有一間臥室,衛生間,客廳,飯廳和廚房。
讓我們收集一些資料,假設你在任何時間點所在的房間都是我們認為的下一個可能進入的房間。例如,如果你在廚房,你有30%的機會留在廚房,30%的機會進入餐廳,20%的機會進入客廳,10%的機會去浴室,有10%的機會進入臥室。利用每個房間的進入的概率,我們可以構建一個預測你下一個可能去的房間的馬爾可夫鏈。
如果我們想要預測房子裡某個人在廚房裡待一小會兒後會去哪裡,那麼馬爾可夫鏈可以用於這一類預測。但是由於我們的預測只是基於一個人在家裡的一個觀察,所以這類預測結果並不可靠。
例如,如果有人從臥室走到浴室,那麼他們更有可能直接回到臥室,而不是從廚房裡出來。所以馬爾可夫屬性通常不適用於現實世界。
然而,將馬爾可夫鏈進行數千次迭代,確實能夠長期的預測你接下來可能會進入哪個房間。更重要的是,這個預測並沒有受到人們從哪個房間開始的影響!直觀地說,這是有道理的:為了模擬和描述他們可能長期或通常所在地在哪裡,某個時間點某人在家裡的位置並不重要。
因此,在一段時期內對隨機變數建模並不合理的馬爾可夫鏈方法,卻可以用來計算該變數的長期趨勢。
MCMC方法
有了蒙特卡洛模擬和馬爾可夫鏈的一些知識,我希望MCMC方法的零數學解釋是非常直觀的。
回想一下,我們試圖估計我們感興趣引數的後驗分佈,即人均身高:
我不是一個視覺化的專家,我也沒有把我的例子放在常識的範圍之內:我這個後驗分佈的例子嚴重地高估了人的平均身高。
我們知道後驗分佈在先驗分佈和似然分佈範圍內,但是,我們很難直接計算它。 使用MCMC方法,我們就可以有效地從後驗分佈中抽取樣本,然後計算比如抽樣樣本的平均值。
首先,MCMC方法考慮選擇一個隨機引數值。然後模擬會繼續生成隨機值(這是蒙特卡羅的一部分),但要根據一些規則來確定什麼是一個好的引數值。這個訣竅就是,對於一對引數值,基於先驗資訊,通過計算每個值在解釋資料時的可能性有多大,來計算哪個引數值更好。如果隨機生成的引數值比最後一個引數值更好,則以一定的概率值將其新增到引數值鏈中(這是馬爾科夫鏈部分)。
分佈中某個值的高度代表了觀察該值的概率。因此,我們可以想象我們的引數值(x軸)在y軸上呈現出高低概率的區域。對於單個引數,MCMC方法是沿x軸開始隨機取樣:
紅點是隨機引數樣本
由於隨機樣本受到固定概率的影響,經過一段時間之後,它們往往會在我們感興趣引數概率最高的區域收斂:
藍點只代表當預計會出現收斂時的隨機樣本。注意:為了說明的目的,我垂直疊加了點。
在資料收斂之後,MCMC抽樣產生一組來自後驗分佈的樣本點。 在這些點周圍繪製直方圖,並計算任何您喜歡的統計資料:
根據MCMC模擬生成的樣本集計算出的任何統計量就是我們對該真實後驗分佈統計量的最佳預測。
MCMC方法也可以用來估計多個引數的後驗分佈(比如說人的身高和體重)。
對於n個引數,存在n維空間中的高概率區域,這些區域中的某些引數值組可以更好地解釋觀察到的資料。 因此,我認為MCMC是一種在概率空間內進行隨機取樣來接近後驗分佈的方法。
回想一下“什麼是馬爾可夫鏈蒙特卡羅方法?”這個問題的簡短答案。那就是:
“MCMC就是一種通過在概率空間中隨機取樣來接近感興趣引數的後驗分佈的方法”