信息論:熵與互信息

文章是轉載的, 原文地址在最後 感謝原作者的辛勤創作, 爲了防止鏈接失效,這裏把文章copy過來。

機器人學中的狀態估計 2.1.7 節中香農信息 與 互信息 之間的推導關係 就在這下面可以找到

這篇文章主要講:熵, 聯合熵(joint entropy),條件熵(conditional entropy),相對熵(relative entropy,KL 距離),互信息(mutual information),交叉熵(cross entropy),困惑度(perplexity)。

熵/信息熵

在信息論中,熵是接收的每條消息中包含的信息的平均量,又被稱爲信息熵、信源熵、平均自信息量。這裏, 消息代表來自分佈或數據流中的事件、樣本或特徵。在信息世界,熵越高,則能傳輸越多的信息,熵越低,則意味着傳輸的信息越少。

和熱力學熵的聯繫:在1948年,克勞德·艾爾伍德·香農將熱力學的熵,引入到信息論,因此它又被稱爲香農熵。物理學家和化學家對一個系統自發地從初始狀態向前演進過程中,遵循熱力學第二定律而發生的熵的變化更感興趣。在傳統熱力學中,熵被定義爲對系統的宏觀測定,並沒有涉及概率分佈,而概率分佈是信息熵的核心定義。

信息熵公式的來源

信息:信息量可以被看成在學習 x 的值的時候的“驚訝程度”。如果有人告訴我們一個相當不可能的時間發生了,我們收到的信息要多於我們被告知某個很可能發生的事件發生時收到的信息,如果我們知道某件事情一定會發生,那麼我們就不會接收到信息。於是,我們對於信息內容的度量將依賴於概率分佈 p(x) ,因此我們想要尋找一個函數 h(x) ,它是概率 p(x) 的單調遞減函數,表達了信息的內容。 h(·) 的形式可以這樣尋找:如果我們有兩個不相關的事件 x 和 y ,那麼我們觀察到兩個事件同時發生時獲得的信息應該等於觀察到事件各自發生時獲得的信息之和,即 h(x, y) = h(x) + h(y) {採用概率分佈的對數作爲信息的量度的原因是其可加性。例如,投擲一次硬幣提供了1 Sh的信息,而擲 m 次就爲 m 位。更一般地,你需要用 log2(n) 位來表示一個可以取 n 個值的變量。}。兩個不相關事件是統計獨立的,因此 p(x, y) = p(x)p(y) 。根據這兩個關係,很容易看出 h(x) 一定與 p(x) 的對數有關,滿足這兩個條件的函數肯定是負對數形式。因此,我們有

h(x) = − log 2 p(x)                                (1.92)

負號確保了信息一定是正數或者是零。注意,低概率事件 x 對應於高的信息量。

假設一個發送者想傳輸一個隨機變量的值給接收者。這個過程中,他們傳輸的平均信息量通可以通過求公式(1.92)關於概率分佈 p(x) 的期望得到。即事件的概率分佈和每個事件的信息量構成了一個隨機變量,這個隨機變量的均值(即期望)就是這個分佈產生的信息量的平均值(即)。

 

熵的定義

依據Boltzmann's H-theorem,香農把隨機變量 X 的熵值 Η(希臘字母Eta)定義如下,其值域爲 {x1, ...,xn}:

\Eta(X) = \mathrm{E}[\mathrm{I}(X)] = \mathrm{E}[-\ln(\mathrm{P}(X))].

其中, P 爲 X 的概率質量函數(probability mass function),E 爲期望函數,而 I(X) 是X 的信息量(又稱爲自信息)。I(X) 本身是個隨機變數。

當取自有限的樣本時,熵的公式可以表示爲:

\Eta(X) = \sum_{i} {\mathrm{P}(x_i)\,\mathrm{I}(x_i)} = -\sum_{i} {\mathrm{P}(x_i) \log_b \mathrm{P}(x_i)},

