信息熵是什麼?

信息熵名字起的太抽象了,介紹的文章都不易懂


閱讀大概需要十五分鐘。

相信通過這個回答的介紹,能夠使一個對信息熵毫無了解的人,基本上明白信息熵是什麼,以及有什麼用。

熵的概念首先在熱力學中引入,用於表述熱力學第二定律。波爾茲曼研究得到,熱力學熵與微觀狀態數目的對數之間存在聯繫,並給出了公式:

S=kln W

這個公式也作為他最驕傲的成績,刻在了他的墓碑上。

信息熵的定義與上述這個熱力學的熵,雖然不是一個東西,但是有一定的聯繫。熵在資訊理論中代表隨機變數不確定度的度量。一個離散型隨機變數 X 的熵 H(X) 定義為:

H(X)=-sumlimits_{xinmathcal{X}}p(x)log p(x)

這個定義的特點是,有明確定義的科學名詞且與內容無關,而且不隨信息的具體表達式的變化而變化。是獨立於形式,反映了信息表達式中統計方面的性質。是統計學上的抽象概念。

所以這個定義如題主提到的可能有點抽象和晦澀,不易理解。那麼下面讓我們從直覺出發,以生活中的一些例子來闡述信息熵是什麼,以及有什麼用處。

直覺上,信息量等於傳輸該信息所用的代價,這個也是通信中考慮最多的問題。比如說:賭馬比賽里,有4匹馬 {A,B,C,D} ,獲勝概率分別為 {frac{1}{2},frac{1}{4},frac{1}{8},frac{1}{8}}

接下來,讓我們將哪一匹馬獲勝視為一個隨機變數 Xin{A,B,C,D} 。假定我們需要用儘可能少的二元問題來確定隨機變數 X 的取值。

例如:問題1:A獲勝了嗎?問題2:B獲勝了嗎?問題3:C獲勝了嗎?最後我們可以通過最多3個二元問題,來確定 X 的取值,即哪一匹馬贏了比賽。

如果 X=A ,那麼需要問1次(問題1:是不是A?),概率為 frac{1}{2}

如果 X=B ,那麼需要問2次(問題1:是不是A?問題2:是不是B?),概率為 frac{1}{4}

如果 X=C ,那麼需要問3次(問題1,問題2,問題3),概率為 frac{1}{8} ;

如果 X=D ,那麼同樣需要問3次(問題1,問題2,問題3),概率為 frac{1}{8}

那麼很容易計算,在這種問法下,為確定 X 取值的二元問題數量為:

E(N)=frac{1}{2}cdot1+frac{1}{4}cdot2+frac{1}{8}cdot3+frac{1}{8}cdot3=frac{7}{4}

那麼我們回到信息熵的定義,會發現通過之前的信息熵公式,神奇地得到了:

H(X)=frac{1}{2}log(2)+frac{1}{4}log(4)+frac{1}{8}log(8)+frac{1}{8}log(8)=frac{1}{2}+frac{1}{2}+frac{3}{8}+frac{3}{8}=frac{7}{4}mathrm{bits}

在二進位計算機中,一個比特為0或1,其實就代表了一個二元問題的回答。也就是說,在計算機中,我們給哪一匹馬奪冠這個事件進行編碼,所需要的平均碼長為1.75個比特。

平均碼長的定義為: L(C)=sumlimits_{xinmathcal{X}}p(x)l(x)

很顯然,為了儘可能減少碼長,我們要給發生概率 p(x) 較大的事件,分配較短的碼長 l(x) 。這個問題深入討論,可以得出霍夫曼編碼的概念。

那麼 {A,B,C,D} 四個實踐,可以分別由 {0,10,110,111} 表示,那麼很顯然,我們要把最短的碼 0 分配給發生概率最高的事件 A ,以此類推。而且得到的平均碼長為1.75比特。如果我們硬要反其道而行之,給事件 A 分配最長的碼 111 ,那麼平均碼長就會變成2.625比特。

霍夫曼編碼就是利用了這種大概率事件分配短碼的思想,而且可以證明這種編碼方式是最優的。我們可以證明上述現象:

  • 為了獲得信息熵為 H(X) 的隨機變數 X 的一個樣本,平均需要拋擲均勻硬幣(或二元問題) H(X) 次(參考猜賽馬問題的案例)
  • 信息熵是數據壓縮的一個臨界值(參考碼長部分的案例)。

這可能是信息熵在實際工程中,信息熵最最重要且常見的一個用處。

最後,解釋下信息熵公式的由來:

H(X)=-sumlimits_{xinmathcal{X}}p(x)log p(x)

資訊理論之父克勞德·香農,總結出了信息熵的三條性質:

  • 單調性,即發生概率越高的事件,其所攜帶的信息熵越低。極端案例就是「太陽從東方升起」,因為為確定事件,所以不攜帶任何信息量。從資訊理論的角度,認為這句話沒有消除任何不確定性。
  • 非負性,即信息熵不能為負。這個很好理解,因為負的信息,即你得知了某個信息後,卻增加了不確定性是不合邏輯的。
  • 累加性,即多隨機事件同時發生存在的總不確定性的量度是可以表示為各事件不確定性的量度的和。寫成公式就是:

事件 X=A,Y=B 同時發生,兩個事件相互獨立 p(X=A,Y=B)=p(X=A)cdot p(Y=B)

那麼信息熵 H(A,B)=H(A)+H(B)

香農從數學上,嚴格證明了滿足上述三個條件的隨機變數不確定性度量函數具有唯一形式:

H(X)=-Csumlimits_{xinmathcal{X}}p(x)log p(x)

其中的 C 為常數,我們將其歸一化為 C=1 即得到了信息熵公式。

補充一下,如果兩個事件不相互獨立,那麼滿足

H(A,B)=H(A)+H(B)-I(A,B) ,其中 I(A,B) 是互信息(mutual information),代表一個隨機變數包含另一個隨機變數信息量的度量,這個概念在通信中用處很大。

比如一個點到點通信系統中,發送端信號為 X ,通過信道後,接收端接收到的信號為 Y ,那麼信息通過信道傳遞的信息量就是互信息 I(X,Y) 。根據這個概念,香農推出了一個十分偉大的公式,香農公式,給出了臨界通信傳輸速率的值,即信道容量:

C=Blog(1+frac{S}{N})

寫這個頗費功夫,希望大家能在評論區反饋下,自己讀完後有沒有收穫。

【Tips】現已開啟微信公眾號:科研學徒(kystudent),歡迎大家關注,會不定期分享一些趣事雜談和科研路上的心得體會。歡迎大家與我交流。


###

歡迎轉載和分享給更多人,無需標明作者和鏈接,但如果標了會更顯得尊重別人的成果,謝謝

###

讓我們說人話!好的數學概念都應該是通俗易懂的。

信息熵,信息熵,怎麼看怎麼覺得這個「熵」字不順眼,那就先不看。我們起碼知道這個概念跟信息有關係。而它又是個數學模型裡面的概念,一般而言是可以量化的。所以,第一個問題來了:信息是不是可以量化?

起碼直覺上而言是可以的,不然怎麼可能我們覺得有些人說的廢話特別多,「沒什麼信息量」,有些人一語中的,一句話就傳達了很大的信息量。

為什麼有的信息量大有的信息量小?

有些事情本來不是很確定,例如明天股票是漲還是跌。如果你告訴我明天NBA決賽開始了,這兩者似乎沒啥關係啊,所以你的信息對明天股票是漲是跌帶來的信息量很少。但是假如NBA決賽一開始,大家都不關注股票了沒人坐莊股票有99%的概率會跌,那你這句話信息量就很大,因為本來不確定的事情變得十分確定。

而有些事情本來就很確定了,例如太陽從東邊升起,你再告訴我一百遍太陽從東邊升起,你的話還是絲毫沒有信息量的,因為這事情不能更確定了。

所以說信息量的大小跟事情不確定性的變化有關。

那麼,不確定性的變化跟什麼有關呢?

一,跟事情的可能結果的數量有關;二,跟概率有關。

先說一。

例如我們討論太陽從哪升起。本來就只有一個結果,我們早就知道,那麼無論誰傳遞任何信息都是沒有信息量的。

當可能結果數量比較大時,我們得到的新信息才有潛力擁有大信息量。

二,單看可能結果數量不夠,還要看初始的概率分布。例如一開始我就知道小明在電影院的有15*15個座位的A廳看電影。小明可以坐的位置有225個,可能結果數量算多了。可是假如我們一開始就知道小明坐在第一排的最左邊的可能是99%,坐其它位置的可能性微乎其微,那麼在大多數情況下,你再告訴我小明的什麼信息也沒有多大用,因為我們幾乎確定小明坐第一排的最左邊了。

那麼,怎麼衡量不確定性的變化的大小呢?怎麼定義呢?

這個問題不好回答,但是假設我們已經知道這個量已經存在了,不妨就叫做信息量,那麼你覺得信息量起碼該滿足些什麼特點呢?

一,起碼不是個負數吧,不然說句話還偷走信息呢~

二,起碼信息量和信息量之間可以相加吧!假如你告訴我的第一句話的信息量是3,在第一句話的基礎上又告訴我一句話,額外信息量是4,那麼兩句話信息量加起來應該等於7吧!難道還能是5是9?

三,剛剛已經提過,信息量跟概率有關係,但我們應該會覺得,信息量是連續依賴於概率的吧!就是說,某一個概率變化了0.0000001,那麼這個信息量不應該變化很大。

四,剛剛也提過,信息量大小跟可能結果數量有關。假如每一個可能的結果出現的概率一樣,那麼對於可能結果數量多的那個事件,新信息有更大的潛力具有更大的信息量,因為初始狀態下不確定性更大。

那有什麼函數能滿足上面四個條件呢?負的對數函數,也就是-log(x)!底數取大於1的數保證這個函數是非負的就行。前面再隨便乘個正常數也行。

a. 為什麼不是正的?因為假如是正的,由於x是小於等於1的數,log(x)就小於等於0了。第一個特點滿足。

b. 咱們再來驗證一下其他特點。三是最容易的。假如x是一個概率,那麼log(x)是連續依賴於x的。done

c。四呢?假如有n個可能結果,那麼出現任意一個的概率是1/n,而-log(1/n)是n的增函數,沒問題。

d。最後驗證二。由於-log(xy) = -log(x) -log(y),所以也是對的。學數學的同學注意,這裡的y可以是給定x的條件概率,當然也可以獨立於x。

By the way,這個函數是唯一的(除了還可以多乘上任意一個常數),有時間可以自己證明一下,或者查書。

ok,所以我們知道一個事件的信息量就是這個事件發生的概率的負對數

最後終於能回到信息熵。信息熵是跟所有可能性有關係的。每個可能事件的發生都有個概率。信息熵就是平均而言發生一個事件我們得到的信息量大小。所以數學上,信息熵其實是信息量的期望。(表達式參考其它答案或者看下面)

H=-sum_{xepsilon U}{P(x)log P(x)}

至於為什麼用「熵」這個怪字?大概是當時翻譯的人覺得這個量跟熱力學的熵有關係,所以就用了這個字,君不見字裡頭的火字旁?

而熱力學為什麼用這個字?這個真心不知道。。。

-----------------------------------------------------------------------------------------------------------------------

據評論里 @林傑威 的說法:

熵最早是由熱力學定義的一個函數,是普朗克來中國講學的時候引入的。英文是「entropy」這個字,中文辭彙中沒有相關的字眼。當時是一個有名的姓胡的學者作為普朗克的翻譯。因為這個熵「S」是定義為熱量Q與溫度的比值,所以當時他翻譯是立刻創造出熵這個字,從火,從商。

歡迎討論指正。


補一個從信息編碼角度的理解。熵的定義就不寫了,其他答案都有。資訊理論中,熵也代表著根據信息的概率分布對信息編碼所需要的最短平均編碼長度。

舉個簡單的例子來理解一下這件事情:假設有個考試作弊團伙,需要連續不斷地向外傳遞4選1單選題的答案。直接傳遞ABCD的ascii碼的話,每個答案需要8個bit的二進位編碼,從傳輸的角度,這顯然有些浪費。資訊理論最初要解決的,就是數據壓縮和傳輸的問題,所以這個作弊團伙希望能用更少bit的編碼來傳輸答案。很簡單,答案只有4種可能性,所以二進位編碼需要的長度就是取2為底的對數:

log_2(4)=2

2個bit就足夠進行四個答案的編碼了(00,01,10,11)。在上面這個例子中,其實隱含了一種假設,就是四個答案出現概率是相等的,均為p=1/4,所以編碼需要長度的計算可以理解為如下的形式:

