信息熵
信息熵是信息論中用於度量信息量的一個概念。一個系統越是有序,信息熵就越低;反之,一個系統越是混亂,信息熵就越高。所以,信息熵也可以說是系統有序化程度的一個度量。信息量是對信息的度量,就跟時間的度量是秒一樣,當我們考慮一個離散的隨機變量 x 的時候,當我們觀察到的這個變量的一個具體值的時候,我們接收到了多少信息呢?多少信息用信息量來衡量,我們接受到的信息量跟具體發生的事件有關。信息的大小跟隨機事件的概率有關。越小概率的事情發生了產生的信息量越大,如湖南產生 的地震了;越大概率的事情發生了產生的信息量越小,如太陽從東邊升起來了(肯定發生嘛, 沒什么信息量)。這很好理解!因此一個具體事件的信息量應該是隨着其發生概率而遞減的,且不能為負
KL散度(相對熵)
KL散度又稱為相對熵,信息散度,信息增益。KL散度是是兩個概率分布P和Q 差別的非對稱性的度量。常用於衡量兩個概率分布之間的差異或相似度,或衡量利用Q擬合P時的能量消耗 KL散度是用來 度量使用基於Q的編碼來編碼來自P的樣本平均所需的額外的位元數。 典型情況下,P表示數據的真實分布,Q表示數據的理論分布,模型分布,或P的近似分布。其定義如下:
此處我們可以看到, 等號左邊是熵, 右邊就是交叉熵
有時會將KL散度稱為KL距離,但它並不滿足距離的性質:
- KL散度不是對稱的: \(D(P|Q)!=D(Q|P)\)
- KL散度不滿足三角不等式。
KL散度應用范圍非常的廣大。
交叉熵是KL散度的一部份
可以看到,在KL散度中,右半部分作為交叉熵而存在,我們交叉熵的公式為:
很多地方像邏輯回歸的loss其實就是二分類的交叉熵,當我們最大化似然函數,把累乘變為累加的時候,的時候,即得到了最小化交叉熵這么一個形式。
具體LR請看LR
JS散度
JS散度度量了兩個概率分布的相似度,基於KL散度的變體,解決了KL散度非對稱的問題。一般地,JS散度是對稱的,其取值是0到1之間,一般地,JS散度是對稱的,其取值是0到1之間。若兩個分布完全沒有交集,那么JS散度取最大值1;若兩個分布完全一樣,那么 JS 散度取最小值 0。
定義如下:
KL散度和JS散度度量的時候有一個問題:
如果兩個分配P,Q離得很遠,完全沒有重疊的時候,那么KL散度值是沒有意義的,而JS散度值是一個常數。這在學習算法中是比較致命的,這就意味這這一點的梯度為0。梯度消失了。
Wasserstein距離(EM距離):解決JS和KL距離的缺點
Wessertein距離相比KL散度和JS散度的優勢在於:即使兩個分布的支撐集沒有重疊或者重疊非常少,仍然能反映兩個分布的遠近。而JS散度在此情況下是常量,KL散度可能無意義。
wasserstein距離就是衡量把概率分布q“搬到” p的最小代價。
Wasserstein距離度量兩個概率分布之間的距離,定義如下:
其中, \(\prod(P_1,P_2)\)是\(P_1,P_2\)組合起來的,所有可能的聯合分布, 對於每一個可能的分布\(\gamma\)而言, 我們都可以采樣到\(x,y\), 並計算他們的距離的期望值, 一般, 在代碼實現的時候, 會直接取平均值