詳解機器學習中的熵、條件熵、相對熵、交叉熵

一 信息熵 (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) 的對數有關 (因為對數的運算法則是 loga(mn)=logam+logan因此,我們有I(x)=−logp(x)。其中負號是用來保證信息量是正數或者零而 log函數基的選擇是任意的(信息論中基常常選擇為2,因此信息的單位為比特bits;而機器學習中基常常選擇為自然常數,因此單位常常被稱為奈特nats)。I(x)也被稱為隨機變量 x的

自信息 (self-information),描述的是隨機變量的某個事件發生所帶來的信息量。圖像如圖:

詳解機器學習中的熵、條件熵、相對熵、交叉熵


最後,我們正式引出信息熵。 現在假設一個發送者想傳送一個隨機變量的值給接收者。那麼在這個過程中,他們傳輸的平均信息量可以通過求 I(x)=−logp(x)關於概率分佈 p(x) 的期望得到,即:


詳解機器學習中的熵、條件熵、相對熵、交叉熵


H(X) 就被稱為隨機變量 x的,它是表示隨機變量不確定的度量,是對所有可能發生的事件產生的信息量的期望。從公式可得,隨機變量的取值個數越多,狀態數也就越多,信息熵就越大,混亂程度就越大。當隨機分佈為均勻分佈時,熵最大,且 0≤H(X)≤logn。稍後證明。將一維隨機變量分佈推廣到多維隨機變量分佈,則其聯合熵 (Joint entropy) 為:


詳解機器學習中的熵、條件熵、相對熵、交叉熵


(注意:熵只依賴於隨機變量的分佈,與隨機變量取值無關,所以也可以將 X的熵記作 H(p);令0log0=0(因為某個取值概率可能為0))

那麼這些定義有著什麼樣的性質呢?考慮一個隨機變量 x。這個隨機變量有4種可能的狀態,每個狀態都是等可能的。為了把 x 的值傳給接收者,我們需要傳輸2比特的消息。H(X)=−4×(1/4)log2(1/4)=2 bits。現在考慮一個具有4種可能的狀態 {a,b,c,d} 的隨機變量,每個狀態各自的概率為 (1/2,1/4,1/8,1/8)。這種情形下的熵為:


詳解機器學習中的熵、條件熵、相對熵、交叉熵


我們可以看到,非均勻分佈比均勻分佈的熵要小。現在讓我們考慮如何把變量狀態的類別傳遞給接收者。與之前一樣,我們可以使用一個2比特的數字來完成這件事情。然而,我們可以利用非均勻分佈這個特點,使用更短的編碼來描述更可能的事件,使用更長的編碼來描述不太可能的事件。我們希望這樣做能夠得到一個更短的平均編碼長度。我們可以使用下面的編碼串(哈夫曼編碼):0、10、110、111來表示狀態 {a,b,c,d}。傳輸的編碼的平均長度就是:


詳解機器學習中的熵、條件熵、相對熵、交叉熵


這個值與上方的隨機變量的熵相等。熵和最短編碼長度的這種關係是一種普遍的情形。Shannon 編碼定理表明熵是傳輸一個隨機變量狀態值所需的比特位下界(最短平均編碼長度)。因此,信息熵可以應用在數據壓縮方面。可參考這篇文章講的很詳細了,我就不贅述了。(http://www.ruanyifeng.com/blog/2014/09/information-entropy.html)

證明0≤H(X)≤logn利用拉格朗日乘子法證明:因為 p(1)+p(2)+⋯+p(n)=1所以有:目標函數:f(p(1),p(2),…,p(n))=−(p(1)logp(1)+p(2)logp(2)+⋯+p(n)logp(n))約束條件:g(p(1),p(2),…,p(n),λ)=p(1)+p(2)+⋯+p(n)−1=01) 定義拉格朗日函數:L(p(1),p(2),…,p(n),λ)=−(p(1)logp(1)+p(2)logp(2)+⋯+p(n)logp(n))+λ(p(1)+p(2)+⋯+p(n)−1)
2) L(p(1),p(2),…,p(n),λ)分別對 p(1),p(2),p(n),λ求偏導數,令偏導數為 0:λ−log(e⋅p(1))=0λ−log(e⋅p(2))=0…………λ−log(e⋅p(n))=0p(1)+p(2)+⋯+p(n)−1=03) 求出 p(1),p(2),…,p(n)值:解方程得,p(1)=p(2)=⋯=p(n)=1/n代入 f(p(1),p(2),…,p(n)) 中得到目標函數的極值為:
詳解機器學習中的熵、條件熵、相對熵、交叉熵

由此可證 logn為最大值。

二 條件熵 (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)

三 相對熵 (Relative entropy),也稱KL散度 (Kullback–Leibler divergence)

設 p(x)、q(x) 是 離散隨機變量 X 中取值的兩個概率分佈,則 p 對 q 的相對熵是:


詳解機器學習中的熵、條件熵、相對熵、交叉熵