log_2(4)=log_2(frac{1}{1/4} )=-log_2(1/4 )=-log_2(p)

此時已經有些像熵的定義了。回顧一下熵的定義,正是求-log2(p)的期望值,所以我們把這個思路也套用一下:

H(X)=E[-log_2(P(X))]=-sum_{x in {A,B,C,D}}{P(x)log_2(P(x))}

這正是熵,因為ABCD出現的概率均為p=1/4,所以上面式子算出來結果剛好是2。從這個角度,熵就是對每個可能性編碼需要長度的期望值。

答案出現概率相等的例子可能並不貼近實際,在中國考試界,坊間傳聞:「不知道選什麼的時候就蒙C」,這個信息是可以幫助作弊團隊改善編碼長度的。假設A出現的概率不變仍為1/4,C出現的概率變成了1/2,B和D則分別是1/8:P(A)=1/4,P(B)=1/8,P(C)=1/2,P(D)=1/8。在這種情況下,考慮到傳遞答案的過程中,C出現的次數(概率)最高,所以可以為C用短一些的編碼,而出現次數較少的B和D則可以考慮用長一些的編碼。這樣的話,平均下來,對於一定的信息總量,需要的編碼總長度就會少一些。根據熵的定義的思路,對於出現概率為p的事件,考慮用長度為-log2(p)的二進位進行編碼。所以考慮如下面的編碼:

A: 10

B: 110

C: 0

D: 111

對照熵的公式來計算一下編碼長度的期望值,也就是平均編碼長度:

H(X)=-sum_{x in {A,B,C,D}}{P(x)log_2(P(x))} 
=frac{1}{4} 	imes m{2}+frac{1}{8} 	imes m{3}+frac{1}{2} 	imes m{1}+frac{1}{8} 	imes m{3}=1.75

再詳細點,假設作弊團伙要傳遞200個答案出去。為了方便說明,這200個答案中ABCD出現的次數恰好都嚴格和其出現概率成比例,也就是A:50次,B:25次,C:100次,D:25次。所以傳遞200個答案一共需要的bit數是:

50 	imes m{2}+25 	imes m{3}+100 	imes m{1}+25 	imes m{3}=350

那麼平均下來每個答案耗費了350/200=1.75個bit編碼長度。

在實際情況中,並不是每個信息都可以單純按照上面的兩個例子進行二進位編碼。比如一個事件出現概率為0.3,那麼我們也不知道該如何用一個-log2(0.3)=1.74個bit的二進位編碼表示。但是平均編碼長度的概念是可以拓展的,代表了對隨機變數的平均不確定度的度量。比如ABCD四個答案出現概率相等時,是一種最無序最不確定的狀態,誰也蒙不準下一個答案是什麼;但是如果C出現概率高了,那麼答案出現就不是那麼沒規律,我們蒙C時的信心就高了一些。


最後,舉例只是為了舉例,考試作弊三觀不正,做人還是應該誠實。


為什麼課本和論文都寫得那麼複雜,是因為課本和論文的寫作背景都不是現在。

放在現在這個信息時代,其實信息熵的概念一句話就能概括:

「一個東西的信息熵(信息量),就是把這個東西存在你硬碟上所需要的最小空間。」


我正好最近在做這方面科研,來回答一些這個問題。

高票答案講的很通俗,那我就糾正一些不正確的看法,然後說點延伸的東西。建議看我的答案前先看看其他答案,對信息熵有一個直觀的認識。

1. 信息熵定義S=-sum_i p_i lnp_i.有些書因為電腦二進位的原因,喜歡那2作底數,這樣子朗道爾原理裡面就有了一個ln2。我更喜歡這個定義,因為這樣子和熱力學熵就形式一致了,而且朗道爾原理裡面也不用加ln2了。當然,這是對一個比特定義的,如果你有一串比特的話,那你還得再乘一個N。

2.熱力學熵:和信息熵形式完全一致:S=-sum_i p_i lnp_i。當你考慮的是各個態等概率的情形(就是等概率原理)時,假設一共有Omega個狀態,那每一個的概率態就是frac{1}{Omega},所以就有S=-Omega*frac{1}{Omega}*lnfrac{1}{Omega}=lnOmega,和波爾茲曼熵的定義一致。

3. 認為信息熵是一種粗粒化的熱力學熵是不對的哦。因為信息熵的定義壓根不需要在相空間裡面定義,只要有事件有概率就可以定義信息熵。而且從(2)中也可以看出,香農形式的熵是比波爾茲曼形式的熵更廣闊的,因為它不止適用於等概率情形。因此,正確的觀點是把熱力學熵視作信息熵的特例。就是說,當你考慮相空間時,你想算一下相空間各個態的信息熵,你就得到了熱力學熵。

4. 如果你接受了(3),那麼熱力學第二定律最廣闊也最本質的定義就是,孤立系統中,Delta Sgeq 0這裡的熵指的是信息熵(因為熱力學熵是一個特例,所以當然也包括了熱力學熵。)

5. 在(4)的基礎上,朗道爾原理就很好理解了。你擦除信息的時候,信息熵減小,所以自然環境的熱力學熵就增加,而且總的熵也要增加(所以不違背熱力學第二定律)。也就是

Delta S_{bath}+Delta S_{bit}geq 0

又由於Delta S_{bath}=frac{Q}{T}Q=W,所以就有了朗道爾原理:

Wgeq- TDelta S_{bit}

你可能要說有些書上的朗道爾原理還多了個ln2,那是因為信息熵定義有區別,沒什麼本質關係。

6. 關於信息熵的前沿 ,主要有兩個流派吧:

6.1. Sagawa Ueda流派:這個流派應該是最主流的觀點,他們認為所謂的測量,就是讓測量系統和被測系統發生關聯,這個時候測量系統有個熵,被測系統也有個熵,但是它們加起來不等於總的熵,因為它們有關聯,所以你還得減掉一個互熵(就是描述它們關聯程度的)。這個流派把這個互熵定義為信息。測量得到信息後就可以進行反饋控制,實現「貌似的」違背熱力學第二定律。

具體的在知乎上就不說了,你可以看看他們2012年的文獻:Sagawa T and Ueda M Phys Rev Lett, 2012, 109: 180602 。或者你自己找找他們寫的綜述也行。

6.2. Jarzynski流派:這個流派不考慮具體的測量和反饋控制,他們認為,maxwell demon的本質就在於你通過增加儲存器的信息熵來降低系統和熱庫的熵。所以我們就可以把maxwell demon抽象成這個樣子:

然後他們就按照這個設計了一些具體的maxwell demon模型來進行研究。

具體文獻你可以看Mandal D and Jarzynski C Proc Natl Acad Sci U S A, 2012, 109: 11641-11645

和Mandal D, Quan H T and Jarzynski C Phys Rev Lett, 2013, 111: 0306027. 關於麥克斯韋妖,可以看看我另外兩個答案:類似麥克斯韋妖的永動機能否實現? - 熱力學 , 如何理解「麥克斯韋妖測量和分離分子不必產生熵,而拋棄之前的測量結果會產生熵」的論斷? - 物理學


恰好剛剛學完相關的知識,當做複習來答一發

熵是衡量「信息量「大小的一個數值。什麼叫」信息量「?舉個例子。假設你現在玩一個猜硬幣正反面的遊戲,有個人扔一次硬幣,你猜正反面,猜對了可以拿100塊錢,猜錯了就沒有錢。現在有一個能預知未來的人,他知道本次拋硬幣的結果,並且他願意告訴你,只要你給他一定數量的錢。那麼在如下四種情況下,如果他告訴你下一次硬幣拋出的是」正面「,你願意付多少錢給他呢?

1. 你知道此硬幣100%會出正面;(比如這枚硬幣兩邊都是正面)

2. 你知道此硬幣50%會出正面;

3. 你知道此硬幣80%會出正面。

第一種情況顯然你不會給他一分錢的,因為你已經知道該硬幣永遠都會出正面,他說會出正面跟沒說一樣;第二種情況你可能願意最多給他50元,因為你隨便猜正反面,期望收益是50,所以你給超過50元就虧了;同理,第三種情況你最多只願意給他20元。由此可見,一條信息的信息量大小是有區別的,直白點說「信息量」大概就是你知道這條信息以後的「驚訝程度」。比如第四種情況,你肯定會去猜反面,但是你發現下次扔出的是正面,你就會想「卧槽居然扔出的是正面」,這你就會覺得「信息量太大,受不了」。

信息熵的定義是:如果一個事件發生的概率是p(x),則其信息熵為H=logfrac{1}{p(x)},你可以驗證一下:如果這件事發生的概率是1,則其信息熵H=0,意思就是說了跟沒說一樣;如果這件事發生的概率無窮小,比如「中國隊拿了世界盃冠軍」,那麼它的信息熵H趨於無窮,你聽到這個消息的時候心裡就會有無數個「卧槽」。

剛才所說的是針對一個事件的信息熵,那麼如果是一個隨機變數的話,信息熵描述的就是它的不確定程度,這就是為什麼它叫做「熵」。針對一個隨機變數的信息熵定義是,如果變數A有k種可能取值,第i種的發生概率為p(i),則A的熵為每種可能的信息熵的加權平均數(或者說是熵的期望),即H(A)=sum_ip(i)logfrac{1}{p(i)}.比如你扔一個骰子,正常情況下扔出1-6的可能性都是1/6,那麼H=log6;但是如果你已經事先知道這骰子其實只能扔出1,那麼扔骰子這件事的熵就是0,你扔了和沒扔一樣。隨機變數的熵也描述了,你做一次這個實驗,對你而言能獲得的信息量有多少。如果這個實驗你每次做全是一個結果,那你還做它幹啥?差不多就是這個意思。可以證明,當且僅當這k種可能性發生概率均等的時候,事件A的熵是最高的。

那麼為啥要取個log?直接1/p(i)不行么?我覺得其他答案解釋的比較好。我個人理解,取log的好處有兩點,一是它可以表示「描述這件事所有可能性的最短平均編碼長度」。比如你做一個實驗,有4種可能的結果,如果它們是等可能的,那麼你必須得用兩個bit才能表示出來(00,01,10,11),但是如果你事先知道其中有一種結果a出現的可能性遠高於其他的,那麼你就可以給這種可能性更短的編碼(比如0就是a,bcd分別是10,110,111),這樣由於a出現的概率非常高,你的平均編碼長度就短了。順帶一提這就是霍夫曼編碼的過程。第二個好處是取log可以使熵可加,設想你同時做兩個互相獨立的實驗,出現的結果分別是a和b,那麼這件事發生的概率是p(a)*p(b),你得到的信息熵就是logfrac{1}{p(a)*p(b)}=logfrac{1}{p(a)}+logfrac{1}{p(b)}=H(a)+H(b),這樣會十分方便計算。

這個理論有一個實用的應用,就是機器學習當中邏輯回歸的Loss Function。設想現在有一個分類問題,比如給你一個病人的特徵,問這個演算法這個病人是不是得癌症了。假設現在有兩個演算法都對一個樣本判斷錯了,這個樣本實際上是得了癌症的,但是兩個演算法都判斷沒得癌症。不過,演算法A認為其得癌症的概率是45%,演算法B認為其得癌症的概率是10%,那哪個演算法更好呢?顯然是A更好。這個「好」我們就可以用熵來衡量,也就是說演算法先猜一個結果,然後衡量一下我們告訴他真實結果以後他的驚訝程度。這個例子裡面,你告訴演算法A這病人得癌症了,演算法A覺得不是那麼驚訝,因為他本來也不是很確定是不是得癌症了;但是你告訴演算法B這人得癌症了,演算法B就會一臉卧槽,因為他本來十分確定這人沒得癌症。所以你會看到邏輯回歸的Loss Function是frac{1}{N}sum(1-y)logfrac{1}{1-y} + ylogfrac{1}{y},這實際上就是「平均驚訝程度」而已。

===============================================================

回到開頭的那個扔硬幣的例子,一件需要注意的事情是,如果這枚硬幣只有20%的可能性出現正面,那個預知未來的人告訴你出現正面,那你應該給他多少錢呢?之前我誤以為是應該給80塊錢,經過與 @信阿德討論,我發現我的結論錯了,應該只給他20塊錢。這是因為:第一,扔硬幣這件事只有兩種可能,他告訴你是正面,等於告訴你「不是反面」,相當於否定了一件80%概率出現的事情,所以其價值與告訴你「會出現反面」是一樣的。另外,由於你肯定會一直猜反面,所以每一輪你的期望損失是20元錢,因此你也就不應該給他超過20元錢,否則你就虧了。


下面根據我的理解一步一步引出信息熵及其公式的來源:

信息熵的公式

先拋出信息熵公式如下:

其中 P(x_{i}) 代表隨機事件X為 x_{i} 的概率,下面來逐步介紹信息熵的公式來源!

信息量

信息量是對信息的度量,就跟時間的度量是秒一樣,當我們考慮一個離散的隨機變數x的時候,當我們觀察到的這個變數的一個具體值的時候,我們接收到了多少信息呢?

多少信息用信息量來衡量,我們接受到的信息量跟具體發生的事件有關。

信息的大小跟隨機事件的概率有關。越小概率的事情發生了產生的信息量越大,如湖南產生的地震了;越大概率的事情發生了產生的信息量越小,如太陽從東邊升起來了(肯定發生嘛,沒什麼信息量)。這很好理解!

例子

腦補一下我們日常的對話:

師兄走過來跟我說,立波啊,今天你們湖南發生大地震了。

我:啊,不可能吧,這麼重量級的新聞!湖南多低的概率發生地震啊!師兄,你告訴我的這件事,信息量巨大,我馬上打電話問問父母什麼情況。

又來了一個師妹:立波師兄,我發現了一個重要情報額,原來德川師兄有女朋友額~德川比師妹早進一年實驗室,全實驗室同學都知道了這件事。我大笑一聲:哈哈哈哈,這件事大家都知道了,一點含金量都沒有,下次八卦一些其它有價值的新聞吧!orz,逃~

因此一個具體事件的信息量應該是隨著其發生概率而遞減的,且不能為負。

但是這個表示信息量函數的形式怎麼找呢?

隨著概率增大而減少的函數形式太多了!不要著急,我們還有下面這條性質

如果我們有倆個不相關的事件x和y,那麼我們觀察到的倆個事件同時發生時獲得的信息應該等於觀察到的事件各自發生時獲得的信息之和,即:

h(x,y) = h(x) + h(y)

由於x,y是倆個不相關的事件,那麼滿足p(x,y) = p(x)*p(y).

根據上面推導,我們很容易看出h(x)一定與p(x)的對數有關(因為只有對數形式的真數相乘之後,能夠對應對數的相加形式,可以試試)。因此我們有信息量公式如下:

h(x)=-log_{2}p(x)

下面解決倆個疑問?

(1)為什麼有一個負號

其中,負號是為了確保信息一定是正數或者是0,總不能為負數吧!

(2)為什麼底數為2

這是因為,我們只需要信息量滿足低概率事件x對應於高的信息量。那麼對數的選擇是任意的。我們只是遵循資訊理論的普遍傳統,使用2作為對數的底!

信息熵

下面我們正式引出信息熵。

信息量度量的是一個具體事件發生了所帶來的信息,而熵則是在結果出來之前對可能產生的信息量的期望——考慮該隨機變數的所有可能取值,即所有可能發生事件所帶來的信息量的期望。即

H(x)=-sum (p(x)log_{2}p(x) )

轉換一下為:

最終我們的公式來源推導完成了。

這裡我再說一個對信息熵的理解。信息熵還可以作為一個系統複雜程度的度量,如果系統越複雜,出現不同情況的種類越多,那麼他的信息熵是比較大的。

如果一個系統越簡單,出現情況種類很少(極端情況為1種情況,那麼對應概率為1,那麼對應的信息熵為0),此時的信息熵較小。

這也就是我理解的信息熵全部想法,希望大家指錯交流。也希望對大家理解有幫助~

參考:

「熵」的通俗解釋 - 七月在線

關於信息熵的個人通俗的理解

prml1.6節

致謝:

德川,郭江師兄


在資訊理論裡面,熵(entropy)是信息不確定性的一個測度,熵越大則表示信息的不確定程度越高。這麼說好像的確有點抽象,還是用公式解釋吧:

H=-sum_{xepsilon U}{P(x)log P(x)}

這裡H是熵,U可以理解為所有可能事件的集合,P(x)則是某一具體事件x發生的概率,對數的底一般取2。舉個例子,預測明天的天氣,如果能100%確定明天一定是晴天,那麼熵就是-1*log1=0,也就是說不確定性為零。如果說明天有50%概率晴天,50%概率下雨,那麼熵就是2*(-0.5)log0.5=2*(-0.5)(-1)=1,可以說不確定性為1。而如果明天有25%概率晴天,25%概率下雨,
25%概率陰天,
25%概率下雪,那麼熵就是4*(-0.25)(log0.25)=2, 也就是說隨著不確定程度的增加,熵也在不斷地增大。再舉個例子,你可以統計一下我這段話裡面不同的字出現的頻率,然後算出這段話的熵,幾乎可以肯定,這個熵會比一段胡亂打出的字的熵要低,因為胡亂打出的字所包含的不確定性比較高。

熵是資訊理論里最重要的概念之一,很多極限都是用熵來表示的。熵在熱力學和其他一些領域中也有出現,雖然具體的定義不盡相同,不過基本上都是用來表示系統的無序程度的。


在概率論中,我們知道P(A)代表事件A發生的概率。例如,投一枚硬幣,正面朝上的概率是0.5,該事件總共有兩種可能的結果,出現每種結果的可能性是相同的。

在資訊理論中,我們會問,事件A的發生給我帶來多大的信息量呢?

P(A)越大,則A帶來的信息量越少;反之,P(A)越小,A帶來的信息量就越多。為什麼?

假設我們在玩二十問的遊戲,我告訴你我心裡想的是一個女演員。如果你問:

「她是人嗎?」

這個問題的答案沒有任何信息量。因為女演員是人的概率是100%,或者說它是一個必然事件,結果完全在意料之中,它的信息量就是0。

也就是說,事件A的發生所帶來的信息量H(A)是它發生的概率P(A)的減函數,P(A)=0,則H(A)=1,反之亦然。

在數學上,設事件A的概率是P(A),則稱 Hleft( A 
ight)=-log _{2}Pleft( A 
ight) 為A帶來的信息量。

例如,拋一次硬幣,它帶來的信息量是 -log _{2}left( frac{1}{2} 
ight) =1,拋兩枚硬幣,它帶來的信息量是 -log _{2}left( frac{1}{4} 
ight) =2,拋兩枚硬幣一共有4種可能的結果,每種結果的概率是1/4。

圖:拋兩枚硬幣有4種結果,信息量是2(來自維基百科)

