損失函數

機器學習中的損失函數 (着重比較:hinge loss vs softmax loss)

1. 損失函數

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

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

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

 

2. 經常使用損失函數

常見的損失偏差有五種: 
1. 鉸鏈損失(Hinge Loss):主要用於支持向量機(SVM) 中; 
2. 互熵損失 (Cross Entropy Loss,Softmax Loss ):用於Logistic 迴歸與Softmax 分類中; 
3. 平方損失(Square Loss):主要是最小二乘法(OLS)中; 
4. 指數損失(Exponential Loss) :主要用於Adaboost 集成學習算法中; 
5. 其餘損失(如0-1損失,絕對值損失)編程

2.1 Hinge loss

Hinge loss 的叫法來源於其損失函數的圖形,爲一個折線,通用的函數表達式爲:安全

 

 
L(mi)=max(0,1mi(w))L(mi)=max(0,1−mi(w))

表示若是被正確分類,損失是0,不然損失就是 1mi(w)1−mi(w) 。

 

Hinge Loss

在機器學習中,Hing 能夠用來解 間距最大化 的問題,最有表明性的就是SVM 問題,最初的SVM 優化函數以下: markdown

 
argminw,ζ12||w||2+Ciζist.yiwTxi1ζiζi0argminw,ζ12||w||2+C∑iζist.∀yiwTxi≥1−ζiζi≥0

將約束項進行變形,則爲: 
 
ζi1yiwTxiζi≥1−yiwTxi

則損失函數能夠進一步寫爲: 
 
J(w)=12||w||2+Cimax(0,1yiwTxi)=12||w||2+Cimax(0,1mi(w))=12||w||2+CiLHinge(mi)J(w)=12||w||2+C∑imax(0,1−yiwTxi)=12||w||2+C∑imax(0,1−mi(w))=12||w||2+C∑iLHinge(mi)

所以, SVM 的損失函數能夠看做是 L2-norm 和 Hinge loss 之和。

 

2.2 Softmax Loss

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

log損失函數的標準形式: 機器學習

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

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

 

邏輯迴歸的P(Y=y|x)P(Y=y|x) 表達式以下(爲了將類別標籤y統一爲11 和00 ):函數

Logistic

其中 post

 
hθ(x)=11+exp(f(x))hθ(x)=11+exp⁡(−f(x))

 

2.3 Squared Loss

最小二乘法是線性迴歸的一種,OLS將問題轉化成了一個凸優化問題。在線性迴歸中,它假設樣本和噪聲都服從高斯分佈(中心極限定理),最後經過極大似然估計(MLE)能夠推導出最小二乘式子。最小二乘的基本原則是:最優擬合直線應該是使各點到迴歸直線的距離和最小的直線,即平方和最小。學習

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

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

 

當樣本個數爲nn時,此時的損失函數爲: 

 
L(Y,f(X))=i=1n(Yf(X))2L(Y,f(X))=∑i=1n(Y−f(X))2

Yf(X)Y−f(X)​ 表示殘差,整個式子表示的是殘差平方和 ,咱們的目標就是最小化這個目標函數值,即最小化殘差的平方和。

 

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

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

 

2.4 Exponentially Loss

損失函數的標準形式是: 

 
L(Y,f(X))=exp[Yf(X)]L(Y,f(X))=exp⁡[−Yf(X)]

exp-loss,主要應用於 Boosting 算法中,在Adaboost 算法中,通過 mm 次迭代後,能夠獲得 fm(x)fm(x) : 
 
fm(x)=fm1(x)+αmGm(x)fm(x)=fm−1(x)+αmGm(x)

Adaboost 每次迭代時的目的都是找到最小化下列式子的參數αα 和GG: 
 
argminα,G=i=1Nexp[yi(fm1(xi)+αG(xi))]arg⁡minα,G=∑i=1Nexp⁡[−yi(fm−1(xi)+αG(xi))]

易知,Adabooost 的目標式子就是指數損失,在給定nn個樣本的狀況下,Adaboost 的損失函數爲: 
 
L(Y,f(X))=12i=1nexp[yif(xI)]L(Y,f(X))=12∑i=1nexp⁡[−yif(xI)]

關於Adaboost的詳細推導介紹,能夠參考Wikipedia:AdaBoost或者李航《統計學習方法》P145。

 

2.5 其餘損失

