文章目錄
迴歸模型的損失函數
L1正則損失函數(即絕對值損失函數)
L1正則損失函數是對預測值與目標值的差值求絕對值,公式如下:
缺點:L1正則損失函數在目標值附近不平滑,會導致模型不能很好地收斂。
L2正則損失函數(即歐拉損失函數)
L2正則損失函數是預測值與目標值差值的平方和,公式如下:
當對L2取平均值,就變成均方誤差(MSE, mean squared error),公式如下:
優點:L2正則損失函數在目標值附近有很好的曲度,離目標越近收斂越慢,是非常有用的損失函數。
L1、L2正則損失函數如下圖所示:
Pseudo-Huber 損失函數
Huber損失函數經常用於迴歸問題,它是分段函數,公式如下:
從這個公式可以看出當殘差(預測值與目標值的差值,即y-f(x) )很小的時候,損失函數爲L2範數,殘差大的時候,爲L1範數的線性函數。該公式依賴於參數delta,delta越大,則兩邊的線性部分越陡峭。
L1、L2、Huber損失函數的對比圖如下,其中Huber的delta取0.25、5兩個值:
分類模型的損失函數
Hinge損失函數
又名摺頁損失函數、鉸鏈損失函數。Hinge損失常用於二分類問題,主要用來評估向量機算法(SVM),但有時也用來評估神經網絡算法,公式如下:
上面的代碼中,目標值爲1,當預測值離1越近,則損失函數越小,如下圖:
兩類交叉熵(Cross-entropy)損失函數
交叉熵來自於信息論,是分類問題中使用廣泛的損失函數。交叉熵刻畫了兩個概率分佈之間的距離,當兩個概率分佈越接近時,它們的交叉熵也就越小,給定兩個概率分佈p和q,則距離如下:
對於兩類問題,當一個概率p=y,則另一個概率q=1-y,因此代入化簡後的公式如下:
Cross-entropy損失函數主要應用在二分類問題上,預測值爲概率值,取值範圍爲[0,1],損失函數圖如下:
加權交叉熵損失函數
加權交叉熵損失函數是Sigmoid交叉熵損失函數的加權。
Sigmoid交叉熵損失函數
與上面的兩類交叉熵類似,只是將預測值y_pred值通過sigmoid函數進行轉換,再計算交叉熵損失。由於sigmoid函數會將輸入值變小很多,從而平滑了預測值,使得sigmoid交叉熵在預測值離目標值比較遠時,其損失的增長沒有那麼的陡峭。與兩類交叉熵的比較圖如下:
Softmax交叉熵損失函數
在Logistic regression二分類問題中,我們可以使用sigmoid函數將輸入映射到區間中,從而得到屬於某個類別的概率。將這個問題進行泛化,推廣到多分類問題中,我們可以使用softmax函數,對輸出的值歸一化爲概率值。通過softmax函數將輸出結果轉化成概率分佈,從而便於輸入到交叉熵裏面進行計算(交叉熵要求輸入爲概率),softmax定義如下:
以上可以看出:,這也是爲什麼softmax層的每個節點的輸出值成爲了概率和爲1的概率分佈。
Softmax+交叉熵也被稱爲Softmax損失函數,它表達式爲:
其中,P爲樣本的期望輸出,它是一個one-hot編碼形式。T爲樣本的實際輸出,其中。這裏P和T是一個長度與類別數相同的集合。
圖見《百面機器學習》P143
總結:
損失 | 凸函數 | 光滑 | ||
---|---|---|---|---|
絕對值損失 | 非凸 | 非光滑 | 迴歸 | |
歐拉損失 | 凸 | 光滑 | 迴歸 | |
Pseudo-Huber 損失 | 迴歸 | |||
Logistic損失 | 迴歸 | |||
Hinge損失 | 非光滑 | 分類 | ||
0-1損失 | 非凸 | 非光滑 | 分類 | |
兩類交叉熵損失 | 分類 | |||
Sigmoid交叉熵損失 | 分類 | |||
Softmax交叉熵損失 | 分類 |
在實際使用中,對於迴歸問題經常會使用MSE均方誤差(L2取平均)計算損失,對於分類問題經常會使用Sigmoid交叉熵損失函數。
參考:
https://my.oschina.net/u/876354/blog/1940819
https://blog.csdn.net/lilong117194/article/details/81542667
https://blog.csdn.net/chaipp0607/article/details/73392175