在監督式機器學習中,無論是迴歸問題還是分類問題,都少不了使用損失函式(Loss Function)。損失函式(Loss Function)是用來估量模型的預測值 f(x) 與真實值 y 的不一致程度。若損失函式很小,表明機器學習模型與資料真實分佈很接近,則模型效能良好;若損失函式很大,表明機器學習模型與資料真實分佈差別較大,則模型效能不佳。我們訓練模型的主要任務就是使用最佳化方法來尋找損失函式最小化對應的模型引數。
今天,我們來了解一下分類問題中常用的損失函式,不妨一看!
0. 模型輸出
在討論分類問題的損失函式之前,我想先說一下模型的輸出 g(s)。一般來說,二分類機器學習模型包含兩個部分:線性輸出 s 和非線性輸出 g(s)。其中,線性輸出一般是模型輸入 x 與 引數 w 的乘積,簡寫成:s = wx;非線性輸出一般是 Sigmoid 函式,其表示式如下:
g(s)=\frac{1}{1+e^{-s}}
經過 Sigmoid 函式,g(s) 值被限定在 [0,1] 之間,若 s ≥ 0,g(s) ≥ 0.5,則預測為正類;若 s < 0,g(s) < 0.5,則預測為負類。
關於正類和負類的表示,通常有兩種方式:一種是用 {+1, -1} 表示正負類;另一種是用 {1, 0} 表示正負類。下文預設使用 {+1, -1},因為這種表示方法有種好處。如果使用 {+1, -1} 表示正負類,我們來看預測類別與真實類別的四種情況:
- s ≥ 0, y = +1: 預測正確
-
s ≥ 0, y = -1: 預測錯誤
-
s < 0, y = +1: 預測錯誤
-
s < 0, y = -1: 預測正確
發現了嗎?顯然,上面四個式子可以整合成直接看 ys 的符號即可:
- 若 ys ≥ 0,則預測正確
-
若 ys < 0,則預測錯誤
這裡的 ys 類似與迴歸模型中的殘差 s – y。因此,在比較分類問題的各個損失函式的時候,我們就可以把 ys 當作自變數 x 軸即可,這樣更加方便。
1. 0-1 Loss
0-1 Loss 是最簡單也是最容易直觀理解的一種損失函式。對於二分類問題,如果預測類別 y_hat 與真實類別 y 不同,則 L=1;如果預測類別 y_hat 與 真實類別 y 相同,則 L=0(L 表示損失函式)。0-1 Loss 的表示式為:
0-1 Loss 的曲線如下圖所示:
0-1 Loss 的特點就是非常直觀容易理解。但是它存在兩個缺點:
- 0-1 Loss 對每個錯分類點都施以相同的懲罰(損失為 1),這樣對犯錯比較大的點(ys 遠小於 0)無法進行較大的懲罰,所有犯錯點都同等看待,這不符合常理,不太合適。
-
0-1 Loss 不連續、非凸、不可導,難以使用梯度最佳化演算法。
因此,實際應用中,0-1 Loss 很少使用。
2. Cross Entropy Loss
Cross Entropy Loss 是非常重要的損失函式,也是應用最多的損失函式之一。二分類問題的交叉熵 Loss 主要有兩種形式,下面分別詳細介紹。
第一種形式是基於輸出標籤 label 的表示方式為 {0,1},也最為常見。它的 Loss 表示式為:
這個公式是如何推導的呢?很簡單,從極大似然性的角度出發,預測類別的機率可以寫成:
我們可以這麼來看,當真實樣本標籤 y = 1 時,上面式子第二項就為 1,機率等式轉化為:
當真實樣本標籤 y = 0 時,上面式子第一項就為 1,機率等式轉化為:
我們希望的是機率 P(y|x) 越大越好。首先,我們對 P(y|x) 引入 log 函式,因為 log 運算並不會影響函式本身的單調性。則有:
我們希望 log P(y|x) 越大越好,反過來,只要 log P(y|x) 的負值 -log P(y|x) 越小就行了。那我們就可以引入損失函式,且令 Loss = -log P(y|x) 即可。則得到損失函式為:
我們來看,當 y = 1 時:
因為,
所以,代入到 L 中,得:
這時候,Loss 的曲線如下圖所示:
從圖中明顯能夠看出,s 越大於零,L 越小,函式的變化趨勢也完全符合實際需要的情況。
當 y = 0 時:
對上式進行整理,同樣能得到:
這時候,Loss 的曲線如下圖所示:
從圖中明顯能夠看出,s 越小於零,L 越小,函式的變化趨勢也完全符合實際需要的情況。
第二種形式是基於輸出標籤 label 的表示方式為 {-1,+1},也比較常見。它的 Loss 表示式為:
下面對上式做個簡單的推導,我們在 0 小節說過,ys 的符號反映了預測的準確性。除此之外,ys 的數值大小也反映了預測的置信程度。所以,從機率角度來看,預測類別的機率可以寫成:
分別令 y = +1 和 y = -1 就能很容易理解上面的式子。
接下來,同樣引入 log 函式,要讓機率最大,反過來,只要其負數最小即可。那麼就可以定義相應的損失函式為:
這時候,我們以 ys 為橫座標,可以繪製 Loss 的曲線如下圖所示:
其實上面介紹的兩種形式的交叉熵 Loss 是一樣的,只不過由於標籤 label 的表示方式不同,公式稍有變化。標籤用 {-1,+1} 表示的好處是可以把 ys 整合在一起,作為橫座標,容易作圖且具有實際的物理意義。
總結一下,交叉熵 Loss 的優點是在整個實數域內,Loss 近似線性變化。尤其是當 ys << 0 的時候,Loss 更近似線性。這樣,模型受異常點的干擾就較小。 而且,交叉熵 Loss 連續可導,便於求導計算,是使用最廣泛的損失函式之一。
3. Hinge Loss
Hinge Loss,又稱合頁損失,其表示式如下:
Hinge Loss 的曲線如下圖所示:
Hinge Loss 的形狀就像一本要合上的書,故稱為合頁損失。顯然,只有當 ys < 1 時,Loss 才大於零;對於 ys > 1 的情況,Loss 始終為零。
Hinge Loss 一般多用於支援向量機(SVM)中,體現了 SVM 距離最大化的思想。而且,當 Loss 大於零時,是線性函式,便於梯度下降演算法求導。
Hinge Loss 的另一個優點是使得 ys > 0 的樣本損失皆為 0,由此帶來了稀疏解,使得 SVM 僅透過少量的支援向量就能確定最終超平面。
4. Exponential Loss
Exponential Loss,又稱指數損失,其表示式如下:
可以對上式進行一個直觀的理解,類似於上文提到的第二種形式的交叉熵 Loss,去掉 log 和 log 中的常數 1,並不影響 Loss 的單調性。因此,推導得出了 Exponential Loss 的表示式。
Exponential Loss 的曲線如下圖所示:
Exponential Loss 與交叉熵 Loss 類似,但它是指數下降的,因此梯度較其它 Loss 來說,更大一些。
Exponential Loss 一般多用於AdaBoost 中。因為使用 Exponential Loss 能比較方便地利用加法模型推匯出 AdaBoost演算法。
5. Modified Huber Loss
我們知道 Huber Loss,它集合了 MSE 和 MAE 的優點。Huber Loss 也能應用於分類問題中,稱為 Modified Huber Loss,其表達是如下:
Modified Huber Loss 的曲線如下圖所示:
從表示式和 Loss 圖形上看,Modified Huber Loss 結合了 Hinge Loss 和 交叉熵 Loss 的優點。一方面能在 ys > 1 時產生稀疏解提高訓練效率;另一方面對於 ys < −1 樣本的懲罰以線性增加,這意味著受異常點的干擾較少。scikit-learn 中的 SGDClassifier 就使用了 Modified Huber Loss。
6. Softmax Loss
對於多分類問題,也可以使用 Softmax Loss。
機器學習模型的 Softmax 層,正確類別對於的輸出是:
其中,C 為類別個數,小寫字母 s 是正確類別對應的 Softmax 輸入,大寫字母 S 是正確類別對應的 Softmax 輸出。
由於 log 運算子不會影響函式的單調性,我們對 S 進行 log 操作。另外,我們希望 log(S) 越大越好,即正確類別對應的相對機率越大越好,那麼就可以對 log(S) 前面加個負號,來表示損失函式:
Softmax Loss 的曲線如下圖所示:
上圖中,當 s << 0 時,Softmax 近似線性;當 s>>0 時,Softmax 趨向於零。Softmax 同樣受異常點的干擾較小,多用於神經網路多分類問題中。
最後,我們將 0-1 Loss、Cross Entropy Loss、Hinge Loss、Exponential Loss、Modified Huber Loss 畫在一張圖中:
上圖 ys 的取值範圍是 [-2,+2],若我們把 ys 的座標範圍取得更大一些,上面 5 種 Loss 的差別會更大一些,見下圖:
顯然,這時候 Exponential Loss 會遠遠大於其它 Loss。從訓練的角度來看,模型會更加偏向於懲罰較大的點,賦予其更大的權重。如果樣本中存在離群點,Exponential Loss 會給離群點賦予更高的權重,但卻可能是以犧牲其他正常資料點的預測效果為代價,可能會降低模型的整體效能,使得模型不夠健壯(robust)。
相比 Exponential Loss,其它四個 Loss,包括 Softmax Loss,都對離群點有較好的“容忍性”,受異常點的干擾較小,模型較為健壯。
好了,以上就是紅色石頭總結的幾個常用的分類問題的損失函式,知道這些細節和原理,對我們是很有幫助的。希望本文對你有所幫助~