熵又稱爲自信息(self-information),表示信源 X 每發一個符號(不論發什麼符號)所提供的平均信息量。

熵可以理解爲不確定性的量度(或者說是多樣性diversity的度量),因爲越隨機的信源的熵越大。熵可以被視爲描述一個隨機變量的不確定性的數量。一個隨機變量的熵越大,它的不確定性越大。那麼,正確估計其值的可能性就越小。越不確定的隨機變量越需要大的信息量用以確定其值。

熵和最短編碼長度的這種關係是一種普遍的情形。無噪聲編碼定理(oiselesscodingtheorem)(Shannon,1948)表明,熵是傳輸一個隨機變量狀態值所需的比特位的下界。

熵的單位

單位取決於定義用到對數的底。當b = 2,熵的單位是bit;當b = e,熵的單位是nat;而當b = 10,熵的單位是 Hart。

熵的取值範圍

從定義式,我們可以看出,雖然信息熵經常被稱爲負熵,但是其取值恆爲正,這是因爲pi恆小於1。不過,由於信息的接受就是不肯定性的消除,即熵的消除(此處的熵取“熱力學熵”中“熵”的含義),所以信息熵才常被人稱作負熵。

熵的取值範圍爲[0~lgK]。

其中|X|是X的取值個數。

由於 0 ≤ p i ≤ 1 ,因此熵是非負的。當 p i = 1 且所有其他的 p j̸ = i = 0 時,熵取得最小值0

在概率歸一化的限制下,使用拉格朗日乘數法可以找到熵的最大值。因此,我們要最大化

可以證明,當所有的 p(x i ) 都相等,且值爲 p(x i ) = 1/M 時,熵取得最大值當且僅當X的分佈是均勻分佈時右邊的等號成立。即當X服從均勻分佈時,熵最大)。其中, M 是狀態 x i 的總數。此時對應的熵值爲 H = ln M 。這個結果也可以通過 Jensen 不等式推導出來。

[Lecture 4 Shannon Information Entropy Maximum and Minimum]

熵的特性

任何滿足這些假設的熵的定義均正比以下形式

-K\sum _{{i=1}}^{n}p_{i}\log(p_{i})

其中,K是與選擇的度量單位相對應的一個正比常數。下文中,pi = Pr(X = xi)且\mathrm{H} _{n}(p_{1},\ldots ,p_{n})=\mathrm{H} (X)

連續性

該量度應連續,概率值小幅變化只能引起熵的微小變化。

對稱性

符號xi重新排序後,該量度應不變。

\mathrm{H} _{n}\left(p_{1},p_{2},\ldots \right)=\mathrm{H} _{n}\left(p_{2},p_{1},\ldots \right)等。

極值性

所有符號等可能出現的情況下,熵達到最大值(所有可能的事件等概率時不確定性最高)。

\Eta_n(p_1,\ldots,p_n) \le \Eta_n\left(\frac{1}{n}, \ldots, \frac{1}{n}\right) = \log_b (n)

等概率事件的熵應隨符號的數量增加。

{\displaystyle \mathrm {H} _{n}{\bigg (}\underbrace {{\frac {1}{n}},\ldots ,{\frac {1}{n}}} _{n}{\bigg )}=\log _{b}(n)<\log _{b}(n+1)=\mathrm {H} _{n+1}{\bigg (}\underbrace {{\frac {1}{n+1}},\ldots ,{\frac {1}{n+1}}} _{n+1}{\bigg )}.}

可加性

熵的量與該過程如何被劃分無關。

最後給出的這個函數關係刻畫了一個系統與其子系統的熵的關係。如果子系統之間的相互作用是已知的,則可以通過子系統的熵來計算一個系統的熵。

給定n個均勻分佈元素的集合,分爲k個箱(子系統),每個裏面有 b1, ..., bk 個元素,合起來的熵應等於系統的熵與各個箱子的熵的和,每個箱子的權重爲在該箱中的概率。

對於正整數bi其中b1 + ... + bk = n來說,

