之前雖然使用過cross-entropy函式,但是並不知道它代表的實際意義,只是知道的其能夠進行loss計算,這次從其根源的意義做一個總結,來加深對cross-entropy的理解;
一、熵
對於交叉熵,我們首先要直到熵神馬意思;
熵的意義是一個事件A的自資訊量,也就是A包含多少資訊。對於事件A,越難發生,發生的概率越小,包含的資訊量就越大; 例如,中國隊世界盃奪冠,巴西隊世界盃奪冠,肯定前者包含的資訊量最大;
熵的定義如下所示:

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

二、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散度和交叉熵來說,如果

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

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