熵是信息論與編碼理論的中心概念。至於條件熵以及互信息都是某種意義上的熵。對於熵的理解是最根本的。幾乎所有的信息論教材無一列外的提到熵是刻畫信息的多少或者不確定性的。這當然也沒有什么問題,但是卻立即讓人如墮五里霧中,不知熵到底是什么意義。只要稍微鑽一下牛角尖,刻畫信息或者不確定性為什么非要用這種形式不可呢?在這些書上就難以找到好的答案了。實際上這些定義可以直接從對數的定義得到很清晰的解釋。而不需要繞一個圈子從什么信息量、不確定性的角度。刻畫信息量或者不確定性可以作為某種解說,但不是最根本最清晰的解說。假定熵的定義公式中對數都是以2為底,那么一個字符序列的熵就是用二進制代碼來表示這個字符序列的每個字的最少的平均長度,也就是平均每個字最少要用幾個二進制代碼。這種說法才是熵的本質意義所在。所以熵這個概念天然地和編碼聯系在一起,而不是單純的為了刻畫什么信息量或者不確定度之類不着邊際的概念。熵就是用來刻畫編碼的程度或者效率的。可見學信息論必然要學編碼。
如果追索熵是刻畫不確定性這一說法的根源,可以追索到信息論創始人Claude E. Shannon的開創性文章[1]的某些部分,比如引出了熵的具體數學形式之后Shannon自己在[1]的393頁評論說“(熵這一類的數量) play a central role in information theory as measures of information, choice and uncertainty.” 這個說法也許導致了大多數信息論的教材都采用了熵是某種不確定性的度量這一說法。熵這個概念在Shannon的[1]文之前已經出現,比如Shannon在[1]中393頁自己提到1938年出版的一本統計力學就有形式一樣的熵。只不過用在通信領域是Shannon的首創。
1. 熵的直觀意義
對於一個離散的隨機變量X,取值為{x_1,x_2,…x_n}相應的概率為{p_1,p_2,…,p_n}。熵的定義為H(X)=Sum_{i}p_i*log(1/p_i)。在引入比較細致一點的書中,一般會先介紹一個概率事件[X=x_1]的信息量定義為log(1/p_1)=-log(p_1)。一般的書會用小的概率事件含有很大的信息量,大的概率事件含有較少的信息量來解說這個定義。在Shannon的[1]文中還用公理化的方法推導了這個形式。然而這些都掩蓋了這種定義內涵的直觀含義。實際上這些定義可以直接從對數的定義得到很清晰的解釋。為確定起見,這里假定公式中出現的對數(log)都是以2為底的。從對數的定義可以知道log(N)可以理解為用二進制來表示N大約需要多少位。比如log(7)=2.8074,用二進制表示7為三位數字111。那么概率的倒數(1/p_1)是什么意思呢?概率我們知道可以理解為頻率,比如一個字符在一個字符序列中出現的概率(頻率)是0.1,那么,頻率的倒數1/0.1=10。按照比例的意思來理解就是大約在長度為10的字符串中這個字符很可能出現一次,因為這樣頻率才能是1/10等於概率0.1了。所以一個概率事件的信息量就是觀測到這個字符一次(這個事件發生一次)相應的字符串大約多長(用相應的二進制代碼長度)。
一個概率事件的信息量按照以上的二進制代碼長度來理解之后,那么,熵的意義就很明顯了。那就是所有概率事件的相應的二進制代碼的平均長度。從對數的定義角度來理解熵在[1]文中也可以找到依據。比如在[1]的380頁對於為什么引入對數(尤其是以2為底的對數)做了說明,同時引出了比特這個概念。從這個說法出發,熵的概念就已經是十分清楚的;而不需要說什么信息的度量、不確定性的度量等。
這里用一個具體例子來說明熵的二進制代碼長度含義。
例1. X表示全空間為符號序列{賢者辟世 其次辟地 其次辟色 其次辟言}的隨機變量。
用符號出現頻率來計算概率。可知
P[X=賢]=1/16,P[X=者]=1/16,P[X=辟]=4/16,P[X=世]=1/16,P[X=其]=3/16,P[X=次]=3/16,P[X=地]=1/16,P[X=色]=1/16,P[X=言]=1/16.
熵可計算為H(X)=6*1/16log16+1/4*log4+2*3/16log16/3=2.9464。
這里用Huffman碼來對以上符號序列進行二進制編碼來說明熵的意義。
Huffman碼的編排思想即選擇較少兩個概率進行組合,概率相加,一直到只有兩個分支為止。其實質就是建立了一個二分支的樹的結構,再根據此樹的結構進行唯一確定的二進制編碼。將以上概率從小到大排成一列,列一個表格如下:
P[X=賢]=1/16 |
1/8 |
4/16 |
9/16 |
P[X=者]=1/16 |
|||
P[X=世]=1/16 |
1/8 |
||
P[X=地]=1/16 |
|||
P[X=色]=1/16 |
1/8 |
5/16 |
|
P[X=言]=1/16 |
|||
P[X=其]=3/16 |
|
||
P[X=次]=3/16 |
|
7/16 |
|
P[X=辟]=4/16 |
|
上表中從右到左按照上為0下為1的二分岔規則編碼,就得到了Huffman碼:
賢0000, 者0001, 世0010, 地0011, 色0100, 言0101, 其011, 次10, 辟11.
原文二進制代碼為{0000, 0001, 11, 0010; 011,10,11,0011; 011,10,11,0100; 011,10,11,0101} 共計47個代碼。而16*H(X)=16*2.9464=47.1424。兩者相當之接近。如果用等長代碼,由於有9個不同源符號,需要用4位二進制代碼,那么原文的二進制代碼總長為16*4=64。可見Huffman碼的效率高,接近了熵的估計值。這個例子也印證了以上熵的解釋。
轉自:點我
定義:
最近用到信息論的知識表較多,自己也總結下。
1 信息熵(entropy)
定義式:
其中P(x)是變量出現的概率。從直觀上,信息熵越大,變量包含的信息量越大,變量的不確定性也越大。一個事物內部會存在隨機性,也就是不確定性,而從外部消除這個不確定性唯一的辦法是引入信息。如果沒有信息,任何公式或者數字的游戲都無法排除不確定性。幾乎所有的自然語言處理,信息與信號處理的應用都是一個消除不確定性的過程。
2 條件熵(conditional entropy)
知道的信息越多,隨機事件的不確定性就越小。
定義式:
3 聯合熵
設X Y為兩個隨機變量,對於給定條件Y=y下,X的條件熵定義為:
4 左右熵
一般用於統計方法的新詞發現。
計算一對詞之間的左熵和右熵,熵越大,越說明是一個新詞。因為熵表示不確定性,所以熵越大,不確定越大,也就是這對詞左右搭配越豐富,越多選擇。如: 屌絲,這個詞,我們希望左右熵都很大,希望屌絲這個詞左右邊搭配盡可能豐富,如左邊:這屌絲、臭屌絲、窮屌絲;右邊:屌絲的,屌絲樣、屌絲命等。左右搭配豐富。
5 互信息(mutual information)
兩個事件的互信息定義為:I(X;Y)=H(X)+H(Y)-H(X,Y),也就是用來衡量兩個信息的相關性大小的量。
互信息是計算語言學模型分析的常用方法,它度量兩個對象之間的相互性。
定義式:
應用:
(1)去計算一個變量的不確定性,可以考慮信息熵;在研究顯著性時,可以用信息熵去計算一個區域的信息量的大小,近而來判斷其為顯著性區域;
(2)計算兩個變量之間的相關性,可以考慮條件熵;