JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

實踐中的貝氏法則

貝氏法則把一個模糊的預感加上新證據,轉化為一個更新過的、誠實的信念。本指南讓先驗、似然與後驗變得可感可觸,再展示共軛先驗與 MAP 估計如何把這個想法變成真正能算得出來的東西。

從一個公式到一種思考方式

你已經把貝氏定理當作一行代數見過:把一個條件機率翻轉過來。在這裡,我們要認真地把它當作學習的引擎。整個貝氏推斷都建立在一步操作上——從你在看到資料之前所相信的出發,權衡每種可能性對你實際拿到的資料解釋得有多好,最後得到你在看到之後應當相信的。這種前後之變,正是不確定性下推理的核心。

三個名詞撐起整個故事,我們就把它們點一次名、記牢。先驗是你在這批資料之前對某個未知量的信念。似然是對未知量的每個候選取值而言,觀測到的資料有多大可能。後驗就是更新之後得到的信念。貝氏法則說的就一句話:後驗正比於似然乘以先驗。

一個實例:這枚硬幣公平嗎?

拿一個具體的未知量:一枚硬幣的偏向,也就是正面出現的長期機率 θ。在拋之前,你對 θ 有什麼信念?一個合理的先驗可能是「大概在 0.5 附近,但我不確定」——一個以一半為中心的平緩隆起。這個信念本身就是 θ 上的一個機率分布,而不是單個數字,因為你誠實地承認自己並不確定。

現在你拋了十次,看到 7 次正面、3 次反面。似然要問:對每個可能的 θ,*恰好這個結果*有多大可能?θ 接近 0.7 的硬幣讓「十中取七」相當可能;θ 接近 0.1 的硬幣則幾乎不可能產生它。把這條似然曲線乘上你的先驗隆起,再重新歸一化使其總和為一,你就得到了後驗——這是資料之後你對 θ 更銳利的信念。

posterior(θ)  ∝  likelihood(data | θ) × prior(θ)

   prior:        broad hump around 0.5
   likelihood:   peaks near 0.7  (because 7/10 heads)
   posterior:    a hump pulled toward 0.7, narrower
                 than the prior — sharper, not certain
後驗位於先驗與資料之間,且比兩者都更窄:證據收緊了信念。

注意剛才發生了什麼。後驗並沒有一下子跳到 0.7。它落在先驗的 0.5 與資料的 0.7 之間某處,因為十次拋擲是微弱的證據。若拋上一千次,資料就會壓過先驗,把後驗幾乎完全拉到硬幣真實的樣子上。資料越多,先驗的影響越小——這不是缺陷,恰恰是要點所在。

共軛先驗:當數學保持整潔

「重新歸一化使其總和為一」裡潛伏著一個實際的麻煩。對大多數先驗來說,那個歸一化常數是一個沒有閉式解的困難積分,這也正是後續指南要借助抽樣和近似推斷的原因。但對某些幸運的搭配,代數會乾淨地閉合。這些就是共軛先驗:一種其形狀被似然*保留*下來的先驗,於是後驗仍屬於同一族分布,只是換上更新過的數字。

我們的硬幣就是經典案例。Beta 分布是拋硬幣(伯努利)資料的共軛先驗。把先驗寫成 Beta(a, b),你可以把 a 和 b 讀作在任何真實拋擲之前,你假裝已經看到的「想像中的正面數」和「想像中的反面數」。在觀測到 h 次正面、t 次反面後,後驗就只是 Beta(a + h, b + t)。沒有積分——你只是把你的計數加到先驗的計數上。

prior      = Beta(a, b)          # a heads, b tails imagined
data       = h heads, t tails    # actually observed
posterior  = Beta(a + h, b + t)  # just add the counts!

# Beta(2,2) + 7 heads, 3 tails  ->  Beta(9, 5)
# posterior mean = 9 / (9+5) ≈ 0.64
共軛性把貝氏更新變成了記帳:把觀測計數加到先驗計數上。

MAP:把信念坍縮為一個答案

完整的後驗是一個分布,但有時你必須交出一個最佳的單一猜測——為了顯示一個數字,或為了接入流水線的下一環節。最自然的選擇是後驗的峰值:資料與你的先驗合起來認為最可信的那個取值。這就是最大後驗估計,簡稱 MAP。

MAP 與你早已熟知的東西有著優美的關係:極大似然估計,即 MLE。MLE 挑選讓資料最可能出現的取值——它*只*聽資料的。MAP 挑選讓似然乘先驗最大的取值——它既聽資料,*也*聽你的先驗知識。所以 MAP 就是 MLE 加上一個先驗;而隨著資料增多,先驗的聲音漸弱,兩個估計趨於一致。

這層聯繫不只是優雅的趣聞——它悄悄解釋了前幾級的一個工具。給模型加上 L2 權重懲罰(嶺迴歸正則化)*恰恰*就是在權重上放一個高斯先驗的 MAP 估計,這個先驗說的是「權重大概很小」。L1 懲罰(lasso)則是帶著另一種偏好稀疏權重的先驗的 MAP。你曾把正則化當作對抗過擬合的技巧來認識,原來它是一個喬裝打扮的貝氏先驗。

把更新養成習慣,以及它帶來的回報

貝氏最深刻的實用價值在於更新是*遞迴*的:今天的後驗成為明天的先驗。你永遠不必重新經歷全部資料的歷史。第一組十次拋擲後相信 Beta(9, 5),接著又看到四次正面——更新為 Beta(13, 5)。一個系統正是這樣從資料流中持續學習,把每個新觀測摺疊進一個不斷滾動的單一信念裡。

  1. 陳述你的先驗。 寫下在這批資料之前你對未知量的信念——並誠實面對你有多不確定。模糊的先驗就是一個寬闊的分布。
  2. 寫出似然。 選一個模型,說明對未知量的每個可能取值,觀測到的資料有多大可能。
  3. 相乘並歸一化。 把先驗與似然結合,再重新縮放以得到後驗——若共軛則可精確求得,否則近似求得。
  4. 誠實地總結。 報告一個可信區間,而不只是單個點,讓不確定性隨答案一同傳遞。
  5. 循環。 當新資料到來時,今天的後驗就是明天的先驗。回到第二步。

第四步才是真正的獎賞。因為後驗是一個完整的分布,貝氏模型可以報告一個可信區間——「我有 95% 的把握 θ 在 0.41 到 0.83 之間」——而不是一個光禿禿的點估計。僅看十次拋擲後,那個區間很寬,這正是模型在對你說實話:它還不太了解。這種對疑慮的誠實記帳,正是本階梯其餘部分賴以建立的基礎。

臨行前的誠實提醒

貝氏是有原則的,而非魔法。兩點提醒讓它保持誠實。第一,先驗是一個實實在在的建模選擇,一個自信但錯誤的先驗在資料太少時會把你帶偏——貝氏不會憑空造出你沒放進去的資訊。第二,「95% 可信」的可靠程度僅取決於你的模型;如果似然設定錯了,後驗會精準地對錯誤的東西充滿自信。

儘管如此,你現在掌握的這套框架是真正強大的。先驗、似然、後驗;用共軛性做乾淨的更新;以及作為通往你已熟知的極大似然與正則化之橋梁的 MAP。從這裡開始,本階梯豁然展開:當積分變難時,近似方法接手;當眾多未知量相互作用時,圖模型給貝氏提供一個可攀爬的結構。你已掌握語法,本階梯其餘部分就是詞彙。