損失函數 - 交叉熵損失函數

Cross Entropy Error Function(交叉熵損失函數)

  • 例子
  • 表達式
  • 函數性質
  • 學習過程
  • 優缺點

這篇文章中,討論的Cross Entropy損失函數常用於分類問題中,但是爲什麼它會在分類問題中這麼有效呢?我們先從一個簡單的分類例子來入手。

1. 預測政治傾向例子

我們希望根據一個人的年齡、性別、年收入等相互獨立的特徵,來預測一個人的政治傾向,有三種可預測結果:民主黨、共和黨、其他黨。假設我們當前有兩個邏輯迴歸模型(參數不同),這兩個模型都是通過sigmoid的方式得到對於每個預測結果的概率值:

模型1

模型1預測結果

模型1對於樣本1和樣本2以非常微弱的優勢判斷正確,對於樣本3的判斷則徹底錯誤。

模型2

模型2預測結果

模型2對於樣本1和樣本2判斷非常準確,對於樣本3判斷錯誤,但是相對來說沒有錯得太離譜。

好了,有了模型之後,我們需要通過定義損失函數來判斷模型在樣本上的表現了,那麼我們可以定義哪些損失函數呢?

1.1 Classification Error(分類錯誤率)

最爲直接的損失函數定義爲:[公式]

模型1: 

模型2: 

我們知道,模型1模型2雖然都是預測錯了1個,但是相對來說模型2表現得更好,損失函數值照理來說應該更小,但是,很遺憾的是,  並不能判斷出來,所以這種損失函數雖然好理解,但表現不太好。

1.2 Mean Squared Error (均方誤差)

均方誤差損失也是一種比較常見的損失函數,其定義爲: 

模型1:

對所有樣本的loss求平均:

模型2:

對所有樣本的loss求平均:

我們發現,MSE能夠判斷出來模型2優於模型1,那爲什麼不採樣這種損失函數呢?主要原因是邏輯迴歸配合MSE損失函數時,採用梯度下降法進行學習時,會出現模型一開始訓練時,學習速率非常慢的情況(MSE損失函數)。

有了上面的直觀分析,我們可以清楚的看到,對於分類問題的損失函數來說,分類錯誤率和平方和損失都不是很好的損失函數,下面我們來看一下交叉熵損失函數的表現情況。

1.3 Cross Entropy Error Function(交叉熵損失函數)

1.3.1 表達式

(1) 二分類

在二分的情況下,模型最後需要預測的結果只有兩種情況,對於每個類別我們的預測得到的概率爲 [公式] 和 [公式] 。此時表達式爲:

其中:
- y——表示樣本的label,正類爲1,負類爲0
- p——表示樣本預測爲正的概率

(2) 多分類

多分類的情況實際上就是對二分類的擴展:

其中:
 ——類別的數量;
——指示變量(0或1),如果該類別和樣本的類別相同就是1,否則是0;
——對於觀測樣本屬於類別  的預測概率。

現在我們利用這個表達式計算上面例子中的損失函數值:

模型1

對所有樣本的loss求平均:

模型2:

對所有樣本的loss求平均:

可以發現,交叉熵損失函數可以捕捉到模型1模型2預測效果的差異。

2. 函數性質

可以看出,該函數是凸函數,求導時能夠得到全局最優值。

3. 學習過程

交叉熵損失函數經常用於分類問題中,特別是在神經網絡做分類問題時,也經常使用交叉熵作爲損失函數,此外,由於交叉熵涉及到計算每個類別的概率,所以交叉熵幾乎每次都和sigmoid(或softmax)函數一起出現。

我們用神經網絡最後一層輸出的情況,來看一眼整個模型預測、獲得損失和學習的流程:

  1. 神經網絡最後一層得到每個類別的得分scores
  2. 該得分經過sigmoid(或softmax)函數獲得概率輸出;
  3. 模型預測的類別概率輸出與真實類別的one hot形式進行交叉熵損失函數的計算。

學習任務分爲二分類和多分類情況,我們分別討論這兩種情況的學習過程。

3.1 二分類情況

二分類任務學習過程

如上圖所示,求導過程可分成三個子過程,即拆成三項偏導的乘積:

3.1.1 計算第一項: 

 表示預測爲True的概率;

 表示爲True時等於1,否則等於0;

3.1.2 計算第二項: 

這一項要計算的是sigmoid函數對於score的導數,我們先回顧一下sigmoid函數和分數求導的公式:

3.1.3 計算第三項: 

一般來說,scores是輸入的線性函數作用的結果,所以有:

3.1.4 計算結果 

可以看到,我們得到了一個非常漂亮的結果,所以,使用交叉熵損失函數,不僅可以很好的衡量模型的效果,又可以很容易的的進行求導計算。

3.2 多分類情況

4. 優缺點

4.1 優點

在用梯度下降法做參數更新的時候,模型學習的速度取決於兩個值:一、學習率;二、偏導值。其中,學習率是我們需要設置的超參數,所以我們重點關注偏導值。從上面的式子中,我們發現,偏導值的大小取決於 ,我們重點關注後者,後者的大小值反映了我們模型的錯誤程度,該值越大,說明模型效果越差,但是該值越大同時也會使得偏導值越大,從而模型學習速度更快。所以,使用邏輯函數得到概率,並結合交叉熵當損失函數時,在模型效果差的時候學習速度比較快,在模型效果好的時候學習速度變慢。

5. 參考

[1]. 神經網絡的分類模型 LOSS 函數爲什麼要用 CROSS ENTROPY

[2]. Softmax as a Neural Networks Activation Function

[3]. A Gentle Introduction to Cross-Entropy Loss Function

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章