免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

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

 LibraryPKU 2019-11-07




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



  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ì)的哈登來(lái)舉例 。

1

主題:物理概念的熵

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

它們具有不同的熵值:

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

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

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

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

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

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

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

2

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

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

    如果我預(yù)測(cè)他會(huì)投籃,或他會(huì)灌籃

=>

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

=>

    我將不確定性減半

=>

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

計(jì)算公式

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

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

類比一下:

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

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

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

    ...

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

3

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

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

這時(shí)我們可以把它等價(jià)想象成有四個(gè)事件,3 個(gè)投籃事件和 1 個(gè)灌籃事件。

那么

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

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

如果平均來(lái)看,

    75%×0.42 + 25%×20.81

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

4

主題:熵 = 平均信息量

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

    信息量 = - log2(p)

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

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

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

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

5

主題:等概率事件編碼

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

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

    0 1 0 0 1 0 0 0

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

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

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

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

6

主題:不等概率事件編碼

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

每個(gè)動(dòng)作我們還是用長(zhǎng)度為 2 的密碼編碼時(shí),那么最后得到的期望長(zhǎng)度還是 2 比特,如下圖所示。

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

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

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

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

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

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

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

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

7

主題:信息論

正式了解一下編碼:

  • 長(zhǎng)度為 1 的編碼有 2 個(gè):{0, 1}

  • 長(zhǎng)度為 2 的編碼有 4 = 22 個(gè):{00, 01, 10, 11}

    ...

  • 長(zhǎng)度為 N 的編碼有 2N 個(gè):{太多了,不想寫了}

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

如果每個(gè)編碼長(zhǎng)度相等,那么一串編碼就有唯一的解碼方式。比如 01101110 就可以解碼成 01-10-11-10,簡(jiǎn)單。

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

  • 0 - 11 - 01 - 110

  • 01 - 110 - 111 - 0

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

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

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

從上圖可知

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

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

這就是代價(jià),這需要權(quán)衡,當(dāng)你對(duì)一個(gè)動(dòng)作用了短編碼,你就需要對(duì)其他動(dòng)作用個(gè)長(zhǎng)編碼。

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

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

  • 兩分 - 0

  • 三分 - 10

  • 上籃 - 110

  • 灌籃 - 111

用上面一串密碼來(lái)編碼不會(huì)有任何歧義了。

8

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

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

無(wú)論怎么修改編碼,如果一個(gè)隨機(jī)事件的概率定下來(lái)了,那么用于交流該事件用的平均編碼長(zhǎng)度不會(huì)低于基于該事件分布的熵。

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

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

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

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

9

主題:交叉熵

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

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

  • 三分 1/8

  • 上籃 1/2

  • 灌籃 1/4

  • 二分 1/8

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

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

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

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

把哈登動(dòng)作分布稱為 p 分布,把威少動(dòng)作分布稱為 q 分布,那么 p 分布對(duì) q 分布的交叉熵公式如下

而 q 分布對(duì) p 分布的交叉熵公式如下(把 p 和 q 位置反過來(lái))

熵和交叉熵的總結(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)兩個(gè)規(guī)律:

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

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

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

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

  3.     Hq(p) ≠ Hp(q)

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

10

主題:KL 散度

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

回到我們的場(chǎng)景,把哈登動(dòng)作分布稱為 p 分布,把威少動(dòng)作分布稱為 q 分布,那么 p 分布對(duì) q 分布的 KL 散度定義為

而 q 分布對(duì) p 分布的 KL 散度定義為

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

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

總結(jié)

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

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

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

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

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


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

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

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

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

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

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


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

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

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

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多