回覆列表
  • 1 # 機器之心Pro

    在這篇文章中,我將解釋引數估計的最大似然法是什麼,並透過一個簡單的例子來演示該方法。有些內容需要理解基本的機率論的概念,比如聯合機率和事件的獨立性等定義。我寫了一篇部落格文章介紹了這些基本概念,所以如果你認為你需要複習一下的話,儘管點選閱讀吧。(連結:https://medium.com/@jonnybrooks04/probability-concepts-explained-introduction-a7c0316de465)

    什麼是引數?

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

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

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

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

    最大似然估計的直觀解釋

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

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

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

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

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

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

    10 個數據點和可能得出這些資料的高斯分佈。f1 是正態分佈,均值為 10、方差為 2.25(方差等於標準偏差的平方),這也可以表示為 f1∼N(10, 2.25)。f2∼N(10, 9),f3∼N(10, 0.25),而 f4∼N(8,2.25)。最大似然的目標是找到最有可能觀察到已知資料的分佈的引數值。

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

    計算最大似然估計

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

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

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

    從高斯分佈中生成的單個數據點x的(邊緣)機率是:

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

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

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

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

    對數似然函式

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

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

    這是一個非單調函式的例子,因為當你在圖上從左到右考察,f(x) 的值會上升,然後下降,然後又上升。

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

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

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

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

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

    結束語

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

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

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

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

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

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

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

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

    最小二乘法是另一種常用的機器學習模型引數估計方法。結果表明,當模型向上述例子中一樣被假設為高斯分佈時,MLE 的估計等價於最小二乘法。對於更深入的數學推導,請參閱這些幻燈片。(連結:https://web.archive.org/web/20111202153913/http:/www.cs.cmu.edu/~epxing/Class/10701/recitation/recitation3.pdf)

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

    有隨機高斯噪聲的資料點的迴歸線

  • 2 # 皮皮魯的科技星球

    我的結論:最大似然估計需要一個似然函式來描述在不同模型引數下真實資料發生的機率,似然函式是關於模型引數的函式。最大似然估計就是尋找最優引數,使得觀測資料發生的機率最大、統計模型與真實資料最相似。

    我們以一個賭博的例子來模擬機器學習的機率推理過程。假如你參與了一場賭博,你會被告知一個硬幣拋擲10次的正反情況,接下來由你下注,而你只有一次機會,猜對硬幣下一次正反情況則贏得100元,猜錯則損失100元。這時,你會如何決策?

    一般地,硬幣有正反兩面,如果硬幣正反兩面是均勻的,即每次拋擲後硬幣為正的機率是0.5。使用這個硬幣,很可能拋10次,有5次是正面。但是假如有人對硬幣做了手腳,比如提前對硬幣做了修改,硬幣每次都會正面朝上,現在拋10次,10次都是正面,那麼下次你絕對不會猜它是反面,因為前面的10次結果擺在那裡,直覺上你不會相信這是一個普通的硬幣。現在有一人拋了10次硬幣,得到6正4反的結果,如何估算下次硬幣為正的機率呢?

    因為硬幣並不是我們製作的,我們不瞭解硬幣是否是完全均勻的,只能根據現在的觀察結果來反推硬幣的情況。假設硬幣上有個引數θ,它決定了硬幣的正反均勻程度,θ = 0.5表示正反均勻,每次拋硬幣為正的機率為0.5,θ = 1表示硬幣只有正面,每次拋硬幣為正的機率為1。那麼,從觀察到的正反結果,反推硬幣的構造引數θ的過程,就是一個引數估計的過程。

    機率

    拋擲10次硬幣可能出現不同的情況,可以是“5正5反”、“4正6反”,“10正0反”等。假如我們知道硬幣是如何構造的,即已知硬幣的引數θ,那麼出現“6正4反”的機率為:

    公式 1

    公式1是機率函式,表示已知引數θ,事實“6正4反”發生的機率。引數θ取不同的值時,事情發生的機率不同。機率(Probability)函式一般用P或Pr表示。 上述過程中,拋10次硬幣,要選出6次正面,使用了排列組合。因為“6正4反”可能會出現“正正正正正正反反反反、正正正正正反正反反反、正正正正反正正反反反”等共210種組合,要在10次中選出6次為正面。假如每次正面的機率是0.6,那麼反面的機率就是(1-0.6)。每次拋擲硬幣的動作是相互獨立,互不影響的,“6正4反”發生的機率就是各次拋擲硬幣的機率乘積,再乘以210種組合。 機率反映的是:已知背後原因,推測某個結果發生的機率。

    似然

    與機率不同,似然反映的是:已知結果,反推原因。具體而言,似然(Likelihood)函式表示的是基於觀察的資料,取不同的引數θ時,統計模型以多大的可能性接近真實觀察資料。這就很像開篇提到的賭局,已經給你了一系列硬幣正反情況,但你並不知道硬幣的構造,下次下注時你要根據已有事實,反推硬幣的構造。例如,當觀察到硬幣“10正0反”的事實,猜測硬幣極有可能每次都是正面;當觀察到硬幣“6正4反”的事實,猜測硬幣有可能不是正反均勻的,每次出現正面的可能性是0.6。

    似然函式與前面的機率函式的計算方式極其相似,與機率函式不同的是,似然函式是θ的函式,即θ是未知的。似然函式衡量的是在不同引數θ下,真實觀察資料發生的可能性。似然函式通常是多個觀測資料發生的機率的聯合機率,即多個觀測資料都發生的機率。單個觀測資料發生的可能性為P(θ),如果各個觀測之間是相互獨立的,那麼多個觀測資料都發生的機率可表示為各個樣本發生的機率的乘積。這裡稍微解釋一下事件獨立性與聯合機率之間的關係。如果事件A和事件B相互獨立,那麼事件A和B同時發生的機率是A發生的機率 * B發生的機率。例如,事件“下雨”與事件“地面溼”就不是相互獨立的,“下雨”與"地面溼"是同時發生、高度相關的,這兩個事件都發生的機率就不能用單個事件的乘積來表示。兩次拋擲硬幣相互之間不影響,因此硬幣正面朝上的機率可以用各次機率的乘積來表示。

    似然函式通常用L表示。觀察到拋硬幣“6正4反”的事實,硬幣引數θ取不同值時,似然函式表示為:

    公式 2

    公式2的圖形如下圖所示。從圖中可以看出:引數θ為0.6時,似然函式最大,引數為其他值時,“6正4反”發生的機率都相對更小。在這個賭局中,我會猜測下次硬幣為正,因為根據已有觀察,硬幣很可能以0.6的機率為正。

    最大似然估計

    理解了似然函式的含義,就很容易理解最大似然估計的機制。似然函式是關於統計模型引數的函式,是描述觀察到的真實資料在不同引數下發生的機率。最大似然估計要尋找最優引數,讓似然函式最大化。或者說,使用最優引數時觀測資料發生的機率最大。

  • 中秋節和大豐收的關聯?
  • 為什麼有的女生喜歡養大型犬?