機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

望江小汽車發表於2018-07-02

原文(我的部落格):貝葉斯估計、最大似然估計、最大後驗估計三者的區別

更多機器學習深度學習資源

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計


例項分析

即使學過機器學習的人,對機器學習中的 MLE(極大似然估計)、MAP(最大後驗估計)以及貝葉斯估計(Bayesian) 仍有可能一知半解。對於一個基礎模型,通常都可以從這三個角度去建模,比如對於邏輯迴歸(Logistics Regression)來說:

MLE: Logistics Regression

MAP: Regularized Logistics Regression
Bayesian: Bayesian Logistic Regression

本文結合實際例子,以通俗易懂的方式去講解這三者之間的本質區別,希望幫助讀者掃清理解中的障礙。

先導知識點: 假設空間(Hypothesis Space)

什麼叫假設空間呢?我們可以這樣理解。機器學習包含很多種演算法,比如線性迴歸、支援向量機、神經網路、決策樹、GDBT等等。我們在建模的時候,第一步就是要選擇一個特定的演算法比如“支援向量機”。**一旦選擇了一個演算法,就相當於我們選擇了一個假設空間。**在一個假設空間裡,我們通常會有無數種不同的解(或者可以理解成模型),一個優化演算法(比如梯度下降法)做的事情就是從中選擇最好的一個解或者多個解/模型,當然優化過程要依賴於樣本資料。舉個例子,如果我們選擇用支援向量機,那相當於我們可選的解/模型集中在上半部分(藍色點)。

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

一個具體“toy”問題

“ 張三遇到了一個數學難題,想尋求別人幫助。通過一番思考之後發現自己的朋友在清華計算機系當老師。於是,他決定找清華計算機系學生幫忙。那張三用什麼樣的策略去尋求幫助呢?

在這裡,“清華計算機系”是一個假設空間。在這個假設空間裡,每一位學生可以看做是一個模型(的例項化)。

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

對於張三來說,他有三種不同的策略可以選擇。

第一種策略 : MLE

第一種策略就是從系裡選出過往成績最好的學生,並讓他去解答這個難題。比如我們可以選擇過去三次考試中成績最優秀的學生。

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

**一般的學習流程分為“學習過程”和“預測過程”。第一種策略的方案可以用下面的圖來表示。**在這裡,學習過程相當於從所有系的學生中挑選出成績最好的學生。所以,這裡的“學生過往成績單”就是我們已知的訓練資料 D, 選出成績最好的學生(計算曆史平均分數,並選出最高的),這個過程就是MLE。一旦我們找到了成績最好的學生,就可以進入預測環節。在預測環節中,我們就可以讓他回答張三手裡的難題 x', 之後就可以得到他給出的解答 y'。

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

第二種策略:MAP

跟第一種策略的不同點在於,第二種策略中我們聽取了老師的建議,老師就是張三的朋友。這位老師給出了自己的觀點:_“小明和小花的成績中可能存在一些水分”。_當我們按照成績的高低給學生排序,假設前兩名依次為小明和小花,如果我們不考慮這位老師的評價,則我們肯定把小明作為目標物件。然而,既然老師已經對小明和小花做了一些負面的評價,那這個時候,我們很有可能最後選擇的是班級裡的第三名,而不是小明或者小花。

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

我們把第二種策略的過程也用一個圖來描述。與上面的圖相比,唯一的區別在於這裡多出了老師的評價,我們稱之為 Prior。 也就是說我們根據學生以往的成績並結合老師評價,選擇了一位我們認為最優秀的學生(可以看成是模型)。之後就可以讓他去回答張老師的難題 x',並得到他的解答 y'。整個過程類似於MAP的估計以及預測。

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

到這裡,有些讀者可能會有一些疑惑:“老師的評價(Prior)跟學生過往的成績(Observation)是怎麼結合在一起的?”。 為了回答這個問題,我們不得不引出一個非常著名的定理,叫做**貝葉斯定理,**如下圖所示。左邊的項是MAP需要優化的部分,通過貝葉斯定理這個項可以分解成MLE(第一種策略)和Prior,也就是老師的評價。在這裡,分母是常數項(Constant),所以不用考慮。

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

第三種策略 - Bayesian

最後,我們來介紹第三種策略。這種策略應該很多人也可以想象得到,**其實就是讓所有人都去參與回答張三的難題,但最後我們通過一些加權平均的方式獲得最終的答案。**比如有三個學生,而且我們對這三個學生情況沒有任何瞭解。通過提問,第一個學生回答的答案是A,第二個學生回答的答案也是A,但第三個學生回答的是B。在這種情況下,我們基本可以把A作為標準答案。接著再考慮一個稍微複雜的情況,假設我們通過以往他們的表現得知第三個學生曾經多次獲得過全國奧賽的金牌,那這個時候該怎麼辦? 很顯然,在這種情況下,我們給予第三個學生的話語權肯定要高於其他兩位學生

