概念區分
性能度量vs損失函數
損失函數、代價函數與目標函數
損失函數(Loss Function):是定義在單個樣本上的,是指一個樣本的誤差,度量模型一次預測的好壞。
代價函數(Cost Function)=成本函數=經驗風險:是定義在整個訓練集上的,是所有樣本誤差的平均,也就是所有損失函數值的平均,度量平均意義下模型預測的好壞。
目標函數(Object Function)=結構風險=經驗風險+正則化項=代價函數+正則化項:是指最終需要優化的函數,一般指的是結構風險。
正則化項(regularizer)=懲罰項(penalty term)。
損失函數vs風險函數
損失函數度量模型一次預測的好壞,風險函數度量平均意義下模型預測的好壞。
風險函數分為兩種,不考慮正則項的是經驗風險(Empirical Risk),考慮過擬合問題,加上正則項的是結構風險(Structural Risk)。
一、損失函數
(一)回歸損失函數
1.損失函數
(1)平方損失函數(quadratic loss function)
是MSE的單個樣本損失,又叫平方損失(squared loss)
是指預測值與實際值差的平方。
有時候為了求導方便,在前面乘上一個1/2。
(2)絕對(值)損失函數(absolute loss function)
是MAE單個樣本損失,又叫絕對誤差(absolute Loss)
(3)對數損失函數(logarithmic loss function)
又稱,對數似然損失函數(loglikelihood loss function)。
這個損失函數就比較難理解了。事實上,該損失函數用到了極大似然估計的思想。
P(Y|X)通俗的解釋就是:在當前模型的基礎上,對於樣本X,其預測值為Y,也就是預測正確的概率。由於概率之間的同時滿足需要使用乘法,為了將其轉化為加法,我們將其取對數。最后由於是損失函數,所以預測正確的概率越高,其損失應該越小,前面加了一個負號是因為log函數是單調遞增的,在前面加上負號之后,最大化p(y|x)就等價於最小化L。因此再加個負號取個反。
下面說兩點:
第一點就是對數損失函數非常常用。logistic回歸,softmax回歸等都用的是這個損失。
第二點就是對於這個公式的理解。這個公式的意思是在樣本x在分類為y的情況下,我們需要讓概率p(y|x)達到最大值。就是利用目前已知的樣本分布,找到最有可能導致這種分布的參數值。
(4)Huber損失 (huber loss)
2.各自優缺點
其中最常用的是平方損失,然而其缺點是對於異常點會施以較大的懲罰,因而不夠robust。
如果有較多異常點,則絕對值損失表現較好,但絕對值損失的缺點是在y−f(x)=0y−f(x)=0處不連續可導,因而不容易優化。
Huber損失是對二者的綜合,當|y−f(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中使用的損失函數。
證明:https://www.cnblogs.com/massquantity/p/8964029.html
(3)Hinge loss
Hinge loss一般分類算法中的損失函數,尤其是SVM。
hinge loss為svm中使用的損失函數,hinge loss使得yf(x)>1的樣本損失皆為0,由此帶來了稀疏解,使得svm僅通過少量的支持向量就能確定最終超平面。
其中 y=+1或y=−1,f(x)=wx+bf(x)=wx+b ,當為SVM的線性核時。
推導:https://www.cnblogs.com/massquantity/p/8964029.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的屬性。其實這和算法時間復雜度一樣,成倍放大了之后才能體現出巨大差異:
二、代價函數
(一)回歸問題常用代價函數
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
https://www.cnblogs.com/massquantity/p/8964029.html
更多損失函數:https://blog.csdn.net/qq_14845119/article/details/80787753【未整理】