概率論只不過是把常識用數(shù)學(xué)公式表達(dá)了出來。 ——拉普拉斯 記得讀本科的時(shí)候,最喜歡到城里的計(jì)算機(jī)書店里面去閑逛,一逛就是好幾個(gè)小時(shí);有一次,在書店看到一本書,名叫貝葉斯方法。當(dāng)時(shí)數(shù)學(xué)系的課程還沒有學(xué)到概率統(tǒng)計(jì)。我心想,一個(gè)方法能夠?qū)iT寫出一本書來,肯定很牛逼。后來,我發(fā)現(xiàn)當(dāng)初的那個(gè)樸素歸納推理成立了——這果然是個(gè)牛逼的方法。 ——題記 目錄 0. 前言 0. 前言 這是一篇關(guān)于貝葉斯方法的科普文,我會(huì)盡量少用公式,多用平白的語言敘述,多舉實(shí)際例子。更嚴(yán)格的公式和計(jì)算我會(huì)在相應(yīng)的地方注明參考資料。貝葉斯方法被證明是非常 general 且強(qiáng)大的推理框架,文中你會(huì)看到很多有趣的應(yīng)用。 1. 歷史 托馬斯·貝葉斯(Thomas Bayes)同學(xué)的詳細(xì)生平在這里。以下摘一段 wikipedia 上的簡介:
實(shí)際上,貝葉斯當(dāng)時(shí)的論文只是對這個(gè)問題的一個(gè)直接的求解嘗試,并不清楚他當(dāng)時(shí)是不是已經(jīng)意識到這里面包含著的深刻的思想。然而后來,貝葉斯方法席卷了概率論,并將應(yīng)用延伸到各個(gè)問題領(lǐng)域,所有需要作出概率預(yù)測的地方都可以見到貝葉斯方法的影子,特別地,貝葉斯是機(jī)器學(xué)習(xí)的核心方法之一。這背后的深刻原因在于,現(xiàn)實(shí)世界本身就是不確定的,人類的觀察能力是有局限性的(否則有很大一部分科學(xué)就沒有必要做了——設(shè)想我們能夠直接觀察到電子的運(yùn)行,還需要對原子模型爭吵不休嗎?),我們?nèi)粘K^察到的只是事物表面上的結(jié)果,沿用剛才那個(gè)袋子里面取球的比方,我們往往只能知道從里面取出來的球是什么顏色,而并不能直接看到袋子里面實(shí)際的情況。這個(gè)時(shí)候,我們就需要提供一個(gè)猜測(hypothesis,更為嚴(yán)格的說法是“假設(shè)”,這里用“猜測”更通俗易懂一點(diǎn)),所謂猜測,當(dāng)然就是不確定的(很可能有好多種乃至無數(shù)種猜測都能滿足目前的觀測),但也絕對不是兩眼一抹黑瞎蒙——具體地說,我們需要做兩件事情:1. 算出各種不同猜測的可能性大小。2. 算出最靠譜的猜測是什么。第一個(gè)就是計(jì)算特定猜測的后驗(yàn)概率,對于連續(xù)的猜測空間則是計(jì)算猜測的概率密度函數(shù)。第二個(gè)則是所謂的模型比較,模型比較如果不考慮先驗(yàn)概率的話就是最大似然方法。 1.1 一個(gè)例子:自然語言的二義性 下面舉一個(gè)自然語言的不確定性的例子。當(dāng)你看到這句話:
你對這句話的含義有什么猜測?平常人肯定會(huì)說:那個(gè)女孩拿望遠(yuǎn)鏡看見了那個(gè)男孩(即你對這個(gè)句子背后的實(shí)際語法結(jié)構(gòu)的猜測是:The girl saw-with-a-telescope the boy )。然而,仔細(xì)一想,你會(huì)發(fā)現(xiàn)這個(gè)句子完全可以解釋成:那個(gè)女孩看見了那個(gè)拿著望遠(yuǎn)鏡的男孩(即:The girl saw the-boy-with-a-telescope )。那為什么平常生活中我們每個(gè)人都能夠迅速地對這種二義性進(jìn)行消解呢?這背后到底隱藏著什么樣的思維法則?我們留到后面解釋。 1.2 貝葉斯公式 貝葉斯公式是怎么來的? 我們還是使用 wikipedia 上的一個(gè)例子:
一些認(rèn)知科學(xué)的研究表明(《決策與判斷》以及《Rationality for Mortals》第12章:小孩也可以解決貝葉斯問題),我們對形式化的貝葉斯問題不擅長,但對于以頻率形式呈現(xiàn)的等價(jià)問題卻很擅長。在這里,我們不妨把問題重新敘述成:你在校園里面隨機(jī)游走,遇到了 N 個(gè)穿長褲的人(仍然假設(shè)你無法直接觀察到他們的性別),問這 N 個(gè)人里面有多少個(gè)女生多少個(gè)男生。 你說,這還不簡單:算出學(xué)校里面有多少穿長褲的,然后在這些人里面再算出有多少女生,不就行了? 我們來算一算:假設(shè)學(xué)校里面人的總數(shù)是 U 個(gè)。60% 的男生都穿長褲,于是我們得到了 U * P(Boy) * P(Pants|Boy) 個(gè)穿長褲的(男生)(其中 P(Boy) 是男生的概率 = 60%,這里可以簡單的理解為男生的比例;P(Pants|Boy) 是條件概率,即在 Boy 這個(gè)條件下穿長褲的概率是多大,這里是 100% ,因?yàn)樗心猩即╅L褲)。40% 的女生里面又有一半(50%)是穿長褲的,于是我們又得到了 U * P(Girl) * P(Pants|Girl) 個(gè)穿長褲的(女生)。加起來一共是 U * P(Boy) * P(Pants|Boy) U * P(Girl) * P(Pants|Girl) 個(gè)穿長褲的,其中有 U * P(Girl) * P(Pants|Girl) 個(gè)女生。兩者一比就是你要求的答案。 下面我們把這個(gè)答案形式化一下:我們要求的是 P(Girl|Pants) (穿長褲的人里面有多少女生),我們計(jì)算的結(jié)果是 U * P(Girl) * P(Pants|Girl) / [U * P(Boy) * P(Pants|Boy) U * P(Girl) * P(Pants|Girl)] 。容易發(fā)現(xiàn)這里校園內(nèi)人的總數(shù)是無關(guān)的,可以消去。于是得到 P(Girl|Pants) = P(Girl) * P(Pants|Girl) / [P(Boy) * P(Pants|Boy) P(Girl) * P(Pants|Girl)] 注意,如果把上式收縮起來,分母其實(shí)就是 P(Pants) ,分子其實(shí)就是 P(Pants, Girl) 。而這個(gè)比例很自然地就讀作:在穿長褲的人( P(Pants) )里面有多少(穿長褲)的女孩( P(Pants, Girl) )。 上式中的 Pants 和 Boy/Girl 可以指代一切東西,所以其一般形式就是: P(B|A) = P(A|B) * P(B) / [P(A|B) * P(B) P(A|~B) * P(~B) ] 收縮起來就是: P(B|A) = P(AB) / P(A) 其實(shí)這個(gè)就等于: P(B|A) * P(A) = P(AB) 難怪拉普拉斯說概率論只是把常識用數(shù)學(xué)公式表達(dá)了出來。 然而,后面我們會(huì)逐漸發(fā)現(xiàn),看似這么平凡的貝葉斯公式,背后卻隱含著非常深刻的原理。 2. 拼寫糾正 經(jīng)典著作《人工智能:現(xiàn)代方法》的作者之一 Peter Norvig 曾經(jīng)寫過一篇介紹如何寫一個(gè)拼寫檢查/糾正器的文章(原文在這里,徐宥的翻譯版在這里,這篇文章很深入淺出,強(qiáng)烈建議讀一讀),里面用到的就是貝葉斯方法,這里我們不打算復(fù)述他寫的文章,而是簡要地將其核心思想介紹一下。 首先,我們需要詢問的是:“問題是什么?” 問題是我們看到用戶輸入了一個(gè)不在字典中的單詞,我們需要去猜測:“這個(gè)家伙到底真正想輸入的單詞是什么呢?”用剛才我們形式化的語言來敘述就是,我們需要求: P(我們猜測他想輸入的單詞 | 他實(shí)際輸入的單詞) 這個(gè)概率。并找出那個(gè)使得這個(gè)概率最大的猜測單詞。顯然,我們的猜測未必是唯一的,就像前面舉的那個(gè)自然語言的歧義性的例子一樣;這里,比如用戶輸入: thew ,那么他到底是想輸入 the ,還是想輸入 thaw ?到底哪個(gè)猜測可能性更大呢?幸運(yùn)的是我們可以用貝葉斯公式來直接出它們各自的概率,我們不妨將我們的多個(gè)猜測記為 h1 h2 .. ( h 代表 hypothesis),它們都屬于一個(gè)有限且離散的猜測空間 H (單詞總共就那么多而已),將用戶實(shí)際輸入的單詞記為 D ( D 代表 Data ,即觀測數(shù)據(jù)),于是 P(我們的猜測1 | 他實(shí)際輸入的單詞) 可以抽象地記為: P(h1 | D) 類似地,對于我們的猜測2,則是 P(h2 | D)。不妨統(tǒng)一記為: P(h | D) 運(yùn)用一次貝葉斯公式,我們得到: P(h | D) = P(h) * P(D | h) / P(D) 對于不同的具體猜測 h1 h2 h3 .. ,P(D) 都是一樣的,所以在比較 P(h1 | D) 和 P(h2 | D) 的時(shí)候我們可以忽略這個(gè)常數(shù)。即我們只需要知道: P(h | D) ∝ P(h) * P(D | h) (注:那個(gè)符號的意思是“正比例于”,不是無窮大,注意符號右端是有一個(gè)小缺口的。) 這個(gè)式子的抽象含義是:對于給定觀測數(shù)據(jù),一個(gè)猜測是好是壞,取決于“這個(gè)猜測本身獨(dú)立的可能性大?。ㄏ闰?yàn)概率,Prior )”和“這個(gè)猜測生成我們觀測到的數(shù)據(jù)的可能性大小”(似然,Likelihood )的乘積。具體到我們的那個(gè) thew 例子上,含義就是,用戶實(shí)際是想輸入 the 的可能性大小取決于 the 本身在詞匯表中被使用的可能性(頻繁程度)大?。ㄏ闰?yàn)概率)和 想打 the 卻打成 thew 的可能性大?。ㄋ迫唬┑某朔e。 下面的事情就很簡單了,對于我們猜測為可能的每個(gè)單詞計(jì)算一下 P(h) * P(D | h) 這個(gè)值,然后取最大的,得到的就是最靠譜的猜測。 一點(diǎn)注記:Norvig 的拼寫糾正器里面只提取了編輯距離為 2 以內(nèi)的所有已知單詞。這是為了避免去遍歷字典中每個(gè)單詞計(jì)算它們的 P(h) * P(D | h) ,但這種做法為了節(jié)省時(shí)間帶來了一些誤差。但話說回來難道我們?nèi)祟愓娴幕厝ケ闅v每個(gè)可能的單詞來計(jì)算他們的后驗(yàn)概率嗎?不可能。實(shí)際上,根據(jù)認(rèn)知神經(jīng)科學(xué)的觀點(diǎn),我們首先根據(jù)錯(cuò)誤的單詞做一個(gè) bottom-up 的關(guān)聯(lián)提取,提取出有可能是實(shí)際單詞的那些候選單詞,這個(gè)提取過程就是所謂的基于內(nèi)容的提取,可以根據(jù)錯(cuò)誤單詞的一些模式片段提取出有限的一組候選,非??斓乜s小的搜索空間(比如我輸入 explaination ,單詞里面就有充分的信息使得我們的大腦在常數(shù)時(shí)間內(nèi)把可能性 narrow down 到 explanation 這個(gè)單詞上,至于具體是根據(jù)哪些線索——如音節(jié)——來提取,又是如何在生物神經(jīng)網(wǎng)絡(luò)中實(shí)現(xiàn)這個(gè)提取機(jī)制的,目前還是一個(gè)沒有弄清的領(lǐng)域)。然后,我們對這有限的幾個(gè)猜測做一個(gè) top-down 的預(yù)測,看看到底哪個(gè)對于觀測數(shù)據(jù)(即錯(cuò)誤單詞)的預(yù)測效力最好,而如何衡量預(yù)測效率則就是用貝葉斯公式里面的那個(gè) P(h) * P(D | h) 了——雖然我們很可能使用了一些啟發(fā)法來簡化計(jì)算。后面我們還會(huì)提到這樣的 bottom-up 的關(guān)聯(lián)提取。 3. 模型比較與奧卡姆剃刀 3.1 再訪拼寫糾正 介紹了貝葉斯拼寫糾正之后,接下來的一個(gè)自然而然的問題就來了:“為什么?”為什么要用貝葉斯公式?為什么貝葉斯公式在這里可以用?我們可以很容易地領(lǐng)會(huì)為什么貝葉斯公式用在前面介紹的那個(gè)男生女生長褲裙子的問題里是正確的。但為什么這里? 為了回答這個(gè)問題,一個(gè)常見的思路就是想想:非得這樣嗎?因?yàn)槿绻阆氲搅肆硪环N做法并且證明了它也是靠譜的,那么將它與現(xiàn)在這個(gè)一比較,也許就能得出很有價(jià)值的信息。那么對于拼寫糾錯(cuò)問題你能想到其他方案嗎? 不管怎樣,一個(gè)最常見的替代方案就是,選擇離 thew 的編輯距離最近的。然而 the 和 thaw 離 thew 的編輯距離都是 1 。這可咋辦捏?你說,不慌,那還是好辦。我們就看到底哪個(gè)更可能被錯(cuò)打?yàn)?thew 就是了。我們注意到字母 e 和字母 w 在鍵盤上離得很緊,無名指一抽筋就不小心多打出一個(gè) w 來,the 就變成 thew 了。而另一方面 thaw 被錯(cuò)打成 thew 的可能性就相對小一點(diǎn),因?yàn)?e 和 a 離得較遠(yuǎn)而且使用的指頭相差一個(gè)指頭(一個(gè)是中指一個(gè)是小指,不像 e 和 w 使用的指頭靠在一塊——神經(jīng)科學(xué)的證據(jù)表明緊鄰的身體設(shè)施之間容易串位)。OK,很好,因?yàn)槟悻F(xiàn)在已經(jīng)是在用最大似然方法了,或者直白一點(diǎn),你就是在計(jì)算那個(gè)使得 P(D | h) 最大的 h 。 而貝葉斯方法計(jì)算的是什么?是 P(h) * P(D | h) 。多出來了一個(gè) P(h) 。我們剛才說了,這個(gè)多出來的 P(h) 是特定猜測的先驗(yàn)概率。為什么要摻和進(jìn)一個(gè)先驗(yàn)概率?剛才說的那個(gè)最大似然不是挺好么?很雄辯地指出了 the 是更靠譜的猜測。有什么問題呢?既然這樣,我們就從給最大似然找茬開始吧——我們假設(shè)兩者的似然程度是一樣或非常相近,這樣不就難以區(qū)分哪個(gè)猜測更靠譜了嗎?比如用戶輸入tlp ,那到底是 top 還是 tip ?(這個(gè)例子不怎么好,因?yàn)?top 和 tip 的詞頻可能仍然是接近的,但一時(shí)想不到好的英文單詞的例子,我們不妨就假設(shè) top 比 tip 常見許多吧,這個(gè)假設(shè)并不影響問題的本質(zhì)。)這個(gè)時(shí)候,當(dāng)最大似然不能作出決定性的判斷時(shí),先驗(yàn)概率就可以插手進(jìn)來給出指示——“既然你無法決定,那么我告訴你,一般來說 top 出現(xiàn)的程度要高許多,所以更可能他想打的是 top ”)。 以上只是最大似然的一個(gè)問題,即并不能提供決策的全部信息。 最大似然還有另一個(gè)問題:即便一個(gè)猜測與數(shù)據(jù)非常符合,也并不代表這個(gè)猜測就是更好的猜測,因?yàn)檫@個(gè)猜測本身的可能性也許就非常低。比如 MacKay 在《Information Theory : Inference and Learning Algorithms》里面就舉了一個(gè)很好的例子:-1 3 7 11 你說是等差數(shù)列更有可能呢?還是 -X^3 / 11 9/11*X^2 23/11 每項(xiàng)把前項(xiàng)作為 X 帶入后計(jì)算得到的數(shù)列?此外曲線擬合也是,平面上 N 個(gè)點(diǎn)總是可以用 N-1 階多項(xiàng)式來完全擬合,當(dāng) N 個(gè)點(diǎn)近似但不精確共線的時(shí)候,用 N-1 階多項(xiàng)式來擬合能夠精確通過每一個(gè)點(diǎn),然而用直線來做擬合/線性回歸的時(shí)候卻會(huì)使得某些點(diǎn)不能位于直線上。你說到底哪個(gè)好呢?多項(xiàng)式?還是直線?一般地說肯定是越低階的多項(xiàng)式越靠譜(當(dāng)然前提是也不能忽視“似然”P(D | h) ,明擺著一個(gè)多項(xiàng)式分布您愣是去拿直線擬合也是不靠譜的,這就是為什么要把它們兩者乘起來考慮。),原因之一就是低階多項(xiàng)式更常見,先驗(yàn)概率( P(h) )較大(原因之二則隱藏在 P(D | h) 里面),這就是為什么我們要用樣條來插值,而不是直接搞一個(gè) N-1 階多項(xiàng)式來通過任意 N 個(gè)點(diǎn)的原因。 以上分析當(dāng)中隱含的哲學(xué)是,觀測數(shù)據(jù)總是會(huì)有各種各樣的誤差,比如觀測誤差(比如你觀測的時(shí)候一個(gè) MM 經(jīng)過你一不留神,手一抖就是一個(gè)誤差出現(xiàn)了),所以如果過分去尋求能夠完美解釋觀測數(shù)據(jù)的模型,就會(huì)落入所謂的數(shù)據(jù)過配(overfitting)的境地,一個(gè)過配的模型試圖連誤差(噪音)都去解釋(而實(shí)際上噪音又是不需要解釋的),顯然就過猶不及了。所以 P(D | h) 大不代表你的 h (猜測)就是更好的 h。還要看 P(h) 是怎樣的。所謂奧卡姆剃刀精神就是說:如果兩個(gè)理論具有相似的解釋力度,那么優(yōu)先選擇那個(gè)更簡單的(往往也正是更平凡的,更少繁復(fù)的,更常見的)。 過分匹配的另一個(gè)原因在于當(dāng)觀測的結(jié)果并不是因?yàn)檎`差而顯得“不精確”而是因?yàn)檎鎸?shí)世界中對數(shù)據(jù)的結(jié)果產(chǎn)生貢獻(xiàn)的因素太多太多,跟噪音不同,這些偏差是一些另外的因素集體貢獻(xiàn)的結(jié)果,不是你的模型所能解釋的——噪音那是不需要解釋——一個(gè)現(xiàn)實(shí)的模型往往只提取出幾個(gè)與結(jié)果相關(guān)度很高,很重要的因素(cause)。這個(gè)時(shí)候觀察數(shù)據(jù)會(huì)傾向于圍繞你的有限模型的預(yù)測結(jié)果呈正態(tài)分布,于是你實(shí)際觀察到的結(jié)果就是這個(gè)正態(tài)分布的隨機(jī)取樣,這個(gè)取樣很可能受到其余因素的影響偏離你的模型所預(yù)測的中心,這個(gè)時(shí)候便不能貪心不足地試圖通過改變模型來“完美”匹配數(shù)據(jù),因?yàn)槟切┦菇Y(jié)果偏離你的預(yù)測的貢獻(xiàn)因素不是你這個(gè)有限模型里面含有的因素所能概括的,硬要打腫臉充胖子只能導(dǎo)致不實(shí)際的模型,舉個(gè)教科書例子:身高和體重的實(shí)際關(guān)系近似于一個(gè)二階多項(xiàng)式的關(guān)系,但大家都知道并不是只有身高才會(huì)對體重產(chǎn)生影響,物理世界影響體重的因素太多太多了,有人身材高大卻瘦得跟稻草,有人卻是橫長豎不長。但不可否認(rèn)的是總體上來說,那些特殊情況越是特殊就越是稀少,呈圍繞最普遍情況(胖瘦適中)的正態(tài)分布,這個(gè)分布就保證了我們的身高——體重相關(guān)模型能夠在大多數(shù)情況下做出靠譜的預(yù)測。但是——?jiǎng)偛耪f了,特例是存在的,就算不是特例,人有胖瘦,密度也有大小,所以完美符合身高——體重的某個(gè)假想的二階多項(xiàng)式關(guān)系的人是不存在的,我們又不是歐幾里德幾何世界當(dāng)中的理想多面體,所以,當(dāng)我們對人群隨機(jī)抽取了 N 個(gè)樣本(數(shù)據(jù)點(diǎn))試圖對這 N 個(gè)數(shù)據(jù)點(diǎn)擬合出一個(gè)多項(xiàng)式的話就得注意,它肯定得是二階多項(xiàng)式,我們要做的只是去根據(jù)數(shù)據(jù)點(diǎn)計(jì)算出多項(xiàng)式各項(xiàng)的參數(shù)(一個(gè)典型的方法就是最小二乘);它肯定不是直線(我們又不是稻草),也不是三階多項(xiàng)式四階多項(xiàng)式.. 如果硬要完美擬合 N 個(gè)點(diǎn),你可能會(huì)整出一個(gè) N-1 階多項(xiàng)式來——設(shè)想身高和體重的關(guān)系是 5 階多項(xiàng)式看看? 3.2 模型比較理論(Model Comparasion)與貝葉斯奧卡姆剃刀(Bayesian Occam’s Razor) 實(shí)際上,模型比較就是去比較哪個(gè)模型(猜測)更可能隱藏在觀察數(shù)據(jù)的背后。其基本思想前面已經(jīng)用拼寫糾正的例子來說明了。我們對用戶實(shí)際想輸入的單詞的猜測就是模型,用戶輸錯(cuò)的單詞就是觀測數(shù)據(jù)。我們通過: P(h | D) ∝ P(h) * P(D | h) 來比較哪個(gè)模型最為靠譜。前面提到,光靠 P(D | h) (即“似然”)是不夠的,有時(shí)候還需要引入 P(h) 這個(gè)先驗(yàn)概率。奧卡姆剃刀就是說 P(h) 較大的模型有較大的優(yōu)勢,而最大似然則是說最符合觀測數(shù)據(jù)的(即 P(D | h) 最大的)最有優(yōu)勢。整個(gè)模型比較就是這兩方力量的拉鋸。我們不妨再舉一個(gè)簡單的例子來說明這一精神:你隨便找枚硬幣,擲一下,觀察一下結(jié)果。好,你觀察到的結(jié)果要么是“正”,要么是“反”(不,不是少林足球那枚硬幣:P ),不妨假設(shè)你觀察到的是“正”?,F(xiàn)在你要去根據(jù)這個(gè)觀測數(shù)據(jù)推斷這枚硬幣擲出“正”的概率是多大。根據(jù)最大似然估計(jì)的精神,我們應(yīng)該猜測這枚硬幣擲出“正”的概率是 1 ,因?yàn)檫@個(gè)才是能最大化 P(D | h) 的那個(gè)猜測。然而每個(gè)人都會(huì)大搖其頭——很顯然,你隨機(jī)摸出一枚硬幣這枚硬幣居然沒有反面的概率是“不存在的”,我們對一枚隨機(jī)硬幣是否一枚有偏硬幣,偏了多少,是有著一個(gè)先驗(yàn)的認(rèn)識的,這個(gè)認(rèn)識就是絕大多數(shù)硬幣都是基本公平的,偏得越多的硬幣越少見(可以用一個(gè) beta 分布來表達(dá)這一先驗(yàn)概率)。將這個(gè)先驗(yàn)正態(tài)分布 p(θ) (其中 θ 表示硬幣擲出正面的比例,小寫的 p 代表這是概率密度函數(shù))結(jié)合到我們的問題中,我們便不是去最大化 P(D | h) ,而是去最大化 P(D | θ) * p(θ) ,顯然 θ = 1 是不行的,因?yàn)?P(θ=1) 為 0 ,導(dǎo)致整個(gè)乘積也為 0 。實(shí)際上,只要對這個(gè)式子求一個(gè)導(dǎo)數(shù)就可以得到最值點(diǎn)。 以上說的是當(dāng)我們知道先驗(yàn)概率 P(h) 的時(shí)候,光用最大似然是不靠譜的,因?yàn)樽畲笏迫坏牟聹y可能先驗(yàn)概率非常小。然而,有些時(shí)候,我們對于先驗(yàn)概率一無所知,只能假設(shè)每種猜測的先驗(yàn)概率是均等的,這個(gè)時(shí)候就只有用最大似然了。實(shí)際上,統(tǒng)計(jì)學(xué)家和貝葉斯學(xué)家有一個(gè)有趣的爭論,統(tǒng)計(jì)學(xué)家說:我們讓數(shù)據(jù)自己說話。言下之意就是要摒棄先驗(yàn)概率。而貝葉斯支持者則說:數(shù)據(jù)會(huì)有各種各樣的偏差,而一個(gè)靠譜的先驗(yàn)概率則可以對這些隨機(jī)噪音做到健壯。事實(shí)證明貝葉斯派勝利了,勝利的關(guān)鍵在于所謂先驗(yàn)概率其實(shí)也是經(jīng)驗(yàn)統(tǒng)計(jì)的結(jié)果,譬如為什么我們會(huì)認(rèn)為絕大多數(shù)硬幣是基本公平的?為什么我們認(rèn)為大多數(shù)人的肥胖適中?為什么我們認(rèn)為膚色是種族相關(guān)的,而體重則與種族無關(guān)?先驗(yàn)概率里面的“先驗(yàn)”并不是指先于一切經(jīng)驗(yàn),而是僅指先于我們“當(dāng)前”給出的觀測數(shù)據(jù)而已,在硬幣的例子中先驗(yàn)指的只是先于我們知道投擲的結(jié)果這個(gè)經(jīng)驗(yàn),而并非“先天”。 然而,話說回來,有時(shí)候我們必須得承認(rèn),就算是基于以往的經(jīng)驗(yàn),我們手頭的“先驗(yàn)”概率還是均勻分布,這個(gè)時(shí)候就必須依賴用最大似然,我們用前面留下的一個(gè)自然語言二義性問題來說明這一點(diǎn):
到底是 The girl saw-with-a-telescope the boy 這一語法結(jié)構(gòu),還是 The girl saw the-boy-with-a-telescope 呢?兩種語法結(jié)構(gòu)的常見程度都差不多(你可能會(huì)覺得后一種語法結(jié)構(gòu)的常見程度較低,這是事后偏見,你只需想想 The girl saw the boy with a book 就知道了。當(dāng)然,實(shí)際上從大規(guī)模語料統(tǒng)計(jì)結(jié)果來看后一種語法結(jié)構(gòu)的確稍稍不常見一丁點(diǎn),但是絕對不足以解釋我們對第一種結(jié)構(gòu)的強(qiáng)烈傾向)。那么到底為什么呢? 我們不妨先來看看 MacKay 在書中舉的一個(gè)漂亮的例子: 圖中有多少個(gè)箱子?特別地,那棵書后面是一個(gè)箱子?還是兩個(gè)箱子?還是三個(gè)箱子?還是.. 你可能會(huì)覺得樹后面肯定是一個(gè)箱子,但為什么不是兩個(gè)呢?如下圖: 很簡單,你會(huì)說:要是真的有兩個(gè)箱子那才怪了,怎么就那么巧這兩個(gè)箱子剛剛好顏色相同,高度相同呢? 用概率論的語言來說,你剛才的話就翻譯為:猜測 h 不成立,因?yàn)?P(D | h) 太小(太巧合)了。我們的直覺是:巧合(小概率)事件不會(huì)發(fā)生。所以當(dāng)一個(gè)猜測(假設(shè))使得我們的觀測結(jié)果成為小概率事件的時(shí)候,我們就說“才怪呢,哪能那么巧捏?!” 現(xiàn)在我們可以回到那個(gè)自然語言二義性的例子,并給出一個(gè)完美的解釋了:如果語法結(jié)構(gòu)是 The girl saw the-boy-with-a-telecope 的話,怎么那個(gè)男孩偏偏手里拿的就是望遠(yuǎn)鏡——一個(gè)可以被用來 saw-with 的東東捏?這也忒小概率了吧。他咋就不會(huì)拿本書呢?拿什么都好。怎么偏偏就拿了望遠(yuǎn)鏡?所以唯一的解釋是,這個(gè)“巧合”背后肯定有它的必然性,這個(gè)必然性就是,如果我們將語法結(jié)構(gòu)解釋為 The girl saw-with-a-telescope the boy 的話,就跟數(shù)據(jù)完美吻合了——既然那個(gè)女孩是用某個(gè)東西去看這個(gè)男孩的,那么這個(gè)東西是一個(gè)望遠(yuǎn)鏡就完全可以解釋了(不再是小概率事件了)。 自然語言二義性很常見,譬如上文中的一句話:
就有二義性:到底是參見這兩本書的第 12 章,還是僅僅是第二本書的第 12 章呢?如果是這兩本書的第 12 章那就是咄咄怪事了,怎么恰好兩本書都有第 12 章,都是講同一個(gè)問題,更詭異的是,標(biāo)題還相同呢? 注意,以上做的是似然估計(jì)(即只看 P(D | h) 的大小),不含先驗(yàn)概率。通過這兩個(gè)例子,尤其是那個(gè)樹后面的箱子的例子我們可以看到,似然估計(jì)里面也蘊(yùn)含著奧卡姆剃刀:樹后面的箱子數(shù)目越多,這個(gè)模型就越復(fù)雜。單個(gè)箱子的模型是最簡單的。似然估計(jì)選擇了更簡單的模型。 這個(gè)就是所謂的貝葉斯奧卡姆剃刀(Bayesian Occam’s Razor),因?yàn)檫@個(gè)剃刀工作在貝葉斯公式的似然(P(D | h) )上,而不是模型本身( P(h) )的先驗(yàn)概率上,后者是傳統(tǒng)的奧卡姆剃刀。關(guān)于貝葉斯奧卡姆剃刀我們再來看一個(gè)前面說到的曲線擬合的例子:如果平面上有 N 個(gè)點(diǎn),近似構(gòu)成一條直線,但絕不精確地位于一條直線上。這時(shí)我們既可以用直線來擬合(模型1),也可以用二階多項(xiàng)式(模型2)擬合,也可以用三階多項(xiàng)式(模型3),.. ,特別地,用 N-1 階多項(xiàng)式便能夠保證肯定能完美通過 N 個(gè)數(shù)據(jù)點(diǎn)。那么,這些可能的模型之中到底哪個(gè)是最靠譜的呢?前面提到,一個(gè)衡量的依據(jù)是奧卡姆剃刀:越是高階的多項(xiàng)式越是繁復(fù)和不常見。然而,我們其實(shí)并不需要依賴于這個(gè)先驗(yàn)的奧卡姆剃刀,因?yàn)橛腥丝赡軙?huì)爭辯說:你怎么就能說越高階的多項(xiàng)式越不常見呢?我偏偏覺得所有階多項(xiàng)式都是等可能的。好吧,既然如此那我們不妨就扔掉 P(h) 項(xiàng),看看 P(D | h) 能告訴我們什么。我們注意到越是高階的多項(xiàng)式,它的軌跡彎曲程度越是大,到了八九階簡直就是直上直下,于是我們不僅要問:一個(gè)比如說八階多項(xiàng)式在平面上隨機(jī)生成的一堆 N 個(gè)點(diǎn)偏偏恰好近似構(gòu)成一條直線的概率(即 P(D | h) )有多大?太小太小了。反之,如果背后的模型是一條直線,那么根據(jù)該模型生成一堆近似構(gòu)成直線的點(diǎn)的概率就大得多了。這就是貝葉斯奧卡姆剃刀。 這里只是提供一個(gè)關(guān)于貝葉斯奧卡姆剃刀的科普,強(qiáng)調(diào)直觀解釋,更多理論公式請參考 MacKay 的著作 《Information Theory : Inference and Learning Algorithms》第 28 章。 3.3 最小描述長度原則 貝葉斯模型比較理論與信息論有一個(gè)有趣的關(guān)聯(lián): P(h | D) ∝ P(h) * P(D | h) 兩邊求對數(shù),將右式的乘積變成相加: ln P(h | D) ∝ ln P(h) ln P(D | h) 顯然,最大化 P(h | D) 也就是最大化 ln P(h | D)。而 ln P(h) ln P(D | h) 則可以解釋為模型(或者稱“假設(shè)”、“猜測”)h 的編碼長度加上在該模型下數(shù)據(jù) D 的編碼長度。使這個(gè)和最小的模型就是最佳模型。 而究竟如何定義一個(gè)模型的編碼長度,以及數(shù)據(jù)在模型下的編碼長度則是一個(gè)問題。更多可參考 Mitchell 的 《Machine Learning》的 6.6 節(jié),或 Mackay 的 28.3 節(jié)) 3.4 最優(yōu)貝葉斯推理 所謂的推理,分為兩個(gè)過程,第一步是對觀測數(shù)據(jù)建立一個(gè)模型。第二步則是使用這個(gè)模型來推測未知現(xiàn)象發(fā)生的概率。我們前面都是講的對于觀測數(shù)據(jù)給出最靠譜的那個(gè)模型。然而很多時(shí)候,雖然某個(gè)模型是所有模型里面最靠譜的,但是別的模型也并不是一點(diǎn)機(jī)會(huì)都沒有。譬如第一個(gè)模型在觀測數(shù)據(jù)下的概率是 0.5 。第二個(gè)模型是 0.4 ,第三個(gè)是 0.1 。如果我們只想知道對于觀測數(shù)據(jù)哪個(gè)模型最可能,那么只要取第一個(gè)就行了,故事到此結(jié)束。然而很多時(shí)候我們建立模型是為了推測未知的事情的發(fā)生概率,這個(gè)時(shí)候,三個(gè)模型對未知的事情發(fā)生的概率都會(huì)有自己的預(yù)測,僅僅因?yàn)槟骋粋€(gè)模型概率稍大一點(diǎn)就只聽他一個(gè)人的就太不民主了。所謂的最優(yōu)貝葉斯推理就是將三個(gè)模型對于未知數(shù)據(jù)的預(yù)測結(jié)論加權(quán)平均起來(權(quán)值就是模型相應(yīng)的概率)。顯然,這個(gè)推理是理論上的制高點(diǎn),無法再優(yōu)了,因?yàn)樗呀?jīng)把所有可能性都考慮進(jìn)去了。 只不過實(shí)際上我們是基本不會(huì)使用這個(gè)框架的,因?yàn)橛?jì)算模型可能非常費(fèi)時(shí)間,二來模型空間可能是連續(xù)的,即有無窮多個(gè)模型(這個(gè)時(shí)候需要計(jì)算模型的概率分布)。結(jié)果還是非常費(fèi)時(shí)間。所以這個(gè)被看作是一個(gè)理論基準(zhǔn)。 4. 無處不在的貝葉斯 以下我們再舉一些實(shí)際例子來說明貝葉斯方法被運(yùn)用的普遍性,這里主要集中在機(jī)器學(xué)習(xí)方面,因?yàn)槲也皇菍W(xué)經(jīng)濟(jì)的,否則還可以找到一堆經(jīng)濟(jì)學(xué)的例子。 4.1 中文分詞 貝葉斯是機(jī)器學(xué)習(xí)的核心方法之一。比如中文分詞領(lǐng)域就用到了貝葉斯。Google 研究員吳軍在《數(shù)學(xué)之美》系列中就有一篇是介紹中文分詞的,這里只介紹一下核心的思想,不做贅述,詳細(xì)請參考吳軍的文章(這里)。 分詞問題的描述為:給定一個(gè)句子(字串),如: 南京市長江大橋 如何對這個(gè)句子進(jìn)行分詞(詞串)才是最靠譜的。例如: 1. 南京市/長江大橋 2. 南京/市長/江大橋 這兩個(gè)分詞,到底哪個(gè)更靠譜呢? 我們用貝葉斯公式來形式化地描述這個(gè)問題,令 X 為字串(句子),Y 為詞串(一種特定的分詞假設(shè))。我們就是需要尋找使得 P(Y|X) 最大的 Y ,使用一次貝葉斯可得: P(Y|X) ∝ P(Y)*P(X|Y) 用自然語言來說就是 這種分詞方式(詞串)的可能性 乘以 這個(gè)詞串生成我們的句子的可能性。我們進(jìn)一步容易看到:可以近似地將 P(X|Y) 看作是恒等于 1 的,因?yàn)槿我饧傧氲囊环N分詞方式之下生成我們的句子總是精準(zhǔn)地生成的(只需把分詞之間的分界符號扔掉即可)。于是,我們就變成了去最大化 P(Y) ,也就是尋找一種分詞使得這個(gè)詞串(句子)的概率最大化。而如何計(jì)算一個(gè)詞串: W1, W2, W3, W4 .. 的可能性呢?我們知道,根據(jù)聯(lián)合概率的公式展開:P(W1, W2, W3, W4 ..) = P(W1) * P(W2|W1) * P(W3|W2, W1) * P(W4|W1,W2,W3) * .. 于是我們可以通過一系列的條件概率(右式)的乘積來求整個(gè)聯(lián)合概率。然而不幸的是隨著條件數(shù)目的增加(P(Wn|Wn-1,Wn-2,..,W1) 的條件有 n-1 個(gè)),數(shù)據(jù)稀疏問題也會(huì)越來越嚴(yán)重,即便語料庫再大也無法統(tǒng)計(jì)出一個(gè)靠譜的 P(Wn|Wn-1,Wn-2,..,W1) 來。為了緩解這個(gè)問題,計(jì)算機(jī)科學(xué)家們一如既往地使用了“天真”假設(shè):我們假設(shè)句子中一個(gè)詞的出現(xiàn)概率只依賴于它前面的有限的 k 個(gè)詞(k 一般不超過 3,如果只依賴于前面的一個(gè)詞,就是2元語言模型(2-gram),同理有 3-gram 、 4-gram 等),這個(gè)就是所謂的“有限地平線”假設(shè)。雖然這個(gè)假設(shè)很傻很天真,但結(jié)果卻表明它的結(jié)果往往是很好很強(qiáng)大的,后面要提到的樸素貝葉斯方法使用的假設(shè)跟這個(gè)精神上是完全一致的,我們會(huì)解釋為什么像這樣一個(gè)天真的假設(shè)能夠得到強(qiáng)大的結(jié)果。目前我們只要知道,有了這個(gè)假設(shè),剛才那個(gè)乘積就可以改寫成: P(W1) * P(W2|W1) * P(W3|W2) * P(W4|W3) .. (假設(shè)每個(gè)詞只依賴于它前面的一個(gè)詞)。而統(tǒng)計(jì) P(W2|W1) 就不再受到數(shù)據(jù)稀疏問題的困擾了。對于我們上面提到的例子“南京市長江大橋”,如果按照自左到右的貪婪方法分詞的話,結(jié)果就成了“南京市長/江大橋”。但如果按照貝葉斯分詞的話(假設(shè)使用 3-gram),由于“南京市長”和“江大橋”在語料庫中一起出現(xiàn)的頻率為 0 ,這個(gè)整句的概率便會(huì)被判定為 0 。 從而使得“南京市/長江大橋”這一分詞方式勝出。 一點(diǎn)注記:有人可能會(huì)疑惑,難道我們?nèi)祟愐彩腔谶@些天真的假設(shè)來進(jìn)行推理的?不是的。事實(shí)上,統(tǒng)計(jì)機(jī)器學(xué)習(xí)方法所統(tǒng)計(jì)的東西往往處于相當(dāng)表層(shallow)的層面,在這個(gè)層面機(jī)器學(xué)習(xí)只能看到一些非常表面的現(xiàn)象,有一點(diǎn)科學(xué)研究的理念的人都知道:越是往表層去,世界就越是繁復(fù)多變。從機(jī)器學(xué)習(xí)的角度來說,特征(feature)就越多,成百上千維度都是可能的。特征一多,好了,高維詛咒就產(chǎn)生了,數(shù)據(jù)就稀疏得要命,不夠用了。而我們?nèi)祟惖挠^察水平顯然比機(jī)器學(xué)習(xí)的觀察水平要更深入一些,為了避免數(shù)據(jù)稀疏我們不斷地發(fā)明各種裝置(最典型就是顯微鏡),來幫助我們直接深入到更深層的事物層面去觀察更本質(zhì)的聯(lián)系,而不是在淺層對表面現(xiàn)象作統(tǒng)計(jì)歸納。舉一個(gè)簡單的例子,通過對大規(guī)模語料庫的統(tǒng)計(jì),機(jī)器學(xué)習(xí)可能會(huì)發(fā)現(xiàn)這樣一個(gè)規(guī)律:所有的“他”都是不會(huì)穿 bra 的,所有的“她”則都是穿的。然而,作為一個(gè)男人,卻完全無需進(jìn)行任何統(tǒng)計(jì)學(xué)習(xí),因?yàn)樯顚拥囊?guī)律就決定了我們根本不會(huì)去穿 bra 。至于機(jī)器學(xué)習(xí)能不能完成后者(像人類那樣的)這個(gè)推理,則是人工智能領(lǐng)域的經(jīng)典問題。至少在那之前,聲稱統(tǒng)計(jì)學(xué)習(xí)方法能夠終結(jié)科學(xué)研究(原文)的說法是純粹外行人說的話。 4.2 統(tǒng)計(jì)機(jī)器翻譯 統(tǒng)計(jì)機(jī)器翻譯因?yàn)槠浜唵?,自?dòng)(無需手動(dòng)添加規(guī)則),迅速成為了機(jī)器翻譯的事實(shí)標(biāo)準(zhǔn)。而統(tǒng)計(jì)機(jī)器翻譯的核心算法也是使用的貝葉斯方法。 問題是什么?統(tǒng)計(jì)機(jī)器翻譯的問題可以描述為:給定一個(gè)句子 e ,它的可能的外文翻譯 f 中哪個(gè)是最靠譜的。即我們需要計(jì)算:P(f|e) 。一旦出現(xiàn)條件概率貝葉斯總是挺身而出: P(f|e) ∝ P(f) * P(e|f) 這個(gè)式子的右端很容易解釋:那些先驗(yàn)概率較高,并且更可能生成句子 e 的外文句子 f 將會(huì)勝出。我們只需簡單統(tǒng)計(jì)(結(jié)合上面提到的 N-Gram 語言模型)就可以統(tǒng)計(jì)任意一個(gè)外文句子 f 的出現(xiàn)概率。然而 P(e|f) 卻不是那么好求的,給定一個(gè)候選的外文局子 f ,它生成(或?qū)?yīng))句子 e 的概率是多大呢?我們需要定義什么叫 “對應(yīng)”,這里需要用到一個(gè)分詞對齊的平行語料庫,有興趣的可以參考 《Foundations of Statistical Natural Language Processing》第 13 章,這里摘選其中的一個(gè)例子:假設(shè) e 為:John loves Mary 。我們需要考察的首選 f 是:Jean aime Marie (法文)。我們需要求出 P(e|f) 是多大,為此我們考慮 e 和 f 有多少種對齊的可能性,如: John (Jean) loves (aime) Marie (Mary) 就是其中的一種(最靠譜的)對齊,為什么要對齊,是因?yàn)橐坏R了之后,就可以容易地計(jì)算在這個(gè)對齊之下的 P(e|f) 是多大,只需計(jì)算: P(John|Jean) * P(loves|aime) * P(Marie|Mary) 即可。 然后我們遍歷所有的對齊方式,并將每種對齊方式之下的翻譯概率 ∑ 求和。便可以獲得整個(gè)的 P(e|f) 是多大。 一點(diǎn)注記:還是那個(gè)問題:難道我們?nèi)祟愓娴氖怯眠@種方式進(jìn)行翻譯的?highly unlikely 。這種計(jì)算復(fù)雜性非常高的東西連三位數(shù)乘法都搞不定的我們才不會(huì)笨到去使用呢。根據(jù)認(rèn)知神經(jīng)科學(xué)的認(rèn)識,很可能我們是先從句子到語義(一個(gè)逐層往上(bottom-up)抽象的 folding 過程),然后從語義根據(jù)另一門語言的語法展開為另一門語言(一個(gè)逐層往下(top-down)的具體化 unfolding 過程)。如何可計(jì)算地實(shí)現(xiàn)這個(gè)過程,目前仍然是個(gè)難題。(我們看到很多地方都有 bottom-up/top-down 這樣一個(gè)對稱的過程,實(shí)際上有人猜測這正是生物神經(jīng)網(wǎng)絡(luò)原則上的運(yùn)作方式,對視覺神經(jīng)系統(tǒng)的研究尤其證明了這一點(diǎn),Hawkins 在 《On Intelligence》 里面提出了一種 HTM (Hierarchical Temporal Memory)模型正是使用了這個(gè)原則。) 4.3 貝葉斯圖像識別,Analysis by Synthesis 貝葉斯方法是一個(gè)非常 general 的推理框架。其核心理念可以描述成:Analysis by Synthesis (通過合成來分析)。06 年的認(rèn)知科學(xué)新進(jìn)展上有一篇 paper 就是講用貝葉斯推理來解釋視覺識別的,一圖勝千言,下圖就是摘自這篇 paper : 首先是視覺系統(tǒng)提取圖形的邊角特征,然后使用這些特征自底向上地激活高層的抽象概念(比如是 E 還是 F 還是等號),然后使用一個(gè)自頂向下的驗(yàn)證來比較到底哪個(gè)概念最佳地解釋了觀察到的圖像。 4.4 EM 算法與基于模型的聚類 聚類是一種無指導(dǎo)的機(jī)器學(xué)習(xí)問題,問題描述:給你一堆數(shù)據(jù)點(diǎn),讓你將它們最靠譜地分成一堆一堆的。聚類算法很多,不同的算法適應(yīng)于不同的問題,這里僅介紹一個(gè)基于模型的聚類,該聚類算法對數(shù)據(jù)點(diǎn)的假設(shè)是,這些數(shù)據(jù)點(diǎn)分別是圍繞 K 個(gè)核心的 K 個(gè)正態(tài)分布源所隨機(jī)生成的,使用 Han JiaWei 的《Data Ming: Concepts and Techniques》中的圖: 圖中有兩個(gè)正態(tài)分布核心,生成了大致兩堆點(diǎn)。我們的聚類算法就是需要根據(jù)給出來的那些點(diǎn),算出這兩個(gè)正態(tài)分布的核心在什么位置,以及分布的參數(shù)是多少。這很明顯又是一個(gè)貝葉斯問題,但這次不同的是,答案是連續(xù)的且有無窮多種可能性,更糟的是,只有當(dāng)我們知道了哪些點(diǎn)屬于同一個(gè)正態(tài)分布圈的時(shí)候才能夠?qū)@個(gè)分布的參數(shù)作出靠譜的預(yù)測,現(xiàn)在兩堆點(diǎn)混在一塊我們又不知道哪些點(diǎn)屬于第一個(gè)正態(tài)分布,哪些屬于第二個(gè)。反過來,只有當(dāng)我們對分布的參數(shù)作出了靠譜的預(yù)測時(shí)候,才能知道到底哪些點(diǎn)屬于第一個(gè)分布,那些點(diǎn)屬于第二個(gè)分布。這就成了一個(gè)先有雞還是先有蛋的問題了。為了解決這個(gè)循環(huán)依賴,總有一方要先打破僵局,說,不管了,我先隨便整一個(gè)值出來,看你怎么變,然后我再根據(jù)你的變化調(diào)整我的變化,然后如此迭代著不斷互相推導(dǎo),最終收斂到一個(gè)解。這就是 EM 算法。 EM 的意思是“Expectation-Maximazation”,在這個(gè)聚類問題里面,我們是先隨便猜一下這兩個(gè)正態(tài)分布的參數(shù):如核心在什么地方,方差是多少。然后計(jì)算出每個(gè)數(shù)據(jù)點(diǎn)更可能屬于第一個(gè)還是第二個(gè)正態(tài)分布圈,這個(gè)是屬于 Expectation 一步。有了每個(gè)數(shù)據(jù)點(diǎn)的歸屬,我們就可以根據(jù)屬于第一個(gè)分布的數(shù)據(jù)點(diǎn)來重新評估第一個(gè)分布的參數(shù)(從蛋再回到雞),這個(gè)是 Maximazation 。如此往復(fù),直到參數(shù)基本不再發(fā)生變化為止。這個(gè)迭代收斂過程中的貝葉斯方法在第二步,根據(jù)數(shù)據(jù)點(diǎn)求分布的參數(shù)上面。 4.5 最大似然與最小二乘 學(xué)過線性代數(shù)的大概都知道經(jīng)典的最小二乘方法來做線性回歸。問題描述是:給定平面上 N 個(gè)點(diǎn),(這里不妨假設(shè)我們想用一條直線來擬合這些點(diǎn)——回歸可以看作是擬合的特例,即允許誤差的擬合),找出一條最佳描述了這些點(diǎn)的直線。 一個(gè)接踵而來的問題就是,我們?nèi)绾味x最佳?我們設(shè)每個(gè)點(diǎn)的坐標(biāo)為 (Xi, Yi) 。如果直線為 y = f(x) 。那么 (Xi, Yi) 跟直線對這個(gè)點(diǎn)的“預(yù)測”:(Xi, f(Xi)) 就相差了一個(gè) ΔYi = |Yi – f(Xi)| 。最小二乘就是說尋找直線使得 (ΔY1)^2 (ΔY2)^2 .. (即誤差的平方和)最小,至于為什么是誤差的平方和而不是誤差的絕對值和,統(tǒng)計(jì)學(xué)上也沒有什么好的解釋。然而貝葉斯方法卻能對此提供一個(gè)完美的解釋。 我們假設(shè)直線對于坐標(biāo) Xi 給出的預(yù)測 f(Xi) 是最靠譜的預(yù)測,所有縱坐標(biāo)偏離 f(Xi) 的那些數(shù)據(jù)點(diǎn)都含有噪音,是噪音使得它們偏離了完美的一條直線,一個(gè)合理的假設(shè)就是偏離路線越遠(yuǎn)的概率越小,具體小多少,可以用一個(gè)正態(tài)分布曲線來模擬,這個(gè)分布曲線以直線對 Xi 給出的預(yù)測 f(Xi) 為中心,實(shí)際縱坐標(biāo)為 Yi 的點(diǎn) (Xi, Yi) 發(fā)生的概率就正比于 EXP[-(ΔYi)^2]。(EXP(..) 代表以常數(shù) e 為底的多少次方)。 現(xiàn)在我們回到問題的貝葉斯方面,我們要想最大化的后驗(yàn)概率是: P(h|D) ∝ P(h) * P(D|h) 又見貝葉斯!這里 h 就是指一條特定的直線,D 就是指這 N 個(gè)數(shù)據(jù)點(diǎn)。我們需要尋找一條直線 h 使得 P(h) * P(D|h) 最大。很顯然,P(h) 這個(gè)先驗(yàn)概率是均勻的,因?yàn)槟臈l直線也不比另一條更優(yōu)越。所以我們只需要看 P(D|h) 這一項(xiàng),這一項(xiàng)是指這條直線生成這些數(shù)據(jù)點(diǎn)的概率,剛才說過了,生成數(shù)據(jù)點(diǎn) (Xi, Yi) 的概率為 EXP[-(ΔYi)^2] 乘以一個(gè)常數(shù)。而 P(D|h) = P(d1|h) * P(d2|h) * .. 即假設(shè)各個(gè)數(shù)據(jù)點(diǎn)是獨(dú)立生成的,所以可以把每個(gè)概率乘起來。于是生成 N 個(gè)數(shù)據(jù)點(diǎn)的概率為 EXP[-(ΔY1)^2] * EXP[-(ΔY2)^2] * EXP[-(ΔY3)^2] * .. = EXP{-[(ΔY1)^2 (ΔY2)^2 (ΔY3)^2 ..]} 最大化這個(gè)概率就是要最小化 (ΔY1)^2 (ΔY2)^2 (ΔY3)^2 .. 。 熟悉這個(gè)式子嗎? 5. 樸素貝葉斯方法 樸素貝葉斯方法是一個(gè)很特別的方法,所以值得介紹一下。我們用樸素貝葉斯在垃圾郵件過濾中的應(yīng)用來舉例說明。 5.1 貝葉斯垃圾郵件過濾器 問題是什么?問題是,給定一封郵件,判定它是否屬于垃圾郵件。按照先例,我們還是用 D 來表示這封郵件,注意 D 由 N 個(gè)單詞組成。我們用 h 來表示垃圾郵件,h- 表示正常郵件。問題可以形式化地描述為求: P(h |D) = P(h ) * P(D|h ) / P(D) P(h-|D) = P(h-) * P(D|h-) / P(D) 其中 P(h ) 和 P(h-) 這兩個(gè)先驗(yàn)概率都是很容易求出來的,只需要計(jì)算一個(gè)郵件庫里面垃圾郵件和正常郵件的比例就行了。然而 P(D|h ) 卻不容易求,因?yàn)?D 里面含有 N 個(gè)單詞 d1, d2, d3, .. ,所以P(D|h ) = P(d1,d2,..,dn|h ) 。我們又一次遇到了數(shù)據(jù)稀疏性,為什么這么說呢?P(d1,d2,..,dn|h ) 就是說在垃圾郵件當(dāng)中出現(xiàn)跟我們目前這封郵件一模一樣的一封郵件的概率是多大!開玩笑,每封郵件都是不同的,世界上有無窮多封郵件。瞧,這就是數(shù)據(jù)稀疏性,因?yàn)榭梢钥隙ǖ卣f,你收集的訓(xùn)練數(shù)據(jù)庫不管里面含了多少封郵件,也不可能找出一封跟目前這封一模一樣的。結(jié)果呢?我們又該如何來計(jì)算 P(d1,d2,..,dn|h ) 呢? 我們將 P(d1,d2,..,dn|h ) 擴(kuò)展為: P(d1|h ) * P(d2|d1, h ) * P(d3|d2,d1, h ) * .. 。熟悉這個(gè)式子嗎?這里我們會(huì)使用一個(gè)更激進(jìn)的假設(shè),我們假設(shè) di 與 di-1 是完全條件無關(guān)的,于是式子就簡化為 P(d1|h ) * P(d2|h ) * P(d3|h ) * .. 。這個(gè)就是所謂的條件獨(dú)立假設(shè),也正是樸素貝葉斯方法的樸素之處。而計(jì)算 P(d1|h ) * P(d2|h ) * P(d3|h ) * .. 就太簡單了,只要統(tǒng)計(jì) di 這個(gè)單詞在垃圾郵件中出現(xiàn)的頻率即可。關(guān)于貝葉斯垃圾郵件過濾更多的內(nèi)容可以參考這個(gè)條目,注意其中提到的其他資料。 一點(diǎn)注記:這里,為什么有這個(gè)數(shù)據(jù)稀疏問題,還是因?yàn)榻y(tǒng)計(jì)學(xué)習(xí)方法工作在淺層面,世界上的單詞就算不再變多也是非常之多的,單詞之間組成的句子也是變化多端,更不用說一篇文章了,文章數(shù)目則是無窮的,所以在這個(gè)層面作統(tǒng)計(jì),肯定要被數(shù)據(jù)稀疏性困擾。我們要注意,雖然句子和文章的數(shù)目是無限的,然而就拿郵件來說,如果我們只關(guān)心郵件中句子的語義(進(jìn)而更高抽象層面的“意圖”(語義,意圖如何可計(jì)算地定義出來是一個(gè)人工智能問題),在這個(gè)層面上可能性便大大縮減了,我們關(guān)心的抽象層面越高,可能性越小。單詞集合和句子的對應(yīng)是多對一的,句子和語義的對應(yīng)又是多對一的,語義和意圖的對應(yīng)還是多對一的,這是個(gè)層級體系。神經(jīng)科學(xué)的發(fā)現(xiàn)也表明大腦的皮層大致有一種層級結(jié)構(gòu),對應(yīng)著越來越抽象的各個(gè)層面,至于如何具體實(shí)現(xiàn)一個(gè)可放在計(jì)算機(jī)內(nèi)的大腦皮層,仍然是一個(gè)未解決問題,以上只是一個(gè)原則(principle)上的認(rèn)識,只有當(dāng) computational 的 cortex 模型被建立起來了之后才可能將其放入電腦。 5.2 為什么樸素貝葉斯方法令人詫異地好——一個(gè)理論解釋 樸素貝葉斯方法的條件獨(dú)立假設(shè)看上去很傻很天真,為什么結(jié)果卻很好很強(qiáng)大呢?就拿一個(gè)句子來說,我們怎么能魯莽地聲稱其中任意一個(gè)單詞出現(xiàn)的概率只受到它前面的 3 個(gè)或 4 個(gè)單詞的影響呢?別說 3 個(gè),有時(shí)候一個(gè)單詞的概率受到上一句話的影響都是絕對可能的。那么為什么這個(gè)假設(shè)在實(shí)際中的表現(xiàn)卻不比決策樹差呢?有人對此提出了一個(gè)理論解釋,并且建立了什么時(shí)候樸素貝葉斯的效果能夠等價(jià)于非樸素貝葉斯的充要條件,這個(gè)解釋的核心就是:有些獨(dú)立假設(shè)在各個(gè)分類之間的分布都是均勻的所以對于似然的相對大小不產(chǎn)生影響;即便不是如此,也有很大的可能性各個(gè)獨(dú)立假設(shè)所產(chǎn)生的消極影響或積極影響互相抵消,最終導(dǎo)致結(jié)果受到的影響不大。具體的數(shù)學(xué)公式請參考這篇 paper 。 6. 層級貝葉斯模型 層級貝葉斯模型是現(xiàn)代貝葉斯方法的標(biāo)志性建筑之一。前面講的貝葉斯,都是在同一個(gè)事物層次上的各個(gè)因素之間進(jìn)行統(tǒng)計(jì)推理,然而層次貝葉斯模型在哲學(xué)上更深入了一層,將這些因素背后的因素(原因的原因,原因的原因,以此類推)囊括進(jìn)來。一個(gè)教科書例子是:如果你手頭有 N 枚硬幣,它們是同一個(gè)工廠鑄出來的,你把每一枚硬幣擲出一個(gè)結(jié)果,然后基于這 N 個(gè)結(jié)果對這 N 個(gè)硬幣的 θ (出現(xiàn)正面的比例)進(jìn)行推理。如果根據(jù)最大似然,每個(gè)硬幣的 θ 不是 1 就是 0 (這個(gè)前面提到過的),然而我們又知道每個(gè)硬幣的 p(θ) 是有一個(gè)先驗(yàn)概率的,也許是一個(gè) beta 分布。也就是說,每個(gè)硬幣的實(shí)際投擲結(jié)果 Xi 服從以 θ 為中心的正態(tài)分布,而 θ 又服從另一個(gè)以 Ψ 為中心的 beta 分布。層層因果關(guān)系就體現(xiàn)出來了。進(jìn)而 Ψ 還可能依賴于因果鏈上更上層的因素,以此類推。 6.1 隱馬可夫模型(HMM) 吳軍在數(shù)學(xué)之美系列里面介紹的隱馬可夫模型(HMM)就是一個(gè)簡單的層級貝葉斯模型:
吳軍的文章中這里省掉沒說的是,s1, s2, s3, .. 這個(gè)句子的生成概率同時(shí)又取決于一組參數(shù),這組參數(shù)決定了 s1, s2, s3, .. 這個(gè)馬可夫鏈的先驗(yàn)生成概率。如果我們將這組參數(shù)記為 λ ,我們實(shí)際上要求的是:P(S|O, λ) (其中 O 表示 o1,o2,o3,.. ,S表示 s1,s2,s3,..)
這里,s1,s2,s3…本身可以一個(gè)句子的可能性其實(shí)就取決于參數(shù) λ ,也就是語言模型。所以簡而言之就是發(fā)出的語音信號取決于背后實(shí)際想發(fā)出的句子,而背后實(shí)際想發(fā)出的句子本身的獨(dú)立先驗(yàn)概率又取決于語言模型。 7. 貝葉斯網(wǎng)絡(luò) 吳軍已經(jīng)對貝葉斯網(wǎng)絡(luò)作了科普,請直接跳轉(zhuǎn)到這里。更詳細(xì)的理論參考所有機(jī)器學(xué)習(xí)的書上都有。 參考資料 一堆機(jī)器學(xué)習(xí),一堆概率統(tǒng)計(jì),一堆 Google ,和一堆 Wikipedia 條目,一堆 paper 。 部分書籍參考《機(jī)器學(xué)習(xí)與人工智能資源導(dǎo)引》。 你可能也會(huì)喜歡以下文章 |
|