更新於 2020/05/19閱讀時間約 13 分鐘

《夫妻的世界》 丈夫出軌的貝氏推理

「因為飛機上很乾燥,所以買了這個。」丈夫睡眼惺忪地說著。
「櫻桃味很濃,濃得很過份呢。」妻子笑著把唇膏放在床頭櫃上,然後轉身去浴室,準備迎接新的一天。
出門時,丈夫為妻子送上一條藍色頸巾,說道﹕「戴上這個,外邊有點冷。」
妻子心裡正甜著﹕「圍繞著我的一切都很完美。」似乎沒有把唇膏的事掛在心上。
回到診所,妻子除下大褸,把頸巾掛起,穿上白袍,準備應診。
「咦…?」妻子發現頸巾上纏著了一條不屬於自己的紅色長髮。
妻子開始感到不安,就連看症時也神不守舍,病人的答話半句也聽不進耳。
***
這是韓國電視劇《夫妻的世界》開首的劇情。該劇講述女主角池醫生發現丈夫出軌後引發出一連串軒然大波的故事。從發現唇膏到紅色長頭髮,妻子應該如何是好?讓我們一起代入池醫生的角色來思考問題﹕「究竟丈夫有外遇的可能性有多高?」假如可能性很高,例如超過80%吧,我們便採取進一步行動去發掘多一些證據。若果可能性還算低的話,就先觀察再算吧。

書本問題 vs 現實問題
「丈夫出軌的可能性有多高?」是我們在現實世界裡經常需要解決的典型機率問題,即是從手上的證據開始,反過來去猜測真相究竟為何。
它與數學課的教科書問題 (book problem) 不盡相同。很多時候,教科書內的機率問題,界定清晰 (well-defined),資訊充足。例如﹕「一顆完美且公平的骰子,連續3次擲出6的機率是多少?」題目告訴我們骰子是完美的 (事實),於是我們知道擲骰子每面朝上的機率是多少 (資訊)。學生只需把數據輸入機率公式內就會得到正確 (必然) 答案。
然而現實世界的機率問題 (street problem) 並沒有那麼簡單 — 我們不會知道骰子是否完美的。不,現實世界裡根本沒有一顆完美的骰子,因此我們並不知道擲骰子每面朝上的機率大小。日常生活裡,我們更常需要解決的,往往不是「連續3次擲出6的機率是多少?」這類問題,而是「竟然連續3次擲出6呢 (證據),我們有理由懷疑手上這顆骰子給做了手腳嗎 (猜測)?」
典型教科書問題是演繹式的 — 把既定的事實與資料輸入公式,計算必然的結果。
現實生活的難題是歸納式的 — 從雜亂的證據與數據試著猜測,找回或然的真相。
打個比方,典型教科書問題會問﹕「俗語說﹕『十個男人九個滾』❶。現在從一群已婚男性中隨機抽出2人,他們都曾經出軌的機率是多少?」這個問題是演繹式的,有趣與否見仁見智,但它可以訓練學生的數學計算能力。不過在日常生活裡,類似的問題並不是我們最需要解決的。在日常生活裡,我們遇到的難題往往是歸納式的﹕「丈夫近來形跡可疑,行為怪異 (證據),是否因為有外遇呢 (猜測)?到底丈夫出軌的可能性有多高?」就像《夫妻的世界》裡的池醫生,急需要從手上的證據反過來去推論自己的猜測為正確的可能性。
那麼這類難題我們要如何解決呢?

貝氏演算法 (Bayesian Algorithm)
貝葉斯定理 (Bayes Theorem) 正好擅長處理現實生活裡的歸納式問題 — 在資訊不足,數據匱乏,證據不多的情況下,去評估我們的猜測有多準確。貝氏定理的公式簡單,但應用時所涉及的推理過程相當有啟發性。這令得貝氏定理更像一個巧妙的演算法多於一條冷漠的數學公式。貝氏演算法帶領我們從瑣碎的證據開始,試著猜測,然後重複試誤,一步一步發掘真相。演算法主張,我們必須敞開心胸,摒棄成見,要隨著新的證據或觀察結果的出現,更新和修正我們的猜測。
那麼池醫生要如何運用貝氏演算法去評估丈夫出軌的可能性呢?
步驟一﹕針對問題,提出假設 (hypothesis)
首先是釐清問題。我們要解答的問題是「到底丈夫出軌的可能性有多大?」針對這個問題,我們提出暫時的假設﹕丈夫的確背叛了妻子。我們用 H 來代表假設的內容。很明顯,真相只能是二擇其一﹕H非真即偽,如下圖所示﹕
H = 丈夫背叛了妻子。真相只能是其中一個﹕H 或 非H
H = 丈夫背叛了妻子。真相只能是其中一個﹕H 或 非H
步驟二﹕ 估計先驗機率 (prior probability)
第二步是估計先驗機率,或事前機率,即是在證據 (唇膏) 出現之前,你一直認為丈夫會背叛你的可能性有多大。我們用 p(H) 來代表假設 H 為真的可能性。
我們如何估計先驗機率呢?最快捷的方法就是﹕瞎猜 (wild guess)。憑主觀臆測得出的先驗機率當然是主觀的。這個機率,或曰信念 (belief),或曰偏見 (bias),純屬個人判斷,無所謂對或錯。神奇的貝氏演算法會迫使你隨著證據陸續出現而不斷修正你的看法,因此我們即管放心瞎猜。
想客觀一點也可以。我們可以尋求「外部觀點」— 找來統計數據,看看有多少已婚男性曾對妻子不忠,然後用那個百分比,即基本頻率 (base rate),作為先驗機率。
假設我們一直相信丈夫,姑且把先驗機率定為 10% 吧 。p(H) = 0.1
H 與非H世界的面積大小隨先驗機率而劃分
步驟三﹕在假設 H為真的情況下,估計證據 e出現的機會
跟著我們要估計一下,在假設 H為真的情況下 (丈夫真的出軌),證據 e (唇膏) 出現的機率。我們稱之為「真陽性」(true positive),數學代號寫作 p(e|H)。我們或會想,就算丈夫真的背叛了,也不至於隨身攜帶情人的唇膏吧。於是我們把 p(e|H) 定為 30%。
在H 的世界裡,e 出現的機會有30%
步驟四﹕在假設 H為假的情況下,估計證據 e出現的機會
最後我們要估計,在假設 H為假的情況下 (丈夫沒有出軌),證據 e (唇膏) 出現的機率。我們稱之為「偽陽性」(false positive),數學代號寫作 p(e|~H)。在丈夫沒有背叛的情況下,真的頗難想像他會買一枝櫻桃味唇膏來用吧。不過他說是因為機艙內乾燥。嗯,也不是完全沒有可能。於是我們把p(e|~H) 定為 5%。
在非H 的世界裡,e 出現的機會有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%
這也是致命的證據。
池醫生再也壓不住怒氣,拿出急救箱裡的剪刀,氣沖沖的衝向丈夫,狠狠地一刀插下去…
註﹕
  1. 廣東話中的「滾」,可作「出軌」解。
  2. 這是科學家費曼 (Richard Feynman) 提倡的方法﹕把抽象的機率概念,轉為較具體的意象來表達。思考機率時,試著把一件事會發生的可能性(抽象機率),改為想像「如果我試很多次,會發生什麼狀況」(具體頻率)。例如十萬分之一的可能性,意思即是把同一個實驗每天重複做一次,預期300年只會出現一次特定的結果 (300年約有十萬天)。
  3. 請參考《精準預測》(The Signal and the Noise by Nate Silver) 一書內有關911恐怖襲擊的討論

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.