關於交叉熵的個人理解

宋霖軒發表於2019-02-18

之前雖然使用過cross-entropy函式,但是並不知道它代表的實際意義,只是知道的其能夠進行loss計算,這次從其根源的意義做一個總結,來加深對cross-entropy的理解;

一、熵

對於交叉熵,我們首先要直到熵神馬意思;

熵的意義是一個事件A的自資訊量,也就是A包含多少資訊。對於事件A,越難發生,發生的概率越小,包含的資訊量就越大; 例如,中國隊世界盃奪冠,巴西隊世界盃奪冠,肯定前者包含的資訊量最大;

熵的定義如下所示:

關於交叉熵的個人理解
可以式子中看出,其也就是所有資訊量的期望;之所以要求和,究其原因是時間獨立,熵可以疊加。其中p代表的x事件發生的概率。

對於單個事件發生的資訊量,可以表示:

關於交叉熵的個人理解
由於-log函式的存在,當p趨於0,其值就越大;所以第一個式子也就是多個獨立事件的總期望;

二、KL散度

KL散度是用來衡量兩個分佈之間的不同,其實和歐幾里得距離的性質有點像,只不過其研究的是分佈之間的不同,也稱KL距離。但是注意一點,KL距離沒有對稱性,a和b的KL距離和b和a的KL距離並不相同;

KL散度的定義如下:

關於交叉熵的個人理解

關於交叉熵的個人理解

第一個子式為離散情況,後一個為連續情況,不同的只是求不求積分;

如果當Pa=Pb時,則兩個事件的分佈完全相同,則KL散度等於0,此時可以理解為兩個分佈完全相同;由於分子分母的關係,也讓KL散度並不具有對稱性。這個可以理解為座標系的不同;

關於交叉熵的個人理解

其實觀察上式的後半項,可以看出第一個項其實就是A的熵,第二項就是B在A上的期望;

三、交叉熵: 交叉熵和KL散度公式很相近,如下所示:

關於交叉熵的個人理解

其實從這裡就可以看出,AB的交叉熵就是A和B的KL散度減去A的熵;

而且對於這兩個KL散度和交叉熵來說,如果

關於交叉熵的個人理解
S(A)是一個常量,則KL散度和交叉熵時相同的;

對於我們資料標籤和訓練得到的預測標籤來說,初始情況下肯定分佈是不同的。我們的目的就是使得預測值和真實值越來越相近,歸根到底也就是希望兩者的KL散度足夠小,也就是:

關於交叉熵的個人理解

所以我們可以使用這個來評估模型;

那麼我們為什麼要用交叉熵而不用KL散度呢,其實我們通過公式就可以看出原因。由於初始值固定,也就是A固定,測試A的熵就是固定的,所以我們求A和B的交叉熵就可以;換句話來說,最小化KL散度,其實就是在最小化交叉熵;

相關文章