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

轉載自 http://www.javashuo.com/article/p-uuszunnd-hq.html

一、信息熵 (information entropy)

 

熵 (entropy) 這一詞最初來源於熱力學。1948年,克勞德·愛爾伍德·香農將熱力學中的熵引入信息論,因此也被稱爲香農熵 (Shannon entropy),信息熵 (information entropy)。本文只討論信息熵。首先,咱們先來理解一下信息這個概念。信息是一個很抽象的概念,百度百科將它定義爲:指音訊、消息、通信系統傳輸和處理的對象,泛指人類社會傳播的一切內容。那信息能夠被量化麼?能夠的!香農提出的「信息熵」概念解決了這一問題。html

 

一條信息的信息量大小和它的不肯定性有直接的關係。咱們須要搞清楚一件很是很是不肯定的事,或者是咱們一無所知的事,就須要瞭解大量的信息。相反,若是咱們對某件事已經有了較多的瞭解,咱們就不須要太多的信息就能把它搞清楚。因此,從這個角度,咱們能夠認爲,信息量的度量就等於不肯定性的多少。好比,有人說廣東下雪了。對於這句話,咱們是十分不肯定的。由於廣東幾十年來下雪的次數寥寥無幾。爲了搞清楚,咱們就要去看天氣預報,新聞,詢問在廣東的朋友,而這就須要大量的信息,信息熵很高。再好比,中國男足進軍2022年卡塔爾世界盃決賽圈。對於這句話,由於肯定性很高,幾乎不須要引入信息,信息熵很低。算法

 

考慮一個離散的隨機變量 xx,由上面兩個例子可知,信息的量度應該依賴於機率分佈 p(x)p(x),所以咱們想要尋找一個函數 I(x)I(x),它是機率 p(x)p(x) 的單調函數,表達了信息的內容。怎麼尋找呢?若是咱們有兩個不相關的事件 xx 和 yy,那麼觀察兩個事件同時發生時得到的信息量應該等於觀察到事件各自發生時得到的信息之和,即:I(x,y)=I(x)+I(y)I(x,y)=I(x)+I(y)。機器學習

由於兩個事件是獨立不相關的,所以 p(x,y)=p(x)p(y)p(x,y)=p(x)p(y)。根據這兩個關係,很容易看出 I(x)I(x)必定與 p(x)p(x) 的對數有關 (由於對數的運算法則是 loga(mn)=logam+loganloga(mn)=logam+logan)。所以,咱們有函數

I(x)=logp(x)I(x)=−logp(x)學習

其中負號是用來保證信息量是正數或者零。而 loglog 函數基的選擇是任意的(信息論中基經常選擇爲2,所以信息的單位爲比特bits;而機器學習中基經常選擇爲天然常數,所以單位經常被稱爲奈特nats)。I(x)I(x) 也被稱爲隨機變量 xx 的自信息 (self-information),描述的是隨機變量的某個事件發生所帶來的信息量。圖像如圖:編碼

 

最後,咱們正式引出信息熵。 如今假設一個發送者想傳送一個隨機變量的值給接收者。那麼在這個過程當中,他們傳輸的平均信息量能夠經過求 I(x)=logp(x)I(x)=−logp(x) 關於機率分佈 p(x)p(x) 的指望獲得,即:atom

H(X)=xp(x)logp(x)=i=1np(xi)logp(xi)H(X)=−∑xp(x)logp(x)=−∑i=1np(xi)logp(xi)spa

H(X)H(X) 就被稱爲隨機變量 xx 的熵,它是表示隨機變量不肯定的度量,是對全部可能發生的事件產生的信息量的指望.net

從公式可得,隨機變量的取值個數越多,狀態數也就越多,信息熵就越大,混亂程度就越大。當隨機分佈爲均勻分佈時,熵最大,且 0H(X)logn0≤H(X)≤logn。稍後證實。將一維隨機變量分佈推廣到多維隨機變量分佈,則其聯合熵 (Joint entropy) 爲:code

H(X,Y)=x,yp(x,y)logp(x,y)=i=1nj=1mp(xi,yi)logp(xi,yi)H(X,Y)=−∑x,yp(x,y)logp(x,y)=−∑i=1n∑j=1mp(xi,yi)logp(xi,yi)

注意點:一、熵只依賴於隨機變量的分佈,與隨機變量取值無關,因此也能夠將 XX 的熵記做 H(p)H(p)。二、令0log0=0(由於某個取值機率可能爲0)。

 

 

那麼這些定義有着什麼樣的性質呢?考慮一個隨機變量 xx。這個隨機變量有4種可能的狀態,每一個狀態都是等可能的。爲了把 xx 的值傳給接收者,咱們須要傳輸2比特的消息。H(X)=4×14log214=2 bitsH(X)=−4×14log214=2 bits

如今考慮一個具備4種可能的狀態 {a,b,c,d}{a,b,c,d} 的隨機變量,每一個狀態各自的機率爲 (12,14,18,18)(12,14,18,18)

這種情形下的熵爲:

H(X)=12log21214log21418log21818log218=1.75 bitsH(X)=−12log212−14log214−18log218−18log218=1.75 bits

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

average code length = 12×1+14×2+2×18×3=1.75 bits12×1+14×2+2×18×3=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講的很詳細了,我就不贅述了。

 

 

證實0H(X)logn0≤H(X)≤logn

利用拉格朗日乘子法證實:

由於 p(1)+p(2)++p(n)=1p(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))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=0g(p(1),p(2),…,p(n),λ)=p(1)+p(2)+⋯+p(n)−1=0

 

  一、定義拉格朗日函數:

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)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)

  二、L(p(1),p(2),,p(n),λ)L(p(1),p(2),…,p(n),λ)分別對 p(1),p(2),p(n),λp(1),p(2),p(n),λ 求偏導數,令偏導數爲 00:

λlog(ep(1))=0λ−log(e⋅p(1))=0

λlog(ep(2))=0λ−log(e⋅p(2))=0

……

λlog(ep(n))=0λ−log(e⋅p(n))=0

p(1)+p(2)++p(n)1=0p(1)+p(2)+⋯+p(n)−1=0

  三、求出 p(1),p(2),,p(n)p(1),p(2),…,p(n) 的值:

解方程得,p(1)=p(2)==p(n)=1np(1)=p(2)=⋯=p(n)=1n

代入 f(p(1),p(2),,p(n))f(p(1),p(2),…,p(n)) 中獲得目標函數的極值爲 f(1n,1n,,1n)=(1nlog1n+1nlog1n++1nlog1n)=log(1n)=lognf(1n,1n,…,1n)=−(1nlog1n+1nlog1n+⋯+1nlog1n)=−log(1n)=logn

由此可證 lognlogn 爲最大值。

 

 二、條件熵 (Conditional entropy)

 

條件熵 H(Y|X)H(Y|X) 表示在已知隨機變量 XX 的條件下隨機變量 YY 的不肯定性。條件熵 H(Y|X)H(Y|X) 定義爲 XX 給定條件下 YY 的條件機率分佈的熵對  XX 的數學指望:


條件熵 H(Y|X)H(Y|X) 至關於聯合熵 H(X,Y)H(X,Y) 減去單獨的熵 H(X)H(X),即

H(Y|X)=H(X,Y)H(X)H(Y|X)=H(X,Y)−H(X),證實以下:

 

舉個例子,好比環境溫度是低仍是高,和我穿短袖仍是外套這兩個事件能夠組成聯合機率分佈 H(X,Y)H(X,Y),由於兩個事件加起來的信息量確定是大於單一事件的信息量的。假設 H(X)H(X) 對應着今天環境溫度的信息量,因爲今天環境溫度和今天我穿什麼衣服這兩個事件並非獨立分佈的,因此在已知今天環境溫度的狀況下,我穿什麼衣服的信息量或者說不肯定性是被減小了。當已知 H(X)H(X) 這個信息量的時候,H(X,Y)H(X,Y) 剩下的信息量就是條件熵:

H(Y|X)=H(X,Y)H(X)H(Y|X)=H(X,Y)−H(X)

所以,能夠這樣理解,描述 XX 和 YY 所需的信息是描述 XX 本身所需的信息,加上給定  XX 的條件下具體化  YY 所需的額外信息。關於條件熵的例子能夠看這篇文章,講得很詳細。https://zhuanlan.zhihu.com/p/26551798

 

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

 

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

DKL(p||q)=xp(x)logp(x)q(x)=Ep(x)logp(x)q(x)DKL(p||q)=∑xp(x)logp(x)q(x)=Ep(x)logp(x)q(x)

性質:

一、若是 p(x)p(x) 和 q(x)q(x) 兩個分佈相同,那麼相對熵等於0

二、DKL(p||q)DKL(q||p)DKL(p||q)≠DKL(q||p) ,相對熵具備不對稱性。你們能夠舉個簡單例子算一下。

