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

2021-02-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題(上)

相關焦點

  • 機器學習入門 12-2 信息熵
    本小節首先介紹一種方式:信息熵。什麼是信息熵?信息熵是資訊理論中的一個基礎概念 (資訊理論是一個專門的領域)。信息熵表示的是隨機變量的不確定度,簡單來說,數據不確定性越高 (或越隨機),相對應數據的信息熵就越大;數據不確定性越低 (或越確定),相對應數據的信息熵就越小;「熵是從物理熱力學中引申出來的概念:熵越大,熱力系統中的粒子無規則的運動越劇烈,粒子的狀態不確定性越高;熵越小,熱力系統中的粒子越傾向於靜止狀態,粒子的狀態確定性越高;」
  • 機器學習最常用的損失函數之交叉熵
    假設X是一個離散型隨機變量,其取值集合為X,概率分布函數為p(x)=Pr(X=x),x∈X,我們定義事件X=x0的信息量為: I(x0)=−log(p(x0)),可以理解為,一個事件發生的概率越大,則它所攜帶的信息量就越小,而當p(x0)=1時,熵將等於0,也就是說該事件的發生不會導致任何信息量的增加。
  • 熵、交叉熵和散度,這是一篇最純碎的理解!
    「機器學習與python集中營」,星標公眾號主題:物理概念的熵熵(entropy)是物理中的一個概念。    信息量 = - log2(p)考慮到所有事件,平均信息量的公式為(期望公式)    平均信息量 = -∑i pi×log2(pi)平均信息量就是資訊理論中的熵!
  • 通俗理解信息熵
    本文轉載自:自然語言處理與機器學習供稿人:憶臻決策樹算法中,在特徵的選擇過程,我們會使用到信息增益的概念。
  • 機器學習小知識: 圖解熵、交叉熵和 KL-散度
    交叉熵是分類問題中最常用的損失函數之一。但是由於如今有大量容易上手的現成庫和框架,我們大多數人常常在沒有真正了解熵的核心概念的情況下,就可以熟練地解決問題。在本文中,讓我們研究一下熵這個概念背後的基本直覺,並將其與交叉熵、KL-散度相關聯。我們還將使用交叉熵作為損失函數,結合一個實例來看看它在分類問題中的應用。1什麼是熵?
  • 機器學習中決策樹的原理與算法 | 科普
    我們知道,在機器學習中有兩類十分重要的問題,一類是分類問題,一類是回歸問題。我們今天所要探討的就是在分類和回歸問題中所用到的一種非常基本的方法,叫決策樹。決策樹也是重要的標籤學習方法。這篇文章裡面的部分內容來自於 AI 慕課學院的《機器學習理論與實戰高級特訓班》課程筆記。
  • 機器學習的本質:理解泛化的新觀點
    用一個簡單的方法理解過擬合,如果你手中的數據有限,比如說星空裡觀測到的三個星星, 你可以想像出任何一個複雜的圖形穿過那三個點,也是你的想像力豐富多彩,你就可以做出越多這樣的圖形。事實上,我們知道這樣的想像不具備任何預測能力,如果天空中出現第四顆星,我們一定就不能確定它是否在該在的位置上。
  • 熵:熱力學定義與統計力學定義的聯繫
    在熱力學中,可逆過程滿足其中熵的變化就定義為                                           統計力學中,平衡熵的定義為
  • 一文讀懂機器學習!
    01 機器學習分類傳統機器學習機器學習可以理解成是生產算法的算法。需要人來先做特徵提取,然後在把特徵向量化後交給機器去訓練。傳統機器學習分為 監督學習 和 無監督學習。深度學習深度學習是基於深度神經網絡的學習(DNN)。深度學習可以自動提取特徵。
  • 機器學習中的相似性度量總結
    信息熵1. 歐氏距離(Euclidean Distance)歐氏距離是最易於理解的一種距離計算方法,源自歐氏空間中兩點間的距離公式。幾何中夾角餘弦可用來衡量兩個向量方向的差異,機器學習中借用這一概念來衡量樣本向量之間的差異。(1)在二維空間中向量A(x1,y1)與向量B(x2,y2)的夾角餘弦公式:
  • 機器學習中的目標函數總結
    因此目標函數的構造是機器學習中的中心任務。本文介紹機器學習中若干典型的目標函數構造方法,它們是對問題進行建模的關鍵環節。針對實際應用問題,在構造目標函數時可以借鑑前人的經驗和技巧。接下來將分有監督學習(進一步細分為分類問題,回歸問題,概率模型,混合問題),無監督學習(進一步細分為數據降維問題,聚類問題),半監督學習,距離度量學習,以及強化學習進行介紹。
  • 熵:傷腦筋的熵-虎嗅網
    Entropy如何轉變成了中文的「熵」, 這一點還盼國內科學史家詳加考證。中文熵,或曰熱溫商,確實易讓人聯想到除式 ds=dQ/T 而非能量轉換的內在問題。此公式是計算工具,卻不是entropy 的定義。若由熵,或熱溫商,來理解entropy,難免誤入歧途。其根據積分公式而來的漢譯有其歷史的合理性,但從根本上來說卻是錯誤的,似乎熵的定義或計算依賴溫度的存在。
  • 你還認為似然函數跟交叉熵是一個意思呀?
    似然函數不就是交叉熵嗎?」「機器學習中的似然函數怎麼看起來跟概率統計課本裡的不一樣呢?」「學長學長,我把這個model的輸出接上交叉熵後怎麼報錯了?」 「似然函數」名字的意義已經在以前的多篇文章中提過了,更通用的定義來說,似然函數就是衡量當前模型參數對於已知樣本集X的解釋情況,通用的表現形式如下:
  • 談談機器學習中性能評估度量
    背景機器學習方法(監督學習、無監督學習、強化學習)通常認為由模型、策略和算法三個部分構成。例如在監督學習,模型需要從數據中學習條件概率分布(概率模型)或者決策函數(非概率模型)。而模型的假設空間(hypothesis space)就是所有可能的條件概率分布或者決策函數的總體(集合)。
  • 熵:傷腦筋的熵|賢說八道
    Entropy如何轉變成了中文的「熵」, 這一點還盼國內科學史家詳加考證。中文熵,或曰熱溫商,確實易讓人聯想到除式 ds=dQ/T 而非能量轉換的內在問題。此公式是計算工具,卻不是entropy 的定義。若由熵,或熱溫商,來理解entropy,難免誤入歧途。其根據積分公式而來的漢譯有其歷史的合理性,但從根本上來說卻是錯誤的,似乎熵的定義或計算依賴溫度的存在。
  • 機器學習算法中的7個損失函數的詳細指南
    介紹想像一下-你已經在給定的數據集上訓練了機器學習模型,並準備好將它交付給客戶。但是,你如何確定該模型能夠提供最佳結果?是否有指標或技術可以幫助你快速評估數據集上的模型?當然是有的,簡而言之,機器學習中損失函數可以解決以上問題。
  • 徹底解決數學問題-《機器學習的數學》出版了
    資訊理論是概率論的延伸,在機器學習與深度學習中通常用於構造目標函數,以及對算法進行理論分析與證明。這同樣是很多讀者沒有學習過的課程。在機器學習尤其是深度學習中,資訊理論的知識隨處可見:1. 某些決策樹的訓練過程中需要使用熵作為指標。2. 在深度學習中經常會使用交叉熵,KL散度,JS散度,互信息等概念。3.
  • 為什麼交叉熵(cross-entropy)可以用於計算代價?
    在不同領域熵有不同的解釋,比如熱力學的定義和資訊理論也不大相同。要想明白交叉熵(Cross Entropy)的意義,可以從熵(Entropy) -> KL散度(Kullback-Leibler Divergence) -> 交叉熵這個順序入手。當然,也有多種解釋方法[1]。
  • 通俗解釋機器學習中的Logistic Regression
    在各種機器學習的文章中,你都會看到,它們給了邏輯函數一個常用的名字:Sigmoid函數。sigmoid,意為「S形的」,這正符合其函數圖像特點,所以大家記住就行了。現在,我們已經有了函數,下一步任務就是求出函數表達式中的未知參數向量 θ 了。這個過程是機器學習中最為核心的計算步驟。
  • 簡單的交叉熵,你真的懂了嗎?
    那我們就能將事件x_0的信息量定義如下(其中p(x_0)表示事件x_0發生的概率):在機器學習中,p(x)常用於描述樣本的真實分布,例如[1,0,0,0]表示樣本屬於第一類,而q(x)則常常用於表示預測的分布,例如[0.7,0.1,0.1,0.1]。顯然使用q(x)來描述樣本不如p(x)準確,q(x)需要不斷地學習來擬合準確的分布p(x)。        KL散度的公式如下: