原文鏈接: https://lulaoshi.info/machine-learning/linear-model/maximum-likelihood-estimation
前文 從線性回歸走進機器學習 介紹了線性回歸以及最小二乘法的數學推導過程。
對於一組訓練數據,使用線性回歸建模,可以有不同的模型參數來描述數據,這時候可以用最小二乘法來選擇最優參數來擬合訓練數據,即使用誤差的平方作為損失函數。
機器學習求解參數的過程被稱為參數估計,機器學習問題也變成求使損失函數最小的最優化問題。
最小二乘法比較直觀,很容易解釋,但不具有普遍意義,對於更多其他機器學習問題,比如二分類和多分類問題,最小二乘法就難以派上用場了。本文將給大家介紹一個具有普遍意義的參數估計方法:最大似然估計
。
概率和似然
下面以一個猜硬幣的例子來模擬機器學習的概率推理過程。
假設你被告知一個硬幣拋擲10次的正反情況,接下來由你來猜,而你只有一次機會,猜對硬幣下一次正反情況則贏得100元,猜錯則損失100元。
這時,你會如何決策?
一般地,硬幣有正反兩面,如果硬幣正反兩面是均勻的,即每次拋擲后硬幣為正的概率是0.5。使用這個硬幣,很可能拋10次,有5次是正面。
但是假如有人對硬幣做了手腳,比如提前對硬幣做了修改,硬幣每次都會正面朝上,現在拋10次,10次都是正面,那么下次你絕對不會猜它是反面,因為前面的10次結果擺在那里,直覺上你不會相信這是一個普通的硬幣。
現在有一人拋了10次硬幣,得到6正4反的結果,如何估算下次硬幣為正的概率呢?
因為硬幣並不是我們制作的,我們不了解硬幣是否是完全均勻的,只能根據現在的觀察結果來反推硬幣的情況。
假設硬幣上有個參數θ
,它決定了硬幣的正反均勻程度,θ=0.5
表示正反均勻,每次拋硬幣為正的概率為0.5,θ=1.0
表示硬幣只有正面,每次拋硬幣為正的概率為1。
那么,從觀察到的正反結果,反推硬幣的構造參數θ
的過程,就是一個參數估計的過程。
概率
拋擲10次硬幣可能出現不同的情況,可以是“5正5反”、“4正6反”,“10正0反”等。
假如我們知道硬幣是如何構造的,即已知硬幣的參數\(\theta\),那么出現“6正4反”的概率為:
詳細解釋:
-
上面這個公式是概率函數,表示已知參數\(\theta\),事實“6正4反”發生的概率。
-
參數\(\theta\)取不同的值時,事情發生的概率不同。在數學上一般使用\(P\)或\(Pr\)表示概率(Probability)函數。
-
上述過程中,拋10次硬幣,要選出6次正面,使用了排列組合。因為“6正4反”可能會出現
正正正正正正反反反反
、正正正正正反正反反反
、正正正正反正正反反反
等共210種組合,要在10次中選出6次為正面。假如每次正面的概率是0.6,那么反面的概率就是(1-0.6)。每次拋擲硬幣的動作是相互獨立,互不影響的,“6正4反”發生的概率就是各次拋擲硬幣的概率乘積,再乘以210種組合。
概率反映的是:已知背后原因,推測某個結果發生的概率。
似然
與概率不同,似然反映的是:已知結果,反推原因。
具體而言,似然(Likelihood
)函數表示的是基於觀察的數據,取不同的參數\(\theta\)時,統計模型以多大的可能性接近真實觀察數據。
這就很像前面舉的例子,已經給你了一系列硬幣正反情況,但你並不知道硬幣的構造,下次下注時你要根據已有事實,反推硬幣的構造。
例如,當觀察到硬幣“10正0反”的事實,猜測硬幣極有可能每次都是正面;當觀察到硬幣“6正4反”的事實,猜測硬幣有可能不是正反均勻的,每次出現正面的可能性是0.6。
似然函數與前面的概率函數的計算方式極其相似,與概率函數不同的是,似然函數是\(\theta\)的函數,即\(\theta\)是未知的。
似然函數衡量的是在不同參數\(\theta\)下,真實觀察數據發生的可能性。
似然函數通常是多個觀測數據發生的概率的聯合概率,即多個觀測數據都發生的概率。
在機器學習里可以這樣理解,目標\(y\)和特征\(\boldsymbol{x}\)同時發生,這些數值被觀測到的概率。
單個觀測數據發生的可能性為\(P(\theta)\),如果各個觀測之間是相互獨立的,那么多個觀測數據都發生的概率可表示為各個樣本發生的概率的乘積。
這里稍微解釋一下事件獨立性與聯合概率之間的關系。
如果事件A和事件B相互獨立,那么事件A和B同時發生的概率是 $ P(A) \times P(B)$ 。
例如:
- 事件“下雨”與事件“地面濕”就不是相互獨立的,“下雨”與"地面濕"是同時發生、高度相關的,這兩個事件都發生的概率就不能用概率的乘積來表示。
- 兩次拋擲硬幣相互之間不影響,因此硬幣正面朝上的概率可以用各次概率的乘積來表示。
似然函數通常用\(L\)表示,對應英文Likelihood
。觀察到拋硬幣“6正4反”的事實,硬幣參數\(\theta\)取不同值時,似然函數表示為:
這個公式的圖形如下圖所示。
從圖中可以看出:參數\(\theta\)為0.6時,似然函數最大,參數為其他值時,“6正4反”發生的概率都相對更小。
所以猜測下次硬幣為正,因為根據已有觀察,硬幣很可能以0.6的概率為正。
推廣到更為一般的場景,似然函數的一般形式可以用下面公式來表示,也就是之前提到的,各個樣本發生的概率的乘積。
最大似然估計
理解了似然函數的含義,就很容易理解最大似然估計的機制。
似然函數是關於模型參數的函數,是描述觀察到的真實數據在不同參數下發生的概率。
最大似然估計要尋找最優參數,讓似然函數最大化。或者說,使用最優參數時觀測數據發生的概率最大。
線性回歸的最大似然估計
之前的文章提到,線性回歸的誤差項\(ε\)是預測值與真實值之間的差異,如下面公式所示。它可能是一些隨機噪音,也可能是線性回歸模型沒考慮到的一些其他影響因素。
線性回歸的一大假設是:誤差服從均值為0的正態分布,且多個觀測數據之間互不影響,相互獨立。正態分布(高斯分布)的概率密度公式如下面公式,根據正態分布的公式,可以得到\(\epsilon\)的概率密度。
假設\(x\)服從正態分布,它的均值為\(\mu\),方差為\(\sigma\),它的概率密度公式如下。公式左側的\(P(x ; \mu, \sigma)\)表示\(x\)是隨機變量,\(;\)分號強調\(\mu\)和\(\sigma\)不是隨機變量,而是這個概率密度函數的參數。條件概率函數中使用的\(|\)豎線有明確的意義,\(P(y|x)\)表示給定\(x\)(Given \(x\)),\(y\)發生的概率(Probability of \(y\))。
既然誤差項服從正態分布,那么:
由於\(\epsilon^{(i)} = y^{(i)} - \boldsymbol{w}^\top \boldsymbol{x}^{(i)}\),並取均值\(\mu\)為0,可得到:
上式表示給定\(\boldsymbol{x}^{(i)}\),\(y^{(i)}\)的概率分布。\(\boldsymbol{w}\)並不是隨機變量,而是一個參數,所以用\(;\)分號隔開。或者說\(\boldsymbol{w}\)和\(\boldsymbol{x}^{(i)}\)不是同一類變量,需要分開單獨理解。\(P(y^{(i)}|\boldsymbol{x}^{(i)}, \boldsymbol{w})\)則有完全不同的意義,表示\(\boldsymbol{x}^{(i)}\)和\(\boldsymbol{w}\)同時發生時,\(y^{(i)}\)的概率分布。
前文提到,似然函數是所觀察到的各個樣本發生的概率的乘積。一組樣本有\(m\)個觀測數據,其中單個觀測數據發生的概率為剛剛得到的公式,\(m\)個觀測數據的乘積如下所示。
最終,似然函數可以表示成:
其中,\(\boldsymbol{x}^{(i)}\)和\(y^{(i)}\)都是觀測到的真實數據,是已知的,\(\boldsymbol{w}\)是需要去求解的模型參數。
給定一組觀測數據\(\boldsymbol{X}\)和\(\boldsymbol{y}\),如何選擇參數\(\boldsymbol{w}\)來使模型達到最優的效果?最大似然估計法告訴我們應該選擇一個\(\boldsymbol{w}\),使得似然函數\(L\)最大。\(L\)中的乘積符號和\(\exp\)運算看起來就非常復雜,直接用\(L\)來計算十分不太方便,於是統計學家在原來的似然函數基礎上,取了\(\log\)對數。\(\log\)的一些性質能大大化簡計算復雜程度,且對原來的似然函數增加\(\log\)對數並不影響參數\(w\)的最優值。通常使用花體的\(\ell\)來表示損失函數的對數似然函數。
上面的推導過程主要利用了下面兩個公式:
由於\(\log\)對數可以把乘法轉換為加法,似然函數中的乘積項變成了求和項。又因為\(\log\)對數可以消去冪,最終可以得到上述結果。
由於我們只關心參數\(\boldsymbol{w}\)取何值時,似然函數最大,標准差\(\sigma\)並不會影響\(\boldsymbol{w}\)取何值時似然函數最大,所以可以忽略掉帶有標准差\(\sigma\)的項\(m\log{\frac{1}{\sqrt{2 \pi \sigma^2}}}\)。再在\(-\frac{1}{2 \sigma^2}\sum_{i=1}^{m}(y^{(i)} - \boldsymbol{w}^\top \boldsymbol{x}^{(i)})^2\)加個負號,負負得正,原來似然函數\(\ell\)最大化問題就變成了最小化問題,其實最后還是最小化:
這與最小二乘法所優化的損失函數幾乎一樣,都是“真實值 - 預測值”的平方和,可以說是殊途同歸。
最小二乘與最大似然
前面的推導中發現,最小二乘與最大似然的公式幾乎一樣。直觀上來說,最小二乘法是在尋找觀測數據與回歸超平面之間的誤差距離最小的參數。最大似然估計是最大化觀測數據發生的概率。當我們假設誤差是正態分布的,所有誤差項越接近均值0,概率越大。正態分布是在均值兩側對稱的,誤差項接近均值的過程等同於距離最小化的過程。
總結
最大似然估計是機器學習中最常用的參數估計方法之一,邏輯回歸、深度神經網絡等模型都會使用最大似然估計。我們需要一個似然函數來描述真實數據在不同模型參數下發生的概率,似然函數是關於模型參數的函數。最大似然估計就是尋找最優參數,使得觀測數據發生的概率最大、統計模型與真實數據最相似。