天天看點

詳解最大似然估計(MLE)、最大後驗機率估計(MAP),以及貝葉斯公式的了解

聲明:本文為原創文章,發表于nebulaf91的csdn部落格。歡迎轉載,但請務必保留本資訊,注明文章出處。

本文作者: nebulaf91

本文原始位址:http://blog.csdn.net/u011508640/article/details/72815981

最大似然估計(Maximum likelihood estimation, 簡稱MLE)和最大後驗機率估計(Maximum a posteriori estimation, 簡稱MAP)是很常用的兩種參數估計方法,如果不了解這兩種方法的思路,很容易弄混它們。下文将詳細說明MLE和MAP的思路與差別。

但别急,我們先從機率和統計的差別講起。

機率和統計是一個東西嗎?

機率(probabilty)和統計(statistics)看似兩個相近的概念,其實研究的問題剛好相反。

機率研究的問題是,已知一個模型和參數,怎麼去預測這個模型産生的結果的特性(例如均值,方差,協方差等等)。 舉個例子,我想研究怎麼養豬(模型是豬),我選好了想養的品種、喂養方式、豬棚的設計等等(選擇參數),我想知道我養出來的豬大概能有多肥,肉質怎麼樣(預測結果)。

統計研究的問題則相反。統計是,有一堆資料,要利用這堆資料去預測模型和參數。仍以豬為例。現在我買到了一堆肉,通過觀察和判斷,我确定這是豬肉(這就确定了模型。在實際研究中,也是通過觀察資料推測模型是/像高斯分布的、指數分布的、拉普拉斯分布的等等),然後,可以進一步研究,判定這豬的品種、這是圈養豬還是跑山豬還是網易豬,等等(推測模型參數)。

一句話總結:機率是已知模型和參數,推資料。統計是已知資料,推模型和參數。

顯然,本文解釋的MLE和MAP都是統計領域的問題。它們都是用來推測參數的方法。為什麼會存在着兩種不同方法呢? 這需要了解貝葉斯思想。我們來看看貝葉斯公式。

貝葉斯公式到底在說什麼?

學習機器學習和模式識别的人一定都聽過貝葉斯公式(Bayes’ Theorem):

P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A|B) = \frac{P(B|A)P(A)}{P(B)} P(A∣B)=P(B)P(B∣A)P(A)​ 【式1】

貝葉斯公式看起來很簡單,無非是倒了倒條件機率和聯合機率的公式。

把B展開,可以寫成:

P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ∣ A ) P ( A ) + P ( B ∣ ∼ A ) P ( ∼ A ) P(A|B) = \frac{P(B|A)P(A)}{P(B|A)P(A) + P(B|\sim A)P(\sim A)} P(A∣B)=P(B∣A)P(A)+P(B∣∼A)P(∼A)P(B∣A)P(A)​ 【式2】( ∼ A \sim A ∼A表示"非A")

這個式子就很有意思了。

想想這個情況。一輛汽車(或者電瓶車)的警報響了,你通常是什麼反應?有小偷?撞車了? 不。。 你通常什麼反應都沒有。因為汽車警報響一響實在是太正常了!每天都要發生好多次。本來,汽車警報設定的功能是,出現了異常情況,需要人關注。然而,由于虛警實在是太多,人們漸漸不相信警報的功能了。

貝葉斯公式就是在描述,你有多大把握能相信一件證據?(how much you can trust the evidence)

我們假設響警報的目的就是想說汽車被砸了。把A計作“汽車被砸了”,B計作“警報響了”,帶進貝葉斯公式裡看。我們想求等式左邊發生 A ∣ B A|B A∣B的機率,這是在說警報響了,汽車也确實被砸了。汽車被砸**引起(trigger)**警報響,即 B ∣ A B|A B∣A。但是,也有可能是汽車被小孩子皮球踢了一下、被行人碰了一下等其他原因(統統計作 ∼ A \sim A ∼A),其他原因引起汽車警報響了,即 B ∣ ∼ A B|\sim A B∣∼A。那麼,現在突然聽見警報響了,這時汽車已經被砸了的機率是多少呢(這即是說,警報響這個證據有了,多大把握能相信它确實是在報警說汽車被砸了)?想一想,應當這樣來計算。用警報響起、汽車也被砸了這事件的數量,除以響警報事件的數量(這即【式1】)。進一步展開,即警報響起、汽車也被砸了的事件的數量,除以警報響起、汽車被砸了的事件數量加上警報響起、汽車沒被砸的事件數量(這即【式2】)。

