1 信息量
信息的信息量大小和它的不確定性有很大的關係,如果一句話需要很多外部信息才能確定的話,那麼這句話的信息就很大,例如你說‘明天可能是晴天’,那你需要去看天氣預告等去預測明天是否晴天,有一定的不確定性,如果你說‘今天是週五,明天是週六’,那麼這句話就沒什麼信息量,因爲這是既定的事實,確定性很高。
因此我們就將事件x_0
的信息量定義如下:
I(x0)=−log(p(x0))(1)
其中概率p
是介於0到1之間的數值,概率越大,信息量越小。
2 熵
信息量是對單次事件來說的,實際中一個事件有多種發生的可能,比如明天可能晴天、多雲、下雨等天氣。
熵表示隨機事件不確定的度量,是對所有可能發生的事件的信息量的期望。
H(x)=−i=1∑np(xi)log(p(xi))(2)
其中n表示事件可能發生的情況的總數。
如果對於二分類問題,二項分佈或者0-1分佈,那麼n=2,熵的計算可以轉化爲:
H(x)=−i=1∑np(xi)log(p(xi))
=−p(x)log(p(x))−(1−p(x))log(1−p(x))(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(p∣∣q)=i=1∑np(xi)log(q(xi)p(xi))(4)
KL散度的值越小表示兩個分佈越接近。
4 交叉熵
將KL散度公式進行分解變形得到:
DKL(p∣∣q)=i=1∑np(xi)log(q(xi)p(xi))
=p(x)log(p(x))−p(x)log(q(x))
=−(−p(x)log(p(x)))+[−p(x)log(q(x))]
=−H(x)+[−p(x)log(q(x))](5)
因此,三者之間滿足:
KL散度 = -熵 + 交叉熵
機器學習中,常使用KL散度來評估預測值predict和實際值label之間的差別,但是從上面可以看出來前半部分-熵
是一個常數,因此就直接將後半部分的交叉熵
作爲損失函數,結果是等效的。