不同的事件有不同數量的可能結果。拋一枚硬幣的結果有兩種,拋兩枚硬幣的結果有4種。可見,可能的結果愈多,總的信息量就愈大。

拋一枚硬幣包含的信息量是 -log _{2}left( frac{1}{2} 
ight) 。在計算機中,它表示1比特,即我們可以用二進位的一位涵蓋所有的信息,例如1表示正面朝上,0表示反面朝上。如果是拋兩枚硬幣,它說包含的信息量是 -log _{2}left( frac{1}{4} 
ight) 即2比特,我們需要00、01、10、11來代表所有的信息。

上面我們只考慮了各種可能性發生概率相等的情況,如果一個事件各種可能性發生的概率是不相等的呢?

由於各種可能結果之間是相互獨立事件。於是:

Hleft( X 
ight)=-sum_{i=1}^{n}{Pleft( x_{_{i}} 
ight)log _{2}Pleft( x_{i} 
ight)}

其中,隨機變數X有n個可能的取值{x1,…,xn},每個取值發生的概率為P(xi)。信息熵(information entropy)是所有可能結果的平均信息。

事件A的發生為我們提供了信息量,事件A發生前, -log _{2}Pleft( A 
ight) 表示該事件發生的不確定性。也即是說,信息是「用來消除不確定性的東西」。當我們不知道事物的具體狀態時,它可能的結果越多,不確定性越大;不確定性愈大的事物,我們知道了它的具體狀態,我們獲得的信息量也就愈多。

與之相應,信息熵也有兩層含義:

1、表示信源輸出前信源的平均不確定性;

2、表示信源輸出後,每個符號所攜帶的平均信息量。


原創文章,一家之言。

轉載請註明出處。

個人公眾號:follow_bobo

機器學習入門:重要的概念---信息熵(Shannon』s Entropy Model)

在機器學習裡面,信息熵(Shannon』s Entropy Model)其實是一個很重要的概念,多重要呢?大概有

(-------------------------)這麼重要。

好了,那邊拿槍的朋友,請把你的刀從我脖子上拿開,還有那邊揮拳頭的朋友,你踢到我了。

機器學習中很多地方都要根據目前的信息做出決策,信息熵主要是反應信息的不確定性,它的一個很重要的作用,就是做決策時提供一定的判斷依據,比如決策樹根據熵來往下設置分枝(branch)。

.

『同學你好,說了半天我也不知道你說了啥,我們想打你。』

冷靜冷靜,好了,我們接下開始講正題。。。

嗎?不,我們來先拋硬幣。

我們拋一個硬幣,正反面發生的概率都是50%,那麼我們可以分別用0,1來表示正反面結果。

當拋出硬幣的那一刻,我們會得到2個信息量,0和1。如果我們同時拋兩枚呢,我們知道這個時候用00,01,10,11表示出了這個隨機事件,我們獲得了4個信息量(2^2, 拋4枚呢,有16種可能性,那我們可以獲得16(2^4)個信息量。

硬幣拋完了,有什麼用呢,其實沒什麼用,我就是想讓你們感受下。。。

刀放下,這位同志,讓我們先看完下面的。。

大家應該對數學期望(Mean)都有所了解吧,它試驗中每次可能結果的概率乘以其結果的總和,是最基本的數學特徵之一。它反映隨機變數平均取值的大小。本質上是對未知的預期

敲黑板了,注意關鍵字:概率,結果。隨機,平均,預期。

我們現在來看什麼是信息熵模型(Shannon』s Entropy Model), 信息熵實際反應的是一個信息的不確定度。在一個隨機事件中,某個事件發生的不確定度越大,熵也就越大,那我們要搞清楚所需要的信息量越大。

在信息熵的定義中,假設兩個隨機變數x和y是相互獨立的,那麼分別觀測兩個變數得到的信息量應該和同時觀測兩個變數的信息量是相同的,我們用h()來表示信息量,即:h(x+y) = h(x) + h(y),比如小明今天失業了和今天失戀了是兩個獨立事件,單獨一個一個知道和一起知道,對大家來說都挺好笑的,不是,對大家來說獲得的信息量是相同的。

對小明來說,失業的p(x)和失戀的p(y)同時發生的概率是:p(x,y) = p(x)p(y).

那好,我們現在把表撥回昨天小明還是人生贏家的時候,我們猜想,第二天小明是可能失業呢,還是失戀呢,還是同時發生呢,我們不得而知,但是好奇心(小明心裡:我也是日了汪汪了)驅使我們去想知道接下來會發生的事,那我們用什麼方式方式來度量將發生失戀和失業的信息量呢?我們剛剛提及了期望,巧了,這兩個隨機事件完全符合數學期望的要求,所以我們可能在小明身上獲得的預期信息量為(真是狠啊,誰還算這東西):

H[x] = p(x)h(x)+ p(y)h(y)

我們現在回到信息量h()來:

1. 當一個事件發生的概率p(x)為1並且它發生了,那我們等到的信息量是h(x) = 0。

2. 當一個事件發生的概率p(x) 為0 並且它發生了,那我們得到的信息可能是無限大。

3. H(x)隨p(x)單調遞增,假如x與p(x)成反比。

4. p(x,y) = p(x)p(y)。

5. h(x,y) = h(x) + h(y)。

6. 信息量h(x) 反比於p(x) 。

7.信息量是非負的。

看到上面的條件,是不是想到一個函數可以來表達,對,就是log,這個h(x) 會等於 Clog(A*p(x))+D 的形式嗎?不會,只能是Clog(p(x)),這個係數C對整個信息量影響不大,因為大家都乘了個C,不是相當於沒乘么。同時,p(x) 肯定小於等於1,log(p(x))一直小於等於0 ,而信息量又是非負的,那麼,我們就把C設為-1 吧。

信息量:h(x) = - log(p(x))。

我們來驗證一下:

1. p(x)= 1, h(x) =0.

2. p (x) = 0, h(x) 等於無窮大。

3. 假如有n個可能結果,那麼出現任意一個的概率是1/n,而-log(1/n)是n的增函數,沒問題。

4. 第四點不用說了。

5. log(p(x,y)) = log(p(x)p(y)) = log(p(x)) + log(p(y)),沒毛病。

但是,這個log的底是多少呢?

以前人們一般會用ln, 現在主流的認識是log以2為底,為什麼呢?我們一般考慮到一個事件的信息量是一連串相互獨立隨機變數發生的結果,其中每一個選擇都在0或1之間做出,我們能算出所有可能結果數為N=2^n,n是獨立隨機變數的個數, 於是,我們把指數形式變成線性形式就是n= log2(N)了。

這其實涉及到資訊理論中編碼問題,數學之美裡面有提過一個例子:

假設我們沒有看世界盃的比賽,但是想知道哪支球隊會是冠軍,只能去問已經看過比賽的觀眾,但是我們只能猜測某支球隊是或不是冠軍,然後觀眾用對或不對來回答,我們想要猜測次數儘可能少,所用的方法就是二分法。假如有 16 支球隊,分別編號,先問是否在 1-8 之間,如果是就繼續問是否在 1-4 之間,以此類推,直到最後判斷出冠軍球隊是哪只。如果球隊數量是 16,我們需要問 4 次來得到最後的答案。那麼世界冠軍這條消息的信息量就是 4。在計算機中,這條信息的信息量就是 4 比特,如果一共是 32 支球隊參賽,那麼世界冠軍的信息量就是 5 比特,可以看到信息量跟可能情況的對數 log (以 2 為底)有關(這裡大概有點知道為什麼求熵的公式里會有一個 log 了)。

其實對於底數來說,只要大於1就可以,因為它只是一個比例因子。

這下小明發生失戀和失業的平均信息量就是:

H[x] = - p(x)log2(p(x)) - p(y)log2(p(y))

萬一,我說萬一,小明不僅失戀(p(x)),失業了(p(y)),還出門被撞(p(z)),走路摔跤(p(w)),等等一系列衰事。。。

小明同學,你的刀有點弄疼我了。。。。

那麼整個事件的信息量期望可以表示為:

H[x] = - p(x)log2(p(x)) - p(y)log2(p(y)) - p(z)log2(p(z)) -p(w)log2(p(w))。。。

我們可以總結為:

H[x] =

(1,1)

好了,我們就得到了信息熵的公式了(1,1),即一個總的事件的信息量的期望。

(附錄會放我在網上找的關於信息熵的數學推導過程)

我們來舉個例子方便大家理解,小明在一道選擇題的A,B,C,D中選出答案,A對的概率為1/2,B對的概率變成了1/4,C和D則分別是1/8。

如果答案為A,小明要猜1次,概率為1/2。

如果答案為B,小明要猜2次(先猜A,因為A對的概率最大,發現不對,再猜B),概率為1/4。

如果答案為C,或者D,小明要猜3次,概率都是1/8。

那麼在以上的情況中,小明要猜多少次才是正確答案呢?

實際上就是一個求期望的問題:

E[N]=1/2 *1 +1/4*2+1/8*3+1/8*3 = 1.75

對,大概要猜1.75次。

那我們來求一下信息熵:

H[x] = - 1/2*log2(1/2)-1/4*log2(1/4) - 1/8*log2(1/8) - 1/8*log2(1/8)

= 1.75 bits (信息熵單位為bit, 為什麼是bit, 我覺得主要還是和二進位編碼有關)

我們要獲得正確信息需要付出的"熵"是1.75bits。

兩個結果竟然一樣誒,6不6 。什麼,你覺得是巧合?我把C的概率換成3/16,D的概率換成1/16,結果還是非常非常接近1.75 bits(估計因為中間有四捨五入)。

是不是有點開始懂了?

那麼信息熵的本質到底是什麼呢,我認為本質就是我要獲得某些信息的代價,當信息的稀有度越高,得到這個信息需要付出的代價越高。

到這,估計很多讀者們還是一臉懵逼,你得到這個公式,有啥用呢,怎麼用呢?

我們下期再講,機器學習入門:從信息熵到決策樹。6


抄的大物課本了。。還蠻清楚的,首答獻給你了(?? . ??) ______________________________________

信息所涉及的範圍十分廣泛,不僅包括所有的知識,還包括通過我們五官感覺到的一切。任何事物都可以作為信息源,信息是一種相對的概念:它自身不能單獨存在,必須依附於一定的載體。而且也還要和接收者及它所要達到的目的相聯繫,這才可成為信息。資訊理論創始人香農(C.E.Shannon)於1948年從信息接收者(稱為信宿)的角度定義:「信息是能夠協助信宿消除事件不確定的因素」。控制論學者維納(N.Wiener)認為:「信息是人在和外界相互作用過程中相互可交換的東西」。

如果我們對信息的多少沒有一個定量的測度方法,就沒有今天信息科學的發展。香農為此從概率論角度出發,引入不確定程度的概念。在日常生活中經常會遇到一些隨機事件,這些事件的選擇結果是事先不能完全肯定的。如果一個事件有N種可能性相等(均為1/N)的結果,則結果結果未出現前的不確定程度和N有關。N越大,事件的不確定度就越大,信息量也越大。不確定度應為N的單調上升函數,而當N=1時,事件只有一個選擇結果,不確定度為零,即必然事件不提供信息量。據此,香農認為信息量與N應為對數關係,即

I=c lnN (c為常數)

式中,c為比例常數。考慮一個信息量是一連串幾個相互獨立的選擇結果,其中每一個選擇都在0或1之間做出,總的N值為N=2^n 於是

I=c㏑N=nc㏑2

如果令I與n等同,則

c=1/ln2=㏒(2底)e

這樣定出的信息量單位,就是計算機科學中普遍使用的比特(bit);如果令c等於玻爾茲曼常數k,那麼信息量就用熵的單位來度量。因此資訊理論中還把信息量I稱為信息熵。

*罒▽罒*

定義式 I=c㏑N 與玻爾茲曼(熵與熱力學概率)關係 S=k㏑Ω 十分相似。這樣的表達式正是隨機事件共性的體現。 擲一枚硬幣有2種可能的、概率相等的結局,按照上式,其信息量為㏑2,擲一枚骰子的信息量為㏑6。


信息熵描述的是信息不確定的程度。

我想重點說一下信息量這個概念。信息量不是指從某一個確定的信息中能獲得信息的量,而是一段不確定信息,可能出現信息的量。

一段信息越不確定,那麼可能出現的信息的量就會越大。

直觀的來看,香農公式和結果數以及變數的概率有關。結果數越多,信息熵越大,可能出現的信息的量也就越多。概率越分散,信息熵越小,可能出現的信息的量越小。


信息熵是對信息的一個度量,凡是給出度量方法的,都能稱之為偉大。秦始皇統一了度量衡,也是要寫進歷史課本的。

1.首先信息是可以度量的嗎?如果可以怎樣度量呢?

在實際生活中,我們看大話西遊的唐僧時,會覺得搞笑,因為我們的觀念中唐僧應該是內斂和惜字如金的(信息量大)。唐僧變成了嘮嘮叨叨,廢話連篇(信息量極少),形成了強烈反差。

我們對信息量大小是有一個直觀的判斷的,但如何度量通常是由牛人發現的,為仙農同志鼓掌!

2.基本思想

(1)信息量應該是個非負數,很難想像一個人說話信息量為負,最多就是完全廢話(信息量為0

(2)對於兩個完全獨立的時間,信息量應該滿足疊加性吧。比如明天太陽從東邊出來和明天股市上漲,你腦子接收到以後,知道的信息量是兩個獨立事件的和。

(3)如果這件事發生的概率越高,信息量越小;概率趨於無窮,信息量趨於0;概率越小,信息量越高;概率趨於0,信息量趨於無窮;

我們搜便學過的函數,對數就符合啊!當然如果你讀書多,熱力學第二定律裡面針對熵就是用對數定義的,很自然就借用過來的。這就是讀書少和讀書多的差距!

給出信息量度量公式:

選擇以2為底,是因為計算機是二進位的。當然量子計算機發明出來,選擇其它底是很自然的事情。

3.信源的信息熵

一個信源發出的符號不是一個,是多個,甚至連續的。我們已經知道了單個符號的信息熵怎麼算了,整個信源的信息熵就是將所有符號進行統計平均

一定記住是統計平均,信息量就是由概率定義的,還能用其他平均方式嗎?

離散信源:

針對於結論,你可以嚴格推導,或者你用這句話理解一下:所有符號概率均等時,才是最獨立的姿態,也是我們整體信息熵最大的姿態(想起丁玲的《致橡樹》沒?)

連續信源

針對連續信源,高斯分布最大的結論證明有點困難,有興趣的鼓勵你研究。


比如一段話你不知道幾個詞,不知道什麼語言,不知道誰寫的,那麼它這時蘊含了許多信息,因為可以說它是世界上任何一段話。但是告訴你它是英文寫的,那麼範圍就減小了,未知的信息就小了,再告訴你作者是誰,幾個詞,你可能在他某本書中就能找到了,信息量遞減。至於其中的計算方法就是課本里那些概率對數。


信息熵可以認為是信息的混亂程度,信息熵越大,越混亂,信息越不純。比如P(x1) = 0.9,P(x2)=0.1,會比P(x1) = 0.5,P(x2)=0.5更加純粹,更容易進行分類。在決策樹中就是採用了信息熵的思想,使用信息增益來使得整個分類的結果往信息熵更小的方向進行。


一、信息

假設信息可量化,設事件 A 發生帶來的信息量為 I(A) 且其發生的概率為 p ,則 pI(A) 之間存在函數關係 I(A)=f(p) .做出如下討論:

①相互獨立的兩個事件 A,B 同時發生帶來的信息量滿足可加性,設 B 發生的概率為 q ,則 有I(AB)=I(A)+I(B)=f(pq)=f(p)+f(q)

②必然發生的事件,不會帶來任何信息即 f(1)=0 ;研究不可能事件的信息量沒有意義,所以函數 f(p) 的定義域為 pin(0,1]

③信息非負

利用①②③三個條件解函數方程可得 f(p)=log_{a}^{p} ,pin(0,1] ;ain(0,1). 通常取 a=1/2

二、信息熵

若某事件有 n 種結果 A_{1},A_{2},...,A_{n} ;對應概率為 p_{1},p_{2},...,p_{n}

現在我們要對此事件發生一次帶來的信息量做出預測,便使用信息的期望來衡量發生一次帶來的信息為多少.

E[I(A)]=p_{1}f(p_{1})+p_{2}f(p_{2})+...+p_{2}f(p_{2})

上面這個表達式就是信息熵


我覺得吧,阮大大已經寫得很清楚易懂了。

數據壓縮與信息熵 - 阮一峰的網路日誌


補充一下為什麼用log函數。

這個涉及兩個問題:

1.對進位的理解。

2.可計算性的理解。

對進位的理解。

如果是10進位,每一位可以表達10種可能。2位就表達100種。同理,2進位。

再說概率,如果一件事情的概率是1/1000,那麼隱含的說法就是有1000種情況。為了給1000個情況編碼需要幾位?用10進位就是3位。2進位就是10位。

在計算機中,都是用2進位,所以就用2為底。

可計算性的理解

設概率p, 那麼1/p就是可看成不確定性。

如果兩種情況的概率分別是 P(A)=p1,P(B)=p2

那麼P(AB)=p1*p2

由於p1,p2都是小於1的數,如果求多個情況一起發生的概率,而且每個概率都很小。p1*p2*p3...= 0.001*0.002*0.0003..........那麼,這個數字很快就小到超出計算機的表達範圍

同時,對於不確定性,1/p1*1/p2.....很快就大到無法表示

所以,轉化成log計算,就解決了這個問題。


似乎看到了信息熵和Huffman樹的關聯


做了一年信息熵在自己學科應用的研究,簡單來回答一下,信息熵就是把一個系統的不確定性,按照其可能出現結果的概率分布,進行定量化計算。算一個簡單的算例便於理解。

簡而言之,一個系統的信息熵大小可以描述為這個系統帶給我們的「驚奇度」,如果各可能出現結果是等概率分布,我們對於出現的結果是沒有太多預先認知的,對應的「驚奇度」也是較大的,信息熵也較大;相反,如果一個隨機事件的出現結果其概率分布帶有偏態性,那意味著其中某種情況出現的概率很大,對於結果的「驚奇度」就會大打折扣,信息熵就相應減小了。

非專業人士,回答有不對的地方請指正。


推薦閱讀:

微博數據分析,已經有了JSON格式的爬蟲數據,如何做數據分析呢?
醫療大數據的分析和挖掘發展現狀如何?未來會有什麼樣的應用前景?
機器學習模型中的分類變數最多可以有多少個值?
你遇到過什麼,讓你一瞬間覺得數據如此有趣美妙,又有價值?
標準化和歸一化什麼區別?

TAG:數據挖掘 | 資訊理論 | 統計力學 |