可能有點繞,請稍稍想一想。

再思考【式2】。想讓 P ( A ∣ B ) = 1 P(A|B) = 1 P(A∣B)=1,即警報響了,汽車一定被砸了,該怎麼做呢?讓$ P(B|\sim A)P(\sim A) = 0 即 可 。 很 容 易 想 清 楚 , 假 若 讓 即可。很容易想清楚,假若讓 即可。很容易想清楚,假若讓P(\sim A) = 0$,即杜絕了汽車被球踢、被行人碰到等等其他所有情況,那自然,警報響了,隻剩下一種可能——汽車被砸了。這即是提高了響警報這個證據的說服力。

從這個角度總結貝葉斯公式:做判斷的時候,要考慮所有的因素。 老闆罵你,不一定是你把什麼工作搞砸了,可能隻是他今天出門前和太太吵了一架。

再思考【式2】。觀察【式2】右邊的分子, P ( B ∣ A ) P(B|A) P(B∣A)為汽車被砸後響警報的機率。姑且仍為這是1吧。但是,若 P ( A ) P(A) P(A)很小,即汽車被砸的機率本身就很小,則 P ( B ∣ A ) P ( A ) P(B|A)P(A) P(B∣A)P(A)仍然很小,即【式2】右邊分子仍然很小,$P(A|B) $ 還是大不起來。 這裡,​ P ( A ) P(A) P(A)即是常說的先驗機率,如果A的先驗機率很小,就算 P ( B ∣ A ) P(B|A) P(B∣A)較大,可能A的後驗機率 P ( A ∣ B ) P(A|B) P(A∣B)還是不會大(假設 P ( B ∣ ∼ A ) P ( ∼ A ) P(B|\sim A)P(\sim A) P(B∣∼A)P(∼A)不變的情況下)。

從這個角度思考貝葉斯公式:一個本來就難以發生的事情,就算出現某個證據和他強烈相關,也要謹慎。證據很可能來自别的雖然不是很相關,但發生機率較高的事情。 發現剛才寫的代碼編譯報錯,可是我今天狀态特别好,這語言我也很熟悉,犯錯的機率很低。是以覺得是編譯器出錯了。 ————别,還是先再檢查下自己的代碼吧。

好了好了,說了這麼多,下面言歸正傳,說一說MLE。

——————不行,還得先說似然函數(likelihood function)

似然函數

似然(likelihood)這個詞其實和機率(probability)是差不多的意思,Colins字典這麼解釋:The likelihood of something happening is how likely it is to happen. 你把likelihood換成probability,這解釋也讀得通。但是在統計裡面,似然函數和機率函數卻是兩個不同的概念(其實也很相近就是了)。

對于這個函數:

P ( x ∣ θ ) P(x|\theta) P(x∣θ)

輸入有兩個:x表示某一個具體的資料; θ \theta θ表示模型的參數。

如果 θ \theta θ是已知确定的, x x x是變量,這個函數叫做機率函數(probability function),它描述對于不同的樣本點x,其出現機率是多少。

如果 x x x是已知确定的, θ \theta θ是變量,這個函數叫做似然函數(likelihood function), 它描述對于不同的模型參數,出現x這個樣本點的機率是多少。

