【專欄】數學之美番外篇:平凡而又神奇的貝葉斯方法(1)

這是一篇關于貝葉斯方法的科普文,我會盡量少用公式,多用平白的語言敘述,多舉實際例子。更嚴格的公式和計算我會在相應的地方注明參考資料。貝葉斯方法被證明是非常具有一般性且強大的推理框架,文中你會看到很多有趣的應用。

概率論只不過是把常識用數學公式表達了出來。

——拉普拉斯

記得讀本科的時候,最喜歡到城里的計算機書店里面去閑逛,一逛就是好幾個小時;有一次,在書店看到一本書,名叫《貝葉斯方法》。當時數學系的課程還沒有學到概率統計。我心想,一個方法能夠專門寫出一本書來,肯定很牛逼。后來,我發現當初的那個樸素歸納推理成立了——這果然是個牛的方法。

前言

這是一篇關于貝葉斯方法的科普文,我會盡量少用公式,多用平白的語言敘述,多舉實際例子。更嚴格的公式和計算我會在相應的地方注明參考資料。貝葉斯方法被證明是非常具有一般性且強大的推理框架,文中你會看到很多有趣的應用。

作者:劉未鵬 出版:電子工業出版社 

歷史

托馬斯·貝葉斯(Thomas Bayes)同學的詳細生平在這里。以下摘一段wikipedia上的簡介:

所謂的貝葉斯方法源于他生前為解決一個“逆概”問題寫的一篇文章,而這篇文章是在他死后才由他的一位朋友發表出來的。在貝葉斯寫這篇文章之前,人們已經能夠計算“正向概率”,如“假設袋子里面有N個白球,M個黑球,你伸手進去摸一把,摸出黑球的概率是多大”。而一個自然而然的問題是反過來:“如果我們事先并不知道袋子里面黑白球的比例,而是閉著眼睛摸出一個(或好幾個)球,觀察這些取出來的球的顏色之后,那么我們可以就此對袋子里面的黑白球的比例作出什么樣的推測?”這個問題,就是所謂的逆概問題。

實際上,貝葉斯當時的論文只是對這個問題的一個直接的求解嘗試,并不清楚他當時是不是已經意識到這里面包含著的深刻的思想。然而后來,貝葉斯方法席卷了概率論,并將應用延伸到各個問題領域,所有需要作出概率預測的地方都可以見到貝葉斯方法的影子,特別地,貝葉斯是機器學習的核心方法之一。這背后的深刻原因在于,現實世界本身就是不確定的,人類的觀察能力是有局限性的(否則有很大一部分科學就沒有必要做了——設想我們能夠直接觀察到電子的運行,還需要對原子模型爭吵不休嗎?),我們日常所觀察到的只是事物表面上的結果,沿用剛才那個袋子里面取球的比方,我們往往只能知道從里面取出來的球是什么顏色,而并不能直接看到袋子里面實際的情況。這個時候,我們就需要提供一個猜測(hypothesis,更為嚴格的說法是“假設”,這里用“猜測”更通俗易懂一點),所謂猜測,當然就是不確定的(很可能有好多種乃至無數種猜測都能滿足目前的觀測),但也絕對不是兩眼一抹黑瞎蒙——具體地說,我們需要做兩件事情:1.算出各種不同猜測的可能性大小。2.算出最靠譜的猜測是什么。第一個就是計算特定猜測的后驗概率,對于連續的猜測空間則是計算猜測的概率密度函數。第二個則是所謂的模型比較,模型比較如果不考慮先驗概率的話就是最大似然方法。

一個例子:自然語言的二義性。下面舉一個自然語言的不確定性的例子。當你看到這句話:

The girl saw the boy with a telescope.

