信息量與信息熵
信息論量度信息的基本出發(fā)點,是把獲得的信息看作用以消除不確定性的東西,因此信息數(shù)量的大小,可以用被消除的不確定性的多少來表示。設(shè)隨機事件A在獲得信息α之前結(jié)果的不確定性為H(A),得到信息α之后為Hα(A),那么包含在消息α中的關(guān)于事件A的信息量: I(α,A) = H(A) - Hα(A)
利用上表的數(shù)據(jù)可以求出包含在消息a,b,c.d中的關(guān)于事件A的信息量:
I(a,A) = kln2
I(b,A)= kln1.2
I(c,A)= 0
I(d,A)= kln6
事件A的Shannon熵H(A) 也可以理解為包含在A這個事件本身中的關(guān)于它自己的信息,因為事件發(fā)生后結(jié)果(d)就完全確定了,這時 Hd(A) = 0所以H(A) = I(d,A)= kln6。換句話說,事件A的Shannon熵H(A)等于這個事件發(fā)生之后,我們所得到的信息。
一般而言,Shnnon熵在隨機事件發(fā)生之前,它是結(jié)果不確定性的量度;在隨機事件發(fā)生之后,它是我們從該事件中所得到信息的量度(信息量)。因此,隨機事件的Shnnon熵也叫信息熵,它是一個隨機事件的不確定性或信息量的量度。與統(tǒng)計熵相似,在給定的實驗條件下,所有可能的概率分布中,存在一個使信息熵Hn取極大值的分布(,,,……,) 。這稱為最大信息熵原理。這一原理使我們能從所有可能的相容分布中挑選出使信息熵為極大值的分布——即最為常見的、實現(xiàn)概率最大的“最佳”分布。
信息量是信息論的中心概念,把熵作為一個隨機事件的不確定性或信息量的量度,它奠定了現(xiàn)代信息論的科學(xué)理論基礎(chǔ),大大地促進(jìn)了信息論的發(fā)展。
關(guān)于信息熵
設(shè)符號系統(tǒng)由n個符號構(gòu)成,若每個符號出現(xiàn)的概率相等,即P=1/n,則出現(xiàn)某個符號的不肯定性為
H = k loga(1/P)=k loga(n)
H 稱為該符號的熵值。令k = 1,則有
H = loga(n)
取 a = 2,則 H 單位為比特(bit)
取 a = e,則 H 單位為奈特(nat)
取 a = 10,則 H 單位為玳特(det)
今取a = 2,對二進(jìn)制數(shù)苻,n=2,
H = log2(2)=1(bit)
不同的文字體系,n值不同,H值也不同。
作為符號系統(tǒng),若每個字符出現(xiàn)的概率(頻度)相等,則為無序狀態(tài),此時符號熵最大,稱為最大熵。
Hmax = log2(n)
字符集的平均熵值為
H0 = -∑(i=1,n)( Pi log2 Pi)/ ∑Pi = -∑(i=1,n)( Pi log2 Pi)。
∑Pi = 1。H0 稱為字符集的零階熵,是以 pi 為權(quán)的字符集熵的加權(quán)平均值。如果不取平均值,則其值相當(dāng)大。若取自然平均值,計算結(jié)果出入很大。
熵值首先取決于 n 值,其次取決于 Pi 的分布形態(tài)。
對于拼音文字,就字母而言,n值是有限的。如英文為26個(不計大小寫),俄文為33個。若計及標(biāo)點符號和其他符號,充其量也是30-40個左右。
而就詞匯來說,那就數(shù)以萬計,幾乎是不計其數(shù)了。若像俄文那樣,把每個詞的詞尾變化、詞頭附加等都分別計算為一個獨立詞匯,那n值就大得數(shù)以百萬計了。
對于漢字,就常用和次常用字,或GB或GBK或Big5,n值大到上萬。而由漢字組成的詞匯(詞語)就有十來萬或十多萬個了。
最大熵Hmax = log2 n 及零階熵H0 = -∑(i=1,n)( Pi log2 Pi)計算示例。
對于二進(jìn)制數(shù)符,符號集為0和1。n = 2。Hmax = 1。設(shè)一篇“文章”有1000個字符,每個數(shù)符出現(xiàn)500次,則零階熵H0 = 1,等于最大熵;
若每個數(shù)符分別出現(xiàn)600次和400次,則H0 = 0.971,小于Hmax;
若每個數(shù)符分別出現(xiàn)800次和200次,則H0 = 0.772;
若每個數(shù)符分別出現(xiàn)900次和100次,則H0 = 0.469;
若每個數(shù)符分別出現(xiàn)990次和10次,則H0 = 0.081;
若每個數(shù)符分別出現(xiàn)999次和1次,則H0 = 0.011。
可見零階熵與數(shù)符出現(xiàn)頻度或稱頻率分布形態(tài)有關(guān)。
對于十進(jìn)制數(shù)符,符號集為0123456789。Hmax = 3.32。
對于羅馬字母,不計大小寫,符號集為abcdefghijklmnopqrstuvwxyz。n = 26,Hmax = 4.70。
字母出現(xiàn)頻率均勻遞減,H0 = 4.47;特大特小分明,H0 = 4.07。
n = 30,Hmax = 4.91。羅馬字母加幾個符號。
n = 52,Hmax = 5.70。羅馬字母計及大小寫。
n = 70,Hmax = 6.13。羅馬字母計及大小寫加幾個符號。
n = 6000,Hmax = 12.55。常用漢字及次常用漢字。
n = 8000,Hmax = 12.97。漢字。
n = 10000,Hmax = 13.29。漢字。
n = 80000,Hmax = 16.29。漢語或其它語言詞語。
n = 100000,Hmax = 16.61。漢語或其它語言詞語。
n = 1000000,Hmax = 19.93。漢語或其它語言詞語。
有資料列出了幾種拼音文字零階熵值。
法語 3.98
意大利語 4.00
西班牙語 4.01
英語 4.03
德語 4.10
羅馬尼亞語 4.12
俄羅斯語 4.35
漢字零階熵值。
自古至今加權(quán)平均值 9.71
信息是個很抽象的概念。1948 年,香農(nóng)提出了“信息熵”(shāng) 的概念,才解決了對信息的量化度量問題。
一條信息的信息量大小和它的不確定性有直接的關(guān)系。比如說,我們要搞清楚一件非常非常不確定的事,或是我們一無所知的事情,就需要了解大量的信息。相反,如果我們對某件事已經(jīng)有了較多的了解,我們不需要太多的信息就能把它搞清楚。所以,從這個角度,我們可以認(rèn)為,信息量的度量就等于不確定性的多少。
那么我們?nèi)绾瘟炕亩攘啃畔⒘磕??我們來看一個例子,馬上要舉行世界杯賽了。大家都很關(guān)心誰會是冠軍。假如我錯過了看世界杯,賽后我問一個知道比賽結(jié)果的觀眾“哪支球隊是冠軍”?他不愿意直接告訴我,而要讓我猜,并且我每猜一次,他要收一元錢才肯告訴我是否猜對了,那么我需要付給他多少錢才能知道誰是冠軍呢? 我可以把球隊編上號,從 1 到 32, 然后提問: “冠軍的球隊在 1-16 號中嗎?” 假如他告訴我猜對了, 我會接著問: “冠軍在 1-8 號中嗎?” 假如他告訴我猜錯了, 我自然知道冠軍隊在 9-16 中。 這樣只需要五次,我就能知道哪支球隊是冠軍。所以,誰是世界杯冠軍這條消息的信息量只值五塊錢。
當(dāng)然,香農(nóng)不是用錢,而是用 “比特”(bit)這個概念來度量信息量。一個比特是一位二進(jìn)制數(shù),計算機中的一個字節(jié)是八個比特。在上面的例子中,這條消息的信息量是五比特。(如果有朝一日有六十四個隊進(jìn)入決賽階段的比賽,那么“誰世界杯冠軍”的信息量就是六比特,因為我們要多猜一次。)讀者可能已經(jīng)發(fā)現(xiàn), 信息量的比特數(shù)和所有可能情況的對數(shù)函數(shù) log 有關(guān)。 (log32=5, log64=6。)
有些讀者此時可能會發(fā)現(xiàn)我們實際上可能不需要猜五次就能猜出誰是冠軍,因為象巴西、德國、意大利這樣的球隊得冠軍的可能性比日本、美國、韓國等隊大的多。因此,我們第一次猜測時不需要把 32 個球隊等分成兩個組,而可以把少數(shù)幾個最可能的球隊分成一組,把其它隊分成另一組。然后我們猜冠軍球隊是否在那幾只熱門隊中。我們重復(fù)這樣的過程,根據(jù)奪冠概率對剩下的候選球隊分組,直到找到冠軍隊。這樣,我們也許三次或四次就猜出結(jié)果。因此,當(dāng)每個球隊奪冠的可能性(概率)不等時,“誰世界杯冠軍”的信息量的信息量比五比特少。香農(nóng)指出,它的準(zhǔn)確信息量應(yīng)該是
= -(p1*log p1 + p2 * log p2 +?。。玴32 *log p32),
其中,p1,p2 ,?。琾32 分別是這 32 個球隊奪冠的概率。香農(nóng)把它稱為“信息熵” (Entropy),一般用符號 H 表示,單位是比特。有興趣的讀者可以推算一下當(dāng) 32 個球隊奪冠概率相同時,對應(yīng)的信息熵等于五比特。有數(shù)學(xué)基礎(chǔ)的讀者還可以證明上面公式的值不可能大于五。對于任意一個隨機變量 X(比如得冠軍的球隊),它的熵定義如下:
變量的不確定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大。
有了“熵”這個概念,我們就可以回答本文開始提出的問題,即一本五十萬字的中文書平均有多少信息量。我們知道常用的漢字(一級二級國標(biāo))大約有 7000 字。假如每個字等概率,那么我們大約需要 13 個比特(即 13 位二進(jìn)制數(shù))表示一個漢字。但漢字的使用是不平衡的。實際上,前 10% 的漢字占文本的 95% 以上。因此,即使不考慮上下文的相關(guān)性,而只考慮每個漢字的獨立的概率,那么,每個漢字的信息熵大約也只有 8-9 個比特。如果我們再考慮上下文相關(guān)性,每個漢字的信息熵只有5比特左右。所以,一本五十萬字的中文書,信息量大約是 250 萬比特。如果用一個好的算法壓縮一下,整本書可以存成一個 320KB 的文件。如果我們直接用兩字節(jié)的國標(biāo)編碼存儲這本書,大約需要 1MB 大小,是壓縮文件的三倍。這兩個數(shù)量的差距,在信息論中稱作“冗余度”(redundancy)。需要指出的是我們這里講的 250 萬比特是個平均數(shù),同樣長度的書,所含的信息量可以差很多。如果一本書重復(fù)的內(nèi)容很多,它的信息量就小,冗余度就大。
不同語言的冗余度差別很大,而漢語在所有語言中冗余度是相對小的。這和人們普遍的認(rèn)識“漢語是最簡潔的語言”是一致的。