【專欄】數學之美番外篇:平凡而又神奇的貝葉斯方法(3)
觀測數據總是會有各種各樣的誤差,比如觀測誤差,所以如果過分去尋求能夠完美解釋觀測數據的模型,就會落入所謂的數據過配的境地,一個過配的模型試圖連誤差(噪音)都去解釋(而實際上噪音又是不需要解釋的),顯然就過猶不及了。
模型比較與奧卡姆剃刀
1.再訪拼寫糾正
介紹了貝葉斯拼寫糾正之后,接下來的一個自然而然的問題就來了:“為什么?”為什么要用貝葉斯公式?為什么貝葉斯公式在這里可以用?我們可以很容易地領會為什么貝葉斯公式用在前面介紹的那個男生女生長褲裙子的問題里是正確的。但為什么這里?
為了回答這個問題,一個常見的思路就是想想:非得這樣嗎?因為如果你想到了另一種做法并且證明了它也是靠譜的,那么將它與現在這個一比較,也許就能得出很有價值的信息。那么對于拼寫糾錯問題你能想到其他方案嗎?
不管怎樣,一個最常見的替代方案就是,選擇離thew的編輯距離最近的。然而the和thaw離thew的編輯距離都是1。這可咋辦?你說,不慌,那還是好辦。我們就看到底哪個更可能被錯打為thew就是了。我們注意到字母e和字母w在鍵盤上離得很緊,無名指一抽筋就不小心多打出一個w來,the就變成thew了。而另一方面thaw被錯打成thew的可能性就相對小一點,因為e和a離得較遠而且使用的指頭相差一個指頭(一個是中指一個是小指,不像e和w使用的指頭靠在一塊——神經科學的證據表明緊鄰的身體設施之間容易串位)。OK,很好,因為你現在已經是在用最大似然方法了,或者直白一點,你就是在計算那個使得P(D|h)最大的h。
作者:劉未鵬 出版:電子工業出版社
而貝葉斯方法計算的是什么?是P(h)*P(D|h)。多出來了一個P(h)。我們剛才說了,這個多出來的P(h)是特定猜測的先驗概率。為什么要摻和進一個先驗概率?剛才說的那個最大似然不是挺好么?很雄辯地指出了the是更靠譜的猜測。有什么問題呢?既然這樣,我們就從給最大似然找茬開始吧——我們假設兩者的似然程度是一樣或非常相近,這樣不就難以區分哪個猜測更靠譜了嗎?比如用戶輸入tlp,那到底是top還是tip?(這個例子不怎么好,因為top和tip的詞頻可能仍然是接近的,但一時想不到好的英文單詞的例子,我們不妨就假設top比tip常見許多吧,這個假設并不影響問題的本質。)這個時候,當最大似然不能作出決定性的判斷時,先驗概率就可以插手進來給出指示——“既然你無法決定,那么我告訴你,一般來說top出現的程度要高許多,所以更可能他想打的是top”)。
以上只是最大似然的一個問題,即并不能提供決策的全部信息。
最大似然還有另一個問題:即便一個猜測與數據非常符合,也并不代表這個猜測就是更好的猜測,因為這個猜測本身的可能性也許就非常低。比如MacKay在《Information Theory : Inference and Learning Algorithms》里面就舉了一個很好的例子:-1 3 7 11你說是等差數列更有可能呢?還是 -X^3 / 11 + 9/11*X^2 + 23/11 每項把前項作為X帶入后計算得到的數列?此外曲線擬合也是,平面上N個點總是可以用N-1階多項式來完全擬合,當N個點近似但不精確共線的時候,用N-1階多項式來擬合能夠精確通過每一個點,然而用直線來做擬合/線性回歸的時候卻會使得某些點不能位于直線上。你說到底哪個好呢?多項式?還是直線?一般地說肯定是越低階的多項式越靠譜(當然前提是也不能忽視“似然”P(D|h),明擺著一個多項式分布您愣是去拿直線擬合也是不靠譜的,這就是為什么要把它們兩者乘起來考慮。),原因之一就是低階多項式更常見,先驗概率(P(h))較大(原因之二則隱藏在P(D|h)里面),這就是為什么我們要用樣條來插值,而不是直接搞一個N-1階多項式來通過任意N個點的原因。
以上分析當中隱含的哲學是,觀測數據總是會有各種各樣的誤差,比如觀測誤差(比如你觀測的時候一個MM經過你一不留神,手一抖就是一個誤差出現了),所以如果過分去尋求能夠完美解釋觀測數據的模型,就會落入所謂的數據過配(overfitting)的境地,一個過配的模型試圖連誤差(噪音)都去解釋(而實際上噪音又是不需要解釋的),顯然就過猶不及了。所以P(D|h)大不代表你的h(猜測)就是更好的h。還要看P(h)是怎樣的。所謂奧卡姆剃刀精神就是說:如果兩個理論具有相似的解釋力度,那么優先選擇那個更簡單的(往往也正是更平凡的,更少繁復的,更常見的)。
過分匹配的另一個原因在于當觀測的結果并不是因為誤差而顯得“不精確”而是因為真實世界中對數據的結果產生貢獻的因素太多太多,跟噪音不同,這些偏差是一些另外的因素集體貢獻的結果,不是你的模型所能解釋的——噪音那是不需要解釋——一個現實的模型往往只提取出幾個與結果相關度很高,很重要的因素(cause)。這個時候觀察數據會傾向于圍繞你的有限模型的預測結果呈正態分布,于是你實際觀察到的結果就是這個正態分布的隨機取樣,這個取樣很可能受到其余因素的影響偏離你的模型所預測的中心,這個時候便不能貪心不足地試圖通過改變模型來“完美”匹配數據,因為那些使結果偏離你的預測的貢獻因素不是你這個有限模型里面含有的因素所能概括的,硬要打腫臉充胖子只能導致不實際的模型,舉個教科書例子:身高和體重的實際關系近似于一個二階多項式的關系,但大家都知道并不是只有身高才會對體重產生影響,物理世界影響體重的因素太多太多了,有人身材高大卻瘦得跟稻草,有人卻是橫長豎不長。但不可否認的是總體上來說,那些特殊情況越是特殊就越是稀少,呈圍繞最普遍情況(胖瘦適中)的正態分布,這個分布就保證了我們的身高——體重相關模型能夠在大多數情況下做出靠譜的預測。但是——剛才說了,特例是存在的,就算不是特例,人有胖瘦,密度也有大小,所以完美符合身高——體重的某個假想的二階多項式關系的人是不存在的,我們又不是歐幾里德幾何世界當中的理想多面體,所以,當我們對人群隨機抽取了N個樣本(數據點)試圖對這N個數據點擬合出一個多項式的話就得注意,它肯定得是二階多項式,我們要做的只是去根據數據點計算出多項式各項的參數(一個典型的方法就是最小二乘);它肯定不是直線(我們又不是稻草),也不是三階多項式四階多項式。如果硬要完美擬合N個點,你可能會整出一個N-1階多項式來——設想身高和體重的關系是5階多項式看看?
(待續;此文的修訂版已收錄《暗時間》一書,由電子工業出版社2011年8月出版。作者于2009年7月獲得南京大學計算機系碩士學位,現在微軟亞洲研究院創新工程中心從事軟件研發工程師工作。)
網絡編輯:謝小跳