從香農熵到手推KL散度:縱覽機器學習中的資訊理論

選自Medium

作者:Frank Preiswerk

機器之心編譯

參與:Nurhachu Null、蔣思源

資訊理論與信息熵是 AI 或機器學習中非常重要的概念,我們經常需要使用它的關鍵思想來描述概率分布或者量化概率分布之間的相似性。在本文中,我們從最基本的自信息和信息熵到交叉熵討論了資訊理論的基礎,再由最大似然估計推導出 KL 散度而加強我們對量化分布間相似性的理解。最後我們簡要討論了信息熵在機器學習中的應用,包括通過互信息選擇決策樹的特徵、通過交叉熵衡量分類問題的損失和貝葉斯學習等。

資訊理論是應用數學的一個分支,主要研究的是對一個信號包含信息的多少進行量化。它最初被發明是用來研究在一個含有雜訊的信道上用離散的字母表來發送消息,例如通過無線電傳輸來通信。而本文主要探討信息熵在 AI 或機器學習中的應用,一般在機器學習中,我們可以將資訊理論應用在連續型變數上,並使用資訊理論的一些關鍵思想來描述概率分布或者量化概率分布之間的相似性。

因此在機器學習中,通常要把與隨機事件相關信息的期望值進行量化,此外還要量化不同概率分布之間的相似性。在這兩種情況下,香農熵都被用來衡量概率分布中的信息內容。香農熵是以資訊理論之父 Claude Shannon 的名字命名的,也稱為信息熵或微分熵(連續)。

自信息

香農熵的基本概念就是所謂的一個事件背後的自信息(self-information),有時候也叫做不確定性。自信息的直覺解釋如下,當某個事件(隨機變數)的一個不可能的結果出現時,我們就認為它提供了大量的信息。相反地,當觀察到一個經常出現的結果時,我們就認為它具有或提供少量的信息。將自信息與一個事件的意外性聯繫起來是很有幫助的。例如,一個極其偏畸的硬幣,每一次拋擲總是正面朝上。任何一次硬幣拋擲的結果都是可以完全預測的,這樣的話我們就永遠不會對某次結果感到驚奇,也就意味著我們從這個實驗中得到的信息是 0。換言之,它的自信息是 0。如果硬幣的偏畸程度稍微小一些,這樣的話,儘管看到正面朝上的概率超過了 50%,每次拋擲還會有一些信息。因此,它的自信息大於 0。如果硬幣的偏畸程度是導致反面朝上的結果,我們得到的自信息還是 0。在使用一個沒有偏畸的硬幣做實驗時,每次拋擲得到正面朝上和反面朝上的概率都是 50%,我們會得到最大的意外性,因為在這種情況下硬幣拋擲的結果的可預測性是最小的。我們也可以說,均勻分布的熵最大,確定事件的熵最小。

基於以上的非正式需求,我們可以找到一個合適的函數來描述自信息。對於一個可能取值為 x_1,x_2,...,x_n 的離散隨機變數 X,它的概率質量函數 P(X),以及任何正的取值在 0 到 1 之間的單調遞減函數 I(p_i) 都可以作為信息的度量。此外,還有另外一個關鍵的屬性就是獨立事件的可加性;兩次連續硬幣拋擲的信息應該是一次單獨拋擲的 2 倍。這對獨立變數而言是有意義的,因為在這種情況下意外性或者不可預測性會增大為之前的兩倍。形式上,對於獨立事件 x_i 和 x_j 而言,我們需要 I(p_i * p_j) = I(p_i) + I(p_j)。滿足所有這些要求的函數就是負對數,因此我們可以使用負對數表示自信息:

圖 1 所示是自信息 I(p)。

圖 1:函數 I(p) 的自信息。小概率對應著較高的自信息,反之亦然。

我們繼續回到簡單的硬幣拋擲實驗中。在資訊理論中,1bit(也叫做 Shannon)信息代表一次單獨硬幣拋擲的兩種可能結果。相似地,對於兩次連續拋擲而言,就需要 4 bit 來描述 4 中可能的結果。通常,用 log_2(n)(2 的對數)bit 來描述 n 個連續的獨立隨機事件的結果,或者是自信息。下面我們來驗證一下一次連續三次的實驗中自信息的計算:總共有 2^3=8 種可能的結果,每種結果的概率都是 0.5^3=0.125。所以,這次實驗的自信息就是 I(0.125)= -log_2(0.125) = 3。我們需要 3bit 來描述這些所有可能的結果,那麼,任何一次連續三次的硬幣拋擲的自信息等於 3.0。

