極大似然估計與貝葉斯估計

序言

本序言是對整體思想進行的一個概括。若沒有任何瞭解,可以先跳過,最後回來看看;若已有了解,可以作爲指導思想。
極大似然估計與貝葉斯估計是統計中兩種對模型的參數確定的方法,兩種參數估計方法使用不同的思想。前者來自於頻率派,認爲參數是固定的,我們要做的事情就是根據已經掌握的數據來估計這個參數;而後者屬於貝葉斯派,認爲參數也是服從某種概率分佈的,已有的數據只是在這種參數的分佈下產生的。所以,直觀理解上,極大似然估計就是假設一個參數 θ ,然後根據數據來求出這個θ . 而貝葉斯估計的難點在於p(θ) 需要人爲設定,之後再考慮結合MAP (maximum a posterior)方法來求一個具體的θ .
所以極大似然估計與貝葉斯估計最大的不同就在於是否考慮了先驗,而兩者適用範圍也變成了:極大似然估計適用於數據大量,估計的參數能夠較好的反映實際情況;而貝葉斯估計則在數據量較少或者比較稀疏的情況下,考慮先驗來提升準確率。

預知識

爲了更好的討論,本節會先給出我們要解決的問題,然後給出一個實際的案例。這節不會具體涉及到極大似然估計和貝葉斯估計的細節,但是會提出問題和實例,便於後續方法理解。

問題前提

首先,我們有一堆數據D={x1,x2,...,xn} ,當然這些數據肯定不是隨便產生的,我們就假設這些數據是以含有未知參數θ 某種概率形式(如Bernoulli分佈即0-1分佈)分佈的。我們的任務就是通過已有的數據,來估計這個未知參數θ 。估計這個參數的好處就在於,我們可以對外來的數據進行預測。

問題實例

假設一個拋硬幣實驗,我們之前不知道這些硬幣是不是正反均勻的,也許硬幣正反不等,假設正面向上設爲1的概率爲ρ ,反面向上設爲0爲1ρ . 我們進行了3次實驗,得到兩次正面,一次反面,即序列爲110 。這裏,D=(1,1,0)θ=ρ

符號說明

這裏給出一些符號表示。可看到不理解時過來查看。

符號 含義
D 已有的數據(data)
θ 要估計的參數(parameter)
p(θ) 先驗概率(prior)
p(θ|D) 後驗概率(posterior)
p(D) 數據分佈(evidence)
p(D|θ) 似然函數(likelihood of θ w.r.t. D )
p(x,θ|D) 已知數據條件下的x,θ 概率

方法介紹

這一節將會詳細闡明極大似然估計和貝葉斯估計,要注意到兩種方法在面對未知參數θ 時採用的不同態度。

極大似然估計

模型推導

極大似然估計法認爲參數是固有的,但是可能由於一些外界噪聲的干擾,使數據看起來不是完全由參數決定的。沒關係,數學家們覺得,雖然有誤差存在,但只要讓在這個數據給定的情況下,找到一個概率最大的參數就可以了。那問題其實就變成了一個條件概率最大的求解,即求使得p(θ|D) 最大的參數θ ,形式化表達爲求解

argmaxθp(θ|D)(1)

而根據條件概率公式有

p(θ|D)=p(D|θ)p(θ)p(D).(2)

因爲我們在極大似然估計中假設 θ 是確定的,所以p(θ) 就是一個常數。p(D) 同樣是根據已有的數據得到的,也是確定的,或者我們可以把其看作是對整個概率的一個歸一化因子。這時候,求解公式(1) 就變成了求解
argmaxθp(D|θ)(3)

的問題。
(3) 式中的p(D|θ) 就是似然函數,我們要做的就是求一個是似然最大的參數,所以稱爲極大似然估計。
想求解這個問題,需要假設我們的數據是相互獨立的。D={x1,x2,x3,...,xn} ,這時候有
p(D|θ)=i=1np(xi|θ)(4)

一般對(4)式取對數求解對數極大似然,就可以把連乘變成求和,然後求導取極值點就是要求的參數值,不在此贅述。

實例

爲了便於理解,我們以之前的拋硬幣實驗作爲實例。
回到當時我們一開始拋硬幣實驗,D=(1,1,0) , θ=ρ 的話,我們可以得到

p(D|θ)=p(x1|ρ)p(x2|ρ)p(x3|ρ)=p(1|ρ)p(1|ρ)p(0|ρ)=ρρ(1ρ)(5)

然後使用對數極大似然估計就可以得到參數ρ 的值了。

貝葉斯估計