\Eta_n\left(\frac{1}{n}, \ldots, \frac{1}{n}\right) = \Eta_k\left(\frac{b_1}{n}, \ldots, \frac{b_k}{n}\right) + \sum_{i=1}^k \frac{b_i}{n} \, \Eta_{b_i}\left(\frac{1}{b_i}, \ldots, \frac{1}{b_i}\right)

選取k = nb1 = ... = bn = 1,這意味着確定符號的熵爲零:Η1(1) = 0。這就是說可以用n進制熵來定義n個符號的信源符號集的效率。[信息冗餘]

進一步性質

香農熵滿足以下性質,藉由將熵看成“在揭示隨機變量X的值後,從中得到的信息量(或消除的不確定性量)”,可來幫助理解其中一些性質。

  • 增減一概率爲零的事件不改變熵:

\mathrm{H} _{{n+1}}(p_{1},\ldots ,p_{n},0)=\mathrm{H} _{n}(p_{1},\ldots ,p_{n})

  • 可用琴生不等式證明

\mathrm{H} (X)=\operatorname {E}\left[\log _{b}\left({\frac  {1}{p(X)}}\right)\right]\leq \log _{b}\left(\operatorname {E}\left[{\frac  {1}{p(X)}}\right]\right)=\log _{b}(n)

具有均勻概率分佈的信源符號集可以有效地達到最大熵logb(n):所有可能的事件是等概率的時候,不確定性最大。

  • 計算 (X,Y)得到的熵或信息量(即同時計算XY)等於通過進行兩個連續實驗得到的信息:先計算Y的值,然後在你知道Y的值條件下得出X的值。寫作

\Eta(X,Y)=\Eta(X|Y)+\Eta(Y)=\Eta(Y|X)+\Eta(X)

  • 如果Y=f(X),其中f是確定性的,那麼Η(f(X)|X) = 0。應用前一公式Η(X, f(X))就會產生

\mathrm{H} (X)+\mathrm{H} (f(X)|X)=\mathrm{H} (f(X))+\mathrm{H} (X|f(X)),

所以Η(f(X)) ≤ Η(X),因此當後者是通過確定性函數傳遞時,變量的熵只能降低。

  • 如果XY是兩個獨立實驗,那麼知道Y的值不影響我們對X值的認知(因爲兩者獨立,所以互不影響):

\Eta(X|Y)=\Eta(X)

  • 兩個事件同時發生的熵不大於每個事件單獨發生的熵的總和,且僅當兩個事件是獨立的情況下相等。更具體地說,如果XY是同一概率空間的兩個隨機變量,而 (X,Y)表示它們的笛卡爾積,則

\Eta(X,Y)\leq \Eta(X)+\Eta(Y)

[熵 (信息論)]

 

熵的示例

示例1

至於是如何編碼使其平均長度最小的,參考[哈夫曼編碼]就知道了。

示例2

皮皮blog

微分熵

由來

量化連續變量 x :只要 x 落在第 i 個箱子中,我們就把 x 賦值爲 x i 。

我們看到,熵的離散形式與連續形式的差是ln ∆ ,這在極限 ∆ → 0 的情形下發散。這反映出一個事實:具體化一個連續變量需要大量的比特位。

 省略公式(1.102)右側的第二項 − ln ∆ ,然後考慮極限 ∆ → 0 。

微分熵的取值範圍

連續變量的最大熵:當一階和二階矩受限且保留歸一化的限制時,最大化微分熵的分佈是高斯分佈。

Note: 這裏熵的單位是nat(底爲ln),如果熵的單位是bit(底爲lg2),那麼最大微分熵會不會是均勻分佈?lz沒有證實。

可得高斯分佈的微分熵:

因此我們看到熵隨着分佈寬度(即 σ 2 )的增加而增加。這個結果也表明,與離散熵不同,微分熵可以爲負,因爲對於公式(1.110),當

 

 

熵的計算

。。。

