天天看點

一文讀懂-交叉熵損失函數交叉熵損失函數原理詳解(轉載)

交叉熵損失函數原理詳解(轉載)

之前在代碼中經常看見交叉熵損失函數(CrossEntropy Loss),隻知道它是分類問題中經常使用的一種損失函數,對于其内部的原理總是模模糊糊,而且一般使用交叉熵作為損失函數時,在模型的輸出層總會接一個softmax函數,至于為什麼要怎麼做也是不懂,是以專門花了一些時間打算從原理入手,搞懂它,故在此寫一篇部落格進行總結,以便以後翻閱。

交叉熵簡介

交叉熵是資訊論中的一個重要概念,主要用于度量兩個機率分布間的差異性,要了解交叉熵,需要先了解下面幾個概念。

資訊量

資訊創始者香農(Shannon)認為“資訊是用來消除随機不确定性的東西”,也就是說衡量資訊量的大小就是看這個資訊消除不确定性的程度。

“太陽從東邊升起”,這條資訊并沒有減少不确定性,因為太陽肯定是從東邊升起的,這是一句廢話,資訊量為0。

”2018年中國隊成功進入世界杯“,從直覺上來看,這句話具有很大的資訊量。因為中國隊進入世界杯的不确定性因素很大,而這句話消除了進入世界杯的不确定性,是以按照定義,這句話的資訊量很大。

根據上述可總結如下:資訊量的大小與資訊發生的機率成反比。機率越大,資訊量越小。機率越小,資訊量越大。

設某一事件發生的機率為P(x),其資訊量表示為:

一文讀懂-交叉熵損失函數交叉熵損失函數原理詳解(轉載)

 其中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

這是轉載的一篇博文,原位址。

繼續閱讀