1. 程式人生 > >與資訊熵相關的概念梳理(條件熵/互資訊/相對熵/交叉熵)

與資訊熵相關的概念梳理(條件熵/互資訊/相對熵/交叉熵)

夏農資訊量

資訊量表示不確定性的大小。 資訊量的單位是位元(bit)。

=log1p=logp(2)

上式中,p越小,則不確定性越大,包含的資訊量就越多。比如32支球隊,在無任何先驗資訊的前提下,用二分法猜冠軍隊伍,最多猜5次,那麼資訊量就是log132=5

資訊熵(Entropy)

用於衡量資訊量和變數的不確定度。熵越大,所涵蓋的資訊量越大,變數的不確定度越大。對於任意一個隨機變數X,它的熵定義如下:

H(X)=xXP(x)logP(x)
當X中每個x的概率P(x)相等時,X的不確定度最大,熵最大,也就是其涵蓋的資訊量最大。

熵的概念來源於熱力學中的熵,代表系統中的混亂程度(也就是不確定度)。熵越大,系統越混亂,越接近與均勻分佈。(很容易想象,如果系統的分佈很不均勻,也就是有某種規律在裡面,那麼系統的混亂程度就低)

條件熵(Conditional Entropy)

條件熵的含義是:假定X和Y是兩個隨機變數。現在我們知道X和Y同時出現的概率(聯合分佈),以及在Y取不同值的前提下X的概率分佈(條件概率分佈)。那麼定義X在Y的條件下的條件熵為:

H(X|Y)=xX,yYP(x,y)logP(x|y)
可以證明,H(X)>=H(X|Y)。也就是說多了Y的資訊後,關於X的不確定性下降了。在統計語言模型中,如果把Y看成是前一個字,那麼在數學上就證明了二元模型的不確定性小於一元模型。

當Y與X完全無關(獨立)時,H(X|Y)=H(X)

同理,可以定義有兩個條件的條件熵

H(X|Y,
Z)=xX,yY,zZP(x,y,z)logP(x|y,
z)

還可以證明H(X|Y)>=H(X|Y,Z)。也就是說,三元模型應該比二元的好。

互資訊(Mutual Information)

互資訊用來表示事件X和Y的相關性。互資訊是一個取值在0到min(H(X),H(Y))之間的函式。當X和Y完全相關時,它的取值是H(X),同時H(X)=H(Y);當X和Y完全不相關時,X與Y的互資訊為0。互資訊的公式如下:

I(X;Y)=xX,yYP(x,y)logP(x,y)P(x)P(y)=H(X)H(X|Y)

相對熵(Relative Enrtopy)

又叫KL散度(Kullback-Leibler Divergence)


KL(f(x)||g(x))=xXf(x)logf(x)g(x)
相對熵也用來衡量相關性,但和變數的互資訊不同,它用來衡量兩個取值為正數的函式的相似性。

不必關心公式本身,只要記住下面三條結論就好:

  1. 如果兩個函式完全相同,那麼它們的相對熵為0
  2. 相對熵越大,兩個函式的差異越大;相對熵越小,兩個函式的差異越小
  3. 對於概率分佈或者概率密度函式(>0),如果取值都大於0,那麼相對熵可以度量兩個隨機分佈的差異性

需要注意,相對熵是不對稱的,即:

KL(f(x)||g(x))KL(g(x)||f(x))
因此為了方便,詹森和夏農剔除一種新的相對熵計算方法,將不等式兩邊取平均,即:
JS(f(x)||g(x))=12[KL(f(x)||g(x))+KL(g(x)||f(x))]

交叉熵(Cross-Entropy)

對於一個隨機事件,其真實概率分佈為p(x),從資料中得到的概率分佈為q(x),則我們定義,交叉熵為:

H(p,q)=ip(x)log1q(x)=ip(x)logq(x)
理解:

用p的熵來衡量識別一個真實分佈的資訊量:H(p)=plog1p

用q來估計真實分佈為p的樣本的資訊量:H(p,q)=plog1q

則估計多出來的冗餘資訊量D(p||q)=H(p,q)H(p)=plogpq (就是KL散度)

在機器學習中,通常設定p為真實標記的分佈,q為訓練後模型預測標記的分佈。很容易發現:

H(p,q)=H(p)+DKL(p||q)
即:pq的交叉熵=p的資訊熵+pq的KL散度(相對熵)

由於真實分佈的資訊熵H(p)是固定不變的,因此我們在機器學習中就用交叉熵作為損失函式。

顯然,H(p,q)H(p)