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


https://blog.csdn.net/u010976453/article/details/78488279

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 優化函數如下: 

 
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 損失函數了。

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

其中 

 
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.總結

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

不同機器學習方法的損失函數有差異,合理理解各種損失優化函數的的特點更有利於我們對相關算法的理解。


參考文獻

1. CS231n 課程 
2. 聊聊機器學習中的損失函數 
3. 知乎專欄-智能單元 
4. 機器學習-損失函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM