原文:https://www.zybuluo.com/frank-shaw/note/108124
信息熵
信息是個很抽象的概念。人們常常說信息很多,或者信息較少,但卻很難說清楚信息到底有多少。比如一本五十萬字的中文書到底有多少信息量。直到1948年,香農提出了“信息熵”的概念,才解決了對信息的量化度量問題。(百度百科)
香農定義的信息熵的計算公式如下:
其中X 表示的是隨機變量,隨機變量的取值為(x1,x2,…,xn) ,p({x_i}) 表示事件xi發生的概率,且有∑p(xi)=1 。信息熵的單位為bit。
說實在的,在聽課的時候對這個概念一直是懵懵懂懂的,一直跨不過去。現在查找一些資料,希望能夠通過筆記讓自己清楚該概念。首先的疑問就是:為什么這樣表達?
首先定義事件xi的信息量為其發生概率對數的負數,記為I(x_i),有:
有了該定義,可以發現信息熵H(X)即為隨機變量X的平均信息量(期望)。那么疑問就變成:為什么−logp(xi)可以表示為事件xi的信息量?
其實這挺好理解:事件xi的信息量大小和它發生的概率(不確定性)有直接的關系。比如說,要搞清楚一件非常不確定的事,或是一無所知的事情,就需要了解大量的信息。相反,如果對某件事已經有較多了解,我們不需要太多的信息就能把它搞清楚。即信息量函數應該與事件概率成單調遞減關系。同時,兩個獨立事件xi,xj(滿足p(xi,xj)=p(xi)∗p(xj))的信息量大小應等於各自信息量之和。那么同時符合以上要求的是I(xi)=−logp(xi)。
在香農1948年的論文《A Mathematical Theory of Communication》中,他通過論證信息熵函數需要滿足的多條性質,推導出信息熵公式的唯一性。有興趣的可以看看。
為了更好的理解,我們舉例說明:
隨機變量為均勻分布
在《數學之美》中的例子:假如我錯過了看世界杯,賽后我問一個知道決賽結果的觀眾“哪支球隊是冠軍?”他不願意直接告訴我,而是讓我猜,每猜一次需要1bit,他的回答是以下2個中的一個:是,否。假設我對這32支球隊一無所知,即我認為每支球隊獲得冠軍的概率是相等的,那么我至少需要付多少bit給他才能知道誰是冠軍?
我把球隊編號為1到32,然后使用折半查找法的原理(如:”冠軍隊在1-16嗎?”)每一次就可以減少一半的隊伍,這樣只需要5次,就能夠知道冠軍球隊。也就是說,誰是世界杯冠軍這條信息的信息量只值5bit。代入計算公式,在這種情況下(等概率假設)得到的信息熵即為5bit。
課堂上,鄒博老師給出的一個例子:
有五個硬幣,四個等重,另外一個是假幣所以質量相比其他4個要輕。我事先不知道關於任何硬幣的信息(即認為每一個硬幣是假幣的概率都是1/5)。這個例子和之前的猜球隊冠軍有一些相似,我也是需要經過詢問才能得到答案,且每問一次需要付1bit。但不同之處在於,現在我可以詢問的對象變成了天平,天平每一次能夠比較兩堆硬幣,且能夠給出3個結果中的一個:左邊比右邊重,右邊比左邊重,兩邊同樣重。問我至少需要付多少bit就能夠確保知道哪個是假幣?
我們通過自己的計算可知道,如果幸運的話我只需要1bit就能夠把假幣測出來(天平左右各兩個硬幣,結果等重,那么假幣即為天平外的一個),但是通常情況下需要2bit才能知道假幣。這個時候,會發現不能夠按照之前的預測世界杯冠軍的方式來計算信息熵了(按照之前的方法直接計算得到log25>2),畢竟之前問觀眾只能給出2種結果,現在問天平能夠給出3種結果啊,需要的bit應該更少。
實際上不僅僅需要關心隨機變量的信息熵,還應該關心被詢問對象(例子中觀眾、天平)的表達能力(即被詢問對象的信息熵)。正確的表達式應該是:
其中X為隨機變量,Y為被詢問對象。該問題最終得到的結果是H(X)H(Y)=log25log23=1.46。世界杯冠軍問題中之所以只計算隨機變量的信息熵是因為被詢問對象的信息熵剛好是1(H(Y)=log22),所以忽略了。在計算機領域和通信領域,被詢問對象一般都只能給出{0,1}兩種結果,其信息熵為1,由此直接忽略。特殊情況下的忽略不代表不存在。
隨機變量不再是均勻分布
有五個硬幣,四個等重,另外一個是假幣所以質量相比其他4個要輕。已知第一個硬幣和第二個硬幣是假硬幣的概率為1/3,其他硬幣為假硬幣的概率為1/9。天平每一次能夠比較兩堆硬幣,且能夠給出3個結果中的一個:左邊比右邊重,右邊比左邊重,兩邊同樣重。問我至少需要付多少bit就能夠確保知道哪個是假幣?
由於之前已經分析過,直接帶入上面的計算公式即可得:
也就是說,實際編碼過程中需要2個bit來存儲每一次。
在經典熵的定義式中,對數的底是2,單位為bit。在我們之后的例子中,為了方便分析使用底數e。如果底數為e,那么單位是nat(奈特)。重新寫一遍信息熵的公式:
為此,我們來研究研究函數f(x)=xln(x),看看圖像長啥樣。由信息熵的公式及定義,可以發現此時的x 表示的是事件發生的概率,有x∈[0,1]。求導分析:f′(x)=lnx+1,f′′(x)=1x>0;由此發現f(x)是凸函數。令f′(x)=0可得x=1e。由於limx→0f(x)=0,我們定義f(0)=0 。最后經過采樣可得圖像如下: 
信息熵的總體理解
從之前的分析可以看出,熵其實定義了一個函數(概率分布函數p(x))到一個值(信息熵H(X))的映射。而且從表達式中可以知道:隨機變量不確定性越大,p(x)越小,熵值越大。由此,熵是隨機變量不確定性的度量。一種極限情況是:當隨機變量退化為定值時(概率為1),那么此時的熵值為0。另一個極限就是:當隨機變量服從均勻分布的時候,此時的熵值最大。
讓我們以較為熟悉的隨機變量分布來舉例說明信息熵:
兩點分布的熵
假設兩點分布中p(X=1)=q,直接將概率分布函數代入信息熵公式可得:
通過隨機采樣可以得到圖像:
通過對圖像的分析可以印證我們之前的結論:當p(X=1)=0.5,二點分布即為均勻分布,此時對應於圖像中熵的最大值;當p(X=1)=1或p(X=1)=0時,二點分布退化為確定性分布,那么此時的熵為0.
聯合熵、條件熵和相對熵
之前定義了單個隨機變量的熵,現在將定義推廣到兩個隨機變量的情形。對於服從聯合分布為p(x,y)的一對離散隨機變量(X,Y) ,其聯合熵定義為:
上式也可以表示為:
我們也可以定義一個隨機變量在給定另一個隨機變量下的條件熵,它是條件分布上關於起條件作用的那個隨機變量取平均之后的期望值。
定義:若 (X,Y)∼p(x,y),條件熵定義為:
聯合熵和條件熵的定義的這個自然性可由一個事實得到體現:一對隨機變量的熵等於其中一個隨機變量的熵加上另一個隨機變量的條件熵,即: H(X,Y)=H(X)+H(Y|X)(鏈式法則)。其證明見如下:
相對熵是兩個隨機分布之間距離的度量。假設p(x),q(x) 是隨機變量X中取不同值時的兩個概率分布,那么 p對q的相對熵是:
在上述定義中,我們約定:0log00=0,0log0q=0,0logp0=∞(基於連續性)。因此,如果存在x∈X使得p(x)>0,q(x)=0,則有D(p||q)=∞。
可以通過證明知道相對熵總是非負的,而且,當且僅當 p=q時為零。但是由於相對熵並不對稱(一般D(p||q)≠D(q||p) ),而且也不滿足三角不等式,因此它實際上並不是兩個分布之間的真正距離。然而,將相對熵視作分布之間的“距離”往往會很有用。
互信息
互信息是一個隨機變量包含另一個隨機變量信息量的度量。互信息也是在給定另一個隨機變量知識的條件下,原隨機變量不確定度的縮減量。(為什么這么說,接下來會有解釋。)
定義:考慮兩個隨機變量X和Y,它們的聯合概率密度函數為p(x,y),其邊緣概率密度函數分別為p(x),p(y)。互信息I(x,y)為聯合分布p(x,y)和乘積分布 p(x)p(y)之間的相對熵,即:
通過查看表達式,即可知道互信息具有對稱性,即 。同樣可以簡單證明得互信息的非負性,這里省略。
熵與互信息的關系
可將互信息I(x,y)重新寫為:
