機器學習中各種熵的定義及理解

2021-01-18 機器學習算法與Python精研

更多人關注的公眾號:機器學習算法與Python精研


編輯|魚大

來源|博客Bo_hemian

正文共:2792 字 14 圖

預計閱讀時間: 7 分鐘


機器學習領域有一個十分有魅力的詞:熵。然而究竟什麼是熵,相信多數人都能說出一二,但又不能清晰的表達出來。

而筆者對熵的理解是:「拒絕學習、拒絕提升的人是沒有未來的,也只有努力才能變成自己想成為的人」

下圖是對熵的一個簡單描述:

熵可以理解為是一種對無序狀態的度量方式。那麼熵又是如何被用在機器學習中呢?

在機器學習領域中,量化與隨機事件相關的預期信息量以及量化概率分布之間的相似性是常見的問題。針對這類問題,利用香農熵以及衍生的其他熵概念去度量概率分布的信息量是個很好的解決方案。本文會儘可能用簡單的描述分享自己對各種熵的定義及理解,歡迎交流討論。

1. 自信息

自信息又稱信息量。

「陳羽凡吸毒?!工作室不是剛闢謠了嗎?哇!信息量好大!」

在生活中,極少發生的事情最容易引起吃瓜群眾的關注。而經常發生的事情則不會引起注意,比如吃瓜群眾從來不會去關係明天太陽會不會東邊升起。

也就是說,信息量的多少與事件發生概率的大小成反比。

對於已發生的事件i,其所提供的信息量為:

其中底數通常為2,負號的目的是為了保證信息量不為負。

事件i發生的概率與對應信息量的關係如下所示:

我們再考慮一個問題:假設事件x個可能的狀態,例如一枚硬幣拋出落地後可能有兩種狀態,正面或反面朝上,這時候該怎樣取衡量事件所提供的信息量?

2. 信息熵

信息熵又稱香農熵。

到目前為止,我們只討論了自信息。實際上,對於一枚硬幣來講,自信息實際上等於信息熵,因為無論正反面,朝上的概率都相等。

信息熵用來度量一個事件可能具有多個狀態下的信息量,也可以認為是信息量關於事件概率分布的期望值:

其中事件x共有n個狀態,i表示第i個狀態,底數b通常設為2,也可設為10或e。

H(x)表示用以消除這個事件的不確定性所需要的統計信息量,即信息熵。

還是以拋硬幣為例來理解信息熵:

事件

概率

信息量(自信息)

信息熵(統計信息量)

正面朝上

1/2

-log(1/2)

(-1/2 * log(1/2))+( -1/2 * log(1/2))

反面朝上

1/2

-log(1/2)

(-1/2 * log(1/2))+( -1/2 * log(1/2))

根據信息熵公式可得出以下結論:

若事件x個狀態發生概率為1,那麼信息熵H(x)等於0

若事件x的所有狀態n發生概率都一致,即都為1/n,那麼信息熵H(x)有極大值logn。

信息熵可以推廣到連續域,此時被稱為微分熵。對於連續隨機變量x和概率密度函數p(x), 信息熵的定義如下:

3. 聯合熵

上面我們講到的都是對於一個事件的熵。那麼如果有多個事件,例如事件x和事件y都出現時,又該怎樣去度量呢?

首先,是聯合熵,公式如下:

其中p(x,y)代表事件x和事件y的聯合概率。

這次以同時拋兩枚硬幣為例來說明聯合熵如何對兩個事件進行度量:

事件

概率

信息量(自信息)

聯合熵

x正,y正

1/2 * 1/2 = 1/4

-log(1/4)

-(1/4*log(1/4)+ 1/4 * log(1/4) + 1/4 * log(1/4) + 1/4 * log(1/4))

x正,y反

1/2 * 1/2 = 1/4

-log(1/4)

-(1/4*log(1/4)+ 1/4 * log(1/4) + 1/4 * log(1/4) + 1/4 * log(1/4))

X反,y正

1/2 * 1/2 = 1/4

-log(1/4)

-(1/4*log(1/4)+ 1/4 * log(1/4) + 1/4 * log(1/4) + 1/4 * log(1/4))

X反,y反

1/2 * 1/2 = 1/4

-log(1/4)

-(1/4*log(1/4)+ 1/4 * log(1/4) + 1/4 * log(1/4) + 1/4 * log(1/4))

 

