從最大似然估計開始,你需要打下的機器學習基石

機器之心發表於2018-01-11

選自Medium

作者:Jonny Brooks-Bartlett

機器之心編譯

概率論是機器學習與深度學習的基礎知識,很多形式化的分析都是以概率的形式進行討論。而這些討論或多或少都離不開最大似然估計,因為它是引數估計的基礎之一,也是構建模型的基石。在本文中,我們從最大似然估計到貝葉斯推理詳細地討論了機器學習的概率論基石,並希望能為讀者的預習與複習提供優秀的參考資源。


什麼是引數?

在機器學習中,我們經常使用一個模型來描述生成觀察資料的過程。例如,我們可以使用一個隨機森林模型來分類客戶是否會取消訂閱服務(稱為流失建模),或者我們可以用線性模型根據公司的廣告支出來預測公司的收入(這是一個線性迴歸的例子)。每個模型都包含自己的一組引數,這些引數最終定義了模型本身。

我們可以把線性模型寫成 y = mx + c 的形式。在廣告預測收入的例子中,x 可以表示廣告支出,y 是產生的收入。m 和 c 則是這個模型的引數。這些引數的不同值將在座標平面上給出不同的直線(見下圖)。

從最大似然估計開始,你需要打下的機器學習基石

引數值不同的三個線性模型。

因此,引數為模型定義了一個藍圖。只有將引數選定為特定值時,才會給出一個描述給定現象的模型例項。


最大似然估計的直觀解釋

最大似然估計是一種確定模型引數值的方法。確定引數值的過程,是找到能最大化模型產生真實觀察資料可能性的那一組引數。

上述的定義可能聽起來還是有點模糊,那麼讓我們通過一個例子來幫助理解。

假設我們從某個過程中觀察了 10 個資料點。例如,每個資料點可以代表一個學生回答特定考試問題的時間長度(以秒為單位)。這 10 個資料點如下圖所示:

從最大似然估計開始,你需要打下的機器學習基石

我們觀察到的 10 個(假設的)資料點。


我們首先要決定哪個模型最適合描述生成資料的過程,這一步至關重要。至少,我們應該對使用哪種模型有一個不錯的想法。這個判斷通常來自於一些領域內專家,但我們不在這裡討論這個問題。

對於這些資料,我們假設資料生成過程可以用高斯分佈(正態分佈)進行充分描述。對以上數值目測一番就可以得知,高斯分佈是合理的,因為這 10 個點的大部分都集中在中間,而左邊和右邊的點都很少。(因為我們只使用了 10 個資料點,做出這樣的草率決定是不明智的,但考慮到我是用某個確定的分佈函式生成這些資料點,我們就湊合著用吧)。

回想一下高斯分佈有兩個引數:均值μ和標準差σ。這些引數的不同值會對應不同的曲線(就像上面的直線一樣)。我們想知道「哪條曲線最可能產生我們觀察到的資料點」?(見下圖)。用最大似然估計法,我們會找到與資料擬合得最好的 μ、σ 的值。

從最大似然估計開始,你需要打下的機器學習基石

10 個資料點和可能得出這些資料的高斯分佈。f_1 是均值為 10、方差為 2.25(方差等於標準偏差的平方)的正態分佈,也可以表示為 f_1∼N(10, 2.25)。其它曲線為 f_2∼N(10, 9)、f_3∼N(10, 0.25)、f_4∼N(8,2.25)。最大似然的目標是找到最有可能生成已知觀察資料分佈的引數值。

我生成這 10 個資料的真實分佈是 f_1~N(10, 2.25),也就是上圖中的藍色曲線。


計算最大似然估計

現在我們對最大似然估計有了直觀的理解,我們可以繼續學習如何計算引數值了。我們找到的引數值被稱為最大似然估計(maximum likelihood estimates,MLE)。

我們同樣將用一個例子來演示這個過程。假設這次有三個資料點,我們假設它們是從一個被高斯分佈充分描述的過程生成的。這些點是 9、9.5 和 11。那麼如何用最大似然估計逼近這個高斯分佈的引數 μ 和 σ 呢?

