KL散度、JS散度和交叉熵三者都是用來衡量兩個概率分布之間的差異性的指標
1. KL散度
KL散度又稱為相對熵,信息散度,信息增益。KL散度是是兩個概率分布 P 和 Q (概率分布P(x)和Q(x)) 之間差別的非對稱性的度量。 KL散度是用來 度量使用基於 Q 的編碼來編碼來自 P 的樣本平均所需的額外的位元數。 典型情況下,P 表示數據的真實分布,Q 表示數據的理論分布,模型分布,或 P 的近似分布
定義如下:
因為對數函數是凸函數,所以KL散度的值為非負數。
當P(x)和Q(x)的相似度越高,KL散度越小。
KL散度主要有兩個性質:
(1)不對稱性
盡管KL散度從直觀上是個度量或距離函數,但它並不是一個真正的度量或者距離,因為它不具有對稱性,即D(P||Q)!=D(Q||P)
(2)非負性
相對熵的值是非負值,即D(P||Q)>0
2.JS散度(Jensen-Shannon divergence)
JS散度度量了兩個概率分布的相似度,基於KL散度的變體,解決了KL散度非對稱的問題。一般地,JS散度是對稱的,其取值是 0 到 1 之間。定義如下:
但是不同於KL主要又兩方面:
(1)值域范圍
JS散度的值域范圍是[0,1],相同則是0,相反為1。相較於KL,對相似度的判別更確切了。
(2)對稱性
即 JS(P||Q)=JS(Q||P),從數學表達式中就可以看出
KL散度和JS散度度量的時候有一個問題:
如果兩個分配 P,QP,Q 離得很遠,完全沒有重疊的時候,那么KL散度值是沒有意義的,而JS散度值是一個常數。這在學習算法中是比較致命的,這就意味這這一點的梯度為 00。梯度消失了
3.交叉熵(Cross Entropy)
在神經網絡中,交叉熵可以作為損失函數,因為它可以衡量P和Q的相似性
交叉熵和相對熵的關系
以上都是基於離散分布的概率,如果是連續的數據,則需要對數據進行Probability Density Estimate來確定數據的概率分布,就不是求和而是通過求積分的形式進行計算了