給csdn跪了,寫的博客自己少了一大半!!!!

 

 

香農熵的變型

聯合熵(joint entropy)

\

聯合熵實際上就是描述一對隨機變量平均所需要的信息量。

條件熵(conditional entropy)

可理解爲給定X的值前提下隨機變量Y的隨機性的量。

\

條件熵由來的解釋:

假設我們有一個聯合概率分佈 p(x, y) 。我們從這個概率分佈中抽取了一對 x 和 y 。如果 x 的值已知,那麼需要確定對應的 y 值所需的附加的信息就是 − ln p(y | x) 。因此,用來確定 y 值的平均附加信息可以寫成

\

因此,描述 x 和 y 所需的信息是描述 x 自己所需的信息,加上給定 x 的情況下具體化 y 所需的額外信息

皮皮blog

 

 

相對熵(relative entropy, 或稱 Kullback-Leiblerdivergence, KL 距離)

考慮某個未知的分佈 p(x) ,假定我們已經使用一個近似的分佈 q(x) 對它進行了建模。如果我們使用 q(x) 來建立一個編碼體系,用來把 x 的值傳給接收者,那麼,由於我們使用了 q(x) 而不是真實分佈 p(x) ,因此在具體化 x 的值(假定我們選擇了一個高效的編碼系統)時,我們需要一些附加的信息。我們需要的平均的附加信息量(單位是 nat )爲

lz:同時,從這可以看出,只有p(x)的積分是一個定值,所以比較不相似度時也可以去掉第二項,就發現第一項其實就是交叉熵!交叉熵實際上是更廣泛的相對熵的特殊情形。

\ 注意這個定義前面是沒有-號的!!!

可以把 Kullback-Leibler 散度(KL 散度之所以不說距離,是因爲不滿足對稱性和三角形法則)。看做兩個分佈 p(x) 和 q(x) 之間不相似程度的度量。相對熵常被用以衡量兩個隨機分佈的差距。當兩個隨機分佈相同時,其相對熵爲0。當兩個隨機分佈的差別增加時,其相對熵也增加。當q=p時,該度量的結果是0,而其它度量的結果爲正值。直觀上,它度量了使用q而不是p的壓縮損失(以二進制)的程度。

\

假設數據通過未知分佈 p(x) 生成,我們想要對 p(x) 建模。我們可以試着使用一些參數分佈 q(x | θ) 來近似這個分佈。 q(x | θ) 由可調節的參數 θ 控制(例如一個多元高斯分佈)。一種確定 θ 的方式是最小化 p(x) 和 q(x | θ) 之間關於 θ 的 Kullback-Leibler 散度。我們不能直接這麼做,因爲我們不知道 p(x) 。但是,假設我們已經觀察到了服從分佈 p(x) 的有限數量的訓練點 x n ,其中 n = 1, . . . , N 。那麼,關於 p(x) 的期望就可以通過這些點的有限加和,使用公式(1.35)來近似,即

公式(1.119)右側的第二項與 θ 無關,第一項是使用訓練集估計的分佈 q(x | θ) 下的 θ 的負對數似然函數。因此我們看到,最小化 Kullback-Leibler 散度等價於最大化似然函數。

 

交叉熵(cross entropy)

如果一個隨機變量 X ~ p(x),q(x)爲用於近似 p(x)的概率分佈,那麼,隨機變量 X 和模型 q 之間的交叉熵定義爲:

\

交叉熵的概念用以衡量估計模型與真實概率分佈之間的差異。

\

困惑度(perplexity)

在設計語言模型時,我們通常用困惑度來代替交叉熵衡量語言模型的好壞。PPL是用在自然語言處理領域(NLP)中,衡量語言模型好壞的指標。它主要是根據每個詞來估計一句話出現的概率,並用句子長度作normalize,公式爲

或者等價地,

即給定語言L的樣本

\

