在學習深度學習的時候,經(jīng)常使用交叉熵損失函數(shù)。一開始將其籠統(tǒng)的理解為計算兩個分布之間的距離或者相似度,但是對于交叉熵其中的原理并不清楚。那么交叉熵到底是怎么來的呢?首先我們就必須要知道 熵 的概念,并且理解其在信息論中上的定義和表示。這里我們淺淺的看一下熵和信息熵的定義和理解。
一、熵
在中學時代,我們在物理課的熱力學知識中就學習過,熵(entropy)代表的是一個系統(tǒng)中的混亂程度。例如:熵增,就是指一個系統(tǒng)的混亂程度增加。熵減,就是一個系統(tǒng)趨于穩(wěn)定。一碗開水逐漸變涼的過程就是熵減的過程。

這里呢我們從信息論的角度來討論熵。那么什么是信息呢?信息怎么度量呢?
二、信息熵
【信息1】巴菲特昨天出門是左腳先邁出門檻的。(信息量少,與我無關)
【信息2】中國隊進入世界杯決賽。(信息量爆炸?。?br>
從上面兩條信息中可以看出,信息量的大小與信息的長短無關,也與信息的正確性沒有關系。信息量與其確定性有關系,即他能給你帶來多少確定性。那么我們現(xiàn)在怎么去定義一個函數(shù)表述信息量呢?

我們怎么描述阿根廷奪冠的信息量呢?阿根廷奪冠的信息量等于阿根廷進決賽的信息量+阿根廷贏了決賽的信息量。
與此同時,如果用數(shù)學中的概率學知識對此事件進行描述的話,阿根廷奪冠的概率等于阿根廷進決賽的概率*阿根廷贏得比賽的概率。
那么計算信息量的公式就變成了如下模樣:

根據(jù)紅色方框的函數(shù),我們不難想到,這和我們中學學習的log函數(shù)很像嗎?
所以我們對于信息量的定義就可以變成如下形式:
于是現(xiàn)在出現(xiàn)了一個問題,系數(shù)是多少?底是多少?
根據(jù)log函數(shù),它是一個單調遞增的函數(shù)。當x越大,函數(shù)值越大。但是在描述信息量的時候,我們發(fā)現(xiàn)一件事情發(fā)生的概率越小,當他發(fā)生時所包含的信息量越大。所以我們需要給上述定義中的系數(shù)加上一個負號,也就是說當x越小的時候,信息量越大。至于底數(shù)的選擇,我們可以比較隨意。因為其不影響對信息量的定義。于是我們對信息量的定義就可以變成了下面的樣子:
我們再去計算阿根廷奪冠的信息量就變成了:
現(xiàn)在我們已經(jīng)對信息量進行了一個定義,其具體含義為:一個事件,從確定到不確定之間的難度有多大。信息量大,就是說難度大,信息量小,就說明難度小。其實熵也是類似的,熵越大,系統(tǒng)越混亂,系統(tǒng)從混亂到穩(wěn)定的難度也越大。熵和信息量都是來形容難度的,那么其實他們兩個的單位也可以一樣,這個單位可以是比特。
這里的轉變有些復雜,我們假設一個事件發(fā)生的信息量為3比特,其相當于是三個比特組成一個隨機數(shù),這個隨機數(shù)剛好是0的難度一樣。
到這里似乎這個關于信息量理論已經(jīng)很完善了。但其實我們對有關于信息熵的定義還不夠準確。信息熵的概念是指一個系統(tǒng)中的信息量,難道一個系統(tǒng)的信息是單個子事件信息量的簡單的累加嗎?答案是非也。
再舉一個例子,有兩場比賽。
【比賽1】阿根廷對戰(zhàn)比利時,兩者贏球的概率均為0.5.
【比賽2】中國對戰(zhàn)法國,法國贏球的概率為0.99,中國贏球的概率為0.01.

根據(jù)上面我們對信息量的描述,可以計算出每一個國家贏球的信息量。如果簡單累加的話,左邊系統(tǒng)的信息量是2,右邊系統(tǒng)的信息量為6.65。
根據(jù)信息熵的理解,也就是說左邊的系統(tǒng)更加穩(wěn)定,右邊的系統(tǒng)更加不穩(wěn)定。然而在直觀理解中并不是這樣,左邊系統(tǒng)中似乎更不穩(wěn)定,誰是贏家,還真說不準。反觀右邊的系統(tǒng),這個系統(tǒng)似乎挺穩(wěn)定的。所以一個系統(tǒng)的信息熵等于單個子事件的信息量乘以它發(fā)生的概率的積的和。關于信息熵的定義變成了:

觀察這個式子,我們也可以理解為對一個系統(tǒng)求信息熵,那就是對這個系統(tǒng)求信息量的期望。
好啦,學習到這里,我們就完成了對信息熵的介紹。
如果你還想接下來了解KL散度和交叉熵,大家可以參考我的另外兩篇文章:
【1】大白話理解——KL散度和交叉熵 - 簡書 (jianshu.com)
【2】大白話理解——交叉熵 - 簡書 (jianshu.com)
本文參考視頻內容:“交叉熵”如何做損失函數(shù)?打包理解“信息量”、“比特”、“熵”、“KL散度”、“交叉熵” 去給up主點個贊吧!