機器學習各種熵:從入門到全面掌握
概述
信息熵是資訊理論和機器學習中非常重要的概念,應用及其廣泛,各種熵之間都存在某些直接或間接的聯繫,本文試圖從宏觀角度將各種熵穿插起來,方便理解。本文首先講解機器學習演算法中常用的各種熵的概念、公式、推導,並且聯繫然後從機器學習演算法進行說明熵的應用,最後是簡單總結具體演算法角度闡述熵的具體應用場景,並配置相應的視頻講解。希望通過本文能夠全面的梳理熵的各方面知識,由於本人水平有限,如寫的不好地方,敬請原諒!
機器學習常用熵定義
熵是什麼?熵存在的意義是啥?為什麼叫熵?這是3個非常現實的問題。答案非常明確:在機器學習中熵是表徵隨機變數分布的混亂程度,分布越混亂,則熵越大,在物理學上表徵物質狀態的參量之一,也是體系混亂程度的度量;熵存在的意義是度量信息量的多少,人們常常說信息很多,或者信息較少,但卻很難說清楚信息到底有多少,這時熵的意義就體現出來了;熵詞的由來是1923年胡剛復教授根據熱溫商之意翻譯而來,此次不深究。
上面的回答還是顯得非常生硬,其實咱們從生活的角度就非常容易理解了。整個宇宙發展就是一個熵增的過程,具體到細節就是氣體擴散、熱量傳遞、宇宙爆炸等等,如果不加干擾,幾種氣體肯定會混合到一起,任何比環境溫度高的物體,都會把熱量向低溫環境散發,直到系統內溫度平衡,所有的恆星終將熄滅,宇宙中不再有能量的流動,因而不可避免地走向無序。如果房間不去打掃,那麼房間肯定越來越亂,這就是一個自然的熵增過程。如果不施加外力影響,事物永遠向著更混亂的狀態發展,故而人存在的意義就是通過自身努力改造自身、改造自然。借用一句話:過去五千年,人類文明的進步只是因為人類學會利用外部能量(牲畜、火種、水力等等),越來越多的能量注入,使得人類社會向著文明有序的方向發展即通過人類的努力使得熵值一直在下降。大家一起努力使得整個世界熵值下降的更多吧!!! 以上扯了一堆廢話,其實目的就是希望大家知道:熵的物理意義非常重大,不僅僅是冰冷冷的公式,而是接近生活、接近自然的,更是從生活而來,從各種層面理解它都有助於我們理解熵、理解公式、理解整個世界!一、自信息
自信息是熵的基礎,理解它對後續理解各種熵非常有用。自信息表示某一事件發生時所帶來的信息量的多少,當事件發生的概率越大,則自信息越小,或者可以這樣理解:某一事件發生的概率非常小,但是實際上卻發生了(觀察結果),則此時的自信息非常大;某一事件發生的概率非常大,並且實際上也發生了,則此時的自信息較小。以全班的考試成績為例,通常我們知道整個班成績是符合高斯分布的,通過一次考試,發現每個人成績都是相同的,則在學校看來這是一個爆炸性新聞,因為這是一個極低的事件,但是卻發生了,不符合常規,下一步應該就是調查了吧。再說一個生活中的例子,如果有人告訴我們一件相當不可能發生的事件發生了,那麼我們收到的信息量要多於我們被告知某個很可能發生的事件發生時收到的信息,此時自信息就比較大了。
從通俗角度理解了自信息的含義和作用,但是如何度量它呢?我們現在要尋找一個函數,它要滿足的條件是:事件發生的概率越大,則自信息越小;自信息不能是負值,最小是0;自信息應該滿足可加性,並且兩個獨立事件的自信息應該等於兩個事件單獨的自信息。下面給出自信息的具體公式:
圖1 自信息公式圖形
其中 表示隨機變數的第i個事件發生的概率,自信息單位是bit,表徵描述該信息需要多少位。可以看出,自信息的計算和隨機變數本身數值沒有關係,只和其概率有關,同時可以很容易發現上述定義滿足自信息的3個條件。
二、信息熵
上述自信息描述的是隨機變數的某個事件發生所帶來的信息量,而信息熵通常用來描述整個隨機分布所帶來的信息量平均值,更具統計特性。信息熵也叫香農熵,在機器學習中,由於熵的計算是依據樣本數據而來,故也叫經驗熵。其公式定義如下:
從公式可以看出,信息熵H(X)是各項自信息的累加值,由於每一項都是整正數,故而隨機變數取值個數越多,狀態數也就越多,累加次數就越多,信息熵就越大,混亂程度就越大,純度越小。越寬廣的分布,熵就越大,在同樣的定義域內,由於分布寬廣性中脈衝分布<高斯分布<均勻分布,故而熵的關係為脈衝分布信息熵<高斯分布信息熵<均勻分布信息熵。可以通過數學證明,當隨機變數分布為均勻分布時即狀態數最多時,熵最大。熵代表了隨機分布的混亂程度,這一特性是所有基於熵的機器學習演算法的核心思想。
推廣到多維隨機變數的聯合分布,其聯合信息熵為:
注意事項:
1. 熵只依賴於隨機變數的分布,與隨機變數取值無關; 2. 定義0log0=0(因為可能出現某個取值概率為0的情況); 3. 熵越大,隨機變數的不確定性就越大,分布越混亂,隨機變數狀態數越多。三、條件熵
條件熵的定義為:在X給定條件下,Y的條件概率分布的熵對X的數學期望。有點抽象,看具體公式就比較容易理解了:
同理可得:
四、交叉熵
對機器學習演算法比較熟悉的同學,對交叉熵應該是最熟悉的,其廣泛用在邏輯回歸的Sigmoid和softmax函數中作為損失函數使用。其主要用於度量兩個概率分布間的差異性信息,由於其和相對熵非常相似,故詳細分析對比見下一小結。p對q的交叉熵表示q分布的自信息對p分布的期望,公式定義為:
其中。p是真實樣本分布,q是預測得到樣本分布。在資訊理論中,其計算的數值表示:如果用錯誤的編碼方式q去編碼真實分布p的事件,需要多少bit數,是一種非常有用的衡量概率分布相似性的數學工具。
由於交叉熵在邏輯回歸中應用廣泛,這裡給出其定義式,使讀者知道交叉熵的具體應用。邏輯回歸演算法的損失函數就是交叉熵,也叫做負對數似然,其定義為:
其中, 是第i個樣本的真實標籤, 是sigmoid預測輸出值, 是凸函數,可以得到全局最優解。
對於多分類的邏輯回歸演算法,通常我們使用Softmax作為輸出層映射,其對應的損失函數也叫交叉熵,只不過寫法有點區別,具體如下:
其中,m是樣本個數,k是輸出層個數。
可以看出,其實兩者是一樣的,softmax只是對sigmoid在多分類上面的推廣。
五、相對熵
相對熵是一個較高端的存在,其作用和交叉熵差不多。相對熵經常也叫做KL散度,在貝葉斯推理中, 衡量當你修改了從先驗分布 q 到後驗分布 p 的信念之後帶來的信息增益。首先給出其公式:
相對熵較交叉熵有更多的優異性質,主要為:
1. 當p分布和q分布相等時候,KL散度值為0,這是一個非常好的性質;
2. 可以證明是非負的; 3. 非對稱的,通過公式可以看出,KL散度是衡量兩個分布的不相似性,不相似性越大,則值越大,當完全相同時,取值為0。 簡單對比交叉熵和相對熵,可以發現僅僅差了一個H(p),如果從優化角度來看,p是真實分布,是固定值,最小化KL散度情況下,H(p)可以省略,此時交叉熵等價於KL散度。 下面討論一個比較現實且非常重要的問題:既然相對熵和交叉熵表示的含義一樣,為啥需要兩個?在機器學習中何時使用相對熵,何時使用交叉熵?要徹底說清這個問題,難度很大,這裡我僅僅從我知道的方面講講。首先需要明確:在最優化問題中,最小化相對熵等價於最小化交叉熵;相對熵和交叉熵的定義其實都可以從最大似然估計得到,下面進行詳細推導:以某個生成模型演算法為例,假設是生成對抗網路GAN,其實只要是生成模型,都滿足以下推導。若給定一個樣本數據的真實分布 和生成的數據分布 ,那麼生成模型希望能找到一組參數θ使分布 和 之間的距離最短,也就是找到一組生成器參數而使得生成器能生成十分逼真的分布。現在從真實分布 中抽取m個真實樣本 ,對於每一個真實樣本,我們可以計算 ,即在由θ確定的生成分布中, 樣本所出現的概率。因此,我們可以構建似然函數:
最大化似然函數,即可求得最優參數 :
轉換為對數似然函數:
由於是求最大值,故整體乘上常數對結果沒有影響,這裡是逐點乘上一個常數,所以不能取等於號,但是因為在取得最大值時候 和 肯定是相似的,並且肯定大於0,所以依然可以認為是近視相等的
上面的公式正好是交叉熵的定義式。然後我們再該基礎上減掉一個常數,
通過以上各公式可以得出以下結論:最大化似然函數,等價於最小化負對數似然,等價於最小化交叉熵,等價於最小化KL散度。
推導了半天,依然沒有回答上面的問題。學過機器學習的同學都知道:交叉熵大量應用在Sigmoid函數和SoftMax函數中,最典型的演算法應該就是神經網路和邏輯回歸吧,而相對熵大量應用在生成模型中,例如GAN、EM、貝葉斯學習和變分推導中。從這裡我們可以看出一些端倪,如果想通過演算法對樣本數據進行概率分布建模,那麼通常都是使用相對熵,因為我們需要明確的知道生成的分布和真實分布的差距,最好的KL散度值應該是0;而在判別模型中,僅僅只需要評估損失函數的下降值即可,交叉熵可以滿足要求,其計算量比KL散度小。在數學之美書中,有這樣幾句話:交叉熵,其用來衡量在給定的真實分布下,使用非真實分布所指定的策略消除系統的不確定性所需要付出的努力的大小,相對熵,其用來衡量兩個取值為正的函數或概率分布之間的差異。但是我覺得依然看不出區別。六、互信息
互信息在資訊理論和機器學習中非常重要,其可以評價兩個分布之間的距離,這主要歸因於其對稱性,假設互信息不具備對稱性,那麼就不能作為距離度量,例如相對熵,由於不滿足對稱性,故通常說相對熵是評價分布的相似程度,而不會說距離。互信息的定義為:一個隨機變數由於已知另一個隨機變數而減少的不確定性,或者說從貝葉斯角度考慮,由於新的觀測數據y到來而導致x分布的不確定性下降程度。公式如下:
具體推導由於比較簡單,但是非常繁瑣,此次省略。從公式中可以看出互信息是滿足對稱性的,其在特性選擇、分布的距離評估中應用非常廣泛,請務必掌握。其實互信息和相對熵也存在聯繫,如果說相對熵不能作為距離度量,是因為其非對稱性,那麼互信息的出現正好彌補了該缺陷,使得我們可以計算任意兩個隨機變數之間的距離,或者說兩個隨機變數分布之間的相關性、獨立性。
互信息也是大於等於0的,當且僅當x與y相互獨立時候取等號。
七、信息增益
信息增益是決策樹ID3演算法在進行特徵切割時使用的劃分準則,其物理意義和互信息完全相同,並且公式也是完全相同。其公式如下:
其中D表示數據集,A表示特徵,信息增益表示得到A的信息而使得類X的不確定度下降的程度,在ID3中,需要選擇一個A使得信息增益最大,這樣可以使得分類系統進行快速決策。
需要注意的是:在數值上,信息增益和互信息完全相同,但意義不一樣,需要區分,當我們說互信息時候,兩個隨機變數的地位是相同的,可以認為是純數學工具,不考慮物理意義,當我們說信息增益時候,是把一個變數看成是減少另一個變數不確定度的手段。八、信息增益率
信息增益率是決策樹C4.5演算法引入的劃分特徵準則,其主要是克服信息增益存在的在某種特徵上分類特徵細,但實際上無意義取值時候導致的決策樹劃分特徵失誤的問題。例如假設有一列特徵是身份證ID,每個人的都不一樣,其信息增益肯定是最大的,但是對於一個情感分類系統來說,這個特徵是沒有意義的,此時如果採用ID3演算法就會出現失誤,而C4.5正好克服了該問題。其公式如下:
九、基尼係數
基尼係數是決策樹CART演算法引入的劃分特徵準則,其提出的目的不是為了克服上面演算法存在的問題,而主要考慮的是計算快速性、高效性,這種性質使得CART二叉樹的生成非常高效。其公式如下:
可以看出,基尼係數越小,表示選擇該特徵後熵下降最快,對分類模型效果更好,其和信息增益和信息增益率的選擇指標是相反的。基尼係數主要是度量數據劃分對訓練數據集D的不純度大小,基尼係數越小,表明樣本的純度越高。
這裡還存在一個問題,這個公式顯得非常突兀,感覺突然就出來了,沒有那種從前人演算法中改進而來的感覺?其實為啥說基尼係數計算速度快呢,因為基尼係數實際上是信息熵的一階進似,作用等價於信息熵,只不過是簡化版本。根據泰勒級數公式,將 在x=1處展開,忽略高階無窮小,其可以等價為 ,所以可以很容易得到上述定義。總結
自信息是衡量隨機變數中的某個事件發生時所帶來的信息量的多少,越是不可能發生的事情發生了,那麼自信息就越大;信息熵是衡量隨機變數分布的混亂程度,是隨機分布各事件發生的自信息的期望值,隨機分布越寬廣,則熵越大,越混亂;信息熵推廣到多維領域,則可得到聯合信息熵;在某些先驗條件下,自然引出條件熵,其表示在X給定條件下,Y的條件概率分布熵對X的數學期望,沒有啥特別的含義,是一個非常自然的概念;前面的熵都是針對一個隨機變數的,而交叉熵、相對熵和互信息可以衡量兩個隨機變數之間的關係,三者作用幾乎相同,只是應用範圍和領域不同。交叉熵一般用在神經網路和邏輯回歸中作為損失函數,相對熵一般用在生成模型中用於評估生成的分布和真實分布的差距,而互信息是純數學的概念,作為一種評估兩個分布之間相似性的數學工具,其三者的關係是:最大化似然函數,等價於最小化負對數似然,等價於最小化交叉熵,等價於最小化KL散度,互信息相對於相對熵區別就是互信息滿足對稱性;作為熵的典型機器學習演算法-決策樹,廣泛應用了熵進行特徵劃分,常用的有信息增益、信息增益率和基尼係數。
水平有限,希望對各位同學有一點幫助,也不枉費我寫了一天!ps:對上述總結有疑問,歡迎留言,或者加入個人交流群678455658。參考文獻
1.統計學習方法
2.從香農熵到手推KL散度:縱覽機器學習中的資訊理論3.能否盡量通俗地解釋什麼叫做熵?4.熵:宇宙的終極規則5.如何通俗的解釋交叉熵與相對熵?推薦閱讀:
※機器學習基礎與實踐(二)----數據轉換
※生成式和判別式
※cs231n筆記1-用KNN演算法進行圖像分類
※一起來學西瓜書!
※關於機器學習、數據科學面試的準備