機(jī)器學(xué)習(xí)(3)——信息論基礎(chǔ)(熵的介紹)

信息論基礎(chǔ)

??在講述熵的時(shí)候,我想先引入一個(gè)新的東西——信息量,信息是用來(lái)減少隨機(jī)不確定性的東西(即不確定性的減少)。對(duì)于事件來(lái)說(shuō),它發(fā)生的概率越大,那么它所含有的信息量就越低,這很好理解,例如你今天去吃飯這個(gè)事件,這件事假定是一個(gè)必然事件的話,那么它所含有的信息只有吃飯這一件,那么假設(shè)這件事的概率越低,你也許會(huì)因?yàn)樯《幌氤燥?,也許你隨著心情來(lái)決定是否吃飯,它所含有的信息量就變大了。那么對(duì)于交叉熵中的熵,這又是一個(gè)什么東西呢?
??對(duì)于理工科的讀者來(lái)說(shuō),這個(gè)東西并不難以理解,高中化學(xué)曾經(jīng)學(xué)習(xí)過(guò)熵的一些概念。化學(xué)中的熵是指一個(gè)體系中的混亂程度,事實(shí)上對(duì)應(yīng)我們機(jī)器學(xué)習(xí)中的熵是類似的。一個(gè)事物越混亂,那么很顯然它就包含了更多的信息。
??熵有許多種,交叉、信息熵、相對(duì)熵以及條件熵等等。

信息熵

??信息熵是由信息論之父香農(nóng)提出來(lái)的,它用于隨機(jī)變量的不確定性度量,先上信息熵的函數(shù)圖片。

Figure_1.png

??先上信息熵的公式:
H(X)=-\sum_{x \in X}p(x)logp(x)

??我們可以用
log\frac{1}{P}
來(lái)衡量不確定性。P是一件事情發(fā)生的概率,概率越大,不確定性越小。
??可以看到信息熵的公式,其實(shí)就是
log\frac{1}{P}
的期望,就是不確定性的期望,它代表了一個(gè)系統(tǒng)的不確定性,信息熵越大,不確定性越大。
??注意這個(gè)公式有個(gè)默認(rèn)前提,就是X分布下的隨機(jī)變量x彼此之間相互獨(dú)立。還有l(wèi)og的底默認(rèn)為2,實(shí)際上底是多少都可以,但是在信息論中我們經(jīng)常討論的是二進(jìn)制和比特,所以用2。
??信息熵在聯(lián)合概率分布的自然推廣,就得到了聯(lián)合熵:
H(X,Y)=-\sum_{x \in X} \sum_{y \in Y}p(x,y)logp(x,y)

??當(dāng)X, Y相互獨(dú)立時(shí),
H(X, Y) = H(X) + H(Y)

??當(dāng)X和Y不獨(dú)立時(shí),可以用
I(X, Y) = H(X) + H(Y) - H(X, Y)
衡量?jī)蓚€(gè)分布的相關(guān)性,這個(gè)定義比較少用到。
??下面這個(gè)例子很好的說(shuō)明了這個(gè)問(wèn)題

取自知乎
比如賭馬比賽,有4匹馬{ A, B, C, D},獲勝概率分別為{ 1/2, 1/4, 1/8, 1/8 },將哪一匹馬獲勝視為隨機(jī)變量X屬于 { A, B, C, D } 。
假定我們需要用盡可能少的二元問(wèn)題來(lái)確定隨機(jī)變量 X 的取值。
例如,問(wèn)題1:A獲勝了嗎? 問(wèn)題2:B獲勝了嗎? 問(wèn)題3:C獲勝了嗎?
最后我們可以通過(guò)最多3個(gè)二元問(wèn)題,來(lái)確定取值。
如果X = A,那么需要問(wèn)1次(問(wèn)題1:是不是A?),概率為1/2
如果X = B,那么需要問(wèn)2次(問(wèn)題1:是不是A?問(wèn)題2:是不是B?),概率為1/4
如果X = C,那么需要問(wèn)3次(問(wèn)題1,問(wèn)題2,問(wèn)題3),概率為1/8
如果X = D,那么需要問(wèn)3次(問(wèn)題1,問(wèn)題2,問(wèn)題3),概率為1/8
那么為確定X取值的二元問(wèn)題的數(shù)量為
E(N)=\frac{1}{2}\cdot1+\frac{1}{4}\cdot2+\frac{1}{8}\cdot3+\frac{1}{8}\cdot3=\frac{7}{4}
回到信息熵的定義,會(huì)發(fā)現(xiàn)通過(guò)之前的信息熵公式,神奇地得到了:
H(X)=\frac{1}{2}log_2(2)+\frac{1}{4}log_24+\frac{1}{8}log_28=\frac{7}{4}bits
在二進(jìn)制計(jì)算機(jī)中,一個(gè)比特為0或1,其實(shí)就代表了一個(gè)二元問(wèn)題的回答。也就是說(shuō),在計(jì)算機(jī)中,我們給哪一匹馬奪冠這個(gè)事件進(jìn)行編碼,所需要的平均碼長(zhǎng)為1.75個(gè)比特。
很顯然,為了盡可能減少碼長(zhǎng),我們要給發(fā)生概率p(x)較大的事件,分配較短的碼長(zhǎng)l(x)。這個(gè)問(wèn)題深入討論,可以得出霍夫曼編碼的概念。
霍夫曼編碼就是利用了這種大概率事件分配短碼的思想,而且可以證明這種編碼方式是最優(yōu)的。我們可以證明上述現(xiàn)象:
為了獲得信息熵為H(X)的隨機(jī)變量X的一個(gè)樣本,平均需要拋擲均勻硬幣(或二元問(wèn)題)H(X)次(參考猜賽馬問(wèn)題的案例)
信息熵是數(shù)據(jù)壓縮的一個(gè)臨界值(參考碼長(zhǎng)部分的案例)

