目錄
1、信息熵 (information entropy)
熵 (entropy) 這一詞最初來源於熱力學。1948年,克勞德·愛爾伍德·香農將熱力學中的熵引入信息論,所以也被稱為香農熵 (Shannon entropy),信息熵 (information entropy)。本文只討論信息熵。首先,我們先來理解一下信息這個概念。信息是一個很抽象的概念,百度百科將它定義為:指音訊、消息、通訊系統傳輸和處理的對象,泛指人類社會傳播的一切內容。那信息可以被量化么?可以的!香農提出的“信息熵”概念解決了這一問題。
一條信息的信息量大小和它的不確定性有直接的關系。我們需要搞清楚一件非常非常不確定的事,或者是我們一無所知的事,就需要了解大量的信息。相反,如果我們對某件事已經有了較多的了解,我們就不需要太多的信息就能把它搞清楚。所以,從這個角度,我們可以認為,信息量的度量就等於不確定性的多少。比如,有人說廣東下雪了。對於這句話,我們是十分不確定的。因為廣東幾十年來下雪的次數寥寥無幾。為了搞清楚,我們就要去看天氣預報,新聞,詢問在廣東的朋友,而這就需要大量的信息,信息熵很高。再比如,中國男足進軍2022年卡塔爾世界杯決賽圈。對於這句話,因為確定性很高,幾乎不需要引入信息,信息熵很低。
考慮一個離散的隨機變量 $x$,由上面兩個例子可知,信息的量度應該依賴於概率分布 $p(x)$,因此我們想要尋找一個函數 $I(x)$,它是概率 $p(x)$ 的單調函數,表達了信息的內容。怎么尋找呢?如果我們有兩個不相關的事件 $x$ 和 $y$,那么觀察兩個事件同時發生時獲得的信息量應該等於觀察到事件各自發生時獲得的信息之和,即:$I(x,y)=I(x)+I(y)$。
因為兩個事件是獨立不相關的,因此 $p(x,y)=p(x)p(y)$。根據這兩個關系,很容易看出 $I(x)$一定與 $p(x)$ 的對數有關 (因為對數的運算法則是 $log_a(mn)=log_am+log_an$)。因此,我們有
$I(x)=-logp(x)$
其中負號是用來保證信息量是正數或者零。而 $log$ 函數基的選擇是任意的(信息論中基常常選擇為2,因此信息的單位為比特bits;而機器學習中基常常選擇為自然常數,因此單位常常被稱為奈特nats)。$I(x)$ 也被稱為隨機變量 $x$ 的自信息 (self-information),描述的是隨機變量的某個事件發生所帶來的信息量。圖像如圖:

