貝葉斯思想以及與最大似然估計、最大后驗估計的區別


ML-最大似然估計

MAP-最大后驗估計

貝葉斯估計

三者的關系及區別

(本篇博客來自李文哲老師的微課,轉載請標明出處http://www.cnblogs.com/little-YTMM/p/5399532.html )

 

一。機器學習

  核心思想是從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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM