機器學習中熵、交叉熵、KL散度(相對熵)之間的關係

1 信息量

信息的信息量大小和它的不確定性有很大的關係,如果一句話需要很多外部信息才能確定的話,那麼這句話的信息就很大,例如你說‘明天可能是晴天’,那你需要去看天氣預告等去預測明天是否晴天,有一定的不確定性,如果你說‘今天是週五,明天是週六’,那麼這句話就沒什麼信息量,因爲這是既定的事實,確定性很高。
因此我們就將事件x_0的信息量定義如下:
I(x0)=log(p(x0))(1) I(x_0) = -log(p(x_0)) \qquad (1)
其中概率p是介於0到1之間的數值,概率越大,信息量越小。

2 熵

信息量是對單次事件來說的,實際中一個事件有多種發生的可能,比如明天可能晴天、多雲、下雨等天氣。
熵表示隨機事件不確定的度量,是對所有可能發生的事件的信息量的期望。
H(x)=i=1np(xi)log(p(xi))(2) H(x) = -\sum_{i=1}^{n}p(x_i)log(p(x_i)) \qquad (2)
其中n表示事件可能發生的情況的總數。
如果對於二分類問題,二項分佈或者0-1分佈,那麼n=2,熵的計算可以轉化爲:
H(x)=i=1np(xi)log(p(xi)) H(x) = -\sum_{i=1}^{n}p(x_i)log(p(x_i))
=p(x)log(p(x))(1p(x))log(1p(x))(3) \qquad\qquad\qquad =-p(x)log(p(x))-(1-p(x))log(1-p(x)) \qquad (3)
其中p(x)代表正例的概率,1-p(x)表示負例的概率。

3 相對熵(KL散度)

相對熵又稱KL散度。用於衡量同一個隨機變量x的兩個分佈p(x)q(x)之間的差異,其中p(x)用於表示樣本的實際分佈,例如[1,0,0,0]表示樣本屬於第一類,q(x)用於表示樣本的預測分佈,例如[0.6,0.2,0.1,0.1],很顯然,使用p(x)表示樣本比q(x)準確,q(x)是需要通過不斷學習來擬合實際的分佈p(x)
KL散度的公式如下:
DKL(pq)=i=1np(xi)log(p(xi)q(xi))(4) D_{KL}(p||q) = \sum_{i=1}^{n}p(x_i)log(\frac{p(x_i)}{q(x_i)}) \qquad (4)
KL散度的值越小表示兩個分佈越接近。

4 交叉熵

將KL散度公式進行分解變形得到:
DKL(pq)=i=1np(xi)log(p(xi)q(xi)) D_{KL}(p||q) = \sum_{i=1}^{n}p(x_i)log(\frac{p(x_i)}{q(x_i)})
=p(x)log(p(x))p(x)log(q(x)) \qquad\qquad= p(x)log(p(x)) - p(x)log(q(x))
=(p(x)log(p(x)))+[p(x)log(q(x))] \qquad\qquad= -(-p(x)log(p(x))) + [ - p(x)log(q(x))]
=H(x)+[p(x)log(q(x))](5) \qquad\qquad= -H(x) + [ - p(x)log(q(x))] \qquad (5)
因此,三者之間滿足:
KL散度 = -熵 + 交叉熵
機器學習中,常使用KL散度來評估預測值predict和實際值label之間的差別,但是從上面可以看出來前半部分-熵是一個常數,因此就直接將後半部分的交叉熵作爲損失函數,結果是等效的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章