損失函數 | 負對數似然

本文討論一種常見的損失函數,負對數似然函數。


損失函數是用來衡量模型好壞的一個標準,在機器學習裡,我們通常希望模型有比較小的loss,那麼該如何選擇我們的損失函數呢?最小化負的似然函數,借鑒瞭統計學的思想,是一種常見的損失函數。

Nagative Maximum Likehood

首先,假設我們有一堆的樣本點: D={(x_1,-1),(x_2,1),…,(x_N,-1)} ,我們希望我們訓練出來的模型能夠準確預測 x_i 的類別。通常來說,我們定義的模型都會對每個目標類別輸出一個概率值,所以,本質上,我們希望得到一個函數,它能告訴我們樣本 x_i 屬於+1的概率(或者屬於-1的概率,本質上是一樣的): f(x)=P(+1|x)

begin{split}P(y|x)=begin{cases} f(x) & text{for $y=+1$} \ 1-f(x) & text{for y=-1}end{cases}end{split} \

所以,我們的模型 h 產生樣本集 D 的概率有多大呢:

L=P(x_1)h(x_1)cdot P(x_2)(1-h(x_2))cdot …cdot P(x_N)(1-h(x_N)) \

如果我們的模型足夠好的話,那麼上面的似然函數的值會很大,我們現在需要在假設空間裡面,把最好的 h 給找出來,哪個 h 最好呢?就是使得 L 最大的那個模型咯。

L=P(x_1)h_1(x_1)cdot P(x_2)(1-h_1(x_2))cdot …cdot P(x_N)(1-h_1(x_N)) \

L=P(x_1)h_2(x_1)cdot P(x_2)(1-h_2(x_2))cdot …cdot P(x_N)(1-h_2(x_N)) \

… \

L=P(x_1)h_k(x1)cdot P(x_2)(1-h_k(x_2))cdot …cdot P(x_N)(1-h_k(x_N)) \

我們發現,對於不同的模型,都要乘上 P(x_1)P(x_2)…P(x_N) ,這對於我們比較不同模型的好壞,沒有幫助,所有我們可以把它略去。

所以,似然函數表達式變為:

L=h_k(x_1)cdot (1-h_k(x_2))cdot …cdot(1-h_k(x_N)) \

我們通常選擇sigmoid function當做 h ,本文最後會給出sigmoid function的性質。由於采用瞭sigmoid函數,似然函數表達式變為:

L=theta(x_1)cdot theta(-x_2)cdot …cdot theta(-x_N) \

進一步的可以寫成:

L=theta(y_1x_1)cdottheta(y_2x_2)cdot …cdot theta(y_Nx_N)=prod_{n=1}^Ntheta(y_nx_n) \

損失函數

對上述的似然函數取負數,再取log,可以得到最終的負對數似然損失函數:

MLE = frac{1}{N}sum_{n=1}^N-lntheta(y_nw^Tx_n)=frac{1}{N}sum_{n=1}^Nln(1+e^{-y_nw^Tx_n}) \

求導

sigmoid function

我們通常會選擇sigmoid function當做 h

函數特性

theta(s)=frac{e^s}{1+e^s}=frac{1}{1+e^{-s}} \

  • theta(-infty) =0;
  • theta(0)=frac{1}{2}
  • theta(+infty)=1
  • 連續、單調
  • theta(-s)=1-theta(s)

參考

[1]. 機器學習-損失函數

[2]. 林軒田 “機器學習基石”

赞(0)