*Kullback-Leibler*****散度

??我們通常將 Kullback-Leibler 散度稱之為相對(duì)熵或者 KL距離 ,如果我們對(duì)于同一個(gè)隨機(jī)變量 x 有兩個(gè)單獨(dú)的概率分布P(x)Q(x),我們可以使用KL散度來(lái)衡量這兩個(gè)分布的差異。
??在機(jī)器學(xué)習(xí)中,P往往用來(lái)表示樣本的真實(shí)分布,比如[1,0,0]表示當(dāng)前樣本屬于第一類。Q用來(lái)表示模型所預(yù)測(cè)的分布,比如[0.7,0.2,0.1]。直觀的理解就是如果用P來(lái)描述樣本,那么就非常完美。而用Q來(lái)描述樣本,雖然可以大致描述,但是不是那么的完美,信息量不足,需要額外的一些“信息增量”才能達(dá)到和P一樣完美的描述。如果我們的Q通過(guò)反復(fù)訓(xùn)練,也能完美的描述樣本,那么就不再需要額外的“信息增量”,Q等價(jià)于P。
??KL散度的計(jì)算公式:
D_{KL}(p||q)=\sum_{i=1}^np(x_i)log_2\frac{p(x_i)}{q(x_i)})
n為事件所有的可能性,D_{KL}的值與pq分布接近程度呈正相關(guān)關(guān)系。

交叉熵

??交叉熵可以看做 Kullback-Leibler散度 的特例,展開(kāi)KL散度的公式:
D_{KL}(p||q)=\sum_{i=1}^np(x_i)log_2p(x_i)-p(x_i)log_2q(x_i)
??而之前我們給出的信息熵的公式是:
H(p)=-\sum_{i=1}^ip(x_i)logp(x_i)
??交叉熵公式是:
H(p,q) = -\sum_{i=1}^np(x_i)log_2(q(x_i))
??很容易發(fā)現(xiàn),D_{KL}(p||q)+H(p)=H(p,q)。也就是說(shuō),如果H(p)是一個(gè)常量的時(shí)候,交叉熵和相對(duì)熵是完全等價(jià)的。
??看到這里,你也許會(huì)困惑為什么有KL散度和交叉熵兩種算法?為什么他們可以用來(lái)求分布的不同?什么時(shí)候可以等價(jià)使用?這是一種解釋:

  • 熵的意義是對(duì)A事件中的隨機(jī)變量進(jìn)行編碼所需的最小字節(jié)數(shù)。
  • KL散度的意義是“額外所需的編碼長(zhǎng)度”如果我們用B的編碼來(lái)表示A。
  • 交叉熵指的是當(dāng)你用B作為密碼本來(lái)表示A時(shí)所需要的“平均的編碼長(zhǎng)度”。

??大多數(shù)情況下,交叉熵和相對(duì)熵都是等價(jià)的,那么既然等價(jià),顯然使用更為簡(jiǎn)單的公式。

一點(diǎn)總結(jié)

??說(shuō)了那么多,你或許會(huì)問(wèn),熵究竟有什么用處。交叉熵常常用作算法中的損失函數(shù)。為什么可以這樣?因?yàn)闄C(jī)器學(xué)習(xí)算法本質(zhì)上就是讓模型學(xué)習(xí)到的分布與真實(shí)數(shù)據(jù)之間的分布越小越好。我們的 Kullback-Leibler 散度反映的不就是擬合程度嗎?交叉熵可以和很多概率模型完美的結(jié)合。所以一般邏輯思路是,為了讓學(xué)到的模型分布更貼近真實(shí)數(shù)據(jù)分布,我們最小化模型數(shù)據(jù)分布與訓(xùn)練數(shù)據(jù)之間的KL散度,而因?yàn)橛?xùn)練數(shù)據(jù)的分布是固定的,因此最小化KL散度等價(jià)于最小化交叉熵。因?yàn)榈葍r(jià),而且交叉熵更簡(jiǎn)單更好計(jì)算,所以我們還是使用交叉熵做為主要的計(jì)算公式。

我的掘金:WarrenRyan

我的簡(jiǎn)書(shū):WarrenRyan

歡迎關(guān)注我的博客獲得第一時(shí)間更新 https://blog.tity.online

我的Github:StevenEco

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容