考慮到這節對先驗概率(prior)這個概念用的次數比較多,我們首先先介紹先驗與後驗概率是什麼,怎麼得到;其次會介紹貝葉斯估計模型的推導過程;最後會舉一個例子來加深理解。

先驗概率、後驗概率

先驗概率(prior)與後驗概率(posterior)簡稱爲先驗後驗。這兩個概念其實是來自於貝葉斯定理,相信學過概率論的一定有所瞭解。在此試作簡單介紹。
之前提到的先驗概率到底是什麼呢?,毫無疑問必須得與放在一起來介紹。一個先一個後,我們肯定是針對同一個事物纔有先後之分,如果針對兩個事物,先後不是沒有意義了麼?那這個共同的對象,就是我們的參數θ 。後驗概率是指掌握了一定量的數據後我們的參數分佈是怎麼樣的,表示爲p(θ|D) ;那先驗就是在沒有掌握數據後我們的參數怎麼分佈。

看到這裏,你可能會問:如果連數據都沒有,我怎麼知道我的參數是怎麼分佈的?你提出這個問題,就說明你是一個赤裸裸的頻率派學家,你需要通過數據來得到你的參數!而這並不是貝葉斯派的考慮,貝葉斯估計最重要的就是那個先驗的獲得。雖然你這次的一組數據,比如說扔三次硬幣產生的序列是(110)這樣分佈的,但是其實我根據我歷史的經驗來看,一枚硬幣正反面其實很有可能是按照均勻分佈來的,只不過可能因爲你拋得次數少了所以產生了不是均勻分佈的效果。所以我要考慮我以往的經驗在裏面。

你可能又會問:那你這個均勻分佈不就是完全猜來的嘛,你怎麼知道我這次是不是一樣的硬幣呢?沒錯!就是“猜來的”。先驗在很多時候完全是假設,然後去驗證有的數據是否吻合先驗猜想,所以這裏的猜很重要。還要注意,先驗一定是與數據無關的,你不能看到了數據再做這些猜想,一定是沒有任何數據之前你就猜了一個參數的先驗概率。

有個這部分知識,我們可以開始推導貝葉斯估計模型了。

模型推導

還是繼續上面的模型,注意公式(2) 其實是一個很概括的模型,既沒有對概率形式以及概率參數進行定義,也沒有運用到參數固定與否的思想,所以公式(2) 同樣適用於貝葉斯模型,我們仍然想對該式進行處理得出我們的貝葉斯估計方法。照抄下來(2) 式爲

p(θ|D)=p(D|θ)p(θ)p(D).

此時,這裏面除了分母可以看作是一個歸一化因子外,其餘均是概率分佈的函數。也就是說,無法再像極大似然估計那樣將先驗概率(p(θ) )看作一個常量。這時候就需要考慮用到我們的先驗概率了。我們這次把分母也展開來看看,根據全概率公式1得到
p(D)=θp(D|θ)p(θ)dθ.(6)

我們來把這個式子(4)
p(D|θ)=i=1np(xi|θ)

和式子(6) 一起帶入(2) 式,得到
p(θ|D)=(ni=1p(xi|θ))p(θ)θ(ni=1p(xi|θ))p(θ)dθ(7)

至此,我們就完成了對貝葉斯估計模型的推到過程。有人會問,怎麼就完成了?還有那麼長一段公式,我們怎麼計算啊?其實仔細看看(7) 式,其實這些符號我們都是知道的,我們就通過下面的實例來詳述。

實例

(7) 中的符號有先驗,根據之前對先驗的介紹,這是在沒有數據之前我們就已經知道的函數了。知道是什麼意思?不妨還是在那個拋硬幣試驗中,我們假設這個θ(ρ) 的先驗概率是服從

fρ(ρ)=6ρ(1ρ)(8)

概率分佈的。如圖


然後(ni=1p(xi|θ)) 也已經知道是ρρ(1ρ) 了。這時要的事情,其實就是把所有已知的全都一股腦帶進去就可以了。有人問,已知概率分佈怎麼知道概率,我想這個問題,可以去概率論的書上找找。

但是,其實做到這一步,我們會發現雖然解決了問題,但是又會帶來新的問題,因爲在解決這一類貝葉斯估計的問題的時候,我們讓參數以某種概率密度函數分佈,就會導致在計算過程中不可避免的高複雜度,人們爲了計算上的方便,就提出不再是把所有的後驗概率p(θ|D) 都找出來,而是仍然採用類似於極大似然估計的思想,來極大後驗概率(Maximum A Posterior),得到這種簡單有效的叫做MAP(前面英文的首字母)的算法。下面我們再一步步介紹一下MAP

極大後驗概率(MAP)

