日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

熵,交叉熵,散度理解较为清晰

發(fā)布時間:2023/11/28 生活经验 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 熵,交叉熵,散度理解较为清晰 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

20210511

https://blog.csdn.net/qq_35455503/article/details/105714287
交叉熵和散度

自己給自己編碼肯定是最小的 其他的編碼都會比這個值大


全文共?4351?字,23?幅圖,預(yù)計(jì)閱讀時間?22?分鐘。

本文是「小孩都看得懂」系列的第八篇,本系列的特點(diǎn)是極少公式沒有代碼只有圖畫只有故事。內(nèi)容不長,碎片時間完全可以看完,但我背后付出的心血卻不少。喜歡就好!

  1. 小孩都看得懂的熵、交叉熵和 KL 散度

本文被以下三份資料所啟發(fā),純純的致敬!

  • [Christopher Colah] -?Visual Information Theory

  • [Aurélien Géron] - A Short Introduction to Entropy, Cross-Entropy and KL-Divergence

  • [Luis Serrano] -?Shannon Entropy and Information Gain

這次還拿馬賽克隊(duì)的哈登來舉例 。

1

主題:物理概念的熵

熵(entropy)是物理中的一個概念。如下圖,水有三種狀態(tài):固態(tài)、液態(tài)和氣態(tài),分別以冰、水和水蒸氣的形式存在。

它們具有不同的熵值:

  • 冰中的分子位置固定,處于穩(wěn)定狀態(tài),因此冰具有低熵值

  • 水中的分子相對可以進(jìn)行一些移動,因此水具有中熵值

  • 水蒸氣中的分子幾乎可以移動到任何地方,因此水蒸氣具有高熵值

現(xiàn)在你大體有個感覺,越不穩(wěn)定的東西具有的熵值越大

世界處處充滿不確定性,從不確定到確定肯定是得到了額外的信息。從計(jì)算機(jī)專業(yè)術(shù)語來講,比特(BIT, Binary Digit)是衡量信息的單位。?

講到這里小孩可能聽不懂了,那么就先不嚴(yán)謹(jǐn)?shù)恼J(rèn)為,比特可用?0 或 1 代表,而

傳遞 1 比特信息 =?將不確定性減半

2

主題:等概率事件的信息量

從物理切換到體育,假設(shè)馬賽克隊(duì)的哈登每次進(jìn)攻,50%?機(jī)會投籃,50% 的機(jī)會灌籃,如下圖所示。

????如果我預(yù)測他會投籃,或他會灌籃

=>

????我都把兩種情況減少到了一種情況,

=>

????我將不確定性減半

=>

????我發(fā)出?1 比特的信息

計(jì)算公式

????log2(2)?= log2(1/50%) = 1

咦?信息(1 比特)和概率(50%)聯(lián)系起來了。

類比一下:

  • 2 種情況,每種發(fā)生的概率是 1/2 = 1/21,預(yù)測任意一種情況發(fā)出 1 比特信息

  • 4 種情況,每種發(fā)生的概率是 1/4 = 1/22,預(yù)測任意一種情況發(fā)出 2?比特信息

  • 8 種情況,每種發(fā)生的概率是?1/8 = 1/23,預(yù)測任意一種情況發(fā)出 3?比特信息

    ...

  • 2N?種情況,每種發(fā)生的概率是?1/2N,預(yù)測任意一種情況發(fā)出 N?比特信息

3

主題:不等概率事件的信息量

等概率發(fā)生的事件理解起來容易,那如果哈登每次進(jìn)攻,75%?機(jī)會投籃,25% 的機(jī)會灌籃呢?如下圖所示。

這時我們可以把它等價想象成有四個事件,3 個投籃事件和 1 個灌籃事件。

那么

  • 如果我預(yù)測投籃,相當(dāng)于把 4 個事件的不確定性變成到 3 個事件的不確定性,放縮程度是 4/3,也正好是 1/75%,這時我發(fā)出了?log2(4/3) = 0.42 個比特信息

  • 如果我預(yù)測灌籃,相當(dāng)于把?4 個事件的不確定性編程到 1 個事件的確定性,放縮程度是?4/1,也正好是 1/25%,這時我發(fā)出了?log2(4)?= 2 個比特信息

如果平均來看,

????75%×0.42 + 25%×2 =?0.81

我發(fā)出的信息量是 0.81 比特。

4

主題:熵 = 平均信息量

現(xiàn)在我們可以歸納一下,對于有 p 概率發(fā)生的事件,預(yù)測該事件發(fā)生等價于發(fā)出?log2(1/p) 比特信息,因?yàn)?log2(1/x) =?-?log2(x),我們可以將信息量寫成?

????信息量 = - log2(p)

考慮到所有事件,平均信息量的公式為(期望公式)

????平均信息量 =?-∑i pi×log2(pi)

平均信息量就是信息論中的熵!用符號 H(p) 表示(粗體 p 代表 p1, p2, ..., pn),因此我們有

????H(p) =?-∑i?pi×log2(pi)

5

主題:等概率事件編碼

某天我在客戶那邊做項(xiàng)目,看不了 NBA 直播,只能通過在美國的朋友小明發(fā)短信直播,他會告訴我哈登每次進(jìn)攻的手段:三分、上籃、灌籃、兩分。

但是小明用二進(jìn)制密碼和我交流,我收到的短信是下面這樣子的:

? ? 0 1 0?0 1 0 0 0

為了理解短信的真實(shí)含義,我需要一個解碼表,如下:

這樣,我就可以把小明傳的密碼分段,然后將每段密碼在解碼表中找到對應(yīng)的動作,因此 01001000 就解碼成上籃三分灌籃三分

假設(shè)哈登兩分、三分、上籃、灌籃這四個動作是等概率發(fā)生,那面我們可以給編碼長度(橫軸)和動作頻率(縱軸)做一個可視化,如下圖。

圖中彩色面積之和就表示每次短信說一個動作所需要的密碼的期望長度,顯然在這種情況下,期望長度為 2 比特。

6

主題:不等概率事件編碼

如果哈登進(jìn)攻手段(兩分、三分、上籃、灌籃)不是等概率發(fā)生呢?我們知道哈登最喜歡投三分(1/2 時間),再就是上籃(1/4 時間),而投兩分(1/8 時間)和上籃(1/8 時間)比較少。

每個動作我們還是用長度為 2 的密碼編碼時,那么最后得到的期望長度還是 2 比特,如下圖所示。

你要知道從小明美國從發(fā)短信很貴啊,按編碼長度收錢的,他可以做的更好一點(diǎn)么(即編碼更短一些)?先看下圖。

現(xiàn)在每次短信的期望密碼長度變成了 1.75 比特,好過 2 比特。

其實(shí)我們做法很簡單,就

  • 對于頻率高的動作(三分),我們用短編碼(0)

  • 對于頻率低的動作(兩分),我們用短編碼(111)

因此上面上籃三分灌籃三分的編碼為?10 0 111 100

問題來了,當(dāng)解碼的時候,我怎么把這一串編碼拆分為對應(yīng)到每個動作的一個個編碼呢?如果每個動作的編碼長度都一樣,我那還可以等分,但現(xiàn)在每個每個動作的編碼長度都不一樣。

別問,問就是下節(jié)告訴你(盡管不情愿)!

7

主題:信息論

正式了解一下編碼:

  • 長度為 1 的編碼有 2 個:{0, 1}

  • 長度為 2 的編碼有 4?= 22 個:{00, 01, 10, 11}

    ...

  • 長度為 N?的編碼有?2N 個:{太多了,不想寫了}

每次只要加 1 比特,編碼種數(shù)就翻倍。如下圖。

如果每個編碼長度相等,那么一串編碼就有唯一的解碼方式。比如 01101110 就可以解碼成 01-10-11-10,簡單。

如果每個編碼長度不相等,那么一串編碼可以用同解碼方法,比如?01101110 可以解碼成以下兩種(其實(shí)有很多種)

  • 0 - 11 - 01 - 110

  • 01 - 110 - 111 - 0

這樣不就亂套了,必須采取限制,有個規(guī)則叫 prefix codes,就是任何編碼都不能是其他編碼的前綴。舉例

  • 如果你用了 0,你就不能再用以 0 開頭的其他編碼,如 01, 001, 011 ...

  • 如果你用了?01,你就不能再用以?01?開頭的其他編碼,如?011, 011111 ...

從上圖可知

  • 如果你用了?0,你失去了?1/2?的編碼空間了

  • 如果你用了?01,你失去了?1/4?的編碼空間了

這就是代價,這需要權(quán)衡,當(dāng)你對一個動作用了短編碼,你就需要對其他動作用個長編碼。

下圖就是一種編碼,而且是最優(yōu)編碼(這個就不證明了,需要用到拉格朗日算子,目測沒有小孩可以懂)。

這樣我們就給每一個進(jìn)攻動作一個密碼:

  • 兩分 - 0

  • 三分 - 10

  • 上籃 - 110

  • 灌籃 - 111

用上面一串密碼來編碼不會有任何歧義了。

8

主題:復(fù)習(xí)一下熵

現(xiàn)在我們知道最優(yōu)編碼長度就是熵(通常上面一節(jié)解釋,希望現(xiàn)在可以秒懂熵的公式)。

無論怎么修改編碼,如果一個隨機(jī)事件的概率定下來了,那么用于交流該事件用的平均編碼長度不會低于基于該事件分布的熵。

  • 如果很確定會發(fā)生什么事,那么就根本沒有發(fā)送信息的必要。

  • 如果某件事有 2 種可能,概率分別為 50%,那么只需要發(fā)送 1 比特。

  • 如果有 64 種可能,每種發(fā)生的可能性都一樣,那么平均需要 6 比特。

實(shí)際上,如果這些可能性中,每件事發(fā)生的概率相對集中,那么所需要的平均編碼長度就更短,而如果概率相對分散,那么需要的平均編碼長度就更長。均勻分布需要的平均編碼長度最長。

9

主題:交叉熵

小明通過研究哈登的歷史進(jìn)攻動作發(fā)生頻率(三分 1/2,上籃 1/4,灌籃和兩分 1/8),做了一套編碼(定義為哈登編碼),每次傳遞一次信息只用 1.75 比特。

現(xiàn)在我又想讓小明告訴我威少的下一個進(jìn)攻動作,還可以用哈登編碼來傳遞信息嗎?威少的歷史進(jìn)攻動作發(fā)生頻率如下:

  • 三分 1/8

  • 上籃 1/2

  • 灌籃 1/4

  • 二分 1/8

下圖對比一下哈登和威少的進(jìn)攻動作頻率圖。

這樣,如果用哈登編碼來發(fā)送威少動作分布的信息,得到信息平均編碼長度就叫做交叉熵

反過來,如果用威少編碼來發(fā)送哈登動作分布的信息,得到信息平均編碼長度就也叫做交叉熵

正規(guī)定義:使用專門為另一個分布制作的密碼表來發(fā)送某個分布中事件的信息,此時信息的平均編碼長度定義為交叉熵(cross-entropy)。

把哈登動作分布稱為?p 分布,把威少動作分布稱為?q 分布,那么?p 分布對?q 分布的交叉熵公式如下

?

而?q 分布對?p 分布的交叉熵公式如下(把 p 和 q 位置反過來)

熵和交叉熵的總結(jié)在下圖。

根據(jù)上面公式計(jì)算各種熵和交叉熵,得到

  • 用哈登編碼傳遞哈登進(jìn)攻信息 H(p) = 1.75 比特

  • 用哈登編碼傳遞威少進(jìn)攻信息?Hp(q) = 2.25 比特

  • 用威少編碼傳遞威少進(jìn)攻信息?H(q) = 1.75?比特

  • 用威少編碼傳遞哈登進(jìn)攻信息?Hq(p) =?2.375 比特

我們發(fā)現(xiàn)兩個規(guī)律:

  1. 小于交叉熵(符合熵是最優(yōu)編碼的結(jié)論)

    1. H(p) = Hp(p)<?Hq(p)

    2. H(q) = Hq(q) <?Hp(q)

  2. 交叉熵不對稱(不直觀,接受吧少年)

????Hq(p) ≠ Hp(q)

????

熵比交叉熵要小,那兩者之間的差距是什么?看下節(jié)。

10

主題:KL 散度

Kullback-Leibler 散度(KL 散度)是熵與交叉熵之間的差值。稱之為散度而不是距離是因?yàn)榫嚯x是對稱的,而散度可以是不對稱的。

回到我們的場景,把哈登動作分布稱為 p 分布,把威少動作分布稱為?q 分布,那么?p 分布對 q 分布的?KL 散度定義為

而?q 分布對?p 分布的?KL 散度定義為

上面 log2(q(x)/p(x))?或 log2(p(x)/q(x)) 實(shí)際上是描述編碼每個進(jìn)攻動作時兩種不同的編碼之間的長度差異。

分布 p 和 q 差別越大,那么之間的 KL 散度 KLq(p) 和?KLp(q) 也就越大。

總結(jié)

最后看看湖人隊(duì)的麥基,他進(jìn)攻手段只有灌籃,如下圖所示。

我不需要做什么預(yù)測(不需要發(fā)出任何信息),因此麥基 100% 會灌籃,根據(jù)公式我們有

????H(p) = - 0×log20 -?1×log21 = 0

我們知道?log21 = 0,而且需要定義?log20 = 0。

如果某件事本身越不確定,而當(dāng)你知道發(fā)生了什么時,你得到的信息也就越多。


交叉熵,即使用針對另一分布制作的密碼表對某個分布內(nèi)的事件進(jìn)行通訊時的長度,其組成分為兩部分:

  1. 使用針對本分布密碼表進(jìn)行通訊時所需的最短平均編碼長度,即

  2. 因使用針對其他分布的密碼表而導(dǎo)致的多出的部分,即 KL 散度

數(shù)學(xué)表達(dá)式如下:

????交叉熵p(q) =?熵(q) +?散度p(q)

????交叉熵q(p)?=?熵(p)?+?散度q(p)


最后提一下機(jī)器學(xué)習(xí)用的熵公式里面的對數(shù)都是以 e 為底,即 ln(),它和以 2?為底的對數(shù)只差一個大于零的常數(shù)項(xiàng),我們有

????ln(x) =?log2(x) /?log2e?=?c×log2(x)

因此在做極值問題時,不會對結(jié)果有什么影響。

總結(jié)

以上是生活随笔為你收集整理的熵,交叉熵,散度理解较为清晰的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。