Maximize Likelihood Estimation 理論篇

Maximize Likelihood Estimation 理論篇

Maximize Likelihood Estimation(MLE) 定義了一種尋找最佳模型(model) 的手段。這也是最早出現的深度學習方法之一。即使最近強化學習(reinforcement learning)以及對抗式生成網路(generative adversarial network)的優秀表現好像搶過了MLE這位前輩的風采,時至今日MLE還是非常泛用。甚至在特定議題上仍然只能用MLE做出當代最佳(state of the art)的結果。MLE也是相對容易學習的,下面我將會介紹MLE的核心命題是什麼,什麼場合下可以使用MLE,以及MLE、KL散度(KL divergence)及交叉熵(cross-entropy) 的關係。

MLE的核心命題?

字面上的意思就是最大化輸出與正解之間的相似度。假設正解的維度為$i$,令正解為$p_i$、輸出為$q_i$,寫作下式一:

$ Likelihood=P(q_i| p_i) = \Sigma_i p_i \cdot q_i $ (1)

其意思也可以說是當$p_i$成立時,$q_i$也成立的機率。假設$q_i$是某個機器模型算出來的,接著我們可以用隨機梯度法更新模型參數。由於我們不可能窮舉所有的正解來計算似然度(Likelihood),所以我們只能舉幾個例子作為「估算」,這也是名字裡有個Estimation的由來。

Maximize Log Likelihood 就是 Minimize Cross-entropy

若以最大化似然度作為目標,則微分的時候會遇到一個小問題,且聽我娓娓道來。似然度的微分形式如下式二:

$ \nabla_\theta Likelihood=\nabla_\theta P(q_i| p_i) = \Sigma_i p_i \cdot \nabla_\theta q_i $ (2)

讀者發現了嗎?$p_i$越大的類別,其梯度越大,參數也更新得越快。這個問題在更新的後期特別嚴重。使得模型總是重視機率比較大的類別,不利於在更新後期持續優化精準度。為了避免這樣的問題,我們要想辦法令梯度除以一個很小的數,最好就是$q_i$本身。所以我們把log套在似然度上(式三),然後再次計算梯度(式四):

$ LogLikelihood=P(log(q_i)| p_i) = \Sigma_i p_i \cdot log(q_i) $ (3)

$ \nabla_\theta LogLikelihood=\nabla_\theta P(log(q_i)| p_i) = \Sigma_i \frac{p_i}{q_i} \cdot \nabla_\theta q_i $ (4)

這個新的量我們稱之為對數似然度(Log Likelihood)。整個流程也跟著改叫最大化對數似然度(Maximize Log Likelihood)。正巧,「最大化對數似然度」與「最小化交叉熵」的數學描述相同。交叉熵的算法如式五:

$ Crossentropy = -\Sigma_i p_i \cdot log(q_i) $ (5)

疑,這不是差了一個負號嗎?別急,交叉熵是指「猜錯答案且令人驚訝的程度」,所以我們要希望交叉熵越小越好。其微分形式寫作式六:

$ \nabla_\theta Crossentropy
= – \Sigma_i \frac{p_i}{q_i} \cdot \nabla_\theta q_i = – \nabla_\theta LogLikelihood $ (6)

至此,我們初步得證最大化對數似然度(Maximize Log Likelihood)就是最小化交叉熵(Minimize Cross-entropy)。還記得也有一個很常用來評估預測與現實的差距的指標KL Divergence,其數學寫作式七:

$ Divergence_{KL} = H(\vec p,\vec q) – H(\vec p) $ (7)
where $H(\vec{p}, \vec{q})$ is cross-entropy, $H(\vec{p})$ is entropy.

KL Divergence的意義是跟真實機率相比,猜錯答案且令人驚訝的程度多了多少。由於熵(entropy)與模型無關,所以對參數微分後必定為零。其微分後的樣子跟交叉熵微分後的樣子一模一樣,寫作式八:

$ \nabla_\theta Divergence_{KL}
= – \Sigma_i \frac{p_i}{q_i} \cdot \nabla_\theta q_i
= \nabla_\theta Crossentropy
= – \nabla_\theta LogLikelihood $ (8)

又因為「最小化交叉熵」與「最小化KL Divergence」是同一件事。綜合起來看,這三個名稱通通指向同樣的做法。預祝讀者在未來讀到其中一個名稱的時候,可以觸類旁通、舉一反三。

什麼時候可以用MLE

大部分命題都可以用MLE更新參數,無論是監督式學習(supervised learning)或是非監督式(unsupervised learning)。監督式學習通常會有一組問題以及一組解答,我們將模型的輸出與解答一比,就可以估算輸出與解答之間的似然度。若是非監督式學習,那麼方法就比較多樣了。舉兩個我比較熟悉的例子,第一個是自編碼器(auto-encoder),其模型的核心命題是把輸入的資料壓縮成一串代碼後復原,如圖一。該類模型可以用在圖片生成上,只要把負責代碼復原的後半段取出來即可。第二個例子是自然語言生成(natural language generation)。其核心命題是輸入第一到第t個字,請模型輸出第t+1個字,如圖二。透過這兩個例子我們發現,非監督式學習通常都是在做自我還原。因此模型的解答通常是輸入的一部分或是本身。如此一來我們也能估算輸出與解答之間的似然度。

圖一:自編碼器示意圖
圖二:自然語言模型示意圖

小結

本篇介紹了MLE的數學理論基礎、可以應用的範圍、以及相關統計名詞的介紹。下篇實作篇我將會用MNIST示範如何用MLE來更新模型。


所有文章分類

訂閱我吧

不再錯過每一篇新文章

*

Yi-Lung Chiu