從熵(Entropy)到條件熵(Conditional Entropy)和互信息(Mutual Information)

Ac Studio
Jul 23, 2023

--

2021.11.21 Paris

淺談訊源編碼一文中我們介紹了熵的概念,熵是信息論(Information Theory)的基礎,也是幫助我們量化資訊量的一個重要工具。熵作為一切的原點,衍伸出了非常多的概念,本文將介紹條件熵、互信息等想法,進一步擴展熵的應用。

條件熵

試想有兩個隨機變數X和Y,在已知Y的情況下我們對X有多少的不確定性? 要計算這個問題,我們就要引入條件熵的概念。條件熵的公式和熵一樣,只差在機率換成了條件機率,如下:

圖(一):條件熵

注意到在這個公式中我們已知隨機變數Y是yj,我們想知道的是隨機變數X的不確定性,因此就和熵的公式一樣,我們需要考慮X所有可能的值,同時考慮到Y對X的影響(也就是條件機率)。

如果X和Y不獨立,代表Y的值會影響X,因此知道Y可以降低我們對X的不確定性,也就是說:

圖(二):條件熵與熵的大小

那麼如果我們還不知道隨機變數Y的值,但是想要評估知道Y的情況下對X的不確定性呢? 算H(X|yj)的期望值就可以了:

圖(三):條件熵的公式

舉一個具體一點的例子,假設隨機變數X={x1, x2},隨機變數Y={y1, y2, y3},要計算H(X|Y),按照上述的公式,我們已經知道我們要分別計算三個值:

圖(四):三個條件熵

而這三個條件熵的算法如圖一,我們以H(X|y1)為例:

圖(五):H(X|y1)的算法

這樣我們就能算出H(X|Y)了。

互信息

上節提到,條件熵代表已知一個隨機變數下,對另一個隨機變數的不確定性。那麼要如何計算一個隨機變數能夠為另一個隨機變數帶來多少資訊呢? 假設有一個隨機變數X,其熵為H(X),而確定另一個隨機變數Y的情況下條件熵為H(X|Y)。

換句話說,在知道Y的瞬間,我們的不確定性從H(X)降低成了H(X|Y),也就是說我們得到了H(X)-H(X|Y)的資訊量,此獲得的資訊量稱為X和Y的互信息,寫作I(X;Y)。

在X和Y完全不相干的情況下,了解Y對了解X完全沒有幫助,H(X)=H(X|Y),則I(X;Y)=H(X)-H(X|Y)=0。也就是說,I(X;Y)永遠大於等於0。也可以說,H(X)永遠大於等於H(X|Y)

接著我們來推導互信息的公式,在淺談訊源編碼中我們提到熵的公式為:

圖(六):熵的公式

而條件熵的公式為:

圖(七):條件熵的公式

因此,互信息的公式為:

圖(八):互信息的公式

其中P(xi|yj)=P(xi,yj)/P(yj) (看不懂的話不妨將P(yj)移項思考看看),我們得到:

圖(九):互信息的公式

這個漂亮的公式有一個特別的地方,就是X和Y互換完全不影響結果,也就是說H(X)-H(X|Y)=H(Y)-H(Y|X)。最後我們以下圖來視覺化條件熵和互信息的關係:

圖(十):視覺化兩個隨機變數的互信息與熵

兩個完整的大圓分別是H(X)和H(Y),其中兩個圓交疊的部分是I(X;Y),兩個圓不重疊的部分則是H(X|Y)和H(Y|X)。忘記這些名詞的關係時,畫出這張圖就可以很輕易的理解了。

當然隨機變數不一定是兩個,也可能有三個,而三個隨機變數的互信息也大同小異:

圖(十一):三個隨機變數的互信息
圖(十二):視覺化三個隨機變數的互信息與熵

I(X;Y|Z)稱為條件互信息,I(X;Y|Z)=I(X;Y)-I(X;Y;Z),礙於篇幅就放到以後的文章再介紹。

--

--