下文節選自《 數學思考法:解析直覺與謊言》,已獲圖靈授權,【遇見數學】特此表示感謝!
驚人的「同月同日生」
在揭露稅務舞弊方面,統計學似乎確實有用。仔細想一想,不僅是稅務,在其他眾多領域都有統計學知識的應用。例如,很典型的應該就是佔卜。不過,不管是西方的佔星術,還是東方的生辰八字,似乎都是基於算命對象提供的生日信息,推測當事人今後的命理。生日和企業的財務報表一樣都是由數字構成的,這也就意味著我們可以透過數字窺破自己命運的走向,我理解的應該沒錯吧?
比如,有時我們會驚訝地發現:「這兩個人的生日是同一天啊!」好像因為這個巧合兩個人的命運就有了必然的聯繫一樣。我猜想在統計學領域,或者說就概率論而言,這也應當具有某種很重要的意義吧,畢竟這種情況在日常生活中並不常見。
生日悖論
每個人都有生日,我們偶爾會遇到與自己同一天過生日的人,這時,你應該會自然而然地產生一種親近感吧。但是,果真是天意如此,讓你們有緣出生在同一天嗎?拋開這些浪漫的幻想,我在這裡還是要大煞風景地說,讓我們科學地計算一下概率再來回答吧。
那麼,問題來了:
在某個班級裡一共有 23 名學生。不考慮雙胞胎、閏年等特殊情況,在這些男孩女孩中間,有 2 個人生日相同的概率是多少?
如果在班級裡發現某個同學和自己生日是同一天,一般人還是會感到些許驚訝吧。畢竟除了閏年以外,一年中有365 天,而偏偏兩個人都出生在了同一天,就算是偶然,但要說沒有一絲緣分的話似乎也說不過去。也就是說,在我們的直覺中,兩人生日相同的概率應該是非常小的,這種緣分似乎並不常見。
但是,數學與生活又開了個玩笑,你認為不太可能的緣分,實際發生的概率要高達50.7%。
我們錯了嗎?這真不是一種特殊的緣分嗎?
如果樣本的人數增加,還會有更驚人的結果。比如 30 人的話概率是 70.6%,40 人的話概率是 89.1%,而人數達到 50 時,這個概率更是上升到了 97%。反之,如果減少統計的人數,比如,減少到 20人時,生日相同的比例有所下降,但也有 41.1%,10 人的情況下也有 11.7%。這個數據就意味著,走在東京這樣的大城市街道上,和你有著同一天生日緣分的人,應該滿大街都是了。
為了讓大家獲得更直觀的感受,我用圖32 把這些抽象的數字圖表化。可以看到,在圖中,代表生日相同的概率的曲線,是隨著統計人數的增多而急劇上升的。
圖 32 至少有 2 人生日相同的概率
上述這種現象被稱為「生日悖論」(Birthday Paradox)。我們直覺上認為同一天生日是很少見的事情,但實際上發生的概率卻是非常高的。正是因為理性計算的結果與日常經驗產生了如此明顯的矛盾,該問題才被稱為「生日悖論」。
那麼,是我們的直覺出錯了嗎?像「生日悖論」這樣實際情況與直覺差異如此之大的現象,又為什麼會發生呢?
要解答這個問題,我們需要先去計算一下另外一種特殊情形,那就是在包括自己在內的23 人之中,存在與自己生日相同的人的概率。計算結果顯示,這個數字不超過6.1%。只有當樣本人數擴大到253 人時,這個概率才有可能會上升到50%。這個結果應該不會令你訝異吧,是不是和你自己心裡估算的也差不多呢?
其實,當我們看到「有人生日相同」時,下意識地會用「與我生日相同」去推測,而實際上「與我生日相同」的概率確實非常小。於是,直覺告訴我們,「有人生日相同」的概率也很小。
但是,「生日悖論」中真正的問題其實是23 人中至少有2 人以上生日相同的概率,而不論究竟是誰的生日。這與我們的直覺中預設的前提條件有著根本的不同。
可以說,直覺沒有錯,錯的是我們沒有正確地去理解問題。因此,當我們剝開直覺的謊言,看清事實的那一刻,才會覺得如此不可思議。
「同月同日生」的概率
生日悖論中概率的計算,看起來似乎很複雜,但過程其實很簡單。
首先,讓我們來考慮最簡單的情況。假設只有2 個人,如果這2人的生日是同一天,也就是說,都是365 天中的某一天,那麼這時生日相同的概率可以計為:
替換高清大圖
那麼,當人數增加到3 個人時呢?第一步要先計算一下這3 個人的生日各不相同的情形有多少對組合,然後用所有可能的組合減去這個數字,就能夠得出3 人中至少有2 人生日相同的組合有多少。
3 人生日各不相同時,可以計算得出,一共有如下這麼多對組合形式:
365×364×363 = 48 228 180
而3 人生日中所有可能產生的組合數量是:
365×365×365 = 3653 = 48 627 125
那麼,我們就可以得出,3 人中至少2 人生日相同的組合數量是:
3653 365×364×363 = 398 945
用這個數字除以所有可能的組合數量,即:
3653 = 48 627 125
可得:
也就是說,3 人中至少2 人生日相同的概率大約是0.82%。
採用相同的計算方式,我們也可以得出人數為4 人、5 人時,至少有2 人生日相同的概率。而且,計算結果會如圖32 中的曲線一樣,當人數較少時概率也比較低,當人數稍微有所增加,概率就會像坐了直升機一樣迅猛躥升。
一個人的生日一共有365 種可能。我們可以把這個問題寫成一般形式,即在有n 種可能的情形下,要使至少有2人生日相同的概率達到50%,需要有如下的樣本人數:
這個算式中,重點是採用了的計算方式。採用開方形式的原因比較複雜,在正文中就不再贅述,有興趣的讀者可以閱讀本書最後尾注14中的補充內容。一個重要的理由是,當n 越來越大時, 的值變化的幅度要遠遠小於n 值的變化。比如,等於100 時n 等於10,n 等於10 000 時, 等於100。把365 代入這個公式中,可得:
當然,現實中不可能存在22.5 人的情形,但是,這意味著只要樣本人數超過這個值,存在相同生日的概率就將超過50%。這個公式證明了,如果樣本人數是23 人,那麼概率必定超過了50%。
這個公式的應用範圍非常廣,非常方便我們進行類似的計算。比如,我們把「生日」的概念替換為「出生月份」,就同樣可以使用這個公式計算出生月份相同的概率。這種情況下,取n = 12(月份數),則
也就是說,當樣本人數大於等於5 時,存在相同出生月份的概率就將超過50%(人數為5 時套用公式計算,實際得到的概率數字超過了60%)。而在現實生活中,我們的第一感覺應該絕不會認為有這麼高的概率吧。
這個公式還可以用來計算「月份不同,僅出生日期相同」的概率。每個月的實際天數有所不同,為方便計算,在這裡我們都大致計為30 天,則計算可得:
也就是說,只要樣本人數達到7 個人,存在僅出生日期相同的概率就將超過50%。
除此之外,只要將這個公式稍加變形,其應用範圍就將得到延伸。比如計算出生日期雖不一致,但非常接近的情形,如「至少有2 個人出生日期僅間隔1 天的概率」。如果樣本人數同樣設為23 人,可計算得出這個概率是88.8%。比較一下就會發現,這個數字比起出生日期完全一致的概率要高很多。這就意味著,如果身邊某個人和你的生日非常接近,那這件事一點都不稀奇,也並不是什麼有緣無緣的問題。
「你不是你」的概率
一旦大家理解了生日悖論背後的原理,可能就會覺得這個理論也不過如此,只是用在一些趣味性問題的計算上罷了,沒什麼太大用處。這樣想的話你就大錯特錯了,時至今日,生日悖論中揭示的事實已經發展成為非常深刻的問題了。
例如,現在的智慧型手機、筆記本電腦、銀行的ATM 等高科技設備中,廣泛引入了指紋識別、指靜脈識別等生物識別技術。這些技術都是企業或者銀行為了提高用戶帳戶的安全性而採用的。這種方式等同於把用戶自身作為解開帳戶的「一把鑰匙」,這種鑰匙不用擔心遺忘或丟失,也不能在物理意義上交給他人使用。
生物識別的精確度也相當之高。衡量該精度的指標是錯誤接受率(False Acceptance Rate,簡稱FAR,也叫認假率),也就是把他人的、不應該匹配的生物特徵信息當成與用戶本人匹配的信息。目前市面上的產品,FAR 在十萬分之一到百萬分之一之間。實際上該類產品已經能夠實現更高的精確度,但是如果FAR 精度過高,也就是匹配成功的篩選條件過於嚴苛,也會出現另外一種極端的情況,即「錯誤拒絕率」(False Rejection Rate,簡稱FRR,也叫拒真率)將會上升,可以通俗地理解為「把應該匹配成功的用戶本人特徵當成不能匹配的他人特徵」。從實用性的角度出發,FAR 應該是非常低的,也就是通過提高匹配成功的篩選門檻,從而實現產品的高精確度。
這種生物識別技術精確度非常高,但是隨著其資料庫規模的不斷擴大,也逐漸浮現出了另外一個非常棘手的問題。這個問題的元兇就是我們本節內容的主角——生日悖論現象。
這兩者怎麼就聯繫起來了呢?要理解這其中的關聯,我們需要先從另外一個角度去分析生日悖論現象的本質。
假定還是在一個有23 名學生的班級,當我們把這些學生兩兩分為一組時,一般的做法是先隨意找出一名學生,然後計算他和剩餘的其他學生能組成多少個組合,這個例子中是22 組。考慮到部分組合中2 名學生只是換了一下先後順序,這樣可能產生的總的組合數量應當是:
在253 對的組合中,和自己生日相同的人出現的概率也許比較小,但是這麼多組合之中,其中一人和另一人生日相同的概率應該是非常高的。這也就是為何在「生日悖論」理論中,存在生日相同的組合的概率較高。
理解了這個分析過程之後,讓我們再來考慮生物特徵識別的情形。假設現在有一個資料庫中記錄了10 000 人的生物特徵信息,那麼這個資料庫中有信息記錄的人,兩兩可以組成的組合數量,大約為5000 萬對(10 000×9999 / 2)。當組合數量達到這個量級的時候,還有可能在某次匹配中出現錯誤,把不同特徵判定為同一人嗎?
答案是這種錯誤匹配幾乎肯定會發生。概率計算的結果顯示,即使錯誤接受率僅有百萬分之一,只要其資料庫的樣本數量達到1180 人,那麼發生錯誤匹配的概率就將超過50%。這個結論的推理過程,可以參照圖33 的公式及說明來理解。
在這裡,我們假設每個組合中,發生錯誤接受的概率是p,上面的例子中,這個概率等於百萬分之一。那麼,每個組合中,不發生錯誤接受的概率即為:
1 p = 0.999 999
這個數字已經可以視作幾乎等同於1,只比1 小那麼一點點。假設資料庫內記錄有n 個數據,則可能的組合數量即為,那麼,整個資料庫不發生錯誤接受的概率,即為:
當n = 10 000 時,1 p = 0.999 999相乘n(n-1)2(指數)次,即約5000 萬次。
經過這 5000 萬次乘法運算,即使原來的1 p 這個數字多麼近似於1,最終的乘積也會接近於0。那麼,返回到圖33 的完整公式 中,當約等於 0 時,公式的結果,也就是資料庫整體上發生錯誤接受的概率也就約等於 1。
而且,進一步來說,我們談論的並不是僅有 1 組錯誤匹配的這種程度的問題。通過計算可以得出,10 000 人的數據中,預計會有近 50 組發生匹配錯誤。也就是說,在資料庫中,存在將近 50 對組合,會把本該不匹配的他人特徵識別為與用戶匹配的特徵。
隨著未來技術不斷進步,生物識別技術的精確度有可能提高到錯誤接受率僅為億分之一的程度。但是,即使在這種情況下,只要資料庫記錄的人數達到了11 800 人的水平,將不同特徵判斷為同一人物的組合出現的概率也就將超過50%。
由此可見,即使生物特徵識別技術使得企業、銀行的用戶身份認證的精確度大大提高,但因為這個無法避免的缺陷,這種技術還是無法適用於存在大量樣本的情況。
DNA 鑑定的陷阱
除了上述的手機、ATM 用戶識別之外,「生日悖論」現象還引發了更加嚴峻的問題。
美國FBI 等機構已經建立了龐大的犯罪嫌疑人電子資料庫。資料庫記錄了嫌疑人在犯罪現場遺留的指紋、血液以及監控攝像頭拍下的照片等數據。這其中也包括採集的DNA 數據,這些信息都是以電子檔案的方式保存的。數據的檢索對比簡便快捷,而且準確度也非常高。
不過,資料庫技術、規模的發展也帶來了一些問題,一些研究者也針對這些問題發出了警告。法醫學DNA 指紋鑑定的發明者、英國遺傳學家亞歷克傑弗裡斯爵士(Sir Alec John Jeffreys)就是其中一員。這些研究者所擔憂的,正是「生日悖論」現象。
DNA 是一種將人類的遺傳信息以鹼基的形式排序的雙螺旋結構。DNA 中包括了人的全部遺傳信息,因此,除了同卵雙胞胎以外,不存在兩個人完全一致的情況。DNA 存在於人體細胞之中,血液、骨骼、牙齒、帶毛囊的毛髮、指甲的殘片、菸頭、指紋、嚼過的口香糖等,所有這些帶有人體細胞的東西,都可以提取DNA 樣本。
說到這裡,大家可能覺得排除掉同卵雙胞胎的特殊情形,根據DNA 鑑定的結果,應該可以精確分辨每一個人。「和犯罪現場遺留的頭髮DNA 鑑定結果一致,你就是兇手!」這種情況下,會讓人覺得嫌疑人已經在劫難逃,在鐵證面前只能束手就擒。
不過,由於犯罪現場遺留的毛髮等證據並不一定屬於犯罪嫌疑人,所以鑑定結果為一致時,也有可能弄錯人。但是,假設這樣的錯誤根本不會發生,在一個兇殺案現場,只留下了犯罪嫌疑人和受害者的DNA 信息,那麼這種情況下,是不是DNA 鑑定就萬無一失呢?
答案是否定的,即使這種情況下也有可能會發生錯誤。原因就在於,DNA 鑑定過程中,實際上並沒有調查所有的鹼基序列。這主要是因為在目前技術條件下,調查所有的鹼基序列需要耗費巨大的時間和資金成本。
2010 年日本發行的《警察白皮書》公布了當時日本警察採用的15種STR基因座的檢測方法中,同一DNA 出現的概率為4.7 萬億分之一。但是日本學者和田俊憲在其論文「遺傳信息、DNA 鑑定與刑法」(發表於《慶應法學》第18 號,2011 年)中指出:「如果以這個概率為基礎進行計算的話,那麼地球上的全體人類,或者說日本全部國民中DNA 一致的組合不存在的概率非常低,幾乎可以認為這個數字是0。」也就是說,在DNA 鑑定結果中,將兩個人錯誤地判斷為同一人的情況,幾乎可以肯定是存在的。
我計算了一下當這種情況出現的概率超過50% 時,樣本人數大概是256 萬人,相當於大阪市的人口數量。
從2004 年起,日本政府就啟動了DNA 資料庫的建設項目,到2013 年1 月,資料庫中的樣本數量僅有34 萬多份。不少人可能會覺得這個規模遠遠低於256 萬,應該不太會產生多大的問題。
但是,我們還是不能掉以輕心,因為在規模更小的資料庫中,也曾經發生過DNA「偶然一致」的大問題。
在美國的馬裡蘭州,截至2007 年1 月,該州的DNA 資料庫共收錄了大約3 萬人的信息。這個數字比256 萬整整少了2 位數。但即使這樣,實際上該地區也出現了不同人的DNA 被判定為一致的事件20。
上文提到的《警察白皮書》中公布的概率是4.7 萬億分之一,但這不過是理論上的數字,現實中的概率可能要遠遠大於這個數字。
在信息安全的教科書中,必定會有一部分是關於「生日悖論」理論的。我想這應該包含了兩重用意。首先,對於將要從事信息安全工作的人來說,「生日悖論」是他們必須要理解的一種現實現象。
其次,是要告誡學習者,即使是日常工作中經常接觸數學的研究者,在準確把握概率上,也很難做到萬無一失。「生日悖論」現象告訴我們,僅憑自己的直覺估算概率是不可取的,運用數學知識認真計算非常重要。(完)