相对熵与交叉熵_熵、KL散度、交叉熵
機器學習算法與自然語言處理出品
@公眾號原創(chuàng)專欄作者?思婕的便攜席夢思
單位 |?哈工大SCIR實驗室
KL散度 = 交叉熵 - 熵
1. 熵(Entropy)
抽象解釋:熵用于計算一個隨機變量的信息量。對于一個隨機變量X,X的熵就是它的信息量,也就是它的不確定性。
形象例子:有兩個隨機變量X和Y,或者說兩個事件,X表示“投一枚硬幣,落地時,哪一面朝上”;Y表示“太陽從哪個方向升起”。對于隨機變量X,“正面朝上”和“反面朝上”的概率各為0.5;對于隨機變量Y,“太陽從東邊升起”的概率為1,從另外三個方向升起的概率為0。由此可以看出,事件X的不確定性大于事件Y,因此事件X的熵也就大于事件Y。
那么具體該如何計算熵呢?
熵的數(shù)學定義為:
舉個例子,依舊是投硬幣的那個事件:
我們令
那么它的熵為:
從編碼的角度理解熵
對于任意一個離散型隨機變量,我們都可以對其進行編碼。例如我們可以把字符看出一個離散型隨機變量。
根據(jù)shannon的信息論,給定一個字符集的概率分布,我們可以設(shè)計一種編碼,使得表示該字符集組成的字符串平均需要的比特數(shù)最少。假設(shè)這個字符集是X,對x∈X,其出現(xiàn)概率為P(x),那么其最優(yōu)編碼(哈夫曼編碼)平均需要的比特數(shù)等于這個字符集的熵。
1. KL散度(Kullback-Leibler divergence)
抽象解釋:KL散度用于計算兩個隨機變量的差異程度。相對于隨機變量X,隨機變量Y有多大的不同?這個不同的程度就是KL散度。KL散度又稱為信息增益,相對熵。需要注意的是KL散度是不對稱的,就是說:X關(guān)于Y的KL散度 不等于 Y關(guān)于X的KL散度。
形象例子:
X表示“不透明的袋子里有2紅2白五個球,隨機抓一個球,球的顏色”事件,
Y表示“不透明的袋子里有3紅2白五個球,隨機抓一個球,球的顏色”事件,
Z表示“不透明的袋子里有1紅1白兩個球,隨機抓一個球,球的顏色”事件。
由于在事件X和Z中,都是P(紅)=0.5 P(白)=0.5;而在事件Y中P(紅)=0.6 P(白)=0.4,所以我們認為:相對于事件X,事件Y的差異程度小于事件Z。
那么該如何具體計算KL散度呢?
KL散度的數(shù)學定義為:
對于離散型隨機變量,我們定義A和B的KL散度為:
對于離散型隨機變量,我們定義A和B的KL散度為:
從編碼的角度理解KL散度
在同樣的字符集上,假設(shè)存在另一個概率分布Q(X)。如果用概率分布P(X)的最優(yōu)編碼(即字符x的編碼長度等于log[1/P(x)]),來為符合分布Q(X)的字符編碼,那么表示這些字符就會比理想情況多用一些比特數(shù)。KL-divergence就是用來衡量這種情況下平均每個字符多用的比特數(shù),因此可以用來衡量兩個分布的距離。
1. 交叉熵(Cross-Entropy)
抽象解釋:我所理解的交叉熵的含義,與KL散度是類似的,都是用于度量兩個分布或者說兩個隨機變量、兩個事件不同的程度。
具體例子:與KL散度類似
交叉熵的數(shù)學定義:
比較熵、KL散度和交叉熵的數(shù)學定義會發(fā)現(xiàn):
KL散度 = 交叉熵 - 熵
從編碼的角度理解交叉熵熵的意義是:對一個隨機變量A編碼所需要的最小字節(jié)數(shù),也就是使用哈夫曼編碼根據(jù)A的概率分布對A進行編碼所需要的字節(jié)數(shù);KL散度的意義是:使用隨機變量B的最優(yōu)編碼方式對隨機變量A編碼所需要的額外字節(jié)數(shù),具體來說就是使用哈夫曼編碼卻根據(jù)B的概率分布對A進行編碼,所需要的編碼數(shù)比A編碼所需要的最小字節(jié)數(shù)多的數(shù)量;交叉熵的意義是:使用隨機變量B的最優(yōu)編碼方式對隨機變量A編碼所需要的字節(jié)數(shù),具體來說就是使用哈夫曼編碼卻根據(jù)B的概率分布對A進行編碼,所需要的編碼數(shù)。
推薦閱讀:
【長文詳解】從Transformer到BERT模型
賽爾譯文 | 從頭開始了解Transformer
百聞不如一碼!手把手教你用Python搭一個Transformer
總結(jié)
以上是生活随笔為你收集整理的相对熵与交叉熵_熵、KL散度、交叉熵的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python virtualenv ng
- 下一篇: 美国纳斯达克上市要求