機器學習——損失函數

概念區分

性能度量vs損失函數

損失函數、代價函數與目標函數

損失函數(Loss Function):是定義在單個樣本上的,是指一個樣本的偏差,度量模型一次預測的好壞
代價函數(Cost Function)=成本函數=經驗風險:是定義在整個訓練集上的,是全部樣本偏差的平均,也就是全部損失函數值的平均度量平均意義下模型預測的好壞。
目標函數(Object Function)=結構風險=經驗風險+正則化項=代價函數+正則化項:是指最終須要優化的函數,通常指的是結構風險。
html

  正則化項(regularizer)=懲罰項(penalty term)。算法

損失函數vs風險函數

損失函數度量模型一次預測的好壞,風險函數度量平均意義下模型預測的好壞。機器學習

風險函數分爲兩種,不考慮正則項的是經驗風險(Empirical Risk),考慮過擬合問題,加上正則項的是結構風險(Structural Risk)。函數

1、損失函數

(一)迴歸損失函數

1.損失函數

(1)平方損失函數(quadratic loss function)

是MSE的單個樣本損失,又叫平方損失(squared loss) 
性能

是指預測值與實際值差的平方。學習

有時候爲了求導方便,在前面乘上一個1/2。優化

(2)絕對(值)損失函數(absolute loss function)

是MAE單個樣本損失,又叫絕對偏差(absolute Loss)
atom

該損失函數的意義和上面差很少,只不過是取了絕對值而不是求絕對值,差距不會被平方放大。

(3)對數損失函數(logarithmic loss function)

又稱,對數似然損失函數(loglikelihood loss function)。spa

這個損失函數就比較難理解了。事實上,該損失函數用到了極大似然估計的思想。.net

P(Y|X)通俗的解釋就是:在當前模型的基礎上,對於樣本X,其預測值爲Y,也就是預測正確的機率。因爲機率之間的同時知足須要使用乘法,爲了將其轉化爲加法,咱們將其取對數。最後因爲是損失函數,因此預測正確的機率越高,其損失應該越小,前面加了一個負號是由於log函數是單調遞增的,在前面加上負號以後,最大化p(y|x)就等價於最小化L。所以再加個負號取個反。

下面說兩點:

第一點就是對數損失函數很是經常使用。logistic迴歸,softmax迴歸等都用的是這個損失。

第二點就是對於這個公式的理解。這個公式的意思是在樣本x在分類爲y的狀況下,咱們須要讓機率p(y|x)達到最大值。就是利用目前已知的樣本分佈,找到最有可能致使這種分佈的參數值。

(4)Huber損失 (huber loss) 

2.各自優缺點

其中最經常使用的是平方損失,然而其缺點是對於異常點會施以較大的懲罰,於是不夠robust。

若是有較多異常點,則絕對值損失表現較好,但絕對值損失的缺點是在yf(x)=0y−f(x)=0處不連續可導,於是不容易優化。
Huber損失是對兩者的綜合,當|yf(x)||y−f(x)|小於一個事先指定的值δ時,變爲平方損失,大於δ時,則變成相似於絕對值損失,所以也是比較robust的損失函數。

三者的圖形比較以下:

 

(二)分類損失函數

1.損失函數

(1)0-1損失函數(0-1 loss function)

也就是說,當預測錯誤時,損失函數爲1,當預測正確時,損失函數值爲0。該損失函數不考慮預測值和真實值的偏差程度。只要錯誤,就是1。

0-1損失不連續、非凸,優化困難,於是常使用其餘的代理損失函數進行優化。

(2)Logistic loss(對數似然)

logistic Loss爲Logistic Regression中使用的損失函數。

 

 

 證實:http://www.javashuo.com/article/p-pyuhazbj-ey.html

(3)Hinge loss

Hinge loss通常分類算法中的損失函數,尤爲是SVM。

                   

hinge loss爲svm中使用的損失函數,hinge loss使得yf(x)>1的樣本損失皆爲0,由此帶來了稀疏解,使得svm僅經過少許的支持向量就能肯定最終超平面。

其中 y=+1y=1f(x)=wx+bf(x)=wx+b ,當爲SVM的線性核時。

推導:http://www.javashuo.com/article/p-pyuhazbj-ey.html

(4)指數損失(Exponential loss)

 

exponential loss爲AdaBoost中使用的損失函數,使用exponential loss能比較方便地利用加法模型推導出AdaBoost算法 (具體推導過程)。

然而其和squared loss同樣,對異常點敏感,不夠robust。

 

(5)modified Huber loss

 

modified huber loss結合了hinge loss和logistic loss的優勢,既能在yf(x)>1時產生稀疏解提升訓練效率,又能進行機率估計。

另外其對於(yf(x)<1)樣本的懲罰以線性增長,這意味着受異常點的干擾較少,比較robust。scikit-learn中的SGDClassifier一樣實現了modified huber loss。

2.各自優缺點

 

從上圖能夠看出上面這些損失函數均可以看做是0-1損失的單調連續近似函數,而由於這些損失函數一般是凸的連續函數,所以經常使用來代替0-1損失進行優化

它們的相同點是都隨着margin而加大懲罰;不一樣點在於,logistic loss和hinge loss都是線性增加,而exponential loss是以指數增加。

值得注意的是上圖中modified huber loss的走向和exponential loss差很少,並不能看出其robust的屬性。其實這和算法時間複雜度同樣,成倍放大了以後才能體現出巨大差別:

2、代價函數

(一)迴歸問題經常使用代價函數

1.均方差損失 Mean Squared Error Loss( L2 Loss)

均方差 Mean Squared Error (MSE) 損失是機器學習、深度學習迴歸任務中最經常使用的一種損失函數,也稱爲 L2 Loss,又叫最小平方偏差、最小均方偏差、平方損失(square loss)。

(1)公式

(2)高斯分佈:MSE損 == 最大似然估計

2.平均絕對偏差損失 Mean Absolute Error Loss(L1 Loss)

平均絕對偏差 Mean Absolute Error (MAE) 是另外一類經常使用的損失函數,也稱爲 L1 Loss,又叫最小絕對值誤差(LAE)。

(1)公式

(2)MAE(L1)和 MSE(L2)做爲損失函數的主要區別:

L2損失相比L1一般能夠更快地收斂。

L1損失對於 outlier 更加健壯,即更加不易受到 outlier 影響。L2損失函數對異常點比較敏感,由於L2將偏差平方化,使得異常點的偏差過大,模型須要大幅度的調整,這樣會犧牲不少正常的樣本。

而L1損失函數因爲導數不連續,可能存在多個解,當數據集有一個微笑的變化,解可能會有一個很大的跳動,L1的解不穩定。

 (3)拉普拉斯分佈:MAE損失  ==  負對數似然

 

3.Huber Loss

Huber Loss 是一種將 MSE 與 MAE 結合起來,取二者優勢的損失函數,也被稱做 Smooth Mean Absolute Error Loss 。

其原理很簡單,就是在偏差接近 0 時使用 MSE,偏差較大時使用 MAE。

(1)公式

(2)Huber Loss 的特色

Huber Loss 結合了 MSE 和 MAE 損失,在偏差接近 0 時使用 MSE,使損失函數可導而且梯度更加穩定;在偏差較大時使用 MAE 能夠下降 outlier 的影響,使訓練對 outlier 更加健壯。缺點是須要額外地設置一個 delta超參數。

(二)分類問題經常使用的代價函數

1.交叉熵損失函數 Cross Entropy Loss。

(1)二分類

 (2)多分類

(3)爲何用交叉熵損失 

2.合頁損失 Hinge Loss(用於SVM)

(1)公式

 

 

 

 

參考:

https://www.cnblogs.com/lliuye/p/9549881.html

https://blog.csdn.net/andyjkt/article/details/107599424

https://blog.csdn.net/Tianlock/article/details/88232467

http://www.javashuo.com/article/p-pyuhazbj-ey.html

更多損失函數:https://blog.csdn.net/qq_14845119/article/details/80787753【未整理】

相關文章
相關標籤/搜索