我們要計算的是同時觀察到所有這些資料的概率,也就是所有觀測資料點的聯合概率分佈。因此,我們需要計算一些可能很難算出來的條件概率。我們將在這裡做出第一個假設,假設每個資料點都是獨立於其他資料點生成的。這個假設能讓計算更容易些。如果事件(即生成資料的過程)是獨立的,那麼觀察所有資料的總概率就是單獨觀察到每個資料點的概率的乘積(即邊緣概率的乘積)。

從高斯分佈中生成的單個資料點 x 的(邊緣)概率是:

從最大似然估計開始,你需要打下的機器學習基石

在表示式 P(x; μ, σ) 中的分號是為了強調在分號後的符號都是概率分佈的引數。所以千萬不要把這個與條件概率相混淆。條件概率一般會用豎線來表達,比如說 P(A| B)。

在我們的例子中,同時觀察到這三個資料點的總(聯合)概率是:

從最大似然估計開始,你需要打下的機器學習基石

我們只要找出能夠讓上述表示式最大化的μ、σ值就可以了。

如果你在數學課上學過微積分,那麼你可能會意識到有一種技巧可以幫助我們找到函式的最大值(和最小值)。我們所要做的就是求出函式的導數,把導函式設為零然後重新變換方程,使其引數成為方程的未知數。然後就這樣,我們將得到引數的 MLE 值。我將串講一下這些步驟,但我假設讀者知道如何對常用函式進行微分。


對數似然函式

上述的總概率表示式實際上是很難微分,所以它幾乎總是通過對錶達式取自然對數進行簡化。這完全沒問題,因為自然對數是一個單調遞增的函式。這意味著,如果 x 軸上的值增加,y 軸上的值也會增加(見下圖)。這一點很重要,因為它確保了概率的最大對數值出現在與原始概率函式相同的點上。因此,我們可以用更簡單的對數概率來代替原來的概率。

從最大似然估計開始,你需要打下的機器學習基石

原函式的單調性,左邊是 y = x,右邊是(自然)對數函式 y = ln(x)。

從最大似然估計開始,你需要打下的機器學習基石

這是一個非單調函式的例子,因為從左至右 f(x) 會上升,然後下降,然後又上升。


取初始表示式的對數能得到:

從最大似然估計開始,你需要打下的機器學習基石

我們可以用對數的運演算法則再一次簡化這個表示式,得到:

從最大似然估計開始,你需要打下的機器學習基石

這個表示式可以通過求導得到最大值。在這個例子中,我們要找到平均值 μ。為此我們對函式求 μ 的偏導數,得到:

從最大似然估計開始,你需要打下的機器學習基石

最後,設定等式的左邊為零,然後以μ為未知數整理式子,可以得到:

從最大似然估計開始,你需要打下的機器學習基石

這樣我們就得到了 μ 的最大似然估計。我們可以用同樣的方法得到 σ 的最大似然估計,這留給有興趣的讀者自己練習。


最大似然估計小結


最大似然估計總是能精確地得到解嗎?

簡單來說,不能。更有可能的是,在真實的場景中,對數似然函式的導數仍然是難以解析的(也就是說,很難甚至不可能人工對函式求微分)。因此,一般採用期望最大化(EM)演算法等迭代方法為引數估計找到數值解,但總體思路還是一樣的。


為什麼叫「最大似然(最大可能性)」,而不是「最大概率」呢?

好吧,這只是統計學家們賣弄學問(但也是有充分的理由)。大多數人傾向於混用「概率」和「似然度」這兩個名詞,但統計學家和概率理論家都會區分這兩個概念。通過觀察這個等式,我們可以更好地明確這種混淆的原因。

從最大似然估計開始,你需要打下的機器學習基石

這兩個表示式是相等的!所以這是什麼意思?我們先來定義 P(data; μ, σ) 它的意思是「在模型引數μ、σ條件下,觀察到資料 data 的概率」。值得注意的是,我們可以將其推廣到任意數量的引數和任何分佈。

另一方面,L(μ, σ; data) 的意思是「我們在觀察到一組資料 data 之後,引數 μ、σ 取特定的值的似然度。」

上面的公式表示,給定引數後資料的概率等於給定資料後引數的似然度。但是,儘管這兩個值是相等的,但是似然度和概率從根本上是提出了兩個不同的問題——一個是關於資料的,另一個是關於引數值的。這就是為什麼這種方法被稱為最大似然法(極大可能性),而不是最大概率。


什麼時候最小二乘引數估計和最大似然估計結果相同?

最小二乘法是另一種常用的機器學習模型引數估計方法。結果表明,當模型向上述例子中一樣被假設為高斯分佈時,MLE 的估計等價於最小二乘法。

直覺上,我們可以通過理解兩種方法的目的來解釋這兩種方法之間的聯絡。對於最小二乘引數估計,我們想要找到最小化資料點和迴歸線之間距離平方之和的直線(見下圖)。在最大似然估計中,我們想要最大化資料同時出現的總概率。當待求分佈被假設為高斯分佈時,最大概率會在資料點接近平均值時找到。由於高斯分佈是對稱的,這等價於最小化資料點與平均值之間的距離。

從最大似然估計開始,你需要打下的機器學習基石

有隨機高斯噪聲的迴歸線


上一部分討論了機器學習和統計模型中引數估計的最大似然法。在下文我們將討論貝葉斯推理的引數估計,並解釋該方法如何可作為最大似然法的推廣,以及兩者等價的條件。

閱讀本文需要理解一些基本的概率論知識,例如邊緣概率和條件概率。此外,瞭解高斯分佈有助於理解,但並不是必要的。


貝葉斯定理

在介紹貝葉斯推理之前,理解貝葉斯定理是很有必要的。貝葉斯定理的意義在於使我們能利用已有的知識或信念(通常稱為先驗的)幫助計算相關事件的概率。例如,如果想知道在炎熱和晴朗的天氣中賣出冰淇淋的概率,貝葉斯定理可以使用「在其它型別天氣中可能賣出冰淇淋數量」的先驗知識。


數學定義

貝葉斯定理的數學定義如下:

從最大似然估計開始,你需要打下的機器學習基石

其中,A 和 B 是事件,P(A|B) 是給定事件 B 發生時,事件 A 發生的條件概率,P(B|A) 同理。P(A) 和 P(B) 分別是事件 A 和事件 B 的邊緣概率。


示例

假定一副撲克牌裡有 52 張牌,其中 26 張是紅色的,26 張是黑色的。那麼當牌是紅色的時候,牌上數字為 4 的概率是多少?

我們將牌為數字 4 設為事件 A,將牌為紅色設為事件 B。因此我們需要計算的概率是 P(A|B)=P(4|red),接下來,我們使用貝葉斯定理計算這個概率值:

1. P(B|A) = P(red|4) = 1/2

2. P(A) = P(4) = 4/52 = 1/13

3. P(B) = P(red) = 1/2

然後根據貝葉斯定理可得到:P(4|red)=P(red|4)·P(4)/P(red)=1/13。


為什麼貝葉斯定理能結合先驗信念?

僅僅看數學公式很難理解這一點。我們將再次借用冰淇淋和天氣的例子。

令 A 為賣出冰淇淋的事件,B 為天氣的事件。我們的問題是「給定天氣的型別,賣出冰淇淋的概率是多少?」用數學符號表示為 P(A=ice cream sale | B=type of weather)。

貝葉斯定理右邊的 P(A) 被稱為先驗概率。在我們的例子中即 P(A = ice cream sale) 是賣出冰淇淋的邊緣概率(其中天氣是任何型別)。一般而言,這個概率都是已知的,因此其被稱為先驗概率。例如我通過檢視資料瞭解到 100 個人中有 30 個買了冰淇淋,因此 P(A = ice cream sale)=30/100=0.3,而這都是在瞭解任何天氣的資訊之前知道的。

注意:先驗知識本身並不是完全客觀的,可能帶有主觀成分,甚至是完全的猜測。而這也會對最終的條件概率計算產生影響,我將在後面解釋。


貝葉斯推理


定義

首先,(統計)推理是從資料中推導群體分佈或概率分佈的性質的過程。最大似然法也是同樣的,如可以通過一系列的觀察資料點確定平均值的最大似然估計。

因此,貝葉斯推理不過是利用貝葉斯定理從資料中推導群體分佈或概率分佈的性質的過程。


使用貝葉斯定理處理資料分佈

