2020年5月24日 星期日

最大似然估計與最大後驗機率估計 Maximum likelihood estimation & Maximum a posteriori estimation

從貝氏定理談起

貝氏定理告訴我們當我們從樣本 \(D\) 估計其機率分布的參數 \( \theta \) 時: \[ Pr(\theta | D) = \frac{Pr(D|\theta)\ Pr(\theta)}{Pr(D)} \] 其中 \(Pr(\theta|D) \) 稱為後驗機率 posterior , \( Pr(D|\theta)\) 稱為似然性 likelihood ,而 \( Pr(\theta)\) 稱為先驗機率 prior 。我們有興趣的是估計機率分布的參數 \( \theta \) 不在乎 \( P(D)\) ,因此上式可以寫成: \[ Pr(\theta | D) \propto Pr(D|\theta)\ Pr(\theta) \]

最大似然估計與最大後驗機率估計 Maximum likelihood estimation vs. Maximum a posteriori estimation

最大似然估計想找到參數 \(\theta\) 讓 \( Pr(D|\theta)\) 最大,式子可以寫成: \[ \hat{\theta}_{MLE}=arg\ \underset{\theta}{max}\ Pr(D|\theta) \] 最大後驗機率估計想找到參數 \(\theta\) 讓 posterior \(Pr(\theta|D) \) 最大,式子可以寫成: \[ \hat{\theta}_{MAP}=arg\ \underset{\theta}{max}\ Pr(\theta |D) \] 拿一個簡單的例子來比較兩者的不同 [1]:拋一枚硬幣 20 次,其中 12 次朝上, 8 次朝下,想估計此硬幣正面的機率 \( \theta\)。

MLE

首先用最大似然估計來解這個問題,我們已經在前文中知道 \( \theta_{MLE} = \frac{12}{20} = 0.6\) 。

MAP

先用個例子來簡介 MLE 與 MAP 的不同:最大後驗機率估計也考慮了先驗機率,通常先驗機率是人們已經接受的普遍規律。比如說如果擲了三次硬幣而每次都是反面,那用最大似然估計會得到硬幣正面朝上機率為零的結論,也就是 overfitting 。而最大後驗機率估計考慮了先驗機率,因此結果與最大似然估計的結果不同。

共軛先驗 Conjugate Prior

現在的問題是當我們想用最大後驗機率估計參數時需要先驗機率,但是該用什麼機率分布來描述先驗機率呢?我們通常會取似然 likelihood 的共軛先驗 conjugate prior 當成先驗機率分布。 likelihood 的 conjugate prior 意思是如果 likelihood 與 prior 兩者相乘得到的 posterior 會跟 prior 是同一種機率分布的話,則稱此 prior 為conjugate prior 。

二項分布的共軛先驗是 Beta 分布

只要驗證二項分布的 likelihood 與 Beta 分布的 prior 相乘以後的 posterior 也是 Beta 分布,則可說二項分布的共軛先驗是 Beta 分布。 先寫出 Beta 分布的機率密度函數: \[ f(x;\alpha,\beta) = constant \cdot x^{\alpha - 1}(1-x)^{\beta - 1} \propto x^{\alpha - 1}(1-x)^{\beta - 1} \] 把二項分布的 likelihood 與 Beta 分布的 prior 相乘可以得到以下式子: \[ Pr(x | D) \propto x^{k}(1-x)^{N-k} \cdot x^{\alpha - 1}(1-x)^{\beta - 1} \\ = x^{k + \alpha - 1}(1-x)^{N-k + \beta - 1} \] 以上式子就是參數為 \(k+\alpha\) 及 \(N-k+\beta \) 的 Beta 分布。

解出 \( \theta_{MAP} \)

首先先隨便假設先驗機率的參數 \( \alpha = \beta = 5\) ,代入以上式子可以得到: \[ Pr(x | D) = constant \cdot x^{k + 4}(1-x)^{N-k + 4} \\ ln(Pr(x | D)) = constant + (k+4)ln(x) + (N-k+4)ln(1-x) \] 導數為0的極值: \[ \frac{ln(Pr(x | D))}{dx} = \frac{k+4}{x} - \frac{N-k+4}{1-x} = 0 \] 解出 \( \theta_{MAP} \) 也就是 x 的值: \[ \theta_{MAP} = x = \frac{k+4}{N+4+4} = \frac{16}{28} = 0.571 \] 這個結果與 MLE 的估計 0.6 更接近 0.5 ,也就是更接近我們設定的先驗機率。

當樣本越多時, MAP 會逼近 MLE

在上述例子中我們假設 Beta 分布的參數是 \( \alpha = \beta = 5\) ,而經過這次二十次硬幣的實驗以後我們可以更新參數為 \( \alpha = 17; \beta = 13\) 。而從上述式子可以看出當樣本非常多時,也就是 N 很大的時候, \( \theta_{MAP}\) 會逼近於 \( \frac{k}{N}\) ,也就是說 MAP 的結果會趨近於 MLE 的結果。從另一個方向想,當 N 很大的時候由於 MLE 與 MAP 的結果很接近,因此就不會有 overfitting 的問題了,這件事也符合我們機器學習的直覺。

共軛先驗 Conjugate Prior 的好處

  • 先驗機率與後驗機率會是同一種機率分布,可以直接 closed form 寫出後驗機率,否則只能用數值計算。
  • 當拿到新樣本時,可以直接拿前一次的後驗機率當成這一次的先驗機率。


參考資料

[1] http://leijun00.github.io/2015/09/parameter-estimation/

沒有留言:

張貼留言