Deep Learning基礎--各個損失函數的總結與比較

損失函數(loss function)是用來估量你模型的預測值f(x)與真實值Y的不一致程度,它是一個非負實值函數,一般使用L(Y, f(x))來表示,損失函數越小,模型的魯棒性就越好。損失函數是經驗風險函數的核心部分,也是結構風險函數重要組成部分。模型的結構風險函數包括了經驗風險項和正則項,一般能夠表示成以下式子:html

 

θ=argminθ1Ni=1NL(yi,f(xi;θ))+λ Φ(θ)θ∗=arg⁡minθ1N∑i=1NL(yi,f(xi;θ))+λ Φ(θ)

 

其中,前面的均值函數表示的是經驗風險函數,L表明的是損失函數,後面的ΦΦ是正則化項(regularizer)或者叫懲罰項(penalty term),它能夠是L1,也能夠是L2,或者其餘的正則函數。整個式子表示的意思是找到使目標函數最小時的θθ值。下面主要列出幾種常見的損失函數。git

1、log對數損失函數(邏輯迴歸)

有些人可能以爲邏輯迴歸的損失函數就是平方損失,其實並非。平方損失函數能夠經過線性迴歸在假設樣本是高斯分佈的條件下推導獲得,而邏輯迴歸獲得的並非平方損失。在邏輯迴歸的推導中,它假設樣本服從伯努利分佈(0-1分佈),而後求得知足該分佈的似然函數,接着取對數求極值等等。而邏輯迴歸並無求似然函數的極值,而是把極大化當作是一種思想,進而推導出它的經驗風險函數爲:最小化負的似然函數(即max F(y, f(x)) —-> min -F(y, f(x)))。從損失函數的視角來看,它就成了log損失函數了。github

log損失函數的標準形式算法

L(Y,P(Y|X))=logP(Y|X)L(Y,P(Y|X))=−log⁡P(Y|X)


剛剛說到,取對數是爲了方便計算極大似然估計,由於在MLE中,直接求導比較困難,因此一般都是先取對數再求導找極值點。損失函數L(Y, P(Y|X))表達的是樣本X在分類Y的狀況下,使機率P(Y|X)達到最大值(換言之,就是利用已知的樣本分佈,找到最有可能(即最大機率)致使這種分佈的參數值;或者說什麼樣的參數才能使咱們觀測到目前這組數據的機率最大)。由於log函數是單調遞增的,因此logP(Y|X)也會達到最大值,所以在前面加上負號以後,最大化P(Y|X)就等價於最小化L了。機器學習

 

邏輯迴歸的P(Y=y|x)表達式以下(爲了將類別標籤y統一爲1和0,下面將表達式分開表示):函數

將它帶入到上式,經過推導能夠獲得logistic的損失函數表達式,以下:性能

邏輯迴歸最後獲得的目標式子以下:學習

 

J(θ)=1mi=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]J(θ)=−1m∑i=1m[y(i)log⁡hθ(x(i))+(1−y(i))log⁡(1−hθ(x(i)))]

 

上面是針對二分類而言的。這裏須要解釋一下:之因此有人認爲邏輯迴歸是平方損失,是由於在使用梯度降低來求最優解的時候,它的迭代式子與平方損失求導後的式子很是類似,從而給人一種直觀上的錯覺測試

這裏有個PDF能夠參考一下:Lecture 6: logistic regression.pdf.優化

2、平方損失函數(最小二乘法, Ordinary Least Squares )

最小二乘法是線性迴歸的一種,OLS將問題轉化成了一個凸優化問題。在線性迴歸中,它假設樣本和噪聲都服從高斯分佈(爲何假設成高斯分佈呢?其實這裏隱藏了一個小知識點,就是中心極限定理,能夠參考【central limit theorem】),最後經過極大似然估計(MLE)能夠推導出最小二乘式子。最小二乘的基本原則是:最優擬合直線應該是使各點到迴歸直線的距離和最小的直線,即平方和最小。換言之,OLS是基於距離的,而這個距離就是咱們用的最多的歐幾里得距離。爲何它會選擇使用歐式距離做爲偏差度量呢(即Mean squared error, MSE),主要有如下幾個緣由:

  • 簡單,計算方便;
  • 歐氏距離是一種很好的類似性度量標準;
  • 在不一樣的表示域變換後特徵性質不變。

平方損失(Square loss)的標準形式以下:

L(Y,f(X))=(Yf(X))2L(Y,f(X))=(Y−f(X))2


當樣本個數爲n時,此時的損失函數變爲:
$$L(Y, f(X)) = \sum _{i=1}^{n}(Y - f(X))^2$$
Y-f(X)表示的是殘差,整個式子表示的是殘差的平方和,而咱們的目的就是最小化這個目標函數值(注:該式子未加入正則項),也就是最小化殘差的平方和(residual sum of squares,RSS)。

 

而在實際應用中,一般會使用均方差(MSE)做爲一項衡量指標,公式以下:

MSE=1ni=1n(Yi~Yi)2MSE=1n∑i=1n(Yi~−Yi)2


上面提到了線性迴歸,這裏額外補充一句,咱們一般說的線性有兩種狀況,一種是因變量y是自變量x的線性函數,一種是因變量y是參數αα的線性函數。在機器學習中,一般指的都是後一種狀況。

 

3、指數損失函數(Adaboost)

學過Adaboost算法的人都知道,它是前向分步加法算法的特例,是一個加和模型,損失函數就是指數函數。在Adaboost中,通過m此迭代以後,能夠獲得fm(x)fm(x):

$$f_m (x) = f_{m-1}(x) + \alpha_m G_m(x)$$

Adaboost每次迭代時的目的是爲了找到最小化下列式子時的參數αα 和G:

$$\arg \min_{\alpha, G} = \sum_{i=1}^{N} exp[-y_{i} (f_{m-1}(x_i) + \alpha G(x_{i}))]$$

而指數損失函數(exp-loss)的標準形式以下

$$L(y, f(x)) = \exp[-yf(x)]$$

能夠看出,Adaboost的目標式子就是指數損失,在給定n個樣本的狀況下,Adaboost的損失函數爲:

L(y, f(x)) = \frac{1}{n}\sum_{i=1}^{n}\exp[-y_if(x_i)]

關於Adaboost的推導,能夠參考Wikipedia:AdaBoost或者《統計學習方法》P145.

4、Hinge損失函數(SVM)

在機器學習算法中,hinge損失函數和SVM是息息相關的。在線性支持向量機中,最優化問題能夠等價於下列式子:
$$\min_{w,b}  \ \sum_{i}^{N} [1 - y_i(w\cdot x_i + b)]_{+} + \lambda||w||^2 $$
下面來對式子作個變形,令:
$$[1 - y_i(w\cdot x_i + b)]_{+} = \xi_{i}$$
因而,原式就變成了:
$$\min_{w,b}  \ \sum_{i}^{N} \xi_i + \lambda||w||^2 $$
如若取λ=12Cλ=12C,式子就能夠表示成:
$$\min_{w,b}  \frac{1}{C}\left ( \frac{1}{2}\ ||w||^2 $$ + C \sum_{i}^{N} \xi_i\right )$$
能夠看出,該式子與下式很是類似:
$$\frac{1}{m} \sum_{i=1}^{m} l(w \cdot  x_i + b, y_i) + ||w||^2$$

前半部分中的ll就是hinge損失函數,然後面至關於L2正則項。

Hinge 損失函數的標準形式

L(y)=max(0,1yy~),y=±1L(y)=max(0,1−yy~),y=±1


能夠看出,當|y|>=1時,L(y)=0。

 

更多內容,參考Hinge-loss

補充一下:在libsvm中一共有4中核函數能夠選擇,對應的是-t參數分別是:

  • 0-線性核;
  • 1-多項式核;
  • 2-RBF核;
  • 3-sigmoid核。

5、其它損失函數

除了以上這幾種損失函數,經常使用的還有:

0-1損失函數
L(Y, f(X)) = \left\{\begin{matrix}1 ,& Y \neq f(X)\\ 0 ,& y = f(X)    \end{matrix}\right.
絕對值損失函數
$$L(Y, f(X)) = |Y-f(X)|$$
下面來看看幾種損失函數的可視化圖像,對着圖看看橫座標,看看縱座標,再看看每條線都表示什麼損失函數,多看幾回好好消化消化。

OK,暫時先寫到這裏,休息下。最後,須要記住的是:參數越多,模型越複雜,而越複雜的模型越容易過擬合。過擬合就是說模型在訓練數據上的效果遠遠好於在測試集上的性能。此時能夠考慮正則化,經過設置正則項前面的hyper parameter,來權衡損失函數和正則項,減少參數規模,達到模型簡化的目的,從而使模型具備更好的泛化能力。

參考文獻

相關文章
相關標籤/搜索