我們也可以計算連續隨機變數的自信息。圖 2 展示了三種不同的概率密度函數及其對應的信息函數。圖 2(A)所示的 Dirac delta 對應著很強的偏差,總是同一面朝上的偏畸硬幣對應著零熵。所有 p(x)= 0 的地方都對應著無限高的信息量。然而,由於這些零概率的事件永遠不會發生,所以這只是一個假設。圖 2(B)中的高斯概率密度函數就是對那種經常同一面朝上,但不總是同一面朝上的情況的模擬。最後,圖 2(C)描述的是一個均勻分布概率密度函數,它對應著均勻的信息量,和我們沒有偏畸的硬幣是類似的。

圖 2. [-3,3] 上的三種不同的概率密度函數及其自信息 I(p)。(A)Dirac δ函數(完全確定);(B)μ = 0,σ = 0.5 的高斯分布;(C)均勻分布

到目前為止我們只討論了自信息。在正常的硬幣實驗中,自信息實際上都等於香農熵,因為所有的結果都是等概率出現的。通常,香農熵是 X 的所有可能結果的自信息期望值:

其中 b 是對數的底數。上面我們使用的是 b=2,其他常見的選擇還有 b=10,以及 e。其實這個影響不大,因為不同底數的對數之間存在一個常數的關係。我們這裡仍然假設底數為 2,所以我們將省略下面公式中的 b。

如果仔細注意的話,你可能會疑惑,當 p(x_i) = 0 的時候會發生什麼,因為這種情況下我們必須計算 0 · log(0)。事實上,我們需要計算的是一個極限:lim_(p→0) p*log(p(x_i))=0。使用洛必達法則或泰勒展開式求解的過程讀者可以查閱書籍自行完成。

當香農熵泛化到連續域的時候,通常它指的是一種微分熵,對於連續的隨機變數 x 及其概率密度函數 p(x),它的香農熵定義如下:

我們上述三個分布的熵分別是 0(狄拉克δ分布),174(高斯分布)以及 431(均勻分布)。在我們的實驗中出現的模式是:越寬廣的分布對應著越高的信息熵。仔細觀察圖 2(B)和圖 2(C)有助於你的理解。儘管高斯分布中 I(p)曲線下面的面積要遠大於均勻分布,然而它的信息熵要遠小於均勻分布,因為信息熵 I(P)是按照概率密度 p 加權的,在高斯分布的兩側,p 接近於 0。更廣的概率密度對應著更大的信息熵,有一個很好的比喻幫助記住這個:想像某種氣體充滿了一個儲罐。從物理學中我們可以知道,一個封閉系統中的熵會隨著時間增加,而且從來不會減少。在我們從儲罐的另一側注入氣體之後,氣體粒子的分布會收斂於一個均勻值。低熵意味著高密度的氣體粒子聚集在某個特定的區域,而這是永遠不會自發發生的。很多氣體粒子聚集在某個小面積區域對應的還早呢故事我們的高斯概率密度函數,在狄拉克δ分布中是一個極端粒例子,所有的氣體都被壓縮在一個無限小的區域。

交叉熵

交叉熵是一個用來比較兩個概率分布 p 和 q 的數學工具。它和熵是類似的,我們計算 log(q) 在概率 p 下的期望,而不是反過來:

在資訊理論中,這個量指的是:如果用「錯誤」的編碼方式 q(而不是 p)去編碼服從 q 分布的事件,我們所需要的 bit 數。在機器學習中,這是一個衡量概率分布相似性的有用工具,而且經常作為一個損失函數。因為交叉熵等於 KL 散度加上一項信息熵,即 D_KL(p||q) = H(p, q) - H(p)。而當我們針對 Q 最小化交叉熵時,H(p) 為常量,因此它能夠被省略。交叉熵在這種情況下也就等價於 KL 散度,因為 KL 散度可以簡單地從最大似然估計推導出來,因此下文詳細地以 GAN 為例利用 MLE 推導 KL 散度的表達式。

