在機(jī)器學(xué)習(xí)中,KL散度,JS散度,交叉熵這三個(gè)指標(biāo)都是比較不好區(qū)分差異的,小編在看論文《Detecting Regions of Maximal Divergence for Spatio-Temporal Anomaly Detection》時(shí),看到文中提到了這三種方法來(lái)比較時(shí)間序列中不同區(qū)域概率分布的差異。特意分享出來(lái)給各位小伙伴們加深理解。
KL散度、JS散度和交叉熵
三者都是用來(lái)衡量?jī)蓚€(gè)概率分布之間的差異性的指標(biāo)。不同之處在于它們的數(shù)學(xué)表達(dá)。
對(duì)于概率分布P(x)和Q(x)
1)KL散度(Kullback–Leibler divergence)
又稱KL距離,相對(duì)熵。
當(dāng)P(x)和Q(x)的相似度越高,KL散度越小。
KL散度主要有兩個(gè)性質(zhì):
(1)不對(duì)稱性
盡管KL散度從直觀上是個(gè)度量或距離函數(shù),但它并不是一個(gè)真正的度量或者距離,因?yàn)樗痪哂袑?duì)稱性,即D(P||Q)!=D(Q||P)。
(2)非負(fù)性
相對(duì)熵的值是非負(fù)值,即D(P||Q)>0。
2)JS散度(Jensen-Shannon divergence)
JS散度也稱JS距離,是KL散度的一種變形。
但是不同于KL主要又兩方面:
(1)值域范圍
JS散度的值域范圍是[0,1],相同則是0,相反為1。相較于KL,對(duì)相似度的判別更確切了。
(2)對(duì)稱性
即 JS(P||Q)=JS(Q||P),從數(shù)學(xué)表達(dá)式中就可以看出。
3)交叉熵(Cross Entropy)
在神經(jīng)網(wǎng)絡(luò)中,交叉熵可以作為損失函數(shù),因?yàn)樗梢院饬縋和Q的相似性。
交叉熵和相對(duì)熵的關(guān)系:
以上都是基于離散分布的概率,如果是連續(xù)的數(shù)據(jù),則需要對(duì)數(shù)據(jù)進(jìn)行Probability Density Estimate來(lái)確定數(shù)據(jù)的概率分布,就不是求和而是通過(guò)求積分的形式進(jìn)行計(jì)算了。
補(bǔ)充:信息熵、交叉熵與KL散度
信息量
在信息論與編碼中,信息量,也叫自信息(self-information),是指一個(gè)事件所能夠帶來(lái)信息的多少。一般地,這個(gè)事件發(fā)生的概率越小,其帶來(lái)的信息量越大。
從編碼的角度來(lái)看,這個(gè)事件發(fā)生的概率越大,其編碼長(zhǎng)度越小,這個(gè)事件發(fā)生的概率越小,其編碼長(zhǎng)度就越大。但是編碼長(zhǎng)度小也是代價(jià)的,比如字母'a'用數(shù)字‘0'來(lái)表示時(shí),為了避免歧義,就不能有其他任何以‘0'開頭的編碼了。
因此,信息量定義如下:
信息熵
信息熵是指一個(gè)概率分布p的平均信息量,代表著隨機(jī)變量或系統(tǒng)的不確定性,熵越大,隨機(jī)變量或系統(tǒng)的不確定性就越大。從編碼的角度來(lái)看,信息熵是表示一個(gè)概率分布p需要的平均編碼長(zhǎng)度,其可表示為:
交叉熵
交叉熵是指在給定真實(shí)分布q情況下,采用一個(gè)猜測(cè)的分布p對(duì)其進(jìn)行編碼的平均編碼長(zhǎng)度(或用猜測(cè)的分布來(lái)編碼真實(shí)分布得到的信息量)。
交叉熵可以用來(lái)衡量真實(shí)數(shù)據(jù)分布于當(dāng)前分布的相似性,當(dāng)前分布與真實(shí)分布相等時(shí)(q=p),交叉熵達(dá)到最小值。
其可定義為:
因此,在很多機(jī)器學(xué)習(xí)算法中都使用交叉熵作為損失函數(shù),交叉熵越小,當(dāng)前分布與真實(shí)分布越接近。此外,相比于均方誤差,交叉熵具有以下兩個(gè)優(yōu)點(diǎn):
在LR中,如果用均方誤差損失函數(shù),它是一個(gè)非凸函數(shù),而使用交叉熵?fù)p失函數(shù),它是一個(gè)凸函數(shù);
在LR中使用sigmoid激活函數(shù),如果使用均方誤差損失函數(shù),在對(duì)其求殘差時(shí),其表達(dá)式與激活函數(shù)的導(dǎo)數(shù)有關(guān),而sigmoid(如下圖所示)的導(dǎo)數(shù)在輸入值超出[-5,5]范圍后將非常小,這會(huì)帶來(lái)梯度消失問(wèn)題,而使用交叉熵?fù)p失函數(shù)則能避免這個(gè)問(wèn)題。
KL散度
KL散度又稱相對(duì)熵,是衡量?jī)蓚€(gè)分布之間的差異性。從編碼的角度來(lái)看,KL散度可表示為采用猜測(cè)分布p得到的平均編碼長(zhǎng)度與采用真實(shí)分布q得到的平均編碼長(zhǎng)度多出的bit數(shù),其數(shù)學(xué)表達(dá)式可定義為:
一般地,兩個(gè)分布越接近,其KL散度越小,最小為0.它具有兩個(gè)特性:
非負(fù)性,即KL散度最小值為0,其詳細(xì)證明可見(jiàn)[1] ;
非對(duì)稱性,即Dq(p)不等于Dp(q) ; KL散度與交叉熵之間的關(guān)系
在這里,再次盜用[1]的圖來(lái)形象地表達(dá)這兩者之間的關(guān)系:
最上方cH(p)為信息熵,表示分布p的平均編碼長(zhǎng)度/信息量;
中間的Hq(p)表示用分布q表編碼分布p所含的信息量或編碼長(zhǎng)度,簡(jiǎn)稱為交叉熵,其中Hq(p)>=H(p)
;最小方的Dq(p)表示的是q對(duì)p的KL距離,衡量了分布q和分布p之間的差異性,其中Dq(p)>=0;
從上圖可知,Hq(p) = H(p) + Dq(p)。
小結(jié)
以上就是關(guān)于KL散度,JS散度,交叉熵的對(duì)比,希望能給大家一個(gè)參考,也希望大家多多支持W3Cschool。