這有點像“一菜兩吃”的意思。其實這樣的形式我們以前也不是沒遇到過。例如,$f(x, y) = x^y , 即 , 即 ,即x 的 的 的y 次 方 。 如 果 次方。如果 次方。如果x 是 已 知 确 定 的 ( 例 如 是已知确定的(例如 是已知确定的(例如x = 2 ) , 這 就 是 ),這就是 ),這就是f(y) = 2^y , 這 是 指 數 函 數 。 如 果 , 這是指數函數。 如果 ,這是指數函數。如果y 是 已 知 确 定 的 ( 例 如 是已知确定的(例如 是已知确定的(例如y = 2 ) , 這 就 是 ),這就是 ),這就是f(x) = x^2$,這是二次函數。同一個數學形式,從不同的變量角度觀察,可以有不同的名字。

這麼說應該清楚了吧? 如果還沒講清楚,别急,下文會有具體例子。

現在真要先講講MLE了。。

最大似然估計(MLE)

假設有一個造币廠生産某種硬币,現在我們拿到了一枚這種硬币,想試試這硬币是不是均勻的。即想知道抛這枚硬币,正反面出現的機率(記為 θ \theta θ)各是多少?

這是一個統計問題,回想一下,解決統計問題需要什麼? 資料!

于是我們拿這枚硬币抛了10次,得到的資料( x 0 x_0 x0​)是:反正正正正反正正正反。我們想求的正面機率 θ \theta θ是模型參數,而抛硬币模型我們可以假設是 二項分布。

那麼,出現實驗結果$ x_0$(即反正正正正反正正正反)的似然函數是多少呢?

f ( x 0 , θ ) = ( 1 − θ ) × θ × θ × θ × θ × ( 1 − θ ) × θ × θ × θ × ( 1 − θ ) = θ 7 ( 1 − θ ) 3 = f ( θ ) f(x_0 ,\theta) = (1-\theta)\times\theta\times\theta\times\theta\times\theta\times(1-\theta)\times\theta\times\theta\times\theta\times(1-\theta) = \theta ^ 7(1 - \theta)^3 = f(\theta) f(x0​,θ)=(1−θ)×θ×θ×θ×θ×(1−θ)×θ×θ×θ×(1−θ)=θ7(1−θ)3=f(θ)

注意,這是個隻關于 θ \theta θ的函數。而最大似然估計,顧名思義,就是要最大化這個函數。我們可以畫出 f ( θ ) f(\theta) f(θ)的圖像:

詳解最大似然估計(MLE)、最大後驗機率估計(MAP),以及貝葉斯公式的了解

可以看出,在 θ = 0.7 \theta = 0.7 θ=0.7時,似然函數取得最大值。

這樣,我們已經完成了對 θ \theta θ的最大似然估計。即,抛10次硬币,發現7次硬币正面向上,最大似然估計認為正面向上的機率是0.7。(ummm…這非常直覺合理,對吧?)

且慢,一些人可能會說,硬币一般都是均勻的啊! 就算你做實驗發現結果是“反正正正正反正正正反”,我也不信 θ = 0.7 \theta = 0.7 θ=0.7。

這裡就包含了貝葉斯學派的思想了——要考慮先驗機率。 為此,引入了最大後驗機率估計。

最大後驗機率估計

最大似然估計是求參數 θ \theta θ, 使似然函數$P(x_0 | \theta) 最 大 。 最 大 後 驗 概 率 估 計 則 是 想 求 最大。最大後驗機率估計則是想求 最大。最大後驗機率估計則是想求\theta 使 使 使P(x_0 | \theta) P(\theta) 最 大 。 求 得 的 最大。求得的 最大。求得的\theta 不 單 單 讓 似 然 函 數 大 , 不單單讓似然函數大, 不單單讓似然函數大,\theta$自己出現的先驗機率也得大。 (這有點像正則化裡加懲罰項的思想,不過正則化裡是利用加法,而MAP裡是利用乘法)