KL 散度

與交叉熵緊密相關,KL 散度是另一個在機器學習中用來衡量相似度的量:從 q 到 p 的 KL 散度如下:D_KL(p||q)。在貝葉斯推理中,DKL(p||q) 衡量當你修改了從先驗分布 q 到後驗分布 p 的信念之後帶來的信息增益,或者換句話說,就是用後驗分布 q 來近似先驗分布 p 的時候造成的信息損失。例如,在訓練一個變分自編碼器的隱藏空間表徵時就使用了 KL 散度。KL 散度可以用熵和交叉熵表示:

交叉熵衡量的是用編碼方案 q 對服從 p 的事件進行編碼時所需 bit 數的平均值,而 KL 散度給出的是使用編碼方案 q 而不是最優編碼方案 p 時帶來的額外 bit 數。從這裡我們可以看到,在機器學習中,p 是固定的,交叉熵和 KL 散度之間只相差一個常數可加項,所以從優化的目標來考慮,二者是等價的。而從理論角度而言,考慮 KL 散度仍然是有意義的,KL 散度的一個屬性就是,當 p 和 q 相等的時候,它的值為 0。

KL 散度有很多有用的性質,最重要的是它是非負的。KL 散度為 0 當且僅當 P 和 Q 在離散型變數的情況下是相同的分布,或者在連續型變數的情況下是 『幾乎 處處』 相同的。因為 KL 散度是非負的並且衡量的是兩個分布之間的差異,它經常 被用作分布之間的某種距離。然而,它並不是真的距離因為它不是對稱的:對於某 些 P 和 Q,D_KL(P||Q) 不等於 D_KL(Q||P)。這種非對稱性意味著選擇 D_KL(P||Q) 還是 D_KL(Q||P) 影響很大。

在李弘毅的講解中,KL 散度可以從極大似然估計中推導而出。若給定一個樣本數據的分布 P_data(x) 和生成的數據分布 P_G(x;θ),那麼 GAN 希望能找到一組參數θ使分布 P_g(x;θ) 和 P_data(x) 之間的距離最短,也就是找到一組生成器參數而使得生成器能生成十分逼真的圖片。

現在我們可以從訓練集抽取一組真實圖片來訓練 P_G(x;θ) 分布中的參數θ使其能逼近於真實分布。因此,現在從 P_data(x) 中抽取 m 個真實樣本 {??^1,??^2,…,??^??},其中符號「^」代表上標,即 x 中的第 i 個樣本。對於每一個真實樣本,我們可以計算 P_G(x^i;θ),即在由θ確定的生成分布中,x^i 樣本所出現的概率。因此,我們就可以構建似然函數:

其中「∏」代表累乘、P_G(x^i;θ) 代表第 i 個樣本在生成分布出現的概率。從該似然函數可知,我們抽取的 m 個真實樣本在 P_G(x;θ) 分布中全部出現的概率值可以表達為 L。又因為若 P_G(x;θ) 分布和 P_data(x) 分布相似,那麼真實數據很可能就會出現在 P_G(x;θ) 分布中,因此 m 個樣本都出現在 P_G(x;θ) 分布中的概率就會十分大。

下面我們就可以最大化似然函數 L 而求得離真實分布最近的生成分布(即最優的參數θ):

在上面的推導中,我們希望最大化似然函數 L。若對似然函數取對數,那麼累乘 ∏ 就能轉化為累加 ∑,並且這一過程並不會改變最優化的結果。因此我們可以將極大似然估計化為求令 log[P_G(x;θ)] 期望最大化的θ,而期望 E[logP_G(x;θ)] 可以展開為在 x 上的積分形式:∫P_data(x)logP_G(x;θ)dx。又因為該最優化過程是針對θ的,所以我們添加一項不含θ的積分並不影響最優化效果,即可添加 -∫P_data(x)logP_data(x)dx。添加該積分後,我們可以合併這兩個積分並構建類似 KL 散度的形式。該過程如下:

這一個積分就是 KL 散度的積分形式,因此,如果我們需要求令生成分布 P_G(x;θ) 儘可能靠近真實分布 P_data(x) 的參數θ,那麼我們只需要求令 KL 散度最小的參數θ。此外,我們可以將 KL 散度的積分形式轉換為我們熟悉的 KL 散度表達式:

