編者按:不少人都在機器學習的過程中聽說過貝葉斯分類器,但它是如何與機器學習建立聯繫的?作者Zygmunt Zając提供了一些基礎概念,編者也嘗試對其中的一些概念進行簡化說明,讓小白們也能容易地理解貝葉斯在機器學習中所起的作用。
貝葉斯學派與頻率主義學派
簡單說來,貝葉斯學派認為,概率是一個人對於一件事的信念強度,概率是主觀的。
但頻率主義學派所持的是不同的觀念:他們認為參數是客觀存在的, 即使是未知的,但都是固定值,不會改變。
編者參閱了一些資料,嘗試以我們以前課堂上所學的概率論來解釋一下,頻率學派認為進行一定數量的重複實驗後,如果出現某個現象的次數與總次數趨於某個值,那麼這個比值就會傾向於固定。最簡單的例子就是拋硬幣了,在理想情況下,我們知道拋硬幣正面朝上的概率會趨向於1/2。
非常好理解不是麼?但貝葉斯提出了一種截然不同的觀念,他認為概率不應該這麼簡單地計算,而需要加入先驗概率的考慮。
先驗概率也就是說,我們先設定一個假設(或信念,belief)。然後我們通過一定的實驗來證明/推翻這個假設,這就是後驗。隨後,舊的後驗會成為一個新的先驗,如此重複下去。而歸根結底,就得到了這樣一個著名的公式:
P( A | B ) = P( B | A ) * P( A ) / P( B )
(A | B表示A給定B的概率,也就是說,如果B發生,A發生的可能性有多大。反之亦然。)
從數據中推斷模型參數
在貝葉斯機器學習中,我們同樣採用貝葉斯公式從data(D)中推導模型參數(θ)。
P(θ|D) = P(D|θ) * P(θ) / P(data)
值得說明的是,P(data)在通常情況下無法被計算,但這並不會帶來什麼問題。因為我們在推導及求解的過程中,最重要的還是那些含有θ的表達式,而P(data)到底是多少,其實並不需要真的求出來。
P(θ) 為先驗概率,也就是我們對樣本空間中各類樣本所佔比例的可能性推測。通常我們認為,當訓練集包含重組的獨立同分步樣本時,P(θ) 可通過各類樣本出現的頻率進行判斷。關於先驗的其它知識,可以參考Where priors come from的介紹。
P(D|θ) 是樣本D相對於類標記θ的類條件概率,也就是我們理解的「似然」。人們經常會使用可能性來評估模型,如果對實際數據能做出更高可能性的預測,那麼這個模型自然更為有效。
那麼,等式左邊的P(θ|D) 就是我們最終想得到的東西,也就是基於先驗概率與數據所獲得的模型參數所呈現的概率分布。
如果能通過數據採樣來估計概率分布參數,最經典的方法就是最大似然估計(maximum-likelihood estimation,MLE),也就是我們所說的極大似然法。而如果將先驗考慮在內,那麼就是最大後驗概率(MAP)。如果在先驗均勻分布的情況下,這兩者應該相同。
統計建模
我們先將貝葉斯方法分為兩類:一為統計建模,另一個為概率機器學習。後者包括了所謂的非參數方法。
建模通常在數據稀缺且難以獲得時得以應用,比如在社會科學和其它難以進行大規模對照實驗的環境中。想像一下,如果一個數據學家手頭只擁有少量的數據,那麼他會不遺餘力地對算法進行調整,以期讓每個數據都發揮最大的功用。
此外,對於小數據而言,最重要的是量化不確定性,這也正是貝葉斯方法所擅長的。而貝葉斯方法——尤其是MCMC——通常計算量巨大,這又與小數據是共存的。
在名為《Data Analysis Using Regression Analysis and Multilevel/Hierarchical Models》(連結:http://www.stat.columbia.edu/~gelman/arm/ )的書中,介紹了從一個沒有預測變量的線性模型開始,不斷增加到11個預測變量的情況並進行討論。這種勞動密集性模式實際上與我們的機器學習方向背道而馳,我們還是希望能使用數據,讓計算機自動學習。
概率機器學習
我們現在嘗試把「概率」一詞替換「貝葉斯」。從這個角度而言,它與其它分類方法並沒有區別。如果從分類考慮,大多數分類器都能夠輸出概率預測,比如最經典的SVM(支持變量機)。但需要指出的是,這些概率只是源於分類器的信念陳述,而它們是否符合真實的概率則完全是另一回事了,這也就是所謂的校準(calibration)。
貝葉斯非參數模型
接下來我們要說說貝葉斯非參數模型的一些內容,顧名思義,這個名字代表著模型中的參數數量可以隨著數據的增大或減少而自適應模型的變化。這與SVM有些相似,它能在訓練點中選擇支持向量,而貝葉斯非參數模型也能根據數據多少來選擇參數確定模型。比較流行的貝葉斯非參數模型包括高斯回歸過程,還有隱含狄裡克雷分布(LDA)。
高斯回歸過程
高斯回歸過程有點類似於SVM——採用內核並具有類似的可伸縮性。其最大的特點在於回歸特性,分類做為事後的判斷,而對於SVM而言,這個過程是相反的。
此外,GP是從頭開始進行概率判斷,而SVM不是。大多數的常規方法只提供數據點估計,而貝葉斯非參數模型則會輸出不確定性估計。
不過,「悲劇」還沒有結束,像GP這樣的複雜方法通常在假設均勻的情況下操作,而實際上,噪聲實際上可能出現於輸入空間(異方差)上。
高斯回歸過程的流行主要應用於機器學習算法的超參數優化上。數據非常小,也只有幾個參數需要調整。
LDA
Latent Dirichlet Allocation(LDA)是一種非監督機器學習技術,可以用來識別大規模文檔集(document collection)或語料庫(corpus)中潛藏的主題信息。
對於語料庫中的每篇文檔,LDA定義了如下生成過程(generativeprocess):
1.對每一篇文檔,從主題分布中抽取一個主題;
2.從上述被抽到的主題所對應的單詞分布中抽取一個單詞;
3.重複上述過程直至遍歷文檔中的每一個單詞。
軟體
至於軟體,Stan可以說是貝葉斯最為知名的概率性程式語言,它能夠根據你的指定訓練你想要的貝葉斯模型,能用Python、R或其它語言編寫,不過現在Stan有了一個叫NUTS(No-U-TurnSampler)的現代採樣器,它能夠得到比靜態HMC更高的計算效率。
Stan的另一個有趣的地方在於它能自動變分推理。
變分推理是用於近似貝葉斯推理的可縮放技術。推導變分推理算法需要繁瑣的模型特定計算,而自動變分推理(ADVI)算法能夠為中型數據應用於小型建模鋪平道路。
而在Python中,最為有名的是PyMC。它並非是最先進的一個,也沒有經常進行優化或迭代,但它的效果也很不錯。
Infer.NET是微軟的概率編程庫,它主要由C# 或F# 等語言提供,但也能從.NET的IronPython中調用。
此外,還有CrossCat等用於分析高維數據表領域通用的貝葉斯方法。
關注網易智能菌(微信公眾號:smartman163),獲取專業人工智慧資訊與AI報告。
本文來源:雷鋒網 責任編輯: 欽曉武_NK2781