雖然本節獨自成爲一節,但是其實是隸屬於貝葉斯估計的,屬於貝葉斯估計裏面的一個trick,放棄一點的準確性,來極大提升算法性能。所以,這個部分不能算是模型,只能算是算法。
MAP(Maximum A Posterior)的理論依據是絕大部分情況下,參數值最有可能出現在概率最大點附近。爲了說清楚MAP的來龍去脈,本節將首先介紹如何利用貝葉斯估計的參數進行預測,然後分析直接使用之前得到的後驗概率有什麼不好,最後介紹MAP算法做的工作。

使用貝葉斯估計的參數做預測

前一節中,我們通過貝葉斯估計得到了後驗概率p(θ|D) 。那麼這個後驗概率能用來做什麼呢?當然,就比如我們一直在說的那個例子,得到了數據D=(110) ,還想預測第四次得到的結果什麼是什麼怎麼辦?我們當然就需要計算p(1|D)p(0|D) 看看誰大誰小,哪個更有可能發生。這裏,爲了泛化,我們將問題再次形式化一下爲

已知數據D=(x1,x2,...,xn) ,預測新的數據x 的值。

這個問題還有很多細節,比如先驗概率,後驗概率,數據分佈等一些細節,因爲前面已經介紹過了,這裏爲了突出重點,不再重複。在此需要關注的是,所謂預測新的數據的值,其實就是能夠在已知數據D 的情況下,找到數據的數學期望2。即求

E(x|D)=xxp(x|D)dx.(9)

也就是我們需要求p(x|D) ,這該怎麼辦?其實這個式子比較迷惑人的點就在於,它內藏了一個參數,也就是x的分佈其實與參數是有關的,但是又參數θ 是服從某種概率分佈的,要對參數所有可能的情況都考慮就得到了
p(x|D)=θp(x,θ|D)dθ(10)

這一式子。
接下來還是運用基本的條件概率公式
p(x,θ|D)=p(x|θ,D)p(θ|D).(11)

對這一句公式的解釋就是,xθ 在已知數據D 的條件下的概率,等於x 在已知θ 和數據D 的條件下的概率乘θ 在已知數據D 的條件下的概率。爲什麼我要費這個心來說這個,一方面是我爲了方便大家理解這個多維條件概率符號的含義,另一方面更重要的是右邊式子的第一項p(x|θ,D) 可這樣
p(x|θ,D)=p(x|θ)

化簡。爲什麼?因爲我們從數據裏面得到的東西對一個新的數據來說,其實只是那些參數,所以對x 而言,θ 就是D ,兩者是同一條件。
那麼(10) 式就變成了3
p(x|D)=θp(x,θ|D)dθ=θp(x|θ)p(θ|D)dθ.(12)

p(x|θ) 是已知的(例如在我們的問題裏面可以是p(1|ρ) 或者p(0|ρ));p(θ|D) 也是已知的,我們在貝葉斯估計中已經通過(7) 式求出來了。所以這個式子完全就是一個只含有x 的函數,帶入(9) 式完全可以計算出來數學期望。但是!這裏面我忽略了一個事實,這裏面存在什麼困難呢?下面會幫助大家分析。

貝葉斯估計中的一個困難

還是回到(12) 式,這裏面的困難是參數是隨機分佈的,我們需要考慮到每一個可能的參數情況然後積分,這種數學上的簡單形式,其實想要計算出來需要大量的運算。那我們不妨退而求其次,我找一個跟你差不多效果的後驗概率,然後就只計算這個後驗帶入計算。那麼什麼樣的後驗概率和對所有可能的θ 積分情況差不多呢?想法就是,找一個θ 能夠最大化後驗概率,怎麼才能最大化後驗概率呢?

MAP算法

其實最大化後驗概率還是老一套,最大化(7) 式,對(7)式觀察發現,其實分母只是一個歸一化的因子,並不是θ 的函數。真正有效的其實就是要最大化我們的分子,於是使用

θMAP=argmaxθi=1np(xi|θ)p(θ)(13)

這其實與極大似然估計形式上很相似,但是主要區別在於運用了一個先驗概率在這個極大化裏面。參數都已經計算出來了,其他過程,其實還是按照極大似然來做就行了,不用再按照貝葉斯一樣對所有可能的參數情況都考慮在求積分了。

總結

全文對比分析了極大似然估計和貝葉斯估計,在進行參數估計的過程中,極大似然估計是想讓似然函數極大化,而考慮了MAP算法的貝葉斯估計,其實是想讓後驗概率極大化。主要區別在於估計參數中,一個考慮了先驗一個沒有考慮先驗,主要區別看(3)(13) 式。


參考文獻

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章