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