它與數學課的教科書問題 (book problem) 不盡相同。很多時候,教科書內的機率問題,界定清晰 (well-defined),資訊充足。例如﹕「一顆完美且公平的骰子,連續3次擲出6的機率是多少?」題目告訴我們骰子是完美的 (事實),於是我們知道擲骰子每面朝上的機率是多少 (資訊)。學生只需把數據輸入機率公式內就會得到正確 (必然) 答案。
然而現實世界的機率問題 (street problem) 並沒有那麼簡單 — 我們不會知道骰子是否完美的。不,現實世界裡根本沒有一顆完美的骰子,因此我們並不知道擲骰子每面朝上的機率大小。日常生活裡,我們更常需要解決的,往往不是「連續3次擲出6的機率是多少?」這類問題,而是「竟然連續3次擲出6呢 (證據),我們有理由懷疑手上這顆骰子給做了手腳嗎 (猜測)?」
打個比方,典型教科書問題會問﹕「俗語說﹕『十個男人九個滾』❶。現在從一群已婚男性中隨機抽出2人,他們都曾經出軌的機率是多少?」這個問題是演繹式的,有趣與否見仁見智,但它可以訓練學生的數學計算能力。不過在日常生活裡,類似的問題並不是我們最需要解決的。在日常生活裡,我們遇到的難題往往是歸納式的﹕「丈夫近來形跡可疑,行為怪異 (證據),是否因為有外遇呢 (猜測)?到底丈夫出軌的可能性有多高?」就像《夫妻的世界》裡的池醫生,急需要從手上的證據反過來去推論自己的猜測為正確的可能性。
貝氏演算法 (Bayesian Algorithm)
貝葉斯定理 (Bayes Theorem) 正好擅長處理現實生活裡的歸納式問題 — 在資訊不足,數據匱乏,證據不多的情況下,去評估我們的猜測有多準確。貝氏定理的公式簡單,但應用時所涉及的推理過程相當有啟發性。這令得貝氏定理更像一個巧妙的演算法多於一條冷漠的數學公式。貝氏演算法帶領我們從瑣碎的證據開始,試著猜測,然後重複試誤,一步一步發掘真相。演算法主張,我們必須敞開心胸,摒棄成見,要隨著新的證據或觀察結果的出現,更新和修正我們的猜測。
那麼池醫生要如何運用貝氏演算法去評估丈夫出軌的可能性呢?
步驟一﹕針對問題,提出假設 (hypothesis)
首先是釐清問題。我們要解答的問題是「到底丈夫出軌的可能性有多大?」針對這個問題,我們提出暫時的假設﹕丈夫的確背叛了妻子。我們用 H 來代表假設的內容。很明顯,真相只能是二擇其一﹕H非真即偽,如下圖所示﹕
步驟二﹕ 估計先驗機率 (prior probability)
第二步是估計先驗機率,或事前機率,即是在證據 (唇膏) 出現之前,你一直認為丈夫會背叛你的可能性有多大。我們用 p(H) 來代表假設 H 為真的可能性。
我們如何估計先驗機率呢?最快捷的方法就是﹕瞎猜 (wild guess)。憑主觀臆測得出的先驗機率當然是主觀的。這個機率,或曰信念 (belief),或曰偏見 (bias),純屬個人判斷,無所謂對或錯。神奇的貝氏演算法會迫使你隨著證據陸續出現而不斷修正你的看法,因此我們即管放心瞎猜。
想客觀一點也可以。我們可以尋求「外部觀點」— 找來統計數據,看看有多少已婚男性曾對妻子不忠,然後用那個百分比,即基本頻率 (base rate),作為先驗機率。
假設我們一直相信丈夫,姑且把先驗機率定為 10% 吧 。p(H) = 0.1
步驟三﹕在假設 H為真的情況下,估計證據 e出現的機會
跟著我們要估計一下,在假設 H為真的情況下 (丈夫真的出軌),證據 e (唇膏) 出現的機率。我們稱之為「真陽性」(true positive),數學代號寫作 p(e|H)。我們或會想,就算丈夫真的背叛了,也不至於隨身攜帶情人的唇膏吧。於是我們把 p(e|H) 定為 30%。
步驟四﹕在假設 H為假的情況下,估計證據 e出現的機會
最後我們要估計,在假設 H為假的情況下 (丈夫沒有出軌),證據 e (唇膏) 出現的機率。我們稱之為「偽陽性」(false positive),數學代號寫作 p(e|~H)。在丈夫沒有背叛的情況下,真的頗難想像他會買一枝櫻桃味唇膏來用吧。不過他說是因為機艙內乾燥。嗯,也不是完全沒有可能。於是我們把p(e|~H) 定為 5%。
步驟五﹕剔除沒有證據出現的世界
好,估計的部份完成了。由於唇膏這一證據的出現,我們可以剔除「沒有唇膏」的世界。如下圖所示﹕
步驟六﹕計算及比較面積
現在只剩下證據出現過的世界,其面積就是兩個長方形的總和 ﹕
總面積
= H 的面積 + ~H的面積 = 0.1 x 0.3 + 0.9 + 0.05 = 0.075
而H的面積 = 0.1 x 0.3 = 0.03
比較一下兩個面積﹕
H的面積 ÷ 總面積 = 0.03 ÷ 0.075 = 0.4 = 40%
步驟七﹕暫時的結論
這個百分比就是我們的答案,稱為後驗機率 (posterior probability, p(H|e))。意思是說,由於唇膏(證據) 的出現,你必須改變對丈夫忠誠度的看法。原本你認為丈夫背叛你的機率只有10%,現在已更新為40%了。丈夫真的出軌的機會大增,但仍然遠低於我們早前定下的門檻 80%。於是我們按兵不動,靜觀其變。我們應該繼續相信丈夫,除非有新的證據出現…
貝氏演算法的方程式
如果嫌畫圖的方式麻煩,我們也可以直接使用貝氏演算法的公式。公式內有四個數值,我們要輸入其中三個﹕
輸入數值一﹕先驗機率 p(H) — 證據 e 還未出現時,H 為真的可能性
輸入數值二﹕真陽性的機率 p(e|H)
— 假設 H 為真,證據 e 出現的可能性
輸入數值三﹕偽陽性的機率 p(e|~H)
— 假設 H 為假,證據 e 出現的可能性
輸出數值﹕後驗機率 p(H|e)
— 由於證據 e出現了,H 為真的可能性更新版本
從畫圖的方式來進行貝氏演算,我們得知後驗機率其實就是「真陽性面積」佔「總陽性面積」的百分比,所以﹕
後驗機率 p(H|e)
= 真陽性面積 ÷ 總陽性面積
= 真陽性面積 ÷ (真陽性面積 + 偽陽性面積)
=p(H) x p(e|H)÷ [(p(H) x p(e|H) + p(~H) x p(e|~H))] 。。。貝氏公式一
好像很複雜吧?試試簡化一下﹕
由於真陽性面積加上偽陽性面積等於總陽性面積,又等於 p(e),即證據出現的機率。所以,
p(H|e) =p(H) x p(e|H)÷ [(p(H) x p(e|H) + p(~H) x p(e|~H))]
= p(H) x p(e|H)÷ [p(e)] 。。。貝氏公式二
公式二,就是我們較常見的貝氏方程式的寫法﹕
這個寫法表達了貝氏演算法的核心思想﹕初始估計 x 證據出現 = 更新估計。
我們對於真相為何,心中會有主觀的猜測。為了找出真相,我們需要客觀地做實驗或觀察,得出支持或駁斥猜測的證據。而隨著證據出現,我們不得不把原先的猜測修正過來。然後重複整個流程,逐步迫近真相。這就是貝氏演算法,亦是簡化版的科學方法。
先驗機率p(H) 或許是沒有根據的瞎猜。後驗機率 p(H|e) 則是有證據支持的猜測。透過運用貝氏演算,我們從先驗機率計算出後驗機率,從瞎猜 (wild guess)進步到成為有根據的猜測(educated guess)。
重複演算,更新猜想
回到池醫生那邊的討論。很不幸,頸巾上紅色長髮的出現,我們不得不重複一次貝氏演算來更新 H 的可能性。
輸入數值一﹕先驗機率
上一回的後驗機率,就變成這一回的先驗機率了。所以 p(H) = 40%
輸入數值二﹕真陽性的機率 假設丈夫背叛妻子,紅髮出現在頸巾上的可能性有多大?頗大呢!70%?嗯,差不多吧。p(e|H) = 70%
輸入數值三﹕偽陽性的機率
假設丈夫並沒有背叛妻子,紅髮出現在頸巾上的可能性有多大?應該機會很微…10%好了。p(e|~H) = 10%
把數值輸入公式內﹕
p(H|e) = p(H) x p(e|H)÷ [(p(H) x p(e|H) + p(~H) x p(e|~H))]
=0.4 x 0.7 ÷ (0.4 x 0.7 + 0.6 x 0.1)
=82%
這下可糟了。丈夫出軌的機率,從40%飆升至82%。難怪池醫生登時心神彷彿,不能專心替病人看症了。
貝氏演算,帶你從瞎猜走到有根據的猜測
日常生活中大部份的經驗是,我們只能憑瞎猜,加上少量的觀察樣本 (證據),就要去推論事件真相為何。這不一定是因為我們懶惰,又或者草率武斷。很多時候,是因為我們沒有統計數據可依。又或者是由於客觀情況根本不容許我們重複實驗去蒐集證據。這些時候,貝氏演算法格外有用。以美國911恐怖襲擊為例,在慘劇發生之前,絕大部份紐約客根本不能想像恐怖份子會正面襲擊曼哈頓。但當第一架航機撞上世貿大樓時,評估「是否恐怖襲擊」就變成當務之急。
步驟一﹕提出假設
我們的假設 H 是﹕恐怖份子襲擊曼哈頓。
步驟二﹕ 估計先驗機率
我們瞎猜,美國受到大規模襲擊,是百年一遇的事情。100年約等於三萬六千五百天。所以 p(H) = 1 ÷ 36500 = 0.000027 ❷
步驟三﹕估計真陽性機率
假如恐怖份子策劃襲擊,那麼證據出現,即客機撞擊世貿大樓的機率幾乎是100%。p(e|H) = 100%
步驟四﹕估計偽陽性機率
假如恐怖份子並沒有策劃襲擊,那麼證據出現,即客機撞上世貿大樓是由於意外或其他原因所造成的機率微乎其微。我們不知道正確的機率是多少,唯有再一次估計這是百年一遇的事情。p(e|~H) = 0.000027
步驟五﹕計算後驗機率
p(H|e) = 0.000027 x 1 ÷ (0.000027 x 1 + 0.999973 x 0.000027) = 50%
「恐怖份子正在襲擊曼哈頓」為真的機率,由初始微不足道的數字飆升至50%!雖然以上用到的數據不科學❸,但我們總算確認「恐怖份子正在襲擊曼哈頓」並非子虛烏有的憂慮。
到了第二架航機撞上世貿大樓,後驗機率變成99.99% (= 0.5 x 1 ÷ (0.5 x 1 + 0.5 x 0.000027)) 。這意味著,「恐怖份子正在襲擊曼哈頓」幾乎已是不用爭辯的事實了。
致命的證據
池醫生在丈夫的車尾箱內,找到一部手提電話,裡面儲存著很多丈夫與一名紅髮女子的相片。相片裡的男女,態度親䁥,似乎正享受著渡假帶來的歡樂。
這是決定性的證據。
貝氏演算亦順理成章給出相同的答案﹕
先驗機率 = 82%
真陽性機率 = 100%
偽陽性機率 = 近乎0% 後驗機率 = 0.82 x 1 ÷ ( 0.82 x 1 + 0.18 x 0) = 0.82 ÷ 0.82 = 100%
這也是致命的證據。
池醫生再也壓不住怒氣,拿出急救箱裡的剪刀,氣沖沖的衝向丈夫,狠狠地一刀插下去…
註﹕
- 廣東話中的「滾」,可作「出軌」解。
- 這是科學家費曼 (Richard Feynman) 提倡的方法﹕把抽象的機率概念,轉為較具體的意象來表達。思考機率時,試著把一件事會發生的可能性(抽象機率),改為想像「如果我試很多次,會發生什麼狀況」(具體頻率)。例如十萬分之一的可能性,意思即是把同一個實驗每天重複做一次,預期300年只會出現一次特定的結果 (300年約有十萬天)。
- 請參考《精準預測》(The Signal and the Noise by Nate Silver) 一書內有關911恐怖襲擊的討論