MAP其實是在最大化 P ( θ ∣ x 0 ) = P ( x 0 ∣ θ ) P ( θ ) P ( x 0 ) P(\theta|x_0) = \frac{P(x_0|\theta)P(\theta)}{P(x_0)} P(θ∣x0​)=P(x0​)P(x0​∣θ)P(θ)​,不過因為 x 0 x_0 x0​是确定的(即投出的“反正正正正反正正正反”), P ( x 0 ) P(x_0) P(x0​)是一個已知值,是以去掉了分母 P ( x 0 ) P(x_0) P(x0​)(假設“投10次硬币”是一次實驗,實驗做了1000次,“反正正正正反正正正反”出現了n次,則 P ( x 0 ) = n / 1000 P(x_0) = n/1000 P(x0​)=n/1000。總之,這是一個可以由資料集得到的值)。最大化 P ( θ ∣ x 0 ) P(\theta | x_0) P(θ∣x0​)的意義也很明确, x 0 x_0 x0​已經出現了,要求 θ \theta θ取什麼值使 P ( θ ∣ x 0 ) P(\theta | x_0) P(θ∣x0​)最大。順帶一提, P ( θ ∣ x 0 ) P(\theta | x_0) P(θ∣x0​)即後驗機率,這就是“最大後驗機率估計”名字的由來。

對于投硬币的例子來看,我們認為(”先驗地知道“) θ \theta θ取0.5的機率很大,取其他值的機率小一些。我們用一個高斯分布來具體描述我們掌握的這個先驗知識,例如假設 P ( θ ) P(\theta) P(θ)為均值0.5,方差0.1的高斯函數,如下圖:

詳解最大似然估計(MLE)、最大後驗機率估計(MAP),以及貝葉斯公式的了解

則 P ( x 0 ∣ θ ) P ( θ ) P(x_0 | \theta) P(\theta) P(x0​∣θ)P(θ)的函數圖像為:

詳解最大似然估計(MLE)、最大後驗機率估計(MAP),以及貝葉斯公式的了解

注意,此時函數取最大值時, θ \theta θ取值已向左偏移,不再是0.7。實際上,在 θ = 0.558 \theta = 0.558 θ=0.558時函數取得了最大值。即,用最大後驗機率估計,得到 θ = 0.558 \theta = 0.558 θ=0.558

最後,那要怎樣才能說服一個貝葉斯派相信 θ = 0.7 \theta = 0.7 θ=0.7呢?你得多做點實驗。。

如果做了1000次實驗,其中700次都是正面向上,這時似然函數為:

詳解最大似然估計(MLE)、最大後驗機率估計(MAP),以及貝葉斯公式的了解

如果仍然假設 P ( θ ) P(\theta) P(θ)為均值0.5,方差0.1的高斯函數, P ( x 0 ∣ θ ) P ( θ ) P(x_0 | \theta) P(\theta) P(x0​∣θ)P(θ)的函數圖像為:

詳解最大似然估計(MLE)、最大後驗機率估計(MAP),以及貝葉斯公式的了解

在 θ = 0.696 \theta = 0.696 θ=0.696處, P ( x 0 ∣ θ ) P ( θ ) P(x_0 | \theta) P(\theta) P(x0​∣θ)P(θ)取得最大值。

這樣,就算一個考慮了先驗機率的貝葉斯派,也不得不承認得把 θ \theta θ估計在0.7附近了。

PS. 要是遇上了頑固的貝葉斯派,認為 P ( θ = 0.5 ) = 1 P(\theta = 0.5) = 1 P(θ=0.5)=1 ,那就沒得玩了。。 無論怎麼做實驗,使用MAP估計出來都是 θ = 0.5 \theta = 0.5 θ=0.5。這也說明,一個合理的先驗機率假設是很重要的。(通常,先驗機率能從資料中直接分析得到)

最大似然估計和最大後驗機率估計的差別

相信讀完上文,MLE和MAP的差別應該是很清楚的了。MAP就是多個作為因子的先驗機率 P ( θ ) P(\theta) P(θ)。或者,也可以反過來,認為MLE是把先驗機率 P ( θ ) P(\theta) P(θ)認為等于1,即認為 θ \theta θ是均勻分布。

如果有說錯的或者沒說清楚的地方,歡迎留言指教!如果您更好的見解,也歡迎留言交流!

謝謝閱讀!

作者: nebulaf91

繼續閱讀