之前雖然使用過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散度,其實就是在最小化交叉熵;