在離散型變數的情況下,KL 散度衡量的是,當我們使用一種被設計成能夠使得概率分布 Q 產生的消息的長度最小的編碼,發送包含由概率分布 P 產生的符號消息時,所需要的額外信息量。

在機器學習中的使用

你或許疑問,這裡的熵和機器學習是如何相關的。下面我們看一下一些具體的領域。

貝葉斯學習

首先,上面描述的高斯分布的例子是很重要的,因為在機器學習應用中,高斯分布是一個很常見的建模選擇。機器學習的目標就是減少熵。我們希望做一些預測,而且我們必須對自己的預測比較確定。而熵正好可以用來衡量這個置信度。在貝葉斯學習中,經常假設一個先驗分布具有較寬廣的概率密度函數,這反映了隨機變數在觀測之前的不確定性。當數據來了以後,熵會減小,並且讓後驗分布在最可能的參數值周圍形成峰值。

決策樹學習

在決策樹的學習演算法中,一般包含了特徵選擇、決策樹的生成與決策樹的剪枝過程。決策樹的特徵選擇在於選取對訓練數據有分類能力的特徵,而通常特徵選擇的準則是信息增益或信息增益比。

在李航的統計學習方法中,一般熵 H(Y) 與條件熵 H(Y|X) 之差可以稱為互信息(Mutual Information),決策樹學習中的信息增益等價於訓練數據中類與特徵的互信息。若給定訓練數據集 D 和特徵 A,經驗熵 H(D) 表示對數據集 D 進行分類的不確定性。而經驗條件熵 H(D|A) 表示在特徵 A 給定的條件下對數據集 D 進行分類的不確定性。那麼它們的差,即信息增益,就表示由於特徵 A 而使得對數據集 D 的分類的不確定性減少的程度。顯然,對於數據集 D 而言,信息增益依賴於特徵,不同的特徵往往具有不同的信息增益。信息增益大的特徵具有更強的分類能力。

根據信息增益準則的特徵選擇方法是:對訓練數據集(或子集)D,計算其每個特徵的信息增益,並比較它們的大小,選擇信息增益最大的特徵。

因此在決策樹學習中,熵被用來構建樹。通過將數據集 S 根據可能的「最佳」屬性分成一些子數據集,從根節點開始構建決策樹,「最佳」屬性也就是能夠將得到的子數據集的熵最小化的屬性。這個過程被遞歸地重複,直到沒有更多的屬性來分割。此過程被稱為 ID3 演算法,由此可見 ID3 演算法的核心是在決策樹各個結點上應用信息增益準則選擇特徵,遞歸地構建決策樹。

分類

不管是在二分類問題還是多分類問題中,交叉熵是 logistic 回歸和神經網路中的標準損失函數。通常,p 是真實分布,q 是模型描述的分布。讓我們來看一個二分類 logistic 回歸中的一個例子。兩個類別的標籤分別是 0 和 1,logistic 模型給每一個輸入賦予以下概率:q_(y=1) =y_hat,q_(y=0) = 1- y_hat。這個可以簡寫為 q ∈ {y_hat, 1 ? y_hat}。儘管真實標籤是精確的 0 和 1,但是這裡還是寫成 p ∈ {y, 1 ? y},因此不要被這個表達方式搞混。在這個標記下,每個樣本的真實值和估計分布之間的交叉熵如下:

當它被作為一個損失函數使用的時候,我們用的是 N 個樣本的交叉熵均值,

結語

以上基本上來說就是機器學習中所涉及的資訊理論基礎,雖然我們並不怎麼使用資訊理論中關於消息長度的解釋,但機器學習主要使用用資訊理論的一些關鍵思想來描述概率分布或者量化概率分布之間的相似性。資訊理論是我們構建損失函數隨必須要考慮的,而且它的對數形式很容易與輸出單元一般採用的指數形式相結合而提高學習的效率。此外,現代深度網路的成功與最大似然估計的流行,很大程度是因為有像信息熵那樣對數形式的損失函數而取得極大的提升。

原文鏈接:medium.com/swlh/shannon

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

推薦閱讀:

TAG:机器学习 | 信息论 | 人工智能 |