一、定義
損失函數(loss function)是用來估量你模型的預測值f(x)與真實值Y的不一致程度,它是一個非負實值函數,通常使用L(Y, f(x))來表示,損失函數越小,模型的魯棒性就越好。
經典機器學習算法,他們最本質的區別是分類思想(預測f(x)的表達式)不同,有的是基於概率模型,有的是動態規划,表象的區別就是最后的損失函數不同。
二、分類
損失函數(loss function)分為經驗風險損失函數和結構風險損失函數,經驗風險損失函數反映的是預測結果和實際結果之間的差別,結構風險損失函數則是經驗風險損失函數加上正則項(L0、L1(Lasso)、L2(Ridge))。
三、常見損失函數
1、0-1損失函數(zero-one loss)
0-1損失是指,預測值和目標值不相等為1,否則為0:

特點:
(1)0-1損失函數直接對應分類判斷錯誤的個數,但是它是一個非凸函數,不太適用;該損失函數不考慮預測值和真實值的誤差程度,也就是說只要預測錯誤,預測錯誤差一點和差很多是一樣的。
(2)感知機就是用的這種損失函數。但是相等這個條件太過嚴格,因此可以放寬條件,即滿足
時認為相等,
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1MKyUyOCtZKyUyQytmKyUyOCtYKyUyOSslMjkrJTNEKyU1Q2xlZnQlNUMlN0IrJTVDYmVnaW4lN0JhcnJheSU3RCslN0IrbCslN0QrJTdCKzErJTJDKyU3QytZKy0rZislMjgrWCslMjkrJTdDKyU1Q2dlcStUKyU3RCslNUMlNUMrJTdCKzArJTJDKyU3QytZKyUzRCtmKyUyOCtYKyUyOSslN0MrJTNDK1QrJTdEKyU1Q2VuZCU3QmFycmF5JTdEKyU1Q3JpZ2h0LisrJTVDJTVD.png)
這種損失函數用在實際場景中比較少,更多的是用倆衡量其他損失函數的效果。
2、絕對值損失函數
絕對值損失函數是計算預測值與目標值的差的絕對值:

3. log對數損失函數
主要在邏輯回歸中使用,樣本預測值和實際值的誤差符合高斯分布,使用極大似然估計的方法,取對數得到損失函數,log對數損失函數的標准形式如下:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1MJTI4WSUyQytQJTI4WSU3Q1glMjklMjkrJTNEKy1sb2dQJTI4WSU3Q1glMjkrKyU1QyU1Qw==.png)
損失函數L(Y,P(Y|X))L(Y,P(Y|X))是指樣本X在分類Y的情況下,使概率P(Y|X)達到最大值。
經典的對數損失函數包括entropy和softmax,一般在做分類問題的時候使用(而回歸時多用絕對值損失(拉普拉斯分布時,μ值為中位數)和平方損失(高斯分布時,μ值為均值))。
特點:
(1) log對數損失函數能非常好的表征概率分布,在很多場景尤其是多分類,如果需要知道結果屬於每個類別的置信度,那它非常適合。
(2)健壯性不強,相比於hinge loss對噪聲更敏感。
(3)邏輯回歸的損失函數就是log對數損失函數。
4. 平方損失函數
實際結果和觀測結果之間差距的平方和,一般用在線性回歸中,可以理解為最小二乘法,平方損失函數標准形式如下:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1MKyUyOCtZKyU3QytmKyUyOCtYKyUyOSslMjkrJTNEKyU1Q3N1bStfKyU3QitOKyU3RCslMjgrWSstK2YrJTI4K1grJTI5KyUyOSslNUUrJTdCKzIrJTdEKyslNUMlNUM=.png)
特點:經常應用於回歸問題。
5. 指數損失函數(exponential loss)
指數損失函數的標准形式如下:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1MJTI4WSU3Q2YlMjhYJTI5JTI5KyUzRCtleHAlNUIteWYlMjh4JTI5JTVEKyslNUMlNUM=.png)
特點:對離群點、噪聲非常敏感。經常用在AdaBoost算法中。
6. 鉸鏈損失函數(Hinge 損失函數)
Hinge損失函數標准形式如下:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1MJTI4eSUyQytmJTI4eCUyOSUyOSslM0QrbWF4JTI4MCUyQysxLXlmJTI4eCUyOSUyOSsrKyU1QyU1Qw==.png)
特點:
(1)hinge損失函數表示如果被分類正確,損失為0,否則損失就為
。SVM就是使用這個損失函數。
(2)一般的
是預測值,在-1到1之間,
是目標值(-1或1)。其含義是,
的值在-1和+1之間就可以了,並不鼓勵
,即並不鼓勵分類器過度自信,讓某個正確分類的樣本距離分割線超過1並不會有任何獎勵,從而使分類器可以更專注於整體的誤差。
(3) 健壯性相對較高,對異常點、噪聲不敏感,但它沒太好的概率解釋。
7. 感知損失(perceptron loss)函數
感知損失函數的標准形式如下:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1MJTI4eSUyQytmJTI4eCUyOSUyOSslM0QrbWF4JTI4MCUyQystZiUyOHglMjklMjkrKyU1QyU1Qw==.png)
特點:是Hinge損失函數的一個變種,Hinge loss對判定邊界附近的點(正確端)懲罰力度很高。而perceptron loss只要樣本的判定類別正確的話,它就滿意,不管其判定邊界的距離。它比Hinge loss簡單,因為不是max-margin boundary,所以模型的泛化能力沒 hinge loss強。
8. 交叉熵損失函數 (Cross-entropy loss function)
交叉熵損失函數的標准形式如下:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1DKyUzRCstKyU1Q2ZyYWMrJTdCKzErJTdEKyU3QituKyU3RCslNUNzdW0rXyslN0IreCslN0QrJTVCK3krJTVDbG4rYSslMkIrJTI4KzErLSt5KyUyOSslNUNsbislMjgrMSstK2ErJTI5KyU1RCsrJTVDJTVD.png)
注意公式中
表示樣本,
表示實際的標簽,
表示預測的輸出,
表示樣本總數量。
特點:
(1)本質上也是一種對數似然函數,可用於二分類和多分類任務中。
二分類問題中的loss函數(輸入數據是softmax或者sigmoid函數的輸出):
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1sb3NzKyUzRCstKyU1Q2ZyYWMrJTdCKzErJTdEKyU3QituKyU3RCslNUNzdW0rXyslN0IreCslN0QrJTVCK3krJTVDbG4rYSslMkIrJTI4KzErLSt5KyUyOSslNUNsbislMjgrMSstK2ErJTI5KyU1RCslNUMlNUM=.png)
多分類問題中的loss函數(輸入數據是softmax或者sigmoid函數的輸出):
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1sb3NzKyUzRCstKyU1Q2ZyYWMlN0IxJTdEJTdCbiU3RCslNUNzdW1faSt5X2lsbmFfaSslNUMlNUM=.png)
(2)當使用sigmoid作為激活函數的時候,常用交叉熵損失函數而不用均方誤差損失函數,因為它可以完美解決平方損失函數權重更新過慢的問題,具有“誤差大的時候,權重更新快;誤差小的時候,權重更新慢”的良好性質。
補充:對數損失函數和交叉熵損失函數應該是等價的。下面說明由知乎用戶@Areshyy提供

參考:https://zhuanlan.zhihu.com/p/58883095
https://blog.csdn.net/chkay399/article/details/81878157