我們把上面的這種思路應用到張三的問題上,其實相當於我們讓所有計算機系的學生參與回答這個問題,之後把他們的答案進行彙總並得出最終的答案。如果我們知道每一位學生的話語權(權重),這個彙總的過程是確定性(deterministic)。 但每一位學生的話語權(權重)怎麼得到呢? 這就是貝葉斯估計做的事情!

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

我們用下面的一幅圖來講述貝葉斯估計和預測的整個過程。跟MAP類似,我們已知每一位學生過去三次考試考試成績(D)以及老師的評價(Prior)。 但跟MAP不同的是,**我們這裡的目標不再是- “選出最優秀的學生”,而是通過觀測資料(D)去獲得每一位學生的發言權(權重),**而且這些權重全部加起來要等於1, 相當於是一個valid分佈(distribution)。

總結起來,在第三種策略之下,給定過去考試成績(D)和老師的評價(Prior), 我們的目標是估計學生權重的分佈,也稱之為Posterior Distribution。 那這個分佈具體怎麼去估計呢? 這部分就是貝葉斯估計做的事情,有很多種方法可以做這件事情,比如MCMC, Variational Method等等,但這並不是本文章的重點,所以不在這裡進一步解釋,有興趣的讀者可以關注之後關於貝葉斯的專欄文章。從直觀的角度思考,因為我們知道每一位學生過往的成績,所以我們很容易瞭解到他們的能力水平進而估計出每一位學生的話語權(權重)。

一旦我們獲得了這個分佈(也就是每一位學生的權重),接下來就可以通過類似於加權平均的方式做預測了,那些權重高的學生話語權自然就越大。

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

以上是對MLE, MAP以及貝葉斯估計的基本講解。下面我們試圖去回答兩個常見的問題。

Q: 隨著我們觀測到越來越多的資料,MAP估計逐步逼近MLE,這句話怎麼理解?

我們接著使用之前MAP(第二種策略)的例子。在這裡,我們對原來的問題稍作改變。在之前的例子裡我們假設能夠得到每一位學生過去三次考試中的成績。但在這裡,我們進一步假定可以獲得每一位學生過去100次考試中的成績。

那這樣的修改會帶來什麼樣的變化呢? 如果仔細想一想,其實也很容易想得到。我們設想一下這樣的兩種場景。假設我們知道某一位學生過去三次的考試成績比較優異,但老師卻告訴我們這位學生能力其實不怎麼樣,那這時候我們很可能就去相信老師了,畢竟僅僅通過三次考試的成績很難對一個學生有全面的瞭解。但相反,假設我們瞭解到這位學生在過去100次考試中全部獲得了班裡第一名,但同時老師又告訴我們這位學生的能力其實不怎麼樣,那這時候我們會有什麼樣的反應? 兩三次考試或許可以算做是運氣,但連續100次都是第一名這件事情很難再跟運氣畫等號吧? 我們甚至可能會去懷疑老師的品德,是不是故意汙衊人家?

這就是說,當我們觀測到的資料越來越多的時候,我們從資料中獲取的資訊的置信度是越高的,相反老師提供的反饋(Prior)的重要性就會逐漸降低。理想情況下,當我們擁有無窮多的資料樣本時,MAP會逼近MLE估計,道理都是一樣的。

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

Q: 為什麼貝葉斯估計會比MLE, MAP難?

回顧一下,MLE 和MAP都是在尋找一個最優秀的學生。貝葉斯估計則是在估計每一位學生的權重。第一種情況下,為了尋找最優秀的學生,我們只需知道學生之間的“相對”優秀程度。這個怎麼理解呢? 比如一個班裡有三個學生A,B,C,我們知道學生A比B優秀,同時知道B比C優秀,那這時候就可以推斷出學生A是最優秀的,我們並不需要明確知道A的成績是多少,B的成績是多少.....

但在貝葉斯估計模式下,我們必須要知道每一個學生的絕對權重,因為最後我們獲得的答案是所有學生給出的答案的加權平均,而且所有學生的權重加起來要保證等於1(任何一個分佈的積分和必須要等於1)。 假設我們知道每一位學生的能力值,a1, a2,.... an,這個能作為權重嗎? 顯然不能。為了獲得權重,有一種最簡單的方法就是先求和,然後再求權重。比如先計算 a1+...+an = S, 再用a1/S 作為權重。這貌似看起來也不難啊,只不過多做了一個加法操作?

我們很容易看出這個加法操作的時間複雜度是O(n),依賴於總體學生的數量。如果我們的假設空間只有幾百名學生,這個是不成問題的。 但實際中,比如我們假設我們的模型用的是支援向量機,然後把假設空間裡的每一個可行解比喻成學生,那這個假設空間裡有多少個學生呢? 是無數個!!, 也就是說需要對無窮多個數做這種加法操作。 當然,這種加法操作會以積分(integeral)的方式存在,但問題是這種積分通常沒有一個closed-form的解,你必須要去近似地估計才可以,這就是MCMC或者Variational方法做的事情,不在這裡多做解釋。

本文幾點重要的Take-aways:

  • 每一個模型定義了一個假設空間,一般假設空間都包含無窮的可行解;
  • MLE不考慮先驗(prior),MAP和貝葉斯估計則考慮先驗(prior);
  • MLE、MAP是選擇相對最好的一個模型(point estimation), 貝葉斯方法則是通過觀測資料來估計後驗分佈(posterior distribution),並通過後驗分佈做群體決策,所以後者的目標並不是在去選擇某一個最好的模型;
  • 當樣本個數無窮多的時候,MAP理論上會逼近MLE;
  • 貝葉斯估計複雜度大,通常用MCMC等近似演算法來近似;

最後貼一張總結的圖:

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計


理論分析

一。機器學習

  核心思想是從past experience中學習出規則,從而對新的事物進行預測。對於監督學習來說,有用的樣本數目越多,訓練越準確。

用下圖來表示機器學習的過程及包含的知識:

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

簡單來說就是:

  1. 首先要定義我們的假設空間(Model assumption):如線性分類,線性迴歸,邏輯迴歸,SVM,深度學習網路等。
  2. 如何衡量我們學出來的模型的好壞?定義損失函式(目標函式),lost function,如square loss
  3. 如何對假設的模型做優化,及optimization過程。簡單說,就是選擇一種演算法(如:梯度下降,牛頓法等),對目標函式進行優化,最終得到最優解;
    1. 不同的模型使用不同的演算法,如邏輯迴歸通常用梯度下降法解決,神經網路用反向推導解決,貝葉斯模型則用MCMC來解決。
    2. 機器學習 = 模型 + 優化(不同演算法)
  4. 還有一個問題,模型的複雜度怎麼衡量?因為複雜的模型容易出現過擬合(overfitting)。解決過擬合的方就是加入正則項(regularization)
  5. 以上問題都解決之後,我們怎麼判斷這個解就是真的好的呢?用**交叉驗證(cross-validation)**來驗證一下。

二。ML vs MAP vs Bayesian

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

  1. ML(最大似然估計):就是給定一個模型的引數,然後試著最大化p(D|引數)。即給定引數的情況下,看到樣本集的概率。目標是找到使前面概率最大的引數。
    1. 邏輯迴歸都是基於ML做的;
    2. 缺點:不會把我們的先驗知識加入模型中。
  2. MAP(最大後驗估計):最大化p(引數|D)。
  3. Bayesian:我們的預測是考慮了所有可能的引數,即所有的引數空間(引數的分佈)。
  • ML和MAP都屬於同一個範疇,稱為(freqentist),最後的目標都是一樣的:找到一個最優解,然後用最優解做預測。

三。ML

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

我們需要去最大化p(D|引數),這部分優化我們通常可以用把導數設定為0的方式去得到。然而,ML估計不會把先驗知識考慮進去,而且很容易造成過擬合現象。

舉個例子,比如對癌症的估計,一個醫生一天可能接到了100名患者,但最終被診斷出癌症的患者為5個人,在ML估計的模式下我們得到的得到癌症的概率為0.05。

這顯然是不太切合實際的,因為我們根據已有的經驗,我們知道這種概率會低很多。然而ML估計並沒有把這種知識融入到模型裡。

四。MAP

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

通過上面的推導我們可以發現,MAP與ML最大的不同在於p(引數)項,所以可以說MAP是正好可以解決ML缺乏先驗知識的缺點,將先驗知識加入後,優化損失函式。

其實p(引數)項正好起到了正則化的作用。如:如果假設p(引數)服從高斯分佈,則相當於加了一個L2 norm;如果假設p(引數)服從拉普拉斯分佈,則相當於加了一個L1 norm

五。Bayesian

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

再次強調一下: ML和MAP只會給出一個最優的解, 然而貝葉斯模型會給出對引數的一個分佈,比如對模型的引數, 假定引數空間裡有引數1,引數2, 引數3,...引數N,貝葉斯模型學出來的就是這些引數的重要性(也就是分佈),然後當我們對新的樣本預測的時候,就會讓所有的模型一起去預測,但每個模型會有自己的權重(權重就是學出來的分佈)。最終的決策由所有的估計根據其權重做出決策。

模型的ensemble的卻大的優點為它可以reduce variance, 這根投資很類似,比如我們投資多種不同型別的股票,總比投資某一個股票時的風險會低。

六。上面提到了frequentist和bayesian,兩者之間的區別是什麼?

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

用一個簡答的例子來再總結一下。 比如你是班裡的班長,你有個問題想知道答案,你可以問所有的班裡的學生。 一種方案是,問一個學習最好的同學。 另一種方案是,問所有的同學,然後把答案綜合起來,但綜合的時候,會按照每個同學的成績好壞來做個權重。 第一種方案的思想類似於ML,MAP,第二種方案類似於貝葉斯模型。

七。Bayesian的難點

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

所以整個貝葉斯領域的核心技術就是要近似的計算 p(\theta|D),我們稱之為bayesian inference,說白了,這裡的核心問題就是要近似這個複雜的積分(integral), 一種解決方案就是使用蒙特卡洛演算法。比如我想計算一個公司所有員工的平均身高,這個時候最簡答粗暴的方法就是讓行政去一個一個去測量,然後計算平均值。但想計算所有中國人的平均身高,怎麼做?(顯然一個個測量是不可能的)

取樣。我們隨機的選取一些人測量他們的身高,然後根據他們的身高來估計全國人民的審稿。當然取樣的數目越多越準確,取樣的資料越有代表性越準確。這就是蒙特卡洛演算法的管家思想。

再例:

假設我們不知道π,但是想計算圓的面積。也可以通過取樣的方法近似得到。隨機再下圖所示的正方形中撒入一些點,記落入紅色區域的點的個數為n1,落入白色區域的個數為n2,則四分之一圓的面積就為n1/(n1+n2).——蒙特卡洛思想

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

那麼,如何對連續函式估計呢?取樣n多個資料,逼近最後的積分值。

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

假設我們要計算 f(x)的期望值, 我們也有p(x)這種分佈,這個時候我們就可以不斷的從p(x)這個分佈裡做一些取樣,比如 x1,x2,...xn, 然後用這些取樣的值去算f(x),  所以最後得到的結果就是 (f(x1) + f(x2),, + f(xn))/ n

然鵝,上面例子中提到的取樣都是獨立的。也就是每個樣本跟其他的樣本都是獨立的,不影響彼此之間的取樣。然而,在現實問題上,有些時候我們想加快有效樣本的取樣速度。這個問題討論的就是怎麼優化取樣過程了,也是機器學習裡一個比較大的話題了。

重申一下,用上面提到的取樣方式我們可以去近似估計複雜的積分,也可以計算圓的面積,也可以計算全國人口的平均身高。但這個取樣方式是獨立的,有些時候,我們希望我們用更少的樣本去更準確的近似某一個目標,所以就出現了sampling這種一個領域的研究,就是在研究以什麼樣的方式優化整個取樣過程,使得過程更加高效。

機器學習必知概念:貝葉斯估計、最大似然估計、最大後驗估計

MCMC這種取樣方法,全稱為markov chain monte carlo取樣方法,就是每個取樣的樣本都是互相有關聯性的。

但是MCMC演算法需要在整個資料集上計算。也就是說為了得到一個樣本,需要用所有的資料做迭代。這樣當N很大時,顯然不適用。而且限制了貝葉斯方法發展的主要原因就是計算複雜度太高。因此現在貝爺第領域人們最關心的問題是:怎麼去優化取樣,讓它能夠在大資料環境下學習出貝葉斯模型?

降低迭代複雜度的一個例項:

對於邏輯迴歸,使用梯度下降法更新引數時,有批量梯度下降法(即使用整個資料集去更新引數),為了降低計算複雜度,人們使用了隨機梯度下降法,即隨機從資料集中選取樣本來更新引數。

所以,能否將此思想用於MCMC取樣中呢?

Yes!langevin dynamic(MCMC演算法中的一種),和stochastic optimizaiton(比如隨機梯度下降法)可以結合在一起用。這樣,我們就可以通過少量的樣本去做取樣,這個時候取樣的效率就不在依賴於N了,而是依賴於m, m是遠遠小於N。


參考文獻

[1] 貪心科技. 機器學習中的MLE、MAP和貝葉斯估計[DB/OL]. https://zhuanlan.zhihu.com/p/37543542, 2018-06-20.

[2] 江湖小妞. 貝葉斯思想以及與最大似然估計、最大後驗估計的區別[DB/OL]. http://www.cnblogs.com/little-YTMM/p/5399532.html, 2018-06-20.

相關文章