最后,我們正式引出信息熵。 現在假設一個發送者想傳送一個隨機變量的值給接收者。那么在這個過程中,他們傳輸的平均信息量可以通過求 $I(x)=-logp(x)$ 關於概率分布 $p(x)$ 的期望得到,即:
$H(X)=-\displaystyle\sum_{x}p(x)logp(x)=-\sum_{i=1}^{n}p(x_i)logp(x_i)$
$H(X)$ 就被稱為隨機變量 $x$ 的熵,它是表示隨機變量不確定的度量,是對所有可能發生的事件產生的信息量的期望。
從公式可得,隨機變量的取值個數越多,狀態數也就越多,信息熵就越大,混亂程度就越大。當隨機分布為均勻分布時,熵最大,且 $0\le H(X)\le logn$。稍后證明。將一維隨機變量分布推廣到多維隨機變量分布,則其聯合熵 (Joint entropy) 為:
$H(X,Y)=-\displaystyle\sum_{x,y}p(x,y)logp(x,y)=-\sum_{i=1}^{n}\sum_{j=1}^{m}p(x_i,y_i)logp(x_i,y_i)$
注意點:1、熵只依賴於隨機變量的分布,與隨機變量取值無關,所以也可以將 $X$ 的熵記作 $H(p)$。2、令0log0=0(因為某個取值概率可能為0)。
那么這些定義有着什么樣的性質呢?考慮一個隨機變量 $x$。這個隨機變量有4種可能的狀態,每個狀態都是等可能的。為了把 $x$ 的值傳給接收者,我們需要傳輸2比特的消息。$H(X)=-4\times\dfrac{1}{4}log_2\dfrac{1}{4}=2\ bits$
現在考慮一個具有4種可能的狀態 $\left\{a,b,c,d\right\}$ 的隨機變量,每個狀態各自的概率為 $\left( \displaystyle\frac{1}{2},\frac{1}{4},\frac{1}{8},\frac{1}{8} \right)$
這種情形下的熵為:
$H(X)=-\displaystyle\frac{1}{2}log_2\frac{1}{2}-\frac{1}{4}log_2\frac{1}{4}-\frac{1}{8}log_2\frac{1}{8}-\frac{1}{8}log_2\frac{1}{8}=1.75\ bits$
我們可以看到,非均勻分布比均勻分布的熵要小。現在讓我們考慮如何把變量狀態的類別傳遞給接收者。與之前一樣,我們可以使用一個2比特的數字來完成這件事情。然而,我們可以利用非均勻分布這個特點,使用更短的編碼來描述更可能的事件,使用更長的編碼來描述不太可能的事件。我們希望這樣做能夠得到一個更短的平均編碼長度。我們可以使用下面的編碼串(哈夫曼編碼):0、10、110、111來表示狀態 $\left\{a,b,c,d\right\}$。傳輸的編碼的平均長度就是:
average code length = $\displaystyle\frac{1}{2}\times1+\frac{1}{4}\times2+2\times\frac{1}{8}\times3=1.75\ bits$
這個值與上方的隨機變量的熵相等。熵和最短編碼長度的這種關系是一種普遍的情形。Shannon 編碼定理https://baike.baidu.com/item/Shannon%20%E7%BC%96%E7%A0%81%E5%AE%9A%E7%90%86/15585931?fr=aladdin 表明熵是傳輸一個隨機變量狀態值所需的比特位下界(最短平均編碼長度)。因此,信息熵可以應用在數據壓縮方面。這里這篇文章http://www.ruanyifeng.com/blog/2014/09/information-entropy.html講的很詳細了,我就不贅述了。
證明$0\le H(X)\le logn$
利用拉格朗日乘子法證明:
因為 $p(1)+p(2)+\dots+p(n)=1$
所以有
目標函數:$f(p(1),p(2),\dots,p(n))=-(p(1)logp(1)+p(2)logp(2)+\dots+p(n)logp(n))$
約束條件:$g(p(1),p(2),\dots,p(n),\lambda)=p(1)+p(2)+\dots+p(n)-1=0$
1、定義拉格朗日函數:
$L(p(1),p(2),\dots,p(n),\lambda)=-(p(1)logp(1)+p(2)logp(2)+\dots+p(n)logp(n))+\lambda(p(1)+p(2)+\dots+p(n)-1)$
2、$L(p(1),p(2),\dots,p(n),\lambda)$分別對 $p(1),p(2),p(n),\lambda$ 求偏導數,令偏導數為 $0$:
$\lambda-log(e\cdot p(1))=0$
$\lambda-log(e\cdot p(2))=0$
$\dots\dots$
$\lambda-log(e\cdot p(n))=0$
$p(1)+p(2)+\dots+p(n)-1=0$
3、求出 $p(1),p(2),\dots,p(n)$ 的值:
解方程得,$p(1)=p(2)=\dots=p(n)=\displaystyle\frac{1}{n}$
代入 $f(p(1),p(2),\dots,p(n))$ 中得到目標函數的極值為 $f(\displaystyle\frac{1}{n},\frac{1}{n},\dots,\frac{1}{n})=-(\frac{1}{n}log\frac{1}{n}+\frac{1}{n}log\frac{1}{n}+\dots+\frac{1}{n}log\frac{1}{n})=-log(\frac{1}{n})=logn$
由此可證 $logn$ 為最大值。
2、條件熵 (Conditional entropy)
條件熵 $H(Y|X)$ 表示在已知隨機變量 $X$ 的條件下隨機變量 $Y$ 的不確定性。條件熵 $H(Y|X)$ 定義為 $X$ 給定條件下 $Y$ 的條件概率分布的熵對 $X$ 的數學期望:

條件熵 $H(Y|X)$ 相當於聯合熵 $H(X,Y)$ 減去單獨的熵 $H(X)$,即
$H(Y|X)=H(X,Y)-H(X)$,證明如下:

