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