B站影片講解:

https://

b23。tv/av54346038

jupyter-notebook原始碼:

https://

github。com/aespresso/a_

journey_into_math_of_ml

極大似然估計

是神經網路和很多複雜模型得以最佳化求解的理論基礎, 我們今天來學習並試著深入理解極大似然估計的原理和推導, 最後我們對極大似然估計進行3D視覺化, 建立一種直觀的認識。

要理解

極大似然估計

是什麼, 首先要明白

機率密度(質量)函式

是什麼, 如果你不知道的話, 那就簡短解釋一下:

機率密度函

數用來描述某個隨機變數取某個值的時候,取值點所對應的的機率

(probability)

的函式, 舉個例子, 我們現在有一個機率分佈, 屬於正態分佈:

X \sim N(\mu,\sigma^2), \quad  f(x;\mu,\sigma)=\frac{1}{\sigma\sqrt{2\pi}} \, \exp \left( -\frac{(x- \mu)^2}{2\sigma^2} \right)

其中

\mu

是均值,

\sigma

是標準差。 如果你不熟悉正態分佈, 我們簡單回顧一下

\mu

指的是均值, 在下圖中, 均值是0則正態分佈的機率在均值處機率最高, 以均值為中心兩邊是對稱的,

\sigma

是標準差, 標準差控制著機率分佈偏離均值的程度, 標準差越大機率分佈越扁平, 越小的話, 機率分佈越集中於均值, 大家可以下載python原始碼進行試驗。

我們另有一個

資料點

, 是一個

隨機變數

, 取

2.5

, 我們將

x=2.5

代入

f(x;\mu=5,\sigma=2)

得出下圖出中

綠色直線

所對應的

y

軸的長度, 也就是得到了

P(x=2.5 \mid \mu=5, \sigma=2)

, 這是一個

條件機率

, 指的是給定機率分佈的的引數

(\mu, \ \sigma)

的情況下,

x=2.5

的機率是多少。

draw_likelihood

([

2。5

],

mu

=

0

sigma

=

2

極大似然估計(MLE)推導與3D視覺化

上圖的意義為

x=2.5

在上面定義的正態分佈中的機率, 也就是給定一個機率分佈, 隨機變數在這個機率分佈中出現的可能性, 而

f(x;\mu,\sigma)=\frac{1}{\sigma\sqrt{2\pi}} \, \exp \left( -\frac{(x- \mu)^2}{2\sigma^2} \right)

就是機率密度函式。

機率質量函式是離散的, 機率密度函式是連續的, 意義相同, 為了視覺化的方便, 今天用機率密度函式來講解極大似然估計。

機率和似然的區別

機率

,是在已知一些機率分佈引數的情況下,預測觀測的結果;

似然

則是用於在已知某些觀測所得到的結果時,對觀測結果所屬於的的機率分佈的引數進行估計。

極大似然估計

的目的在於找到一個最符合當前觀測資料的機率分佈。

我們先理解似然函式是什麼

例如下面兩圖中:

紅色圓點

指的是觀測到的隨機變數,

藍色的線

是機率密度函式的影象,

綠色的直線的長度

指的是是觀測的資料出現在當前機率分佈中的可能性, 也就是機率, 機率是介於

[0,1]

之間的實數, 我們用

P(x \mid \mu,\sigma)

來表示綠色線的長度, 也就是機率。

極大似然估計(MLE)推導與3D視覺化

極大似然估計(MLE)推導與3D視覺化

我們假設有一組觀測到的資料, 一共有

N

個,

X_{observation} = \{ x_1, x_2, ... , x_N\}

, 我們推斷這一組資料屬於一個機率分佈, 是一個正態分佈, 它的機率密度函式為

f(x;\mu,\sigma)

, 我們將

X_{observation}

裡的資料點帶入到

f(x;\mu,\sigma)

裡, 得到每個資料點在我們假設的機率分佈中的出現的可能性, 注意我們接下來簡寫

X_{observation}

X

P(x_1 \mid \mu,\sigma), \,P(x_2 \mid \mu,\sigma)\, , ... \, ,\,P(x_N \mid \mu,\sigma)

那麼這一組資料

X_{observation} = \{ x_1, x_2, ... , x_N\}

在假設的機率分佈中的出現的可能性就是他們機率的乘積:

L(\mu ,\sigma \mid X)=P(X \mid \mu ,\sigma)=\prod _{i=1}^{N}P(x_{i}\mid \mu,\sigma)

上式中, 我們用

L(\mu ,\sigma \mid X)

來表示似然函式, 意義為已知觀測到的資料點

X

, 用似然函式

L(\mu ,\sigma \mid X)

來估計引數

\mu ,\sigma

的可能性, 由此可見,似然函式也是一種

條件機率函式

,但我們關注的變數改變了。

從上面兩圖可得, 上圖圖中所假設的機率分佈求出的似然函式取值顯然比下面的小, 因為有很接近於

0

的數值, 這讓似然函式乘積的結果變得非常小。 我們可以得出結論, 下圖的機率分佈引數更符合觀測到的資料點的機率分佈,而

最大似然估計

的目的就是找到一個最符合當前資料的分佈的引數。

我們做個試驗, 先從均值為

0

, 標準差為

4

正態分佈中隨機抽取

200

個數據點, 作為我們觀測到的資料;

之後我們定義一個估計引數的取值範圍, 均值在

(-0.5, 0.5)

之間, 標準差在

(3.5, 4.5)

之間;

然後我們將所有的資料點和我們估計的每一組引數代入似然函式, 也就是

L(\mu ,\sigma \mid X)=\prod _{i=1}^{N}P(x_{i}\mid \mu,\sigma)

中, 求得每一組引數的似然值, 下圖可見, 似然函式的值約在

\mu=0, \ \sigma=4

時取得極大值(因為資料點太少有些誤差);

我們發現似然函式的影象是凸函式, 我們就可以用很多最佳化的方法求它的極大值了。

找到似然函式極大值的過程就是極大似然估計的過程。

極大似然估計(MLE)推導與3D視覺化

對數似然值

(log \ likelihood)

, 我們對似然函式取

\log

, 就得到了對數似然函式, 這也是平時在神經網路最佳化中最常用的損失函式:

\mathcal {L}(\mu ,\sigma \mid X)=\sum _{i=1}^{N}\log P(x_{i}\mid \mu,\sigma)

為什麼要對似然函式取對數?

1。 首先原本的似然函式是很多條件機率的乘積, 我們在找極大值的時候需要求似然函式的導數, 而乘積的導數不方便計算, 取對數可以吧乘除變成加減;

2。 對似然函式取對數, 原本函式的極大值的位置沒有改變;

3。 如果觀測到的資料點比較多, 原始似然函式的乘積可能非常接近於

0

, 甚至超出計算機的儲存位數限制, 這樣就全變成

0

了, 取對數可以把接近於

0

的數變成很大的負數, 也就是把原本似然函式的取值範圍從

0

1

擴充套件到了

-\infty

0

, 方便了計算。

我們下面對

log \ likelihood

進行3D視覺化, 可看到原始的似然函式和對數似然函式的最高點是一樣的位置, 而且函式的影象變得更加平滑, 而且輸出的數值也不那麼接近於

0

了:

極大似然估計(MLE)推導與3D視覺化