三、DKL(p||q)0DKL(p||q)≥0 證實以下(利用Jensen不等式https://en.wikipedia.org/wiki/Jensen%27s_inequality):

 由於:

xp(x)=1∑xp(x)=1

因此:

DKL(p||q)0DKL(p||q)≥0

 總結:相對熵能夠用來衡量兩個機率分佈之間的差別,上面公式的意義就是求 pp 與 qq之間的對數差在 pp 上的指望值

 

四、交叉熵 (Cross entropy)

 

如今有關於樣本集的兩個機率分佈 p(x)p(x) 和 q(x)q(x),其中  p(x)p(x) 爲真實分佈, q(x)q(x) 非真實分佈。若是用真實分佈 p(x)p(x) 來衡量識別別一個樣本所須要編碼長度的指望(平均編碼長度)爲:

H(p)=xp(x)log1p(x)H(p)=∑xp(x)log1p(x)

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

H(p,q)=xp(x)log1q(x)H(p,q)=∑xp(x)log1q(x)。(由於用 q(x)q(x) 來編碼的樣原本自於分佈 q(x)q(x) ,因此 H(p,q)H(p,q) 中的機率是 p(x)p(x))。此時就將 H(p,q)H(p,q) 稱之爲交叉熵。舉個例子。考慮一個隨機變量 xx,真實分佈p(x)=(12,14,18,18)p(x)=(12,14,18,18),非真實分佈 q(x)=(14,14,14,14)q(x)=(14,14,14,14), 則H(p)=1.75 bitsH(p)=1.75 bits(最短平均碼長),交叉熵 H(p,q)=12log24+14log24+18log24+18log24=2 bitsH(p,q)=12log24+14log24+18log24+18log24=2 bits。由此能夠看出根據非真實分佈 q(x)q(x) 獲得的平均碼長大於根據真實分佈 p(x)p(x) 獲得的平均碼長。

 

 

咱們再化簡一下相對熵的公式。DKL(p||q)=xp(x)logp(x)q(x)=xp(x)logp(x)p(x)logq(x)DKL(p||q)=∑xp(x)logp(x)q(x)=∑xp(x)logp(x)−p(x)logq(x)

有沒有發現什麼?

熵的公式 H(p)=xp(x)logp(x)H(p)=−∑xp(x)logp(x)

交叉熵的公式 H(p,q)=xp(x)log1q(x)=xp(x)logq(x)H(p,q)=∑xp(x)log1q(x)=−∑xp(x)logq(x)

因此有:

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

又由於 DKL(p||q)0DKL(p||q)≥0

因此 H(p,q)H(p)H(p,q)≥H(p)(當 p(x)=q(x)p(x)=q(x) 時取等號,此時交叉熵等於信息熵)

而且當 H(p)H(p) 爲常量時(注:在機器學習中,訓練數據分佈是固定的),最小化相對熵 DKL(p||q)DKL(p||q) 等價於最小化交叉熵 H(p,q)H(p,q) 也等價於最大化似然估計(具體參考Deep Learning 5.5)

 

 

在機器學習中,咱們但願在訓練數據上模型學到的分佈 P(model)P(model) 和真實數據的分佈  P(real)P(real) 越接近越好,因此咱們可使其相對熵最小。可是咱們沒有真實數據的分佈,因此只能但願模型學到的分佈 P(model)P(model) 和訓練數據的分佈 P(train)P(train) 儘可能相同。假設訓練數據是從整體中獨立同分布採樣的,那麼咱們能夠經過最小化訓練數據的經驗偏差來下降模型的泛化偏差。即:

  1. 但願學到的模型的分佈和真實分佈一致,P(model)P(real)P(model)≃P(real)
  2. 可是真實分佈不可知,假設訓練數據是從真實數據中獨立同分布採樣的,P(train)P(real)P(train)≃P(real)
  3. 所以,咱們但願學到的模型分佈至少和訓練數據的分佈一致,P(train)P(model)P(train)≃P(model)

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

 

五、總結

 

  1. 信息熵是衡量隨機變量分佈的混亂程度,是隨機分佈各事件發生的信息量的指望值,隨機變量的取值個數越多,狀態數也就越多,信息熵就越大,混亂程度就越大。當隨機分佈爲均勻分佈時,熵最大;信息熵推廣到多維領域,則可獲得聯合信息熵;條件熵表示的是在 XX 給定條件下,YY 的條件機率分佈的熵對 XX的指望。
  2. 相對熵能夠用來衡量兩個機率分佈之間的差別。
  3. 交叉熵能夠來衡量在給定的真實分佈下,使用非真實分佈所指定的策略消除系統的不肯定性所須要付出的努力的大小。

 

或者:

 

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

 

六、參考

 

一、吳軍《數學之美》

二、李航《統計學習方法》

三、馬春鵬《模式識別與機器學習》

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

四、https://www.zhihu.com/question/65288314/answer/244557337爲何交叉熵(cross-entropy)能夠用於計算代價?

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

六、https://blog.csdn.net/saltriver/article/details/53056816信息熵究竟是什麼

相關文章
相關標籤/搜索