交叉熵損失函數原理詳解(轉載)
之前在代碼中經常看見交叉熵損失函數(CrossEntropy Loss),隻知道它是分類問題中經常使用的一種損失函數,對于其内部的原理總是模模糊糊,而且一般使用交叉熵作為損失函數時,在模型的輸出層總會接一個softmax函數,至于為什麼要怎麼做也是不懂,是以專門花了一些時間打算從原理入手,搞懂它,故在此寫一篇部落格進行總結,以便以後翻閱。
交叉熵簡介
交叉熵是資訊論中的一個重要概念,主要用于度量兩個機率分布間的差異性,要了解交叉熵,需要先了解下面幾個概念。
資訊量
資訊創始者香農(Shannon)認為“資訊是用來消除随機不确定性的東西”,也就是說衡量資訊量的大小就是看這個資訊消除不确定性的程度。
“太陽從東邊升起”,這條資訊并沒有減少不确定性,因為太陽肯定是從東邊升起的,這是一句廢話,資訊量為0。
”2018年中國隊成功進入世界杯“,從直覺上來看,這句話具有很大的資訊量。因為中國隊進入世界杯的不确定性因素很大,而這句話消除了進入世界杯的不确定性,是以按照定義,這句話的資訊量很大。
根據上述可總結如下:資訊量的大小與資訊發生的機率成反比。機率越大,資訊量越小。機率越小,資訊量越大。
設某一事件發生的機率為P(x),其資訊量表示為:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL0kjN3QDM0gDM3IDOwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
其中I ( x )表示資訊量,這裡log 表示以e為底的自然對數。
資訊熵
資訊熵也被稱為熵,用來表示所有資訊量的期望。
期望是試驗中每次可能結果的機率乘以其結果的總和。
是以資訊量的熵可表示為:(這裡的X XX是一個離散型随機變量)
使用明天的天氣機率來計算其資訊熵:
序号 | 事件 | 機率P | 資訊量 |
---|---|---|---|
1 | 明天是晴天 | 0.5 | − log ( 0.5 ) -\log \left ( 0.5 \right )−log(0.5) |
2 | 明天出雨天 | 0.2 | − log ( 0.2 ) -\log \left ( 0.2 \right )−log(0.2) |
3 | 多雲 | 0.3 | − log ( 0.3 ) -\log \left ( 0.3 \right )−log(0.3) |
對于0-1分布的問題,由于其結果隻用兩種情況,是或不是,設某一件事情發生的機率為P ( x ) ,則另一件事情發生的機率為1 − P ( x ),是以對于0-1分布的問題,計算熵的公式可以簡化如下:
相對熵(KL散度)
如果對于同一個随機變量X XX有兩個單獨的機率分布P ( x )和Q ( x ) ,則我們可以使用KL散度來衡量這兩個機率分布之間的差異。
下面直接列出公式,再舉例子加以說明。
在機器學習中,常常使用P ( x )來表示樣本的真實分布,Q ( x ) 來表示模型所預測的分布,比如在一個三分類任務中(例如,貓狗馬分類器),x 1 , x 2 , x 3 分别代表貓,狗,馬,例如一張貓的圖檔真實分布P ( X ) = [ 1 , 0 , 0 ], 預測分布Q ( X ) = [ 0.7 , 0.2 , 0.1 ] ,計算KL散度:
KL散度越小,表示P ( x ) 與Q ( x ) 的分布更加接近,可以通過反複訓練Q ( x )來使Q ( x )的分布逼近P ( x ) 。
交叉熵
首先将KL散度公式拆開:
前者H ( p ( x ) )表示資訊熵,後者即為交叉熵,KL散度 = 交叉熵 - 資訊熵
交叉熵公式表示為:
在機器學習訓練網絡時,輸入資料與标簽常常已經确定,那麼真實機率分布P ( x )也就确定下來了,是以資訊熵在這裡就是一個常量。由于KL散度的值表示真實機率分布P ( x ) 與預測機率分布Q ( x ) 之間的差異,值越小表示預測的結果越好,是以需要最小化KL散度,而交叉熵等于KL散度加上一個常量(資訊熵),且公式相比KL散度更加容易計算,是以在機器學習中常常使用交叉熵損失函數來計算loss就行了。
交叉熵在單分類問題中的應用
線上性回歸問題中,常常使用MSE(Mean Squared Error)作為loss函數,而在分類問題中常常使用交叉熵作為loss函數。
下面通過一個例子來說明如何計算交叉熵損失值。
假設我們輸入一張狗的圖檔,标簽與預測值如下:
* | 貓 | 狗 | 馬 |
---|---|---|---|
Label | 1 | ||
Pred | 0.2 | 0.7 | 0.1 |
那麼loss
一個batch的loss為
其中m表示樣本個數。
總結:
- 交叉熵能夠衡量同一個随機變量中的兩個不同機率分布的差異程度,在機器學習中就表示為真實機率分布與預測機率分布之間的差異。交叉熵的值越小,模型預測效果就越好。
- 交叉熵在分類問題中常常與softmax是标配,softmax将輸出的結果進行處理,使其多個分類的預測值和為1,再通過交叉熵來計算損失。
參考:
https://blog.csdn.net/tsyccnh/article/details/79163834
THE END
這是轉載的一篇博文,原位址。