熵,交叉熵,相對熵,KL散度辨析,條件熵

熵,交叉熵,相對熵,KL散度辨析,條件熵

來自專欄 雲山的機器學習備忘錄

知乎上關於這個問題已經有很好的回答了如何通俗的解釋交叉熵與相對熵? 。我這裡畫蛇添足完全是給自己看的,是對排名首位答案的學習理解過程。

首先看信息量的概率 log(frac{1}{p}) ,當一個事件的概率p越小的時候,它的不確定性越大,它的信息量越大。如此看來,信息量 proptofrac{1}{p} ,那為什麼還要加log呢?因為還需要滿足兩個獨立信息量總和等於它們各自信息量之和,即  log(frac{1}{p_1p_2})=log(frac{1}{p_1})+log(frac{1}{p_2})

同時當概率越小的時候,它的編碼長度越大。回憶一下哈夫曼編碼,從上往下選擇概率最小的兩個節點作為新節點的左右子節點。所以p的值越小,它的路徑就越深,它的編碼長度就越大,它的信息量就越大,但是我們知道哈夫曼編碼之所以如此優秀,就是因為它把常見的內容用較短的信息表示,把不常見的內容用較長的信息表示,所以每個log(1/p)乘上概率p再加起來就是最優的。 所以對於總體分布,我們計算平均的編碼長度 sum_i p_ilog(frac{1}{p_i}) .。

再來解釋一下交叉熵 H(p,q)=sum_ip_ilog(frac{1}{q_i}) ,是以錯誤分布q得到的編碼取估計正確分布p的編碼長度。再回想一下哈夫曼編碼,比如有總體數據(白,白,白,黑,黑,四個紅),我們通過採樣得到了一個樣本(白,白,黑,黑,紅),這個分布可能不是總體分布,它是一個錯誤的分布。當我們希望計算通過採樣數據得到的編碼方式去編碼整個數據集的時候,就會產生交叉熵。實際上這裡指的編碼應該是香濃編碼,而不是哈夫曼編碼。我這裡只是用哈夫曼編碼做個解釋,希望讀者注意。

所以交叉熵是用正確分布p去乘錯誤分布的信息量,即是 sum p_ilog(frac{1}{q_i}) 而不是 sum q_ilog(frac{1}{p_i})

相對熵=交叉熵-熵,表示用錯誤分布表示正確分布相對於正確分布表示正確分布的無謂代價。當錯誤分布和正確分布越接近,這種無謂代價(相對熵)就會越小。當錯誤分布和正確分布完全相同的時候,相對熵就等於0。所以這啟發我們可能用相對熵來表示兩個分布的距離,但需要注意的是,這裡的相對熵不是對稱的。和傳統意義上距離具有非負,對稱性,三角不等性,以及距離自己的為0這四條性質不同。相對熵,不具有對稱性。相對熵有另外一個名字-----kl散度。

條件熵是在決策樹中出現的概念。表示當前節點分裂成新的節點的節點熵之和。 H(Y|X)=sum_{xin X} p(x)H(Y|x)


推薦閱讀:

反向傳播演算法和梯度下降理解
微軟宣布在機器中英雙語翻譯領域取得突破性進展
EdX-Columbia機器學習課第8講筆記:線性分類器與感知機

TAG:機器學習 | 距離 |