以上例子使用的都是離散概率,有時可能需要使用連續的概率分佈。即賣出冰淇淋的概率可能不只是 0.3,還可能是 0.25 或 0.4 以及其它任何可能值,每個概率對應一個先驗信念,因而是一個函式 f(x),如下圖所示。該分佈被稱為先驗分佈(prior distribution)。

從最大似然估計開始,你需要打下的機器學習基石


上圖中的兩個分佈曲線都可以作為上述例子的先驗分佈,其中兩者的峰值都在 x=0.3 處。在 x≠0.3 處,f≠0,意味著我們並不完全確定 0.3 就是賣出冰淇淋的真實概率。藍線表示先驗概率的值更可能在 0-0.5 之間,而黃線表示先驗概率可能在 0-1 之間的任何值。相對而言,黃線表示的先驗分佈比藍線的「更加不確定」。

在處理模型的時候,大部分都需要用到概率分佈的形式。


貝葉斯定理的模型形式

模型形式的貝葉斯定理將使用不同的數學符號。

我們將用Θ取代事件 A。Θ是我們感興趣的事件,它代表了引數的集合。因此如果要估計高斯分佈的引數值,那麼Θ代表了平均值μ和標準差σ,用數學形式表示為Θ = {μ, σ}。

我們用 data 或 y={y1, y2, …, yn} 取代事件 B,它代表了觀察資料的集合。

從最大似然估計開始,你需要打下的機器學習基石

其中 P(Θ) 是先驗分佈,它代表了我們相信的引數值分佈,和上述例子中代表賣出冰淇淋的概率分佈類似。等式左邊的 P(Θ|data) 稱為後驗分佈,它代表利用觀察資料計算了等式右邊之後的引數值分佈。而 P(data| Θ) 和似然度分佈類似。

因此我們可以使用 P(data|Θ) 更新先驗信度以計算引數的後驗分佈。


等等,為什麼忽略了 P(data)?

因為我們只對引數的分佈感興趣,而 P(data) 對此並沒有任何參考價值。而 P(data) 的真正重要性在於它是一個歸一化常數,它確保了計算得到的後驗分佈的總和等於 1。

在某些情況下,我們並不關心歸一化,因此可以將貝葉斯定理寫成這樣的形式:

從最大似然估計開始,你需要打下的機器學習基石

其中 ∝ 表示符號左邊正比於符號右邊的表示式。


貝葉斯推斷示例

現在我們來展示一個貝葉斯推斷的示例。該示例要算出氫鍵鍵長。你無需知道什麼是氫鍵(hydrogen bond),我只是用它舉例。

從最大似然估計開始,你需要打下的機器學習基石

我用上圖因為它有助於拆分密集文字,且與我們要展示的示例有某種關聯。不要擔心,無需理解上圖也可以理解貝葉斯推斷。


假設氫鍵是 3.2Å—4.0Å。該資訊將構成我的先驗知識。就概率分佈而言,我將將其形式化為均值 μ = 3.6Å、標準差 σ = 0.2Å 的高斯分佈(見下圖)。

從最大似然估計開始,你需要打下的機器學習基石

氫鍵鍵長的先驗分佈


我們現在選取一些資料(由均值為 3Å 和標準差為 0.4Å 的高斯分佈隨機生成的 5 個資料點),代表了氫鍵的測量長度(圖 3 中的黃色點)。我們可以從這些資料點中推匯出似然度分佈,即下圖中黃色線表示的似然度分佈。注意從這 5 個資料點得到的最大似然度估計小於 3Å(大約 2.8Å)。

從最大似然估計開始,你需要打下的機器學習基石

氫鍵長度的先驗分佈(藍線),和由 5 個資料點匯出的似然度分佈(黃線)。


現在我們有兩個高斯分佈。由於忽略了歸一化常數,因此已經可以計算非歸一化的後驗分佈了。高斯分佈的一般定義如下:

從最大似然估計開始,你需要打下的機器學習基石

我們需要將上述的兩個分佈乘起來,然後得到下圖的粉線所示的後驗分佈。

從最大似然估計開始,你需要打下的機器學習基石

藍色分佈和黃色分佈的乘積得到粉色的後驗分佈。