你對這句話的含義有什么猜測?平常人肯定會說:那個女孩拿望遠鏡看見了那個男孩(即你對這個句子背后的實際語法結構的猜測是:The girl saw-with-a-telescope the boy)。然而,仔細一想,你會發現這個句子完全可以解釋成:那個女孩看見了那個拿著望遠鏡的男孩(即:The girl saw the-boy-with-a-telescope)。那為什么平常生活中我們每個人都能夠迅速地對這種二義性進行消解呢?這背后到底隱藏著什么樣的思維法則?我們留到后面解釋。

貝葉斯公式。貝葉斯公式是怎么來的?我們還是使用wikipedia上的一個例子:

一所學校里面有60%的男生,40%的女生。男生總是穿長褲,女生則一半穿長褲一半穿裙子。有了這些信息之后我們可以容易地計算“隨機選取一個學生,他(她)穿長褲的概率和穿裙子的概率是多大”,這個就是前面說的“正向概率”的計算。然而,假設你走在校園中,迎面走來一個穿長褲的學生(很不幸的是你高度近似,你只看得見他(她)穿的是否長褲,而無法確定他(她)的性別),你能夠推斷出他(她)是男生的概率是多大嗎?

一些認知科學的研究表明(《決策與判斷》以及《Rationality for Mortals》第12章:小孩也可以解決貝葉斯問題),我們對形式化的貝葉斯問題不擅長,但對于以頻率形式呈現的等價問題卻很擅長。在這里,我們不妨把問題重新敘述成:你在校園里面隨機游走,遇到了N個穿長褲的人(仍然假設你無法直接觀察到他們的性別),問這N個人里面有多少個女生多少個男生。

你說,這還不簡單:算出學校里面有多少穿長褲的,然后在這些人里面再算出有多少女生,不就行了?

我們來算一算:假設學校里面人的總數是U個。60%的男生都穿長褲,于是我們得到了U*P(Boy)*P(Pants|Boy)個穿長褲的(男生)(其中P(Boy)是男生的概率=60%,這里可以簡單的理解為男生的比例;P(Pants|Boy)是條件概率,即在Boy這個條件下穿長褲的概率是多大,這里是100%,因為所有男生都穿長褲)。40%的女生里面又有一半(50%)是穿長褲的,于是我們又得到了U*P(Girl)*P(Pants|Girl)個穿長褲的(女生)。加起來一共是 U*P(Boy)*P(Pants|Boy)+U*P(Girl)*P(Pants|Girl)個穿長褲的,其中有U*P(Girl)*P(Pants|Girl)個女生。兩者一比就是你要求的答案。

下面我們把這個答案形式化一下:我們要求的是P(Girl|Pants)(穿長褲的人里面有多少女生),我們計算的結果是U*P(Girl)* P(Pants|Girl)/[U*P(Boy)*P(Pants|Boy)+U*P(Girl)*P(Pants|Girl)]。容易發現這里校園內人的總數是無關的,可以消去。于是得到

P(Girl|Pants)=P(Girl)*P(Pants|Girl)/[P(Boy)*P(Pants|Boy)+P(Girl)*P(Pants|Girl)]

注意,如果把上式收縮起來,分母其實就是P(Pants),分子其實就是P(Pants,Girl)。而這個比例很自然地就讀作:在穿長褲的人(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)

其實這個就等于:

P(B|A)*P(A)=P(AB)

難怪拉普拉斯說概率論只是把常識用數學公式表達了出來。

然而,后面我們會逐漸發現,看似這么平凡的貝葉斯公式,背后卻隱含著非常深刻的原理。

(待續;此文的修訂版已收錄《暗時間》一書,由電子工業出版社2011年8月出版。作者于2009年7月獲得南京大學計算機系碩士學位,現在微軟亞洲研究院創新工程中心從事軟件研發工程師工作。)

網絡編輯:謝小跳

{{ isview_popup.firstLine }}{{ isview_popup.highlight }}

{{ isview_popup.secondLine }}

{{ isview_popup.buttonText }}
午夜宅男在线,中视在线直播,毛片网站在线,福利在线网址