如何通俗的解釋交叉熵與相對熵


 

[From] https://www.zhihu.com/question/41252833/answer/108777563

熵的本質是香農信息量(log\frac{1}{p} )的期望。

現有關於樣本集的2個概率分布p和q,其中p為真實分布,q非真實分布。按照真實分布p來衡量識別一個樣本的所需要的編碼長度的期望(即平均編碼長度)為:H(p)=\sum_{i}^{} p(i)*log\frac{1}{p(i)} 。如果使用錯誤分布q來表示來自真實分布p的平均編碼長度,則應該是:H(p,q)=\sum_{i}^{} p(i)*log\frac{1}{q(i)} 。因為用q來編碼的樣本來自分布p,所以期望H(p,q)中概率是p(i)。H(p,q)我們稱之為“交叉熵”。

比如含有4個字母(A,B,C,D)的數據集中,真實分布p=(1/2, 1/2, 0, 0),即A和B出現的概率均為1/2,C和D出現的概率都為0。計算H(p)為1,即只需要1位編碼即可識別A和B。如果使用分布Q=(1/4, 1/4, 1/4, 1/4)來編碼則得到H(p,q)=2,即需要2位編碼來識別A和B(當然還有C和D,盡管C和D並不會出現,因為真實分布p中C和D出現的概率為0,這里就欽定概率為0的事件不會發生啦)。

可以看到上例中根據非真實分布q得到的平均編碼長度H(p,q)大於根據真實分布p得到的平均編碼長度H(p)。事實上,根據Gibbs' inequality可知,H(p,q)>=H(p)恆成立,當q為真實分布p時取等號。我們將由q得到的平均編碼長度比由p得到的平均編碼長度多出的bit數稱為“相對熵”:D(p||q)=H(p,q)-H(p)=\sum_{i}^{} p(i)*log\frac{p(i)}{q(i)} ,其又被稱為KL散度(Kullback–Leibler divergence,KLD) Kullback–Leibler divergence。它表示2個函數或概率分布的差異性:差異越大則相對熵越大,差異越小則相對熵越小,特別地,若2者相同則熵為0。注意,KL散度的非對稱性。

比如TD-IDF算法就可以理解為相對熵的應用:詞頻在整個語料庫的分布與詞頻在具體文檔中分布之間的差異性。

交叉熵可在神經網絡(機器學習)中作為損失函數,p表示真實標記的分布,q則為訓練后的模型的預測標記分布,交叉熵損失函數可以衡量p與q的相似性。交叉熵作為損失函數還有一個好處是使用sigmoid函數在梯度下降時能避免均方誤差損失函數學習速率降低的問題,因為學習速率可以被輸出的誤差所控制。

PS:通常“相對熵”也可稱為“交叉熵”,因為真實分布p是固定的,D(p||q)由H(p,q)決定。當然也有特殊情況,彼時2者須區別對待。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM