信息論的熵

1.  前言

   熵的概念最早起源于物理學,用于度量一個熱力學系統的無序程度。

   在信息論里則叫信息量,即熵是對不確定性的度量。從控制論的角度來看,應叫不確定性。信息論的創始人香農在其著作《通信的數學理論》中提出了建立在概率統計模型上的信息度量。他把信息定義為“用來消除不確定性的東西”。在信息世界,熵越高,則能傳輸越多的信息,熵越低,則意味著傳輸的信息越少。

   當我們不知道某事物具體狀態,卻知道它有幾種可能性時,顯然,可能性種類愈多,不確定性愈大。不確定性愈大的事物,我們最后確定了、知道了,這就是說我們從中得到了愈多的信息,也就是信息量大。所以,熵、不確定性、信息量,這三者是同一個數值。

   兩種可能性:最簡單的是只有兩種可能性,非此即彼,我們就以這種事物的信息量為單位,叫1比特(bit)。

       4種可能性:用二分法,分為2組,我們要非此即彼地確定2次,才能確定其狀態,所以含有2比特信息量。

   如果可能性數目有2n次方(N=2^n):那就是n比特,即信息量等于可能性數目N的‘以2為底的對數’:H=㏒2(N)=㏒(N)/㏒(2)。后一個等號說明,以2為底的對數㏒2可用普通對數㏒(以10為底)來計算,即用N的普通對數除2的普通對數。N=3種可能性時,信息量H=㏒(3)/㏒(2)=1.585。只要有函數型計算器,我們就可以進行以下簡單實例的驗算。

    我們現在不是討論事物本身的信息量,而是討論描述事物的文字符號包含的信息量。先討論比較簡單的數字符號。

二進制數:二進制數只有2個符號:0和1。一位二進制數有2種可能性,其信息量是1比特。n位二進制數可記N=2^n個不相等的數,含有n比特信息,所以每位數字的信息量還是1。

十進制數:十進制數字有10個,每位數字的信息量是㏒(10)/ ㏒(2)=1/0.301=3.32。不難驗證所有十進制數,每位數字的信息量都是3.32,例如3位數共1000個,信息量是㏒(1000)/ ㏒(2)=3*3.32。而十六進制的每位數字的信息量是4。

    事情好像很簡單,其實不然。試考慮還沒有發明數字的遠古人,他用刻畫來記數,用刻n畫的方法記數目n。10以內的數平均每個數要刻(1+10)/2=5.5畫,每畫的平均信息量是3.32/5.5=0.604,而100以內的數平均每個數(1+100)/2=50.5畫,每畫的平均信息量只有6.64/50. 5=0.132。因為古人刻的每一畫是沒有次序或位置的區別的,所以每一畫的信息量變化很大,數值則很小。次序或位置非常重要,羅馬字和我國古代的數碼,也是短畫,但要講究位置組合,每畫所含的信息量就大大提高了。注意,我們以后討論的文字信號,都是有次序的。

這樣,文字信號的信息量H是信號個數n的以2為底的對數: H=㏒(n)/ ㏒(2)。英文有 26個字母,每個字母的信息量H=㏒(26)/ ㏒(2)=4.700。漢字個數不定,算1000個時等于3*3.32=9.96,算作一萬、十萬時則分別為13.28、16.60。我們能隨意增加大量一輩子也用不到的漢字,來無限地增加每個漢字的信息量?這當然不合理。原來信息量不能無條件地按符號的個數來計算,只有各符號的可能性一樣,都等于1/n時才行。數字符號就滿足這樣的條件。事實上信息量應按符號的可能性(數學上叫概率大小)來計算,它是概率的負對數。對于二進制數,每個符號的概率都等于1/2,按負對數計算:-㏒(1/n)=-(㏒(1)- ㏒(n))=-(0-㏒(n))=㏒(n)。這就是我們前面使用的公式的來源。如果符號i的概率pi不等于1/n,則Hi=-㏒(pi)。因為各個符號的概率pi不相等,對于總體來說,平均信息量就是它們的加權平均H=-∑pi㏒(pi),這里累加符號∑表示對所有 i 進行累計。(以上式子除以㏒(2),就可化為以比特為單位了)。

2.  熵的定義

     如果有一枚理想的硬幣,其出現正面和反面的機會相等,則拋硬幣事件的熵等于其能夠達到的最大值。我們無法知道下一個硬幣拋擲的結果是什么,因此每一次拋硬幣都是不可預測的。因此,使用一枚正常硬幣進行若干次拋擲,這個事件的熵是一比特,因為結果不外乎兩個——正面或者反面,可以表示為0, 1編碼,而且兩個結果彼此之間相互獨立。若進行n獨立實驗,則熵為n,因為可以用長度為n比特流表示。[1]但是如果一枚硬幣的兩面完全相同,那個這個系列拋硬幣事件的熵等于零,因為結果能被準確預測?,F實世界里,我們收集到的數據的熵介于上面兩種情況之間。

另一個稍微復雜的例子是假設一個隨機變量X,取三種可能值\begin{smallmatrix} x_1, x_2, x_3 \end{smallmatrix},概率分別為\begin{smallmatrix} \frac{1}{2}, \frac{1}{4}, \frac{1}{4} \end{smallmatrix},那么編碼平均比特長度是:\begin{smallmatrix} \frac{1}{2} \times 1 + \frac{1}{4} \times 2 + \frac{1}{4} \times 2 = \frac{3}{2} \end{smallmatrix}。其熵為3/2。

因此熵實際是對隨機變量的比特量和順次發生概率相乘再總和的數學期望

熵在信息論中的定義推導過程如下:

信源的不確定性:信源發出的消息不肯定性越大,收信者獲取的信息量就越大。如果信源發送的消息是確切的,則對收信者來說沒有任何價值(沒有信息量)。衡量不確定性的方法就是考察信源X的概率空間。X包含的狀態越多,狀態Xi的概率pi越小,則不確定性越大,所含有的信息量越大。

不確定程度用H(X)表示,簡稱不確定度, 用概率的倒數的對數來度量不肯定程度。一般寫成H(X) = log(1/p) = -log(p).

 自信息量:一個事件(消息)本身所包含的信息量,由事件的不確定性決定的。

即隨機事件Xi發生概率為P(xi),則隨機事件的自信息量定義為:

信息論的熵

表示事件Xi發生后能提供的信息量。事件不同,則他的信息量也不同,所以自信息量是一個隨機變量。不能用來表征整個信源的不肯定性??梢杂闷骄孕畔⒘縼肀碚髡麄€信源的不肯定性。

  定義信息量為概率的負對數,是很合理的。試考慮一個兩種可能性的事物,僅當可能性相等時,不確定性最大,最后我們知道了某一可能性確實發生了,也得到最大的信息量。如果其中某一個可能性很大(另一個必然很小),不確定性就很小。如果可能性大到1,也就是必然要發生的,因為1的對數為0,我們從知道它的發生這件事得到的信息也為0。

(1)非負性

(2)隨機性     是隨機變量

(3)單調性      概率大自信息量小

(4)隨機事件的不確定性在數量上等于它的自信息量。

(5)單位

     以2為底,記作lb,單位比特(bit);

     以e為底,記作ln,單位奈特(nat);

     以10為底,記作lg,單位哈脫來(hat)。

信息熵:隨機變量自信息量I(xi)的數學期望(平均自信息量),用H(X)表示,即為熵的定義:

  信息論的熵

  即一個值域為{x1, …, xn}的隨機變量 X 的熵值 H 定義為:

  • H(X)  =  \operatorname{E}(I(X)),

其中,E 代表了期望函數,而 I(X) 是 X 的信息量(又稱為信息本體)。I(X) 本身是個隨機變量。如果 p 代表了 X 的機率質量函數(probability mass function),則熵的公式可以表示為:

  • H(X) = \sum_{i=1}^n {p(x_i)\,I(x_i)} = -\sum_{i=1}^n {p(x_i) \log_b p(x_i)}

在這里 b 是對數所使用的,通常是 2, 自然常數 e,或是10。當b = 2,熵的單位是bit;當b = e,熵的單位是 nat;而當 b = 10,熵的單位是 dit。

pi = 0時,對于一些i值,對應的被加數0 logb 0的值將會是0,這與極限一致。

  • \lim_{p\to0+}p\log p = 0.

3. 范例

如果有一個系統S內存在多個事件S = {E1,…,En},每個事件的機率分布 P = {p1, …, pn},則每個事件本身的信息量為:

I_e = -\log_2 {p_i} (對數以2為底,單位是比特(bit))

I_e = -\ln {p_i} (對數以e為底,單位是納特/nats)

如英語有26個字母,假如每個字母在文章中出現次數平均的話,每個字母的訊息量為:

  • I_e = -\log_2 {1\over 26} = 4.7

而漢字常用的有2500個,假如每個漢字在文章中出現次數平均的話,每個漢字的信息量為:

  • I_e = -\log_2 {1\over 2500} = 11.3

實際上每個字母和每個漢字在文章中出現的次數并不平均,比方說較少見字母(如z)和罕用漢字就具有相對高的信息量。但上述計算提供了以下概念:使用書寫單元越多的文字,每個單元所包含的訊息量越大。

熵是整個系統的平均消息量,即:

  • H_s = \sum_{i=1}^n p_i I_e = -\sum_{i=1}^n p_i \log_2 p_i