語言模型設計的任務就是尋找困惑度最小的模型,使其最接近真實的語言。困惑度越低,說明語言模型面對一句話感到困惑的程度越低,語言模型就越好。說模型的PPL下降到90,可以直觀地理解爲,在模型生成一句話時下一個詞有90個合理選擇,可選詞數越少,我們大致認爲模型越準確。這樣也能解釋,爲什麼PPL越小,模型越好。

互信息(mutual information)

如果 (X, Y) ~ p(x, y), X, Y 之間的互信息 I(X; Y)定義爲:

Note: 互信息 I (X; Y)取值爲非負。當X、Y相互獨立時,I(X,Y)最小爲0。

互信息實際上是更廣泛的相對熵的特殊情形

如果變量不是獨立的,那麼我們可以通過考察聯合概率分佈與邊緣概率分佈乘積之間的 Kullback-Leibler 散度來判斷它們是否“接近”於相互獨立。此時, Kullback-Leibler 散度爲

這被稱爲變量 x 和變量 y 之間的互信息( mutual information )。根據 Kullback-Leibler 散度的性質,我們看到 I[x, y] ≥ 0 ,當且僅當 x 和 y 相互獨立時等號成立。

使用概率的加和規則和乘積規則,我們看到互信息和條件熵之間的關係爲

可以把互信息看成由於知道 y 值而造成的 x 的不確定性的減小(反之亦然)(即Y的值透露了多少關於X 的信息量)。

\

\

點互信息PMI(Pointwise Mutual Information)

PMI(Pointwise Mutual Information)這個指標來衡量兩個事物之間的相關性(比如兩個詞)。

其原理很簡單,公式如下:

在概率論中,我們知道,如果x跟y不相關,則p(x,y)=p(x)p(y)。二者相關性越大,則p(x,y)就相比於p(x)p(y)越大。用後面的式子可能更好理解,在y出現的情況下x出現的條件概率p(x|y)除以x本身出現的概率p(x),自然就表示x跟y的相關程度。 這裏的log來自於信息論的理論,可以簡單理解爲,當對p(x)取log之後就將一個概率轉換爲了信息量(要再乘以-1將其變爲正數),以2爲底時可以簡單理解爲用多少個bits可以表示這個變量。(更正式的解釋請閱讀信息論相關理論)

點互信息PMI其實就是從信息論裏面的互信息這個概念裏面衍生出來的。其衡量的是兩個隨機變量之間的相關性,即一個隨機變量中包含的關於另一個隨機變量的信息量。所謂的隨機變量,即隨機試驗結果的量的表示,可以簡單理解爲按照一個概率分佈進行取值的變量,比如隨機抽查的一個人的身高就是一個隨機變量。可以看出,互信息其實就是對X和Y的所有可能的取值情況的點互信息PMI的加權和,而點互信息只是對其中兩個點進行相關性判斷。因此,點互信息這個名字還是很形象的。

[點互信息(PMI,Pointwise Mutual Information) ]

互信息、條件熵與聯合熵的區別與聯繫

venn圖表示關係

 

\

由於 H(X|X) = 0, 所以, H(X) = H(X) – H(X|X) = I(X; X)

這一方面說明了爲什麼熵又稱自信息,另一方面說明了兩個完全相互依賴的變量之間的互信息並不是一個常量,而是取決於它們的熵。

從圖中可以看出,條件熵可以通過聯合熵 - 熵( H(X|Y) = H(X, Y) - H(Y) )表示,也可以通過熵 - 互信息( H(X|Y) = H(X) - I(X; Y) )表示。

皮皮blog

 

 

 

 

加權熵

香農的經典信息論“只計字數、不計內容”的信息量計算前提,不考慮人的主體意識和狀態差別,忽視了不同受信者的這些差別對信息價值和信息量的根本影響,所以沒有涉及信息的本質意義。可認爲香農的經典信息論只能算作“信號論”、“通信論”或“符號信息論”,香農的“信息量”充其量只能算作信息的“數據量”。

