從香農熵到手推KL散度

 

信息論與信息熵是 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。url

 

咱們也能夠計算連續隨機變量的自信息。圖 2 展現了三種不一樣的機率密度函數及其對應的信息函數。圖 2(A)所示的 Dirac delta 對應着很強的誤差,老是同一面朝上的偏畸硬幣對應着零熵。全部 p(x)= 0 的地方都對應着無限高的信息量。然而,因爲這些零機率的事件永遠不會發生,因此這只是一個假設。圖 2(B)中的高斯機率密度函數就是對那種常常同一面朝上,但不老是同一面朝上的狀況的模擬。最後,圖 2(C)描述的是一個均勻分佈機率密度函數,它對應着均勻的信息量,和咱們沒有偏畸的硬幣是相似的。spa

 

圖 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 個樣本的交叉熵均值,

 

結語

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

 

原文連接:https://medium.com/swlh/shannon-entropy-in-the-context-of-machine-learning-and-ai-24aee2709e32

相關文章
相關標籤/搜索