這個平均消息量就是消息熵。因為和熱力學中描述熱力學熵的玻耳茲曼公式形式一樣,所以也稱為“熵”。

 英語文本數據流的熵比較低,因為英語很容易讀懂,也就是說很容易被預測。即便我們不知道下一段英語文字是什么內容,但是我們能很容易地預測,比如,字母e總是比字母z多,或者qu字母組合的可能性總是超過q與任何其它字母的組合。如果未經壓縮,一段英文文本的每個字母需要8個比特來編碼,但是實際上英文文本的熵大概只有4.7比特。如果壓縮是無損的,即通過解壓縮可以百分之百地恢復初始的消息內容,那么壓縮后的消息攜帶的信息和未壓縮的原始消息是一樣的多。而壓縮后的消息可以通過較少的比特傳遞,因此壓縮消息的每個比特能攜帶更多的信息,也就是說壓縮信息的熵更加高。熵更高意味著比較難于預測壓縮消息攜帶的信息,原因在于壓縮消息里面沒有冗余,即每個比特的消息攜帶了一個比特的信息。香農的信息理論揭示了,任何無損壓縮技術不可能讓一比特的消息攜帶超過一比特的信息。消息的熵乘以消息的長度決定了消息可以攜帶多少信息。

如果兩個系統具有同樣大的消息量,如一篇用不同文字寫的同一文章,由于是所有元素消息量的加和,那么中文文章應用的漢字就比英文文章使用的字母要少。所以漢字印刷的文章要比其他應用總體數量少的字母印刷的文章要短。即使一個漢字占用兩個字母的空間,漢字印刷的文章也要比英文字母印刷的用紙少。

4.  信息增益

已經有了熵作為衡量訓練樣例集合純度的標準,現在可以定義屬性分類訓練數據的效力的度量標準。這個標準被稱為“信息增益(information gain)”。簡單的說,一個屬性的信息增益就是由于使用這個屬性分割樣例而導致的期望熵降低(或者說,樣本按照某屬性劃分時造成熵減少的期望)。在信息增益中,衡量標準是看特征能夠為分類系統帶來多少信息,帶來的信息越多,該特征越重要。對一個特征而言,系統有它和沒它時信息量將發生變化,而前后信息量的差值就是這個特征給系統帶來的信息量

更精確地講,一個屬性A相對樣例集合S的信息增益Gain(S,A)被定義為:

5.  熵的特性

1、熵均大于等于零,即,H_s \ge 0。 
       2、設N是系統S內的事件總數,則熵H_s \le log_2N。當且僅當p1=p2=…=pn時,等號成立,此時系統S的熵最大。 
       3、聯合熵H(X,Y) \le H(X) + H(Y),當且僅當X,Y在統計學上相互獨立時等號成立。 
       4、條件熵H(X|Y) = H(X,Y) - H(Y) \le H(X),當且僅當X,Y在統計學上相互獨立時等號成立。 

5.  拋硬幣的熵

1.png 

    拋硬幣的熵H(X)(即期望自信息),以比特度量,與之相對的是硬幣的公正度 Pr(X=1).

   注意圖的最大值取決于分布;在這里,要傳達一個公正的拋硬幣結果至多需要1比特,但要傳達一個公正的拋骰子結果至多需要log2(6)比特。

轉自:http://blog.csdn.net/hguisu/article/details/27305435

原創文章,作者:s19930811,如若轉載,請注明出處:http://www.www58058.com/2608

(0)
s19930811s19930811
上一篇 2016-03-27
下一篇 2016-03-27

相關推薦

  • Sed及Vim作業

      Sed及Vim作業題:     1、刪除/etc/grub2.conf文件中所有以空白開頭的行行首的空白字符    [root@localhost 7 ~]# sed -r  's/^[[:space:]]…

    Linux干貨 2016-08-09
  • test1

    test 

    Linux干貨 2016-09-15
  • 馬哥教育網絡班21期+第4周課程練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 # cp -a /etc/skel /home/tuser1 # chmod -R g-rwx,o-rwx /home/tuser1/ 2、編輯…

    Linux干貨 2016-07-16
  • Linux 之LVM

    一 LVM 簡介:     LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,LVM將一個或多個硬盤的分區在邏輯上集合,相當于一個大硬盤來使用,當硬盤的空間不夠使用的時候,可以繼續將其它的硬盤的分區加入其中,這樣可以實現磁盤空間的動態管理,相對于普通的磁盤分區有很大的靈活性。LVM的工作原理其…

    Linux干貨 2016-03-01
  • Shell腳本-循環基礎

    Shell腳本-循環基礎 背景: 正在學習Shell腳本之循環,發現Shell的循環和其他編程語言大同小異,邏輯上都是相通的,但在使用格式上卻有點不同,在學習完Shell循環后,將學習的心得體會記錄下來,以備今后復習。 介紹: 什么是Shell腳本:       shell script是利用shell的功能…

    2017-08-26
  • Linux 啟動流程

    Linux啟動流程 POST–>Boot Sequence–>MBR–>Grub–>Kernel(initramfs)–>rootfs–chroot(根切換)–>/sbin/init–>RunLevel–&gt…

    Linux干貨 2016-06-09
欧美性久久久久