0-1 損失函數 

 
L(Y,f(X))={01ifYf(X)ifY=f(X)L(Y,f(X))={0ifY≠f(X)1ifY=f(X)

絕對值損失函數 
 
L(Y,f(X))=|Yf(X)|L(Y,f(X))=|Y−f(X)|

 


上述幾種損失函數比較的可視化圖像以下:

損失函數可視化

3. Hinge loss 與 Softmax loss

SVM和Softmax分類器是最經常使用的兩個分類器。

  1. SVM將輸出 f(xi,W)f(xi,W) 做爲每一個分類的評分(沒有規定的標準,難以直接解釋);
  2. 與SVM 不一樣,Softmax 分類器能夠理解爲邏輯迴歸分類器面對多個分類的通常話概括,其輸出(歸一化的分類機率)更加直觀,且能夠從機率上解釋。

在Softmax分類器中, 函數映射f(xi,W)f(xi,W) 保持不變,但將這些評分值看作每一個分類未歸一化的對數機率,且將折葉損失替換爲交叉熵損失(cross-entropy loss),公式以下:

 

 
Li=log(efyijefj)Li=−log⁡(efyi∑jefj)

或等價的 
 
Li=fyi+logjfjLi=−fyi+log⁡∑jfj

 

fjfj 表示分類評分向量ff 中的第ii 個元素,和SVM同樣,整個數據集的損失值是數據集中全部樣本數據的損失值Li的均值和正則化損失之和。

機率論解釋: 

 
P(yi|xi,W)=efyijefjP(yi|xi,W)=efyi∑jefj

 

解釋爲給定數據xixi , WW 參數,分配給正確分類標籤yiyi 的歸一化機率。

實際操做注意事項——數值穩定: 編程實現softmax函數計算的時候,中間項efyiefyi 和 jefj∑jefj 由於存在指數函數,因此數值可能很是大,除以大數值可能致使數值計算的不穩定,因此得學會歸一化技巧.若在公式的分子和分母同時乘以一個常數CC ,並把它變換到求和之中,就能獲得一個等價公式: 

 
P(yi|xi,W)=CefyiCjefj=efyi+logCjefj+logCP(yi|xi,W)=CefyiC∑jefj=efyi+log⁡C∑jefj+log⁡C

 

C的值可自由選擇,不會影響計算結果,經過這個技巧能夠提升計算中的數值穩定性.一般將C設爲

 
logC=maxfjlog⁡C=−maxfj

 

該技巧就是將向量f中的數值進行平移,使得最大值爲0。

準確地說,SVM分類器使用的是鉸鏈損失(hinge loss),有時候又被稱爲最大邊界損失(max-margin loss)。Softmax分類器使用的是交叉熵損失(corss-entropy loss)。Softmax分類器的命名是從softmax函數那裏得來的,softmax函數將原始分類評分變成正的歸一化數值,全部數值和爲1,這樣處理後交叉熵損失才能應用。

Example:圖像識別

example

針對給出的圖像,SVM分類器可能給你的是一個[2.85,0.86,0.28][−2.85,0.86,0.28] 對應分類「貓」,「狗」,「船」,而softmax分類器能夠計算出這三個標籤的」可能性「是[0.,0160.631,0.353][0.,0160.631,0.353] ,這就讓你能看出對於不一樣分類準確性的把握。

這裏Hinge Loss計算公式爲: 

 
Li=jyimax(0,f(xi,W)jf(xi,W))yi+ Li=∑j≠yimax(0,f(xi,W)j−f(xi,W))yi+ 

這裏 ΔΔ 是一個閾值,表示即便誤分類,可是沒有達到閾值,也不存在損失 。上面的公式把錯誤類別 (jyi)(j≠yi) 都遍歷一遍,求值加和。

 

設 xixi 的正確類別是」船」,閾值 Δ=1Δ=1 ,則對應的Hinge loss 爲: 

 
Li=max(0,2.850.28+1)+max(0,0.860.28+1)=1.58Li=max(0,−2.85−0.28+1)+max(0,0.86−0.28+1)=1.58

下圖是對ΔΔ 的理解,藍色表示正確的類別,ΔΔ 表示一個安全範圍,就算是有其餘的得分,只要沒有到達紅色的ΔΔ 範圍內,,對損失函數都沒有影響。這就保證了SVM 算法的解的稀疏性。

 

delta

而Softmax 損失則是對向量 fyifyi 指數正規化獲得機率,再求對數便可。 

 
Li=log(efyijefj)=log(0.353)1.04Li=−log⁡(efyi∑jefj)=−log⁡(0.353)≈1.04

 

4.總結

機器學習做爲一種優化方法,學習目標就是找到優化的目標函數——損失函數和正則項的組合;有了目標函數的「正確的打開方式」,才能經過合適的機器學習算法求解優化。

不一樣機器學習方法的損失函數有差別,合理理解各類損失優化函數的的特色更有利於咱們對相關算法的理解。

相關文章
相關標籤/搜索