機器學習領域有一個十分有魅力的詞:熵。然而究竟什么是熵,相信多數人都能說出一二,但又不能清晰的表達出來。
而筆者對熵的理解是:“拒絕學習、拒絕提升的人是沒有未來的,也只有努力才能變成自己想成為的人”。
下圖是對熵的一個簡單描述:
熵可以理解為是一種對無序狀態的度量方式。那么熵又是如何被用在機器學習中呢?
在機器學習領域中,量化與隨機事件相關的預期信息量以及量化概率分布之間的相似性是常見的問題。針對這類問題,利用香農熵以及衍生的其他熵概念去度量概率分布的信息量是個很好的解決方案。本文會盡可能用簡單的描述分享自己對各種熵的定義及理解,歡迎交流討論。
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散度不具有對稱性:從分布P到Q的距離通常並不等於從Q到P的距離。
7. 互信息
互信息用來表示兩個變量X與Y之間是否有關系,以及關系的強弱。
用公式可以表示為:
因此,可認為變量X與Y的互信息就是信息熵H(X)與條件熵H(X|Y)的差。
8. 熵在機器學習中的應用
針對熵的應用,個人總結主要有以下幾點:
- 在貝葉斯網絡中,會假設一個先驗分布,目的是為了反映隨機變量在觀測前的不確定性。在進行模型訓練時,減小熵,同時讓后驗分布在最可能的參數值周圍形成峰值。
- 在做分類任務的參數估計時,尤其是在神經網絡中,交叉熵往往作為損失函數用來更新網絡權重。
- 在樹模型算法中,熵的作用也是不可或缺,尤其是在使用ID3信息增益、C4.5增益率時,通過使用熵來划分子節點,從而可以構造出整棵樹。
離散分布熵的最大值對應均勻分布,連續情況對應的是高斯分布時對應的熵最大
轉:https://www.cnblogs.com/wkang/p/10068475.html