現在我們得到了氫鍵鍵長的後驗分佈,可以從中推匯出統計特徵。例如,我們可以使用分佈的期望值估計鍵長,或者計算方差以量化對結果的不確定度。對後驗分佈的最常用的統計計算是眾數,它被用於估計感興趣引數的真實值。在這個例子中,後驗分佈是一個高斯分佈,因此平均值等於眾數(以及中位數),而氫鍵長度的 MAP 估計在分佈的峰值處,大約 3.2Å。


結語


為什麼我經常使用高斯分佈?

你將注意到在我所有涉及分佈的例項中,我使用了高斯分佈。其中一個原因是它使數學變的更容易。但是對貝葉斯推理例項來說,它需要計算 2 個分佈的乘積。此外,因為高斯分佈有一個特殊的屬性,使其易於計算分佈的乘積。對於高斯似然函式來說,高斯分佈與它自己共軛,因此如果我把一個高斯似然函式乘以一個高斯先驗分佈,我將得到一個高斯後驗函式。事實是後驗和先驗都來自相同的分佈族(均為高斯),這意味著它們可被稱為共軛分佈。在這種情況下,先驗分佈被稱為共軛先驗。

在很多推理情景中,似然和先驗被選擇,從而得到的分佈是共軛的,因為它使數學變的更簡單。資料科學中的一個例項是隱狄利克雷分配(LDA),它是一個無監督學習演算法,可以發現若干個文字文件(語料庫)中的主題。


當我們獲取新資料,會發生什麼?

貝葉斯推理的最大優勢之一是使用它無需有大量資料。事實上貝葉斯框架允許你有資料後實時、迭代地更新你的信念。其工作如下:你有一個關於什麼的先驗信念(比如引數值),接著你接收到一些資料。你可以通過計算後驗分佈更新你的信念,就像上面我們做的那樣。隨後,甚至有更多的資料進來。因此我們的後驗成為新的先驗。我們可以通過從新資料中獲得的似然更新的新的先驗,並再次獲得一個新後驗。這一迴圈可無限持續,因此你可以不斷更新你的信念。

卡爾曼過濾器(及其變體)是很好的一個例項。它在很多場景中使用,可能資料科學中最醒目就是其在自動駕駛汽車上的應用。在我的數學蛋白質晶體學博士學位期間,我曾使用一種名為 Unscented 卡爾曼過濾器的變體,併為實現它們的開源軟體包做出了貢獻。為了更好地視覺描述卡爾曼過濾器,請檢視 Tim Babb 的這篇文章:www.bzarg.com/p/how-a-kal…


把先驗用作 regulariser

我們在上述氫鍵長度例項中產生的資料表明,2.8Å是最佳估計。但是,如果我們的估計只依據資料,則存在過擬合的風險。如果資料收集過程出現差錯,這將是一個嚴重的問題。我們可以在貝葉斯框架中使用先驗解決這一問題。在我們的例項中,使用一個以 3.6Å為中心的高斯先驗得到了一個後驗分佈,給出的氫鍵長度的 MAP 估計為 3.2Å。這表明我們的先驗在估計引數值時可以作為 regulariser。

先驗與似然上的權重數量取決於兩個分佈之間的相對不確定性。在下圖中我們可以看到這一點。顏色與上面一樣,藍色表徵先驗分佈,黃色表徵似然分佈,粉紅表徵後驗分佈。左圖中我們看到藍線不如黃線那麼延展。因此後驗要遠比似然更相似於先驗。右圖中則情況相反。

從最大似然估計開始,你需要打下的機器學習基石

因此如果我們願意增加引數的正則化,我們可以選擇縮小與似然性相關的先驗分佈。


什麼時候 MAP 估計與最大似然估計相等?

當先驗分佈均勻之時,MAP 估計與 MLE 相等。下圖是均勻分佈的一個例項。

從最大似然估計開始,你需要打下的機器學習基石

均勻分佈


我們可以看到均勻分佈給 X 軸(水平線)上的每個值分佈相同的權重。直觀講,它表徵了最有可能值的任何先驗知識的匱乏。在這一情況中,所有權重分配到似然函式,因此當我們把先驗與似然相乘,由此得到的後驗極其類似於似然。因此,最大似然方法可被看作一種特殊的 MAP。

從最大似然估計開始,你需要打下的機器學習基石


本文為機器之心編譯,轉載請聯絡本公眾號獲得授權。


相關文章