天天看點

香農資訊量

如果是連續型随機變量的情況,設 p p p為随機變量 X X X的機率分布,即 p ( x ) p(x) p(x)為随機變量 X X X在 X = x X=x X=x處的機率密度函數值,則随機變量 X X X在 X = x X=x X=x處的香農資訊量定義為: − l o g 2 p ( x ) = l o g 2 1 p ( x ) -log_2p(x)=log_2\frac{1}{p(x)} −log2​p(x)=log2​p(x)1​

這時香農資訊量的機關為比特。(如果非連續型随機變量,則為某一具體随機事件的機率,其他的同上)

香農資訊量用于刻畫消除随機變量在處的不确定性所需的資訊量的大小。

上面是香農資訊量的完整而嚴謹的表達,基本上讀完就隻剩下一個問題,為什麼是這個式子?為了友善了解我們先看一下香農資訊量在資料壓縮應用的一般流程。

假設我們有一段資料長下面這樣: a a B a a a V a a a a a aaBaaaVaaaaa aaBaaaVaaaaa

可以算出三個字母出現的機率分别為:

a : 10 12 , B : 1 12 , V : 1 12 a:\frac{10}{12},B:\frac{1}{12},V:\frac{1}{12} a:1210​,B:121​,V:121​

香農資訊量為: a : 0.263 , B : 3.585 , V : 3.585 a:0.263,B:3.585,V:3.585 a:0.263,B:3.585,V:3.585

也就是說如果我們要用比特來表述這幾個字母,分别需要 0.263 , 3.585 , 3.585 0.263,3.585,3.585 0.263,3.585,3.585個這樣的比特。當然,由于比特是整數的,是以應該向上取整,變為 1 , 4 , 4 1,4,4 1,4,4個比特。

這個時候我們就可以按照這個指導對字母進行編碼,比如把 a a a編碼為" 0 0 0",把 B B B編碼為" 1000 1000 1000", V V V編碼為" 1001 1001 1001",然後用編碼替換掉字母來完成壓縮編碼,資料壓縮結果為: 001000000100100000 001000000100100000 001000000100100000。

上面例子看起來有點不合理,因為如果我們去搞,我們會編碼出不一樣的東西,如 a a a編碼為" 0 0 0", B B B編碼為" 10 10 10", V V V編碼為" 11 11 11",是以可以把資料壓縮的更小。那麼問題出現在哪呢?

出現在這裡的B和V這兩個字母隻用兩個比特進行編碼對于他們自身而言并不是充分的。在另外一個壓縮的例子中,可以一下子就看出來: a b B c d e V f h g i m abBcdeVfhgim abBcdeVfhgim

上面的每一個字母出現的機率都為 1 12 \frac{1}{12} 121​,假設我們還是以兩個比特去編碼 B B B和 V V V,那麼就無法完全區分出12​個字母。而如果是4個比特,便有16種可能性,可以足夠區分這​12個字母。

現在回過頭來看香農資訊量的公式,它正是告訴我們,如果已經知道一個事件出現的機率,至少需要多少的比特數才能完整描繪這個事件(無論外部其他事件的機率怎麼變化),其中為底的2就是比特的兩種可能性,而因為二分是一個除的關系,是以自變量是機率分之一而不是機率本身。

感性的看,如果我們知道 a a a出現的機率為 5 6 \frac{5}{6} 65​,那麼用比特中的"0"狀态來表述它是完全合理的,因為其他事件的機率總和隻有 1 6 \frac{1}{6} 61​,但我們給這 1 6 \frac{1}{6} 61​空出了比特的"1"這 1 2 \frac{1}{2} 21​的空間來表達他們,是完全足夠的。