有人研究發現,同一個隨機事件發生,對每一個收信人都有不同的意義。如果每一個收信人對各事件都考慮一個意義的因素,定量地給出該事件的權重,那麼香農的信息熵(平均信息量)就應該修正爲加權熵。於是有了加權熵的定義:

設一個隨機變量X包含了一系列(q個)隨機事件

(1)

對於某收信人來說,每個事件權重相應的爲

(2)

如果事先知道每個事件發生的概率依次爲

(3)

且這些概率滿足完備條件

(4)

即所有可能的事件發生的概率總和爲1,則這個隨機變量X可用下述的概率空間來描述:

(5)

那麼,加權熵定義爲

(6)

特殊地,如果收信人對信源發生的每一個事件都不感興趣,或沒有意義,也就是說在收信人看來各個事件的權重都爲0,即

(7)

那麼即使香農信息熵不爲0,按照加權熵定義式(6)計算出來的意義信息量也爲0。這就是我們日常生活中司空見慣的“垃圾信息”!

可見,意義信息的加權熵考慮了收信人的關注程度和事件發生對收信人的重要程度,計算出來的平均信息量與香農的信息熵相比更接近實際了一步。

但實際生活中信息的價值和效用不是僅僅用一個權重就可以描述清楚的,況且每個事件的權重也不是都可以用一個數字來定量描述的。所以採用加權熵來描述信息量的作法仍然有其侷限性。

[意義信息與加權熵]

 

雷尼熵/瑞利熵/萊利熵/Renyi熵 Renyi entropy

在信息論中,Renyi系列熵包括香農熵,Hartley熵,最小熵和衝突熵。熵量化了一個系統的多樣性,不確定性或者隨機性。Renyi熵由Alfred Renyi的名字命名。香農熵只是Renyi熵系列中的一種熵。Renyi熵是對通常的香農熵的擴展,算是q階廣義熵。

設有一離散變量的概率分佈(p1,p2,...,pn),Renyi信息熵定義爲:

R(q)=\frac{\log(\sum_{i=1}^{n}p_i^q)}{1-q}

其中,q爲一個可取任意實數的一個參數。

當q=0的時候,R(q)=log(n),即計算出了元素的個數的對數。

當q=1的時候,分子和分母同時趨近於0,於是,可以通過絡必達法則求它的極限爲:

\lim_{q\rightarrow 1}R(q)=-\sum_{i=1}^{n}p_i \log(p_i)

即,當q=1的時候,Renyi熵變成了Shannon信息熵。(證明wiki

[wikipedia Rényi entropy]
[Renyi熵]

diversity

exp(entropy)

renyi entropy-based diversity:

{}^{q}\!D={1 \over M_{q-1}}={1 \over {\sqrt[{q-1}]{\sum _{i=1}^{R}p_{i}p_{i}^{q-1}}}}=\left({\sum _{i=1}^{R}p_{i}^{q}}\right)^{1/(1-q)}

皮皮blog

 

 

 

 

熵求解示例

熵計算示例1

\

\

\

\

\

熵計算示例2

\

注意,這裏的邊緣概率是基於每個音節的,其值是基於每個字符的概率的兩倍,因此,每個字符的概率值應該爲相應邊緣概率的1/2,即:
p: 1/16 t: 3/8 k: 1/16 a: 1/4 i: 1/8 u: 1/8

求聯合熵可以有幾種方法,以下我們採用連鎖規則方法可以得到:

\

\

\

皮皮blog

 

 

熵的編程實現及拓展包

python實現熵的計算

[Scipy教程 - 統計函數庫scipy.stats ]

renyi熵的實現

renyi_entropy_func = lambda pij: 1 / (1 - q) * (np.log2((np.array(pij) ** q).sum()))

[dit/dit: Python package for information theory]

from: http://blog.csdn.net/pipisorry/article/details/51695283

ref: [http://zh.wikipedia.org]

[信息論基礎 Tomas Cover]

 

文章來源: https://blog.csdn.net/pipisorry/article/details/51695283

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章