舉個例子,比如環境溫度是低還是高,和我穿短袖還是外套這兩個事件可以組成聯合概率分布 $H(X,Y)$,因為兩個事件加起來的信息量肯定是大於單一事件的信息量的。假設 $H(X)$ 對應着今天環境溫度的信息量,由於今天環境溫度和今天我穿什么衣服這兩個事件並不是獨立分布的,所以在已知今天環境溫度的情況下,我穿什么衣服的信息量或者說不確定性是被減少了。當已知 $H(X)$ 這個信息量的時候,$H(X,Y)$ 剩下的信息量就是條件熵:
$H(Y|X) =H(X,Y)-H(X)$
因此,可以這樣理解,描述 $X$ 和 $Y$ 所需的信息是描述 $X$ 自己所需的信息,加上給定 $X$ 的條件下具體化 $Y$ 所需的額外信息。關於條件熵的例子可以看這篇文章,講得很詳細。https://zhuanlan.zhihu.com/p/26551798
3、相對熵 (Relative entropy),也稱KL散度 (Kullback–Leibler divergence)
設 $p(x)$、$q(x)$ 是 離散隨機變量 $X$ 中取值的兩個概率分布,則 $p$ 對 $q$ 的相對熵是:
$D_{KL}(p||q)=\displaystyle\sum_{x}p(x)log\frac{p(x)}{q(x)}=E_{p(x)}log\frac{p(x)}{q(x)}$
性質:
1、如果 $p(x)$ 和 $q(x)$ 兩個分布相同,那么相對熵等於0
2、$D_{KL}(p||q)\not=D_{KL}(q||p)$ ,相對熵具有不對稱性。大家可以舉個簡單例子算一下。
3、$D_{KL}(p||q)\geq0$ 證明如下(利用Jensen不等式https://en.wikipedia.org/wiki/Jensen%27s_inequality):

因為:
$\displaystyle\sum_{x}p(x)=1$
所以:
$D_{KL}(p||q)\geq0$
總結:相對熵可以用來衡量兩個概率分布之間的差異,上面公式的意義就是求 $p$ 與 $q$ 之間的對數差在 $p$ 上的期望值。
4、交叉熵 (Cross entropy)
現在有關於樣本集的兩個概率分布 $p(x)$ 和 $q(x)$,其中 $p(x)$ 為真實分布, $q(x)$ 非真實分布。如果用真實分布 $p(x)$ 來衡量識別別一個樣本所需要編碼長度的期望(平均編碼長度)為:
$H(p) =\displaystyle\sum_{x}p(x)log\frac{1}{p(x)}$
如果使用非真實分布 $q(x)$ 來表示來自真實分布 $p(x)$ 的平均編碼長度,則是:
$H(p,q)=\displaystyle\sum _{x}p(x)log\frac{1}{q(x)}$。(因為用 $q(x)$ 來編碼的樣本來自於分布 $q(x)$ ,所以 $H(p,q)$ 中的概率是 $p(x)$)。此時就將 $H(p,q)$ 稱之為交叉熵。舉個例子。考慮一個隨機變量 $x$,真實分布$p(x)= \left( \displaystyle\frac{1}{2},\frac{1}{4},\frac{1}{8},\frac{1}{8} \right)$,非真實分布 $q(x)=\left( \displaystyle\frac{1}{4},\frac{1}{4},\frac{1}{4},\frac{1}{4} \right)$, 則$H(p)=1.75\ bits$(最短平均碼長),交叉熵 $H(p,q)=\displaystyle\frac{1}{2}log_24+\frac{1}{4}log_24+\frac{1}{8}log_24+\frac{1}{8}log_24=2\ bits$。由此可以看出根據非真實分布 $q(x)$ 得到的平均碼長大於根據真實分布 $p(x)$ 得到的平均碼長。
我們再化簡一下相對熵的公式。$D_{KL}(p||q)=\displaystyle\sum_{x}p(x)log\frac{p(x)}{q(x)}=\sum_{x}p(x)logp(x)-p(x)logq(x)$
有沒有發現什么?
熵的公式 $H(p)=-\displaystyle\sum_{x}p(x)logp(x)$
交叉熵的公式 $H(p,q)=\displaystyle\sum _{x}p(x)log\frac{1}{q(x)}=-\sum _{x}p(x)logq(x)$
所以有:
$D_{KL}(p||q)=H(p,q)-H(p)$(當用非真實分布 $q(x)$ 得到的平均碼長比真實分布 $p(x)$ 得到的平均碼長多出的比特數就是相對熵)
又因為 $D_{KL}(p||q)\geq0$
所以 $H(p,q)\geq H(p)$(當 $p(x)=q(x)$ 時取等號,此時交叉熵等於信息熵)
並且當 $H(p)$ 為常量時(注:在機器學習中,訓練數據分布是固定的),最小化相對熵 $D_{KL}(p||q)$ 等價於最小化交叉熵 $H(p,q)$ 也等價於最大化似然估計(具體參考Deep Learning 5.5)。
在機器學習中,我們希望在訓練數據上模型學到的分布 $P(model)$ 和真實數據的分布 $P(real)$ 越接近越好,所以我們可以使其相對熵最小。但是我們沒有真實數據的分布,所以只能希望模型學到的分布 $P(model)$ 和訓練數據的分布 $P(train)$ 盡量相同。假設訓練數據是從總體中獨立同分布采樣的,那么我們可以通過最小化訓練數據的經驗誤差來降低模型的泛化誤差。即:
- 希望學到的模型的分布和真實分布一致,$P(model)\simeq P(real)$
- 但是真實分布不可知,假設訓練數據是從真實數據中獨立同分布采樣的,$P(train)\simeq P(real)$
- 因此,我們希望學到的模型分布至少和訓練數據的分布一致,$P(train)\simeq P(model)$
根據之前的描述,最小化訓練數據上的分布 $P(train)$ 與最小化模型分布 $P(model)$ 的差異等價於最小化相對熵,即 $D_{KL}(P(train)||P(model))$。此時, $P(train)$ 就是$D_{KL}(p||q)$ 中的 $p$,即真實分布,$P(model)$ 就是 $q$。又因為訓練數據的分布 $p$ 是給定的,所以求 $D_{KL}(p||q)$ 等價於求 $H(p,q)$。得證,交叉熵可以用來計算學習模型分布與訓練分布之間的差異。交叉熵廣泛用於邏輯回歸的Sigmoid和Softmax函數中作為損失函數使用。這篇文章先不說了。
5、總結
- 信息熵是衡量隨機變量分布的混亂程度,是隨機分布各事件發生的信息量的期望值,隨機變量的取值個數越多,狀態數也就越多,信息熵就越大,混亂程度就越大。當隨機分布為均勻分布時,熵最大;信息熵推廣到多維領域,則可得到聯合信息熵;條件熵表示的是在 $X$ 給定條件下,$Y$ 的條件概率分布的熵對 $X$的期望。
- 相對熵可以用來衡量兩個概率分布之間的差異。
- 交叉熵可以來衡量在給定的真實分布下,使用非真實分布所指定的策略消除系統的不確定性所需要付出的努力的大小。
或者:
- 信息熵是傳輸一個隨機變量狀態值所需的比特位下界(最短平均編碼長度)。
- 相對熵是指用 $q$ 來表示分布 $p$ 額外需要的編碼長度。
- 交叉熵是指用分布 $q$ 來表示本來表示分布 $p$ 的平均編碼長度。
6、參考
1、吳軍《數學之美》
2、李航《統計學習方法》
3、馬春鵬《模式識別與機器學習》
3、https://www.zhihu.com/question/41252833 如何通俗的解釋交叉熵與相對熵
4、https://www.zhihu.com/question/65288314/answer/244557337為什么交叉熵(cross-entropy)可以用於計算代價?
5、https://baike.baidu.com/item/%E4%BA%A4%E5%8F%89%E7%86%B5/8983241?fr=aladdin 交叉熵的百度百科解釋
6、https://blog.csdn.net/saltriver/article/details/53056816信息熵到底是什么
7、后記
本人不是大神,大牛。目前寫博客是為了讓我自己更深刻地記憶學過的知識和對知識進行梳理。這篇博客是我的第一篇,其中借鑒了不少其他博主的博客里的分享,都有標注來源,如有遺忘,勞煩提醒,衷心感謝他們對自己所掌握的知識的分享。這篇博客可能還存在着一些錯誤,如有發現,請求斧正,謝謝。