4. 條件熵

條件熵表示在已知事件x的條件下,事件y的不確定性。定義為在給定條件下x,y的條件分布概率的熵對x的數學期望:

可以發現,條件熵與聯合熵僅僅在於log項不同。

此外,根據聯合概率分布與條件概率分布的關係,可得:

所以:

即在x條件下,y的條件熵 = x,y的聯合熵 - x的信息熵。

5. 交叉熵

交叉熵是一個用來比較兩個概率分布p和q的度量公式。換句話說,交叉熵是衡量在真實分布下,使用非真實分布所制定的策略能夠消除系統不確定性的大小

如何正確理解上述這段描述呢?首先,觀察交叉熵的公式,如下圖所示:

其中,p(x)為事件的真實分布概率,q(x)為事件的非真實分布概率。

可以看到,與信息熵相比,唯一不同的是log裡的概率由信息熵中的真實分布概率p(x)變成了非真實概率(假設分布概率)q(x),即1-p(x)。也就是信息熵相比,交叉熵計算的不是log(p)p下的期望,而是log(q)p下的期望。

同樣地,交叉熵可也以推廣到連續域。對於連續隨機變量x和概率密度函數p(x)和假設分布概率密度函數q(x), 交叉熵的定義如下: 

所以,如果假設分布概率與真實分布概率一致,那麼交叉熵 = 信息熵

6. 相對熵

相對熵又稱KL散度。

相對熵衡量了當修改從先驗分布p到後驗分布q的信念後所帶來的信息增益。換句話說,就是用後驗分布 q 來近似先驗分布 p 的時候造成的信息損失。再直白一點,就是衡量不同策略之間的差異性。

計算公式如下:

其中H(p,q)代表策略p下的交叉熵,H(p)代表信息熵。所以,相對熵 = 某個策略的交叉熵-信息熵

相對熵用來衡量q擬合p的過程中產生的信息損耗,損耗越少,q擬合p也就越好。

需要注意的是,儘管從直覺上相對熵(KL散度)是個度量或距離函數, 但是它實際上並不是一個真正的度量或距離。因為KL散度不具有對稱性:從分布PQ的距離通常並不等於從QP的距離。

7. 互信息

互信息用來表示兩個變量X與Y之間是否有關係,以及關係的強弱。

用公式可以表示為: 

因此,可認為變量X與Y的互信息就是信息熵H(X)與條件熵H(X|Y)的差

8. 熵在機器學習中的應用

針對熵的應用,個人總結主要有以下幾點:

在貝葉斯網絡中,會假設一個先驗分布,目的是為了反映隨機變量在觀測前的不確定性。在進行模型訓練時,減小熵,同時讓後驗分布在最可能的參數值周圍形成峰值。

在做分類任務的參數估計時,尤其是在神經網絡中,交叉熵往往作為損失函數用來更新網絡權重。

在樹模型算法中,熵的作用也是不可或缺,尤其是在使用ID3信息增益、C4.5增益率時,通過使用熵來劃分子節點,從而可以構造出整棵樹。

 原文:

https://www.cnblogs.com/wkang/p/10068475.html


推薦閱讀

下載|730頁 凸優化英文原版

下載|382頁 PYTHON自然語言處理

下載|498頁 Python基礎教程第3版

下載|1001頁 Python數據分析與數據化運營

下載|439頁 統計學習基礎-數據挖掘、推理預測

下載|271頁 漫畫線性代數

下載|322頁 Machine Learning for Hackers

下載|215頁 推薦系統實踐

BAT算法工程師(機器學習)面試100題(上)

