轉自知乎 https://www.zhihu.com/question/22178202/answer/223017546html
本科學的時候是院長教的,當時他說這個東西頗有用,也仔細聽了沒懂什麼意思,如今回過頭來看,還真有用。編碼
信息熵的定義與上述這個熱力學的熵,雖然不是一個東西,可是有必定的聯繫。熵在信息論中表明隨機變量不肯定度的度量。一個離散型隨機變量 的熵 定義爲:htm
這個定義的特色是,有明肯定義的科學名詞且與內容無關,並且不隨信息的具體表達式的變化而變化。是獨立於形式,反映了信息表達式中統計方面的性質。是統計學上的抽象概念。事件
因此這個定義如題主提到的可能有點抽象和晦澀,不易理解。那麼下面讓咱們從直覺出發,以生活中的一些例子來闡述信息熵是什麼,以及有什麼用處。it
直覺上,信息量等於傳輸該信息所用的代價,這個也是通訊中考慮最多的問題。好比說:賭馬比賽裏,有4匹馬 ,獲勝機率分別爲 。io
接下來,讓咱們將哪一匹馬獲勝視爲一個隨機變量 。假定咱們須要用盡量少的二元問題來肯定隨機變量 的取值。class
例如:問題1:A獲勝了嗎?問題2:B獲勝了嗎?問題3:C獲勝了嗎?最後咱們能夠經過最多3個二元問題,來肯定 的取值,即哪一匹馬贏了比賽。變量
若是 ,那麼須要問1次(問題1:是否是A?),機率爲 ;二進制
若是 ,那麼須要問2次(問題1:是否是A?問題2:是否是B?),機率爲 ;im
若是 ,那麼須要問3次(問題1,問題2,問題3),機率爲 ;
若是 ,那麼一樣須要問3次(問題1,問題2,問題3),機率爲 ;
那麼很容易計算,在這種問法下,爲肯定 取值的二元問題數量爲:
那麼咱們回到信息熵的定義,會發現經過以前的信息熵公式,神奇地獲得了:
在二進制計算機中,一個比特爲0或1,其實就表明了一個二元問題的回答。也就是說,在計算機中,咱們給哪一匹馬奪冠這個事件進行編碼,所須要的平均碼長爲1.75個比特。
平均碼長的定義爲:
很顯然,爲了儘量減小碼長,咱們要給發生機率 較大的事件,分配較短的碼長 。這個問題深刻討論,能夠得出霍夫曼編碼的概念。
那麼 四個實踐,能夠分別由 表示,那麼很顯然,咱們要把最短的碼 分配給發生機率最高的事件 ,以此類推。並且獲得的平均碼長爲1.75比特。若是咱們硬要反其道而行之,給事件 分配最長的碼 ,那麼平均碼長就會變成2.625比特。