5分钟理解信息熵
?
機器學習中各種熵(信息熵,條件熵,聯合熵,互信息,交叉熵)是最重要的概念之一,也是最難理解的。對于分類問題,我們常常計算兩個概率密度函數的交叉熵,以衡量預測值和真實值之間的誤差。而信息熵是這些概念的基礎。
含義:智商是衡量一個人智力高低的指標,信息熵(商)是衡量一個隨機事件所包含的信息量的指標。信息量怎么衡量呢?信息是用來傳遞的,傳遞時是需要借助某些介質來對信息編碼的,正如古代用烽火臺來傳遞是否有敵人進犯的信息,有敵人來就點火,沒有就不點火,實際上就是用烽火這種媒介來對信息編碼以便傳遞。為了對信息進行編碼,最少需要多少位二進制數呢,對于是否有敵人來進犯,只需一位二進制數就行,0(不點火)表示無敵人,1(點火)表示有敵人,那么敵人是否進犯這個隨機事件的信息熵就是1。如果需要的情報再豐富一點,敵情不只是有無敵人,而是更多的狀態,比如無敵人,有小股敵人,有中規模敵人,有大股敵人這4個狀態,那么需要更多位的二進制來表達,比如00,01,10,11來表示這4個狀態,也就是2位二進制數,也叫2比特。如果這4種狀態的出現的概率相等,那最少需要2比特來表達,這時信息熵就是2。所以信息熵就是對信息編碼所需最少比特數。我們可以這樣理解,信息量越大,需要表達清楚就要越多的信號來表達,點火和不點火就是一種二進制信號,相當于0和1。
信息熵的計算公式:
$$H(X)=-\sum P(X)logP(X) $$
這里log是以2為底
請看上面信息熵的計算公式,信息熵是用隨機事件的各個狀態取值的概率來計算的。
如果是否有敵情2種狀態的出現的概率P(X=有)和P(X=無)相等,都是1/2,把信息熵的求和公式展開得到:
H(X) = -(P(X=有)log(P(X=有) ) + P(X=無)log(P(X=無)))
把P(X=有)和P(X=無)兩個概率值1/2代入得到:
H(X)=-((1/2)*log(1/2) + (1/2)*log(1/2) )= -log(1/2) = 1
因為這里log是以2為底的對數,所以log(1/2)=-1,再加前面的負號,就變成正1。
它有這樣的特點:
1.狀態取值越多,信息熵越大
2.每個狀態取值的概率越平均,信息熵越大,反之各狀態的概率越是相差懸殊,信息熵就越小。
3.信息熵實際上衡量隨機事件的不確定程度,越是不確定,信息熵就越大,那用來表達清楚這條信息所需要的比特數就越多。
試想下,讓你猜硬幣的正反和讓你猜6面體骰子,骰子的狀態有6個,比只有2個狀態的硬幣更難猜,更不確定。而同樣是6個狀態,如果骰子是做過手腳的,有一面出現的概率比其他5面的概率大很多,那相對來說不確定性就減少了,比如極端一點,那個面出現的概率是1,其他面出現的概率是0,那是最確定的了,這時的信息熵最小。我們可以算得這時信息熵為0。
假設6個面分別叫a,b,c,d,e,f面,其中a面出現的概率為1,其他概率都為0,則有:
H(X)=?-(P(X=a)log(P(X=a?))+ P(X=b)log(P(X=b)) + ...+?P(X=f)log(P(X=f)))
? ? ? ?=-(1*log(1)+0*log(0)+...+0*log(0))
因數學上把0*log(0)的值規定為0,所以上式為:
? ?=-1*log(1)
? ?=-1*0
? ?=0
怎么理解各狀態出現概率越相差懸殊,編碼所需比特數越少呢?同樣極端點,如果敵情的狀態是無敵人的概率是1,其他狀態全是0,那這個烽火臺就不需要傳遞信息了,反正永遠是同樣的結果,傳不傳信息都一樣。所以編碼的比特數就是0。
總結:
1.信息熵=隨機事件所含的信息量=為編碼這個信息所需的最少比特數=隨機事件的不確定程度
2.信息熵用隨機事件中各狀態的出現概率來計算
3.可能的狀態數量越多,信息熵越大,這表明信息量更多,編碼它所需的比特數更多,這個事件就更不確定。
4.各狀態出現概率越平均(最平均的就是等概率),信息熵越大,表明信息量更多,編碼比特數更多,事件更不確定
反之,各狀態出現概率越相差懸殊,信息熵越小,信息量越少,編碼信息的比特數越少,事件越確定。最懸殊的情況是其中一個狀態概率為1,其他全0,這時信息熵為0
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
總結
- 上一篇: 汇编语言——快速排序
- 下一篇: SQL数据恢复总结 - sql serv