用最騷的話讓你徹底弄懂貝葉斯!
來自網路
摘要:貝葉斯方法對於由證據的積累來推測一個事物發生的概率具有重大作用,它告訴我們當我們要預測一個事物,我們需要的是首先根據已有的經驗和知識推斷一個先驗概率,然後在新證據不斷積累的情況下調整這個概率。用貝葉斯分析的方法,可以幫助我們解決生活中方方面面的問題,尤其在我們未來將有可能深入瞭解的機器學習,大資料探勘,以及相關工程性問題中,有著極其重要的地位,接下來就讓我們走進貝葉斯方法,通過一系列的例子來了解其含義及應用。
文章主線:
①引出貝葉斯方法的含義(1)。
②通過模型比較理論體現出貝葉斯方法的優勢所在(2)。
③最後通過中文分詞、機器翻譯、最大似然與最小二乘、機器學習這幾個例項來說明貝葉斯方法運用的普遍性(3)。
1、貝葉斯學派與頻率主義學派
簡單說來,貝葉斯學派認為,概率是一個人對於一件事的信念強度,概率是主觀的。但頻率主義學派所持的是不同的觀念:他們認為引數是客觀存在的,即使是未知的,但都是固定值,不會改變。我參閱了一些資料,嘗試以我們以前課堂上所學的概率論來解釋一下,頻率學派認為進行一定數量的重複實驗後,如果出現某個現象的次數與總次數趨於某個值,那麼這個比值就會傾向於固定。最簡單的例子就是拋硬幣了,在理想情況下,我們知道拋硬幣正面朝上的概率會趨向於1/2。非常好理解不是麼?但貝葉斯提出了一種截然不同的觀念,他認為概率不應該這麼簡單地計算,而需要加入先驗概率的考慮。先驗概率也就是說,我們先設定一個假設(或信念,belief)。然後我們通過一定的實驗來證明/推翻這個假設,這就是後驗。隨後,舊的後驗會成為一個新的先驗,如此重複下去。而歸根結底,就得到了這樣一個著名的公式:
P( A | B ) = P(B | A ) * P( A ) / P( B )
(A | B表示A給定B的概率,也就是說,如果B發生,A發生的可能性有多大。反之亦然。)
2、模型比較理論(ModelComparasion)
2.1、模型比較
實際上,模型比較就是去比較哪個模型(猜測)更可能隱藏在觀察資料的背後。我們對使用者實際想輸入的單詞的猜測就是模型,使用者輸錯的單詞就是觀測資料。通過P(h | D) ∝ P(h) * P(D | h) 我們可以比較哪個模型最為靠譜。有時候光靠 P(D | h) (即“似然”)是不夠的,有時候還需要引入 P(h) 這個先驗概率。因為最大似然的猜測,其可能先驗概率非常小。但有些時候,我們對於先驗概率一無所知,只能假設每種猜測的先驗概率是均等的,這個時候就只有用最大似然了。實際上,統計學家和貝葉斯學家有一個有趣的爭論,統計學家說:我們讓資料自己說話。言下之意就是要摒棄先驗概率。而貝葉斯支持者則說:資料會有各種各樣的偏差,而一個靠譜的先驗概率則可以對這些隨機噪音做到健壯。事實證明貝葉斯派勝利了,勝利的關鍵在於所謂先驗概率其實也是經驗統計的結果,譬如為什麼我們會認為絕大多數硬幣是基本公平的?為什麼我們認為大多數人的肥胖適中?為什麼我們認為膚色是種族相關的,而體重則與種族無關?先驗概率裡面的“先驗”並不是指先於一切經驗,而是僅指先於我們“當前”給出的觀測資料而已,在硬幣的例子中先驗指的只是先於我們知道投擲的結果這個經驗,而並非“先天”。
不過有時候我們必須得承認,就算是基於以往的經驗,我們手頭的“先驗”概率還是均勻分佈,這個時候就必須依賴用最大似然。可以用一個自然語言二義性問題來說明這一點:The girl saw theboy with a telescope.到底是 The girlsaw-with-a-telescope the boy 這一語法結構,還是 The girl sawthe-boy-with-a-telescope 呢?兩種語法結構的常見程度都差不多。如果語法結構是 The girl sawthe-boy-with-a-telecope 的話,怎麼那個男孩偏偏手裡拿的就是望遠鏡?這也太小概率了吧。所以唯一的解釋是,這個“巧合”背後肯定有它的必然性,這個必然性就是,如果我們將語法結構解釋為 The girlsaw-with-a-telescope the boy 的話,就跟資料完美吻合了——既然那個女孩是用某個東西去看這個男孩的,那麼這個東西是一個望遠鏡就完全可以解釋了(不再是小概率事件了)。
2.2 最小描述長度原則
貝葉斯模型比較理論與資訊理論有一個有趣的關聯:P(h | D)∝P(h) * P(D | h)
兩邊求對數,將右式的乘積變成相加: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) 則可以解釋為模型(或者稱“假設”、“猜測”)h 的編碼長度加上在該模型下資料 D 的編碼長度。使這個和最小的模型就是最佳模型。
2.3 最優貝葉斯推理
推理分為兩個過程,第一步是對觀測資料建立一個模型。第二步則是使用這個模型來推測未知現象發生的概率。前面講的都是對於觀測資料給出最靠譜的那個模型。然而很多時候,雖然某個模型是所有模型裡面最靠譜的,但是別的模型也並不是一點機會都沒有。很多時候我們建立模型是為了推測未知的事情的發生概率,這個時候,不同的模型對未知的事情發生的概率都會有自己的預測,僅僅因為某一個模型概率稍大就只取它一個就太不科學了。所謂的最優貝葉斯推理就是將多個模型對於未知資料的預測結論加權平均起來(權值就是模型相應的概率)。這個推理已經把所有可能性都考慮進去,但由於計算模型可能非常費時間,它僅僅被視為一個理論基準。
3、無處不在的貝葉斯
3.1 中文分詞
貝葉斯是機器學習的核心方法之一。比如中文分詞領域就用到了貝葉斯。Google 研究員吳軍在《數學之美》系列中就有一篇是介紹中文分詞的:
分詞問題的描述為:給定一個句子(字串),如:南京市長江大橋
1. 南京市/長江大橋
2. 南京/市長/江大橋
這兩個分詞,到底哪個更靠譜呢?我們用貝葉斯公式來形式化地描述這個問題,令 X 為字串,Y 為詞串。我們就是需要尋找使得 P(Y|X) 最大的Y,使用一次貝葉斯可得:P(Y|X)∝P(Y)*P(X|Y)
用自然語言來說就是:這種分詞方式的可能性乘以這個詞串生成我們的句子的可能性。進一步容易看到:可以近似地將 P(X|Y) 看作是恆等於 1 的,因為任意假想的一種分詞方式之下生成我們的句子總是精準地生成的(只需把分詞之間的分界符號扔掉即可)。於是,我們就變成了去最大化 P(Y) ,也就是尋找一種分詞使得這個詞串的概率最大化。而如何計算一個詞串:W1, W2, W3, W4 ..的可能性呢?我們知道,根據聯合概率的公式展開:P(W1, W2, W3, W4 ..)=P(W1)*P(W2|W1)*P(W3|W2, W1)*P(W4|W1,W2,W3) *... 可以通過一系列的條件概率(右式)的乘積來求整個聯合概率。
不幸的是,隨著條件數目的增加,資料稀疏問題也會越來越嚴重,即便語料庫再大也無法統計出一個靠譜的 P(Wn|Wn-1,Wn-2,..,W1)來。為了緩解這個問題,電腦科學家們用了“有限地平線”假設:假設句子中一個詞的出現概率只依賴於它前面的有限的 k 個詞(k一般不超過 3)。雖然這個假設很天真,但結果卻表明它的結果往往是很好很強大的。有了這個假設,剛才那個乘積就可以改寫成:P(W1) *P(W2|W1) * P(W3|W2) * P(W4|W3) .. (假設每個詞只依賴於它前面的一個詞)。統計 P(W2|W1) 就不再受到資料稀疏問題的困擾了。對於我們上面提到的例子“南京市長江大橋”,如果按照自左到右的貪婪方法分詞的話,結果就成了“南京市長/江大橋”。但如果按照貝葉斯分詞的話(假設使用 3-gram),由於“南京市長”和“江大橋”在語料庫中一起出現的頻率為 0 ,這個整句的概率便會被判定為 0 。從而使得“南京市/長江大橋”這一分詞方式勝出。
有人可能會疑惑,難道我們人類也是基於這些天真的假設來進行推理的?不是的。事實上,統計機器學習方法所統計的東西往往處於相當表層的層面,在這個層面機器學習只能看到一些非常表面的現象,有一點科學研究的理念的人都知道:越是往表層去,世界就越是繁複多變。從機器學習的角度來說,特徵就越多,成百上千維度都是可能的。特徵一多,高維詛咒就產生了,資料就很稀疏,不夠用。而人類的觀察水平顯然比機器學習的觀察水平要更深入一些,為了避免資料稀疏我們不斷地發明各種裝置(最典型就是顯微鏡),來幫助我們直接深入到更深層的事物層面去觀察更本質的聯絡,而不是在淺層對錶面現象作統計歸納。舉一個簡單的例子,通過對大規模語料庫的統計,機器學習可能會發現這樣一個規律:所有的“他”都是不會穿裙子的,所有的“她”則都是會穿的。然而,作為一個男人,卻完全無需進行任何統計學習,因為深層的規律就決定了他們根本不會去穿裙子。至於機器學習能不能完成後者的推理,則是人工智慧領域的經典問題。至少在那之前,統計學習方法是不可能終結科學研究的。
3.2 統計機器翻譯
統計機器翻譯的問題可以描述為:給定一個句子e,它的可能的外文翻譯f 中哪個是最靠譜的。即我們需要計算:P(f|e) 。一旦出現條件概率,貝葉斯總是挺身而出:P(f|e) ∝ P(f) * P(e|f),這個式子的右端很容易解釋:那些先驗概率較高,並且更可能生成句子 e 的外文句子 f 將會勝出。我們只需簡單統計就可以得到任意一個外文句子 f 的出現概率。
然而 P(e|f) 卻不是那麼好求的。假設 e 為:John loves Mary,首選f是:Jean aime Marie。為了求出 P(e|f),我們需要考慮 e 和 f 有多少種對齊的可能性。為什麼要對齊,是因為一旦對齊了之後,就可以容易地計算在這個對齊之下的 P(e|f) 是多大,只需計算:P(John|Jean) * P(loves|aime) * P(Marie|Mary)即可。然後我們遍歷所有的對齊方式,並將每種對齊方式之下的翻譯概率∑求和。便可以獲得整個的 P(e|f) 是多大。
3.3 最大似然與最小二乘
學過線性代數的同學都知道用經典的最小二乘方法來做線性迴歸。問題描述是:給定平面上N 個點,找出一條最佳描述了這些點的直線。一個接踵而來的問題就是,如何定義最佳?我們設每個點的座標為 (Xi, Yi)。如果直線為 y = f(x),那麼 (Xi, Yi) 跟直線對這個點的“預測”:(Xi, f(Xi)) 就相差了一個ΔYi = |Yi–f(Xi)|。最小二乘就是說尋找直線使得誤差的平方和 (ΔY1)^2 + (ΔY2)^2 + ..最小,關於為什麼是誤差的平方和而不是誤差的絕對值和這個問題,貝葉斯方法提供一個完美的解釋。
我們假設直線對於座標 Xi 給出的預測 f(Xi) 是最靠譜的預測,所有縱座標偏離f(Xi)的那些資料點都含有噪音,是噪音使得它們偏離了完美的一條直線,一個合理的假設就是偏離路線越遠的概率越小,具體小多少,可以用一個正態分佈曲線來模擬,這個分佈曲線以直線對 Xi 給出的預測 f(Xi) 為中心,實際縱座標為 Yi 的點 (Xi, Yi) 發生的概率就正比於 EXP[-(ΔYi)^2]。
我們要想最大化的後驗概率是:P(h|D) ∝ P(h) * P(D|h)。這裡 h 就是指一條特定的直線,D 就是指這 N 個資料點。我們需要尋找一條直線 h 使得 P(h) * P(D|h) 最大。很顯然,P(h) 這個先驗概率是均勻的,因為哪條直線也不比另一條更優越。所以只需看 P(D|h) 這一項,它是指這條直線生成這些資料點的概率,前面說生成資料點 (Xi, Yi) 的概率為 EXP[-(ΔYi)^2] 乘以一個常數。而 P(D|h) =P(d1|h) * P(d2|h) * .. 即假設各個資料點是獨立生成的,所以可以把每個概率乘起來。因此生成 N 個資料點的概率為 EXP[-(ΔY1)^2] * EXP[-(ΔY2)^2] * EXP[-(ΔY3)^2] * .. = EXP{-[(ΔY1)^2 + (ΔY2)^2 + (ΔY3)^2 + ..]} 最大化這個概率就是要最小化 (ΔY1)^2 + (ΔY2)^2 + (ΔY3)^2 + ..
3.4統計建模
我們先將貝葉斯方法分為兩類:一為統計建模,另一個為概率機器學習。後者包括了所謂的非引數方法。
建模通常在資料稀缺且難以獲得時得以應用,比如在社會科學和其它難以進行大規模對照實驗的環境中。想象一下,如果一個資料學家手頭只擁有少量的資料,那麼他會不遺餘力地對演算法進行調整,以期讓每個資料都發揮最大的功用。
此外,對於小資料而言,最重要的是量化不確定性,這也正是貝葉斯方法所擅長的。而貝葉斯方法——尤其是MCMC——通常計算量巨大,這又與小資料是共存的。在名為《Data Analysis Using Regression Analysis andMultilevel /Hierarchical Models》(http://www.stat.columbia.edu/~gelman/arm/)的書中,介紹了從一個沒有預測變數的線性模型開始,不斷增加到11個預測變數的情況並進行討論。這種勞動密集性模式實際上與我們的機器學習方向背道而馳,我們還是希望能使用資料,讓計算機自動學習。
3.5 概率機器學習
我們現在嘗試把“概率”一詞替換“貝葉斯”。從這個角度而言,它與其它分類方法並沒有區別。如果從分類考慮,大多數分類器都能夠輸出概率預測,比如最經典的SVM(支援變數機)。但需要指出的是,這些概率只是源於分類器的信念陳述,而它們是否符合真實的概率則完全是另一回事了,這也就是所謂的校準
貝葉斯非引數模型:接下來我們要說說貝葉斯非引數模型的一些內容,顧名思義,這個名字代表著模型中的引數數量可以隨著資料的增大或減少而自適應模型的變化。這與SVM有些相似,它能在訓練點中選擇支援向量,而貝葉斯非引數模型也能根據資料多少來選擇引數確定模型。比較流行的貝葉斯非引數模型包括高斯迴歸過程,還有隱含狄裡克雷分佈(LDA)。
高斯迴歸過程:高斯迴歸過程有點類似於SVM——採用核心並具有類似的可伸縮性。其最大的特點在於迴歸特性,分類做為事後的判斷,而對於SVM而言,這個過程是相反的。此外,GP是從頭開始進行概率判斷,而SVM不是。大多數的常規方法只提供資料點估計,而貝葉斯非引數模型則會輸出不確定性估計。高斯迴歸過程的流行主要應用於機器學習演算法的超引數優化上。資料非常小,也只有幾個引數需要調整。
後記:偶然間讀了數學之美上的一篇文章——《平凡而又神奇的貝葉斯方法》,在被貝葉斯方法這一工具驚豔到的同時,也讓我明白了概率論與數理統計與實際生產生活的聯絡之緊密。通過資料的查詢,將概率論與未來可能深入學習的機器學習、大資料探勘分析及網際網路相關領域聯絡起來,讓我更加明晰其內在含義與執行機制。
參考資料:《數學之美番外篇——平凡而又神奇的貝葉斯方法》,以及Google、Wikipedia 上關於機器學習,概率統計的示例及例子的條目。
- END -
如果看到這裡,說明你喜歡這篇文章,請轉發、點贊。掃描下方二維碼或者微信搜尋「perfect_iscas」,新增好友後即可獲得10套程式設計師全棧課程+1000套PPT和簡歷模板,向我私聊「進群」二字即可進入高質量交流群。
↓掃描二維碼進群↓
喜歡文章,點個在看
相關文章
- 這次我讓你徹底弄懂 RESTfulREST
- 帶你徹底弄懂Event LoopOOP
- 徹底弄懂Javascript中的thisJavaScript
- 徹底弄懂 Nginx location 匹配Nginx
- [譯]一篇幫你徹底弄懂NodeJs中的BufferNodeJS
- 04貝葉斯演算法-貝葉斯網路演算法
- 貝葉斯定理
- 貝葉斯公式公式
- 徹底弄懂JS原型與繼承JS原型繼承
- 看完讓你徹底搞懂Websocket原理Web
- 貝葉斯變換
- 一文徹底弄懂Java的IO操作Java
- 7000字+24張圖帶你徹底弄懂執行緒池執行緒
- 徹底弄懂瀏覽器快取策略瀏覽器快取
- 一文徹底弄懂ArrayList原始碼原始碼
- 30分鐘徹底弄懂flex佈局Flex
- 這次,徹底弄懂介面及抽象類抽象
- 一文徹底弄懂MySQL的最佳化MySql
- 徹底弄懂瀏覽器端的Event-Loop瀏覽器OOP
- 樸素貝葉斯模型模型
- 貝葉斯公式的通俗講解公式
- 一文徹底弄懂this關鍵字用法
- 徹底弄懂UTF-8、Unicode、寬字元、localeUnicode字元
- 一文徹底弄懂JUC工具包的Semaphore
- 貝葉斯迴歸簡介
- 樸素貝葉斯分類
- 全概率公式、貝葉斯公式公式
- ML-樸素貝葉斯
- 樸素貝葉斯和半樸素貝葉斯(AODE)分類器Python實現Python
- 用tensorflow學習貝葉斯個性化排序(BPR)排序
- 一文徹底弄懂Spring IOC 依賴注入Spring依賴注入
- 「前端進階」徹底弄懂函式柯里化前端函式
- 轉:徹底弄懂HTTP快取機制及原理HTTP快取
- 畫圖帶你徹底弄懂三級快取和迴圈依賴的問題快取
- 貝葉斯深度學習簡介深度學習
- 樸素貝葉斯與Laplace平滑
- 樸素貝葉斯演算法演算法
- 樸素貝葉斯—印第安人