相關焦點

  • 深究熵的概念和公式以及最大熵原理
    一個隨機變量ξ有A1、A2、A3……共n個不同的結果,每個結果出現的概率是p1、p2、p3……,那麼我們把ξ的不確定度定義為信息熵,參考上面物理學熵的定義,A1、A2、A3……可以理解為不同的微觀狀態,那麼看起來信息熵應該是log n嘍?
  • 機器學習的本質:理解泛化的新觀點
    用一個簡單的方法理解過擬合,如果你手中的數據有限,比如說星空裡觀測到的三個星星, 你可以想像出任何一個複雜的圖形穿過那三個點,也是你的想像力豐富多彩,你就可以做出越多這樣的圖形。事實上,我們知道這樣的想像不具備任何預測能力,如果天空中出現第四顆星,我們一定就不能確定它是否在該在的位置上。
  • 機器學習中決策樹的原理與算法 | 科普
    我們知道,在機器學習中有兩類十分重要的問題,一類是分類問題,一類是回歸問題。我們今天所要探討的就是在分類和回歸問題中所用到的一種非常基本的方法,叫決策樹。決策樹也是重要的標籤學習方法。這篇文章裡面的部分內容來自於 AI 慕課學院的《機器學習理論與實戰高級特訓班》課程筆記。
  • 理解熵、交叉熵和交叉熵損失
    交叉熵損失是深度學習中應用最廣泛的損失函數之一,這個強大的損失函數是建立在交叉熵概念上的。當我開始使用這個損失函數時,我很難理解它背後的直覺。在google了不同材料後,我能夠得到一個令人滿意的理解,我想在這篇文章中分享它。
  • 機器學習算法中的7個損失函數的詳細指南
    介紹想像一下-你已經在給定的數據集上訓練了機器學習模型,並準備好將它交付給客戶。但是,你如何確定該模型能夠提供最佳結果?是否有指標或技術可以幫助你快速評估數據集上的模型?當然是有的,簡而言之,機器學習中損失函數可以解決以上問題。
  • 熵:熱力學定義與統計力學定義的聯繫
    在熱力學中,可逆過程滿足其中熵的變化就定義為                                           統計力學中,平衡熵的定義為
  • Python機器學習算法中的7個損失函數的詳細指南
    介紹想像一下-你已經在給定的數據集上訓練了機器學習模型,並準備好將它交付給客戶。但是,你如何確定該模型能夠提供最佳結果?是否有指標或技術可以幫助你快速評估數據集上的模型?當然是有的,簡而言之,機器學習中損失函數可以解決以上問題。損失函數是我們喜歡使用的機器學習算法的核心。但大多數初學者和愛好者不清楚如何以及在何處使用它們。
  • 你還認為似然函數跟交叉熵是一個意思呀?
    似然函數不就是交叉熵嗎?」「機器學習中的似然函數怎麼看起來跟概率統計課本裡的不一樣呢?」「學長學長,我把這個model的輸出接上交叉熵後怎麼報錯了?」 「似然函數」名字的意義已經在以前的多篇文章中提過了,更通用的定義來說,似然函數就是衡量當前模型參數對於已知樣本集X的解釋情況,通用的表現形式如下:
  • 各種機器學習的應用場景分別是什麼?
    雷鋒網(公眾號:雷鋒網)按:本文作者xyzh,本文整理自作者在知乎問題《各種也是一個理解數據的好工具。用加權取和(weighted sum)的方式把這個新分類器結合進已有的分類器中。它的好處是自帶了特徵選擇(feature selection),只使用在訓練集中發現有效的特徵(feature)。這樣就降低了分類時需要計算的特徵數量,也在一定程度上解決了高維數據難以理解的問題。最經典的AdaBoost實現中,它的每一個弱分類器其實就是一個決策樹。
  • 我對熵原理的理解
    我對熵原理的理解 .黎荔熵,德國物理學家克勞修斯於歷史上是由物理學家列奧·齊拉德(Leo Szilard)首次提出了「負熵」這個經典熱力學中從未出現過的概念和術語。負熵就是熵的對立,熵代表的是無序,而負熵表示的則是有序。我相信,在自然界中一定存在著和熵增相反的能量控制機制,只是還無法清晰地說明這種機制。 熵增與熵減,看似是相反方向,但某些時候,又只是一線之隔。大自然中的許多植物、動物,都有一個共同且鮮明的特徵,那就是對稱。
  • 機器學習之模型評估(損失函數)
    機器學習的模型評估,主要包括兩部分:損失函數是性能度量的一個部分,而損失函數又分很多種,因此單獨作為一篇介紹損失函數。機器學習中的所有算法都依賴於最小化或最大化一個函數,我們稱之為「目標函數」。交叉熵損失也稱負對數似然,它是二分類問題中最常用的損失函數,比如邏輯回歸。
  • 熵:傷腦筋的熵
    中文熵,或曰熱溫商,確實易讓人聯想到除式 ds=dQ/T 而非能量轉換的內在問題。此公式是計算工具,卻不是entropy 的定義。若由熵,或熱溫商,來理解entropy,難免誤入歧途。其根據積分公式而來的漢譯有其歷史的合理性,但從根本上來說卻是錯誤的,似乎熵的定義或計算依賴溫度的存在。熵是比溫度更基本的物理量,對溫度無從定義的體系,熵一樣是可定義、可計算的。
  • 熵:傷腦筋的熵-虎嗅網
    Entropy如何轉變成了中文的「熵」, 這一點還盼國內科學史家詳加考證。中文熵,或曰熱溫商,確實易讓人聯想到除式 ds=dQ/T 而非能量轉換的內在問題。此公式是計算工具,卻不是entropy 的定義。若由熵,或熱溫商,來理解entropy,難免誤入歧途。其根據積分公式而來的漢譯有其歷史的合理性,但從根本上來說卻是錯誤的,似乎熵的定義或計算依賴溫度的存在。
  • 熵:傷腦筋的熵|賢說八道
    Entropy如何轉變成了中文的「熵」, 這一點還盼國內科學史家詳加考證。中文熵,或曰熱溫商,確實易讓人聯想到除式 ds=dQ/T 而非能量轉換的內在問題。此公式是計算工具,卻不是entropy 的定義。若由熵,或熱溫商,來理解entropy,難免誤入歧途。其根據積分公式而來的漢譯有其歷史的合理性,但從根本上來說卻是錯誤的,似乎熵的定義或計算依賴溫度的存在。
  • 透徹講解~交叉熵代價函數
    同理,我們希望:ANN在訓練時,如果預測值與實際值的誤差越大,那麼在反向傳播訓練的過程中,各種參數調整的幅度就要更大,從而使訓練更快收斂。然而,如果使用二次代價函數訓練ANN,看到的實際效果是,如果誤差越大,參數調整的幅度可能更小,訓練更緩慢。
  • 全球熵ETV 什麼是熵 解析entropy熵的概況 如何理解熵原理與熵增定律
    19世紀 中期德國的著名物理學家和數學家克勞修斯在全世界第一個真正提出entropy熵的概念,克勞修斯是全球公認的熱力學理論奠基人,分子運動理論奠基者。熵是表徵物質狀態的參量之一,物理意義指複雜,無或者混亂的度量。2 如何理解熵原理與熵增定律?
  • 完美解釋交叉熵
    通過幾個簡單的例子來解釋和總結什麼是交叉熵( Cross Entropy) 以及機器學習分類問題中為什麼使用交叉熵。在這個問題中, 問題個數的期望是這個式子就是熵的表達式. 簡單來說, 其意義就是在最優化策略下, 猜到顏色所需要的問題的個數。熵代表的是隨機變量或整個系統的不確定性,熵越大,隨機變量或系統的不確定性就越大。
  • 宇宙中的熵到底是什麼?為什麼熵只會增加不會減少?
    ,但隨著時間的推移,熵的定義變得越來越複雜。 19世紀,德國的物理學家克勞修斯提出了熵的概念,熵的物理概念是指複雜性、無序性和混亂程度,如今熵成為了解釋宇宙無序性的詞,也是熱力學第二定律賦予了宇宙的這種無序性。
  • 熵到底是什麼?
    熵在現代科學中有點流行。通常,它被用作"障礙"的代名詞,但是比這更有趣。這個概念本身有著悠久而有趣的歷史。為了完全理解熵是什麼,我們確實需要查看熵的來源。熵的概念的第一個暗示是拉扎爾·卡諾(Lazare Carnot)提供的,最著名的是他研究引擎並領導法國革命軍的工作。
  • npj: 相穩定性預測—看看熵的臉色
    海歸學者發起的公益學術平臺分享信息,整合資源交流學術,偶爾風月高熵合金含有多種元素而且比例很大,容易導致相分離,通常具有淺混合焓和相似級別的熵。因此,合金的相穩定性既取決於混合焓又取決於混合熵,必須等量齊觀地了解它們各自對合金熱力學性質的貢獻,才能預測合金的穩定性。來自美國懷俄明大學的Dilpuneet Aidhy教授等,採用密度泛函理論計算,檢測了不同類型的熵在7種具有淺混合焓的二元金屬合金中的貢獻。他們發現依靠混合焓來預測固溶體穩定性是不準的。