ML-最大似然估計
MAP-最大后驗估計
貝葉斯估計
三者的關系及區別
(本篇博客來自李文哲老師的微課,轉載請標明出處http://www.cnblogs.com/little-YTMM/p/5399532.html )
一。機器學習
核心思想是從past experience中學習出規則,從而對新的事物進行預測。對於監督學習來說,有用的樣本數目越多,訓練越准確。
用下圖來表示機器學習的過程及包含的知識:
簡單來說就是:
- 首先要定義我們的假設空間(Model assumption):如線性分類,線性回歸,邏輯回歸,SVM,深度學習網絡等。
- 如何衡量我們學出來的模型的好壞?定義損失函數(目標函數),lost function,如square loss
- 如何對假設的模型做優化,及optimization過程。簡單說,就是選擇一種算法(如:梯度下降,牛頓法等),對目標函數進行優化,最終得到最優解;
- 不同的模型使用不同的算法,如邏輯回歸通常用梯度下降法解決,神經網絡用反向推導解決,貝葉斯模型則用MCMC來解決。
- 機器學習 = 模型 + 優化(不同算法)
- 還有一個問題,模型的復雜度怎么衡量?因為復雜的模型容易出現過擬合(overfitting)。解決過擬合的方就是加入正則項(regularization)
- 以上問題都解決之后,我們怎么判斷這個解就是真的好的呢?用交叉驗證(cross-validation)來驗證一下。
二。ML vs MAP vs Bayesian
- ML(最大似然估計):就是給定一個模型的參數,然后試着最大化p(D|參數)。即給定參數的情況下,看到樣本集的概率。目標是找到使前面概率最大的參數。
- 邏輯回歸都是基於ML做的;
- 缺點:不會把我們的先驗知識加入模型中。
- MAP(最大后驗估計):最大化p(參數|D)。
- 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。