性質:

  • 如果 p(x) 和 q(x) 兩個分佈相同,那麼相對熵等於0
  • DKL(p||q)≠DKL(q||p),相對熵具有不對稱性。大家可以舉個簡單例子算一下。
  • DKL(p||q)≥0證明如下:(用Jensen不等式https://en.wikipedia.org/wiki/Jensen%27s_inequality)


詳解機器學習中的熵、條件熵、相對熵、交叉熵


因為:


詳解機器學習中的熵、條件熵、相對熵、交叉熵


所以:

DKL(p||q)≥0

總結:相對熵可以用來衡量兩個概率分佈之間的差異,上面公式的意義就是求 p 與 q 之間的對數差在 p 上的期望值。

四 交叉熵 (Cross entropy)

現在有關於樣本集的兩個概率分佈 p(x) 和 q(x),其中 p(x) 為真實分佈, q(x)非真實分佈。如果用真實分佈 p(x) 來衡量識別一個樣本所需要編碼長度的期望(平均編碼長度)為:


詳解機器學習中的熵、條件熵、相對熵、交叉熵


如果使用非真實分佈 q(x) 來表示來自真實分佈 p(x) 的平均編碼長度,則是:


詳解機器學習中的熵、條件熵、相對熵、交叉熵


(因為用 q(x) 來編碼的樣本來自於分佈 q(x) ,所以 H(p,q) 中的概率是 p(x))。此時就將 H(p,q) 稱之為交叉熵。舉個例子。考慮一個隨機變量 x,真實分佈p(x)=(1/2,1/4,1/8,1/8),非真實分佈 q(x)=(1/4,1/4,1/4,1/4), 則H(p)=1.75 bits(最短平均碼長),交叉熵:

詳解機器學習中的熵、條件熵、相對熵、交叉熵


由此可以看出根據非真實分佈 q(x) 得到的平均碼長大於根據真實分佈 p(x) 得到的平均碼長。

我們再化簡一下相對熵的公式。


詳解機器學習中的熵、條件熵、相對熵、交叉熵


有沒有發現什麼?

熵的公式:

詳解機器學習中的熵、條件熵、相對熵、交叉熵


交叉熵的公式:


詳解機器學習中的熵、條件熵、相對熵、交叉熵


所以有:DKL(p||q)=H(p,q)−H(p)(當用非真實分佈 q(x) 得到的平均碼長比真實分佈 p(x) 得到的平均碼長多出的比特數就是相對熵)

又因為 DKL(p||q)≥0所以 H(p,q)≥H(p)(當 p(x)=q(x) 時取等號,此時交叉熵等於信息熵)並且當 H(p) 為

常量時(注:在機器學習中,訓練數據分佈是固定的最小化相對熵 DKL(p||q) 等價於最小化交叉熵 H(p,q) 也等價於最大化似然估計(具體參考Deep Learning 5.5)。在機器學習中,我們希望訓練數據上模型學到的分佈 P(model) 和真實數據的分佈 P(real) 越接近越好所以我們可以使其相對熵最小。但是我們沒有真實數據的分佈,所以只能希望模型學到的分佈 P(model) 和訓練數據的分佈 P(train) 儘量相同。假設訓練數據是從總體中獨立同分布採樣的,那麼我們可以通過最小化訓練數據的經驗誤差來降低模型的泛化誤差。即:

  • 希望學到的模型的分佈和真實分佈一致,P(model)≃P(real)
  • 但是真實分佈不可知,假設訓練數據是從真實數據中獨立同分布採樣的P(train)≃P(real)
  • 因此,我們希望學到的模型分佈至少和訓練數據的分佈一致,P(train)≃P(model)

根據之前的描述,最小化訓練數據上的分佈 P(train)與最小化模型分佈 P(model) 的差異等價於最小化相對熵,即 DKL(P(train)||P(model))。此時, P(train)就是DKL(p||q) 中的 p,即真實分佈,P(model)就是 q。又因訓練數據的分佈 p 是給定的,所以求 DKL(p||q) 等價求 H(p,q)。得證,交叉熵可以用來計算學習模型分佈與訓練分佈之間的差異。交叉熵廣泛用於邏輯迴歸的Sigmoid和Softmax函數中作為損失函數使用。這篇文章先不說了。

五 總結

  • 信息熵是衡量隨機變量分佈的混亂程度,是隨機分佈各事件發生的信息量的期望值,隨機變量的取值個數越多,狀態數也就越多,信息熵就越大,混亂程度就越大。當隨機分佈為均勻分佈時,熵最大;信息熵推廣到多維領域,則可得到聯合信息熵;條件熵表示的是在 X 給定條件下,Y 的條件概率分佈的熵對 X的期望。
  • 相對熵可以用來衡量兩個概率分佈之間的差異。
  • 交叉熵可以來衡量在給定的真實分佈下,使用非真實分佈所指定的策略消除系統的不確定性所需要付出的努力的大小。

或者:

  • 信息熵是傳輸一個隨機變量狀態值所需的比特位下界(最短平均編碼長度)。
  • 相對熵是指用 q 來表示分佈 p 額外需要的編碼長度。
  • 交叉熵是指用分佈 q 來表示本來表示分佈 p 的平均編碼長度。

參考:

1) 吳軍《數學之美》

2) 李航《統計學習方法》

3) 馬春鵬《模式識別與機器學習》

4) https://www.zhihu.com/question/41252833 如何通俗的解釋交叉熵與相對熵

5) https://www.zhihu.com/question/65288314/answer/244557337為什麼交叉熵(cross-entropy)可以用於計算代價?

6) https://baike.baidu.com/item/%E4%BA%A4%E5%8F%89%E7%86%B5/8983241?fr=aladdin 交叉熵的百度百科解釋

7) https://blog.csdn.net/saltriver/article/details/53056816信息熵到底是什麼

對深度學習感興趣,熱愛Tensorflow的小夥伴,歡迎關注我們的網站!http://www.panchuang.net 我們的公眾號:磐創AI。


分享到:


相關文章: