📖 ZKIZ Archives


數學之美番外篇:平凡而又神奇的貝葉斯方法(一) stone

來源: http://blog.sina.com.cn/s/blog_60dce3cd0100in1p.html

【轉自劉未鵬博客】

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

——拉普拉斯

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

——題記

目錄

0. 前言 
1. 歷史 
    1.1 一個例子:自然語言的二義性 
    1.2 貝葉斯公式 
2. 拼寫糾正 
3. 模型比較與貝葉斯奧卡姆剃刀 
    3.1 再訪拼寫糾正 
    3.2 模型比較理論(Model Comparasion)與貝葉斯奧卡姆剃刀(Bayesian Occam’s Razor) 
    3.3 最小描述長度原則 
    3.4 最優貝葉斯推理 
4. 無處不在的貝葉斯 
    4.1 中文分詞 
    4.2 統計機器翻譯 
    4.3 貝葉斯圖像識別,Analysis by Synthesis    
    4.4 EM 算法與基於模型的聚類 
    4.5 最大似然與最小二乘 
5. 樸素貝葉斯方法(又名“愚蠢者的貝葉斯(idiot’s bayes)”) 
    5.1 垃圾郵件過濾器 
    5.2 為什麽樸素貝葉斯方法令人詫異地好——一個理論解釋 
6. 層級貝葉斯模型 
    6.1 隱馬可夫模型(HMM) 
7. 貝葉斯網絡

0. 前言

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

1. 歷史

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

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

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

1.1 一個例子:自然語言的二義性

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

The girl saw the boy with a telescope.

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

1.2 貝葉斯公式

貝葉斯公式是怎麽來的?

我們還是使用 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)

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

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

2. 拼寫糾正

經典著作《人工智能:現代方法》的作者之一 Peter Norvig 曾經寫過一篇介紹如何寫一個拼寫檢查/糾正器的文章(原文在這里,徐宥的翻譯版在這里,這篇文章很深入淺出,強烈建議讀一讀),里面用到的就是貝葉斯方法,這里我們不打算複述他寫的文章,而是簡要地將其核心思想介紹一下。

首先,我們需要詢問的是:“問題是什麽?

問題是我們看到用戶輸入了一個不在字典中的單詞,我們需要去猜測:“這個家夥到底真正想輸入的單詞是什麽呢?”用剛才我們形式化的語言來敘述就是,我們需要求:

P(我們猜測他想輸入的單詞 | 他實際輸入的單詞)

這個概率。並找出那個使得這個概率最大的猜測單詞。顯然,我們的猜測未必是唯一的,就像前面舉的那個自然語言的歧義性的例子一樣;這里,比如用戶輸入: thew ,那麽他到底是想輸入 the ,還是想輸入 thaw ?到底哪個猜測可能性更大呢?幸運的是我們可以用貝葉斯公式來直接出它們各自的概率,我們不妨將我們的多個猜測記為 h1 h2 .. ( h 代表 hypothesis),它們都屬於一個有限且離散的猜測空間 H (單詞總共就那麽多而已),將用戶實際輸入的單詞記為 D ( D 代表 Data ,即觀測數據),於是

P(我們的猜測1 | 他實際輸入的單詞)

可以抽象地記為:

P(h1 | D)

類似地,對於我們的猜測2,則是 P(h2 | D)。不妨統一記為:

P(h | D)

運用一次貝葉斯公式,我們得到:

P(h | D) = P(h) * P(D | h) / P(D)

對於不同的具體猜測 h1 h2 h3 .. ,P(D) 都是一樣的,所以在比較 P(h1 | D) 和 P(h2 | D) 的時候我們可以忽略這個常數。即我們只需要知道:

P(h | D) ∝ P(h) * P(D | h) (註:那個符號的意思是“正比例於”,不是無窮大,註意符號右端是有一個小缺口的。)

這個式子的抽象含義是:對於給定觀測數據,一個猜測是好是壞,取決於“這個猜測本身獨立的可能性大小(先驗概率,Prior )”和“這個猜測生成我們觀測到的數據的可能性大小”(似然,Likelihood )的乘積。具體到我們的那個 thew 例子上,含義就是,用戶實際是想輸入 the 的可能性大小取決於 the 本身在詞匯表中被使用的可能性(頻繁程度)大小(先驗概率)和 想打 the 卻打成 thew 的可能性大小(似然)的乘積。

下面的事情就很簡單了,對於我們猜測為可能的每個單詞計算一下 P(h) * P(D | h) 這個值,然後取最大的,得到的就是最靠譜的猜測。

一點註記:Norvig 的拼寫糾正器里面只提取了編輯距離為 2 以內的所有已知單詞。這是為了避免去遍歷字典中每個單詞計算它們的 P(h) * P(D | h) ,但這種做法為了節省時間帶來了一些誤差。但話說回來難道我們人類真的回去遍歷每個可能的單詞來計算他們的後驗概率嗎?不可能。實際上,根據認知神經科學的觀點,我們首先根據錯誤的單詞做一個 bottom-up 的關聯提取,提取出有可能是實際單詞的那些候選單詞,這個提取過程就是所謂的基於內容的提取,可以根據錯誤單詞的一些模式片段提取出有限的一組候選,非常快地縮小的搜索空間(比如我輸入 explaination ,單詞里面就有充分的信息使得我們的大腦在常數時間內把可能性 narrow down 到 explanation 這個單詞上,至於具體是根據哪些線索——如音節——來提取,又是如何在生物神經網絡中實現這個提取機制的,目前還是一個沒有弄清的領域)。然後,我們對這有限的幾個猜測做一個 top-down 的預測,看看到底哪個對於觀測數據(即錯誤單詞)的預測效力最好,而如何衡量預測效率則就是用貝葉斯公式里面的那個 P(h) * P(D | h) 了——雖然我們很可能使用了一些啟發法來簡化計算。後面我們還會提到這樣的 bottom-up 的關聯提取。


PermaLink: https://articles.zkiz.com/?id=121903

番外篇: 莊家本色

(按: 特此紀念英雄本色上畫30周年。)

http://www.am730.com.hk/column-323704

Mark哥同豪哥印偽鈔發達,後來做莊家,因為被下屬背叛,結果豪哥犯罪入獄3年,出獄後從事非股票工作。Mark哥在2015年欠下大量孖展,為著生計做一些財技中介人工作,生活潦倒……有一次Mark 哥欠債被打,豪哥相救並帶他到山頂。
Mark:「香港夜景這麼漂亮,這麼美麗的東西這樣就沒有了,真是有點不值得……我們再來過,做完這一單,我們再漂漂亮亮離開香港。以前出生入死未怕過,我們還怕證監會嗎?」
豪:「以前的事過去了……我給你再做十次、一百次又如何?」
Mark:「我還未死。我就不想一輩子給人『撳住來打』,我衰咗3年,我等一個機會,我要爭番口氣,唔係證明要話俾人聽我威,而是想證明我失去的東西要自己取回,你有爭取過機會嗎? 」
豪哥深受觸動,決定與Mark哥合作打莊,計劃是這樣的:
(1)豪哥以低價買入一家證券行A,之後問相熟朋友借錢,購入一間垃圾上市公司甲股權,進入董事會,並炒起股價。
(2)甲發行票據,由證券行A配售。買方是Mark哥朋友,他們只尋求穩定回報,且港交所(388)對票據發售數量並無限制,只需作簡略披露即可,這就成他們的印鈔機。
(3)甲開財務公司、同時以低價購入證券行A,A接受上市公司乙的控股權抵押,委任豪哥及Mark哥的人馬進入乙董事會。
(4)乙發行新債券,由證券行A配售,後買入證券行B,然後豪哥利用甲的股權向證券行B抵押,取得資金還給朋友,手上的小量資金購入上市公司丙發行的可換股債券,之後照辦煮碗。
(5)甲和乙供股集資,由丙控制的證券行包銷大部分。甲和乙取得資金後,開始貸款給旗下人頭購入剛上市的創業板公司丁,大手把流通盤買光,在幾個月後接洽 丁控股股東,丁控股股東把股權抵押予系內證券行,以取得融資變相賣盤。把丁股權全面控制後,開始炒起股權,最後成為百億元計的上市公司。Mark 哥和豪哥終於在莊家界出人頭地了。
未生覺得,這套操盤方法還可有不少變種,把上面的票據包裝為理財產品或保本高息投資都可成新印鈔機。但這套方法確有死門所在,如上周德普科技(3823) 沽空報告引發的細價股拋售潮就是一例。但根據《商業銀行理財業務監督管理辦法(徵求意見稿)》中只是限制投資中國內地股票,但沒有限制投資境外的股票或票 據類投資,未生相信Mark哥和豪哥真的可以「黑都可以漂成白」了。  財經Blogger,從小學起對股票已產生興趣,遍尋香港股票資料,賺錢的目的為找尋生活中美好的東西。

PermaLink: https://articles.zkiz.com/?id=208200

英文本色番外篇串錯「campagin」重讀小學先!

1 : GS(14)@2017-01-27 07:37:06

特首選戰硝煙四起,各特首參選人均開設網站推銷自己的政綱兼爭取民意支持。雖然市民支持理論上愈多愈好,但近日因一卷廁紙揭示生活「堅離地」的前政務司司長林鄭月娥卻非來者不拒,《信報》時事評論專欄《香港脈搏》就指,林鄭對坊間出現一眾盲撐林鄭或冒牌facebook專頁並不認同,希望除之而後快,更指其競選辦曾嘗試聯絡fb要求刪除有關帳戶,卻不得要領。林鄭一直未有如其他官員一樣開設官方fb賑戶,即使宣佈參選前後落區探訪,相片都是借競選辦主任陳智思的fb帳戶發佈。但現時在fb出現形形式式撐林鄭的專頁,包括由周融打骰的《幫港出聲》都推介的「We撐林鄭」專頁,該專頁甚至有自製林鄭穿校服的卡通版公仔要「力抗肥黑魔王」。評論稱,過去都有人用這類網上攻勢支持特首梁振英,但未能為梁特帶來民望之餘,有時言論過火位反而幫倒忙,故林鄭團隊都對這些未經授權的「啦啦隊」不表認同,早前更fb稱有關專頁容易令公眾誤會要求刪除,不過,fb回應稱專頁並無自稱是林鄭的個人賬戶,不會為林鄭更改既有的移除規條,因此這些帳戶會繼續存在,繼續「一廂情願地以為可報効犬馬之勞。」評論認為若林鄭不投入網絡世界,結果只會愈來愈多盲撐或假扮她的fb帳戶出現,「到時若要切割?甚難!」雖然林鄭嫌棄「A貨」啦啦隊,偏偏自己的公關團隊亦頻頻「甩碌」,她的競選網站不單在宣佈參選後一星期才面世,近日更被發現連「競選」的英文「Campaign」都串錯成「Campagin」。《蘋果》周四下午再登入林鄭的競選網頁,發覺串錯字的圖片已經刪除,換上另一張黃底藍字、寫上林鄭競選辦的佈景板相片。《英語本色》謝菲老師向《蘋果》表示,Campaign只屬小學程度英語,而英文單字有不少以「ign」結尾的字,例如「sign」、「foreign」,當中的「g」不會讀出聲,「所以如果係有基本嘅小學根基,要串錯campaign,其實好難。」




來源: http://hk.apple.nextmedia.com/news/art/20170127/19910863
PermaLink: https://articles.zkiz.com/?id=324346

Next Page

ZKIZ Archives @ 2019