圖/吳嘉鴻
文/檸檬
信箱裡,有幾封信總是不請自來。
「恭喜您中獎!限時領取!」「免費體驗,點此連結!」「您的帳號異常,請立即驗證!」這些信的措辭格外熱情,卻讓人避之唯恐不及,還好它們總會被歸類到垃圾信件匣。但郵件系統是怎麼認出它們的?這件事,與「集合」及「機率」有些關係。
詞頻機率 區分垃圾
研究人員分析大量郵件後發現,「中獎」這個詞出現在垃圾郵件裡的頻率,遠高於正常信件。數學裡的集合,正好提供了整理這件事的框架。假設集合A是「所有在垃圾郵件裡出現過的詞」,集合B是「所有在正常郵件裡出現過的詞」,兩者間必然有重疊:「你好」、「謝謝」、「附件」。兩邊都會用,這樣的重疊稱為交集。但「限時中獎」、「點此領取現金」幾乎只活在集合A裡;「會議記錄」、「期末報告」則幾乎只屬於集合B。兩個集合合起來的所有詞,稱為聯集,也就是曾在任何郵件出現過的詞彙總庫。
集合告訴我們哪些詞「只屬於某一邊」,但光靠分類還不夠,我們還需要一個數字來衡量風險。18世紀英國牧師貝葉斯提出的貝氏定理可以幫上這個忙,簡單來說就是根據已知的線索,這件事有多可能是真的?
假設我們分析一萬封信,裡面有4000封垃圾信,其中3200封含有「中獎」,出現機率八成;6000封正常信,只有60封含有「中獎」,出現機率僅百分之一。現在來了一封含有「中獎」的新信,如果用貝氏定理計算,它是垃圾信的機率約為百分之九十八。「中獎」幾乎是垃圾信的識別標誌。
核心邏輯 理解真相
真正聰明的過濾器從不靠單一詞彙下判斷。當「中獎」、「免費」、「限時」、「點擊連結」同時出現在一封信裡,4個訊號疊加,整體的垃圾信機率會快速累積。早期的過濾器採用一個簡化假設:把每個詞視為彼此獨立,將各詞的機率一一相乘,最後得出整封信是垃圾信的可能性。這個方法計算簡便,效果相當可觀,是早期過濾系統的核心邏輯。
所有分類系統都難以完全避開一個問題,統計學上稱為偽陽性,你和朋友討論「上周抽獎真的中了」,這封信含有「中獎」,但又是很正常的對話,過濾器可能誤判,把它送進垃圾桶。
正因如此,現代系統設計得相當細膩,不只看哪些詞出現,還要考慮詞的位置、前後文脈絡、寄件人歷史,以及你過去是否曾標記這個地址。每一條線索,都是修正機率的材料。現代的過濾系統走得更遠,已陸續結合深度學習與神經網路等技術,但詞頻與機率的邏輯,始終是這一切的基礎。
每次信箱攔截一封詐騙信,背後是幾千封訓練資料、幾百個詞的機率計算,以及集合的概念在伺服器裡安靜運作。下次打開信箱,看到垃圾桶裡的信,不妨想想:那是機率的計算結果,而機率的背後,是人類試圖用數字理解世界的一種努力。