信息論(信息熵、KL散度、交叉熵以及互信息)

信息論是一門用數理統計方法來研究信息的度量、傳遞和變換規律的科學。
它主要是研究通訊和控制系統中普遍存在着信息傳遞的共同規律以及研究最佳解決信息的獲限、度量、變換、儲存和傳遞等問題的基礎理論。
這似乎與概率論和機器學習的關注點相去甚遠,但實際上兩者之間有着密切的聯繫。
因爲簡單地表示數據,需要將短碼字分配給高概率的位串,並將長碼字保留給低概率的位串。
這與自然語言中的情況類似,常見的單詞(如“a”、“the”、“and”)通常比罕見的單詞短得多。
這種情況下需要一個模型來預測哪些數據是可能的,哪些是不可能的,這也是機器學習的一箇中心問題。

信息熵

符合分佈pp的隨機變量XX的熵,表示爲H(X)H(X),是度量隨機變量不確定性的指標。
對於有 KK 個狀態的離散隨機變量,可以定義爲:

H(X)=k=1Kp(X=k)log2p(X=k) H(X) = - \sum_{k=1}^{K}p(X = k)\log_{2}p(X=k)
通常使用以2爲底的對數。對於離散隨機變量符合均勻分佈的時候信息熵最大。
因此,對於有KK個狀態的離散隨機變量,如果 p(x=k)=1/Kp(x=k) = 1 / K,此時的信息熵最大。
相反,最小的信息熵是隨機變量的分佈沒有不確定性,此時的信息熵爲0。

對於符合伯努利分佈的隨機變量X{0,1}X \in \{0, 1\},也可以表示爲 p(X=1)=θp(X=1) = \thetap(X=0)=1θp(X=0) = 1 - \theta
因此,信息熵可以表示爲:

H(X)=[p(X=1)log2p(X=1)+p(X=0)log2p(X=0)]=[θlog2θ+(1θ)log2(1θ)]H(X) = -[p(X = 1)\log_{2}p(X=1) + p(X = 0)\log_{2}p(X=0)] = -[\theta\log_{2}\theta + (1-\theta)\log_{2}(1-\theta)]

θ=0.5\theta=0.5 時,也就是隨機變量符合均勻分佈,此時有最大的信息熵爲1。

KL散度

兩個概率分佈ppqq的差異度量指標可以使用KL散度,或者稱之爲相對熵,定義爲:

KL(pq)=kpklogpkqk=kpklogpkkpklogqk=H(p)+H(p,q)KL(p||q) = \sum_{k}p_{k}\log \frac{p_{k}}{q_{k}} = \sum_{k}p_{k}\log p_{k} - \sum_{k}p_{k}\log q_{k} = -H(p) + H(p, q)

KL散度不是距離,因爲它不是對稱的,KL散度的對稱版本是JS散度,定義爲:

JS(p1,P2)=0.5KL(p1q)+0.5KL(p2q), q=0.5p1+0.5p2JS(p_1, P_2) = 0.5KL(p_1 || q) + 0.5KL(p_2 || q), \ q = 0.5p_1 + 0.5p_2

H(p,q)=kpklogqkH(p, q) = \sum_{k}p_{k}\log q_{k} 稱之爲交叉熵。
交叉熵是指使用分佈qq編碼來自分佈pp的數據所需的平均比特數。

KL散度是指使用分佈qq編碼來自分佈pp的數據所需的平均額外比特數。
自然地,KL(pq)0KL(p||q) \geq 0,並且只有當p=qp=q的時候KL散度等於0。

數據編碼

數據編碼在某些情況下需要對數據進行壓縮,使用最有效的編碼表示原始的數據。

壓縮就是找出文件內容的概率分佈,將那些出現概率高的部分代替成更短的形式。所以,內容越是重複的文件,就可以壓縮地越小。

相應地,如果內容毫無重複,就很難壓縮。極端情況就是,遇到那些均勻分佈的隨機字符串,往往連一個字符都壓縮不了。

壓縮就是一個消除冗餘的過程,相當於用一種更精簡的形式,表達相同的內容。而信息熵可以看作是數據壓縮的一個臨界值。

一般情況下,假設文件中的字符符合均勻分佈,而一個字符在文件中出現的概率爲pp,那麼在這個位置上最多可能出現 1/p1/p 種情況,
也就是需要 log21plog_{2}\frac{1}{p} 個比特表示文件中的字符。

假設一個文件由nn 個部分組成,每個部分在文件中出現的概率爲 pip_{i},則壓縮文件所需的比特數至少爲:

log2(1p1)+log2(1p2)+...+log2(1pn)=log2(1pi)log_{2}(\frac{1}{p_{1}}) + log_{2}(\frac{1}{p_{2}}) + ... + log_{2}(\frac{1}{p_{n}}) = \sum log_{2}(\frac{1}{p_{i}})

則平均每個部分所佔用的比特數爲,即:

p1log2(1p1)+p2log2(1p2)+...+pnlog2(1pn)=pilog2(1pi)=E(log2(1p))p_{1} * log_{2}(\frac{1}{p_{1}}) + p_{2} * log_{2}(\frac{1}{p_{2}}) + ... + p_{n} * log_{2}(\frac{1}{p_{n}}) = \sum p_{i} * log_{2}(\frac{1}{p_{i}}) = E(log_{2}(\frac{1}{p}))

霍夫曼編碼就是利用了這種大概率事件分配短碼的思想,而且可以證明這種編碼方式是最優的。
霍夫曼編碼使用變長編碼表對源符號(如文件中的一個字母)進行編碼,其中變長編碼表是通過一種評估來源符號出現機率的方法得到的,
出現機率高的字母使用較短的編碼,反之出現機率低的則使用較長的編碼,這便使編碼之後的字符串的平均長度、期望值降低,從而達到無損壓縮數據的目的。

互信息

考慮兩個隨機變量XXYY,假設想知道一個變量對另一個變量的瞭解程度,可以計算相關係數,但這隻對實值隨機變量有定義,而且,這是一個非常有限的相關性度量。
一個更一般的方法是確定聯合概率分佈p(X,Y)p(X, Y)和分佈p(X)p(Y)p(X)p(Y)的相似程度,這被稱之爲互信息,定義爲:

I(X;Y)=KL(p(X,Y)p(X)p(Y))=xyp(x,y)logp(x,y)p(x)p(y)I(X; Y) = KL(p(X, Y) || p(X)p(Y)) = \sum_{x}\sum_{y}p(x, y)\log \frac{p(x, y)}{p(x)p(y)}

這裏的I(X,Y)0I(X, Y) \geq 0,並且在 p(X,Y)=p(X)p(Y)p(X, Y) = p(X)p(Y)時取等號,意味着隨機變量相互獨立的時候互信息爲0。

爲了深入理解互信息的含義,可以用聯合熵和條件熵來重新表達互信息:

I(X;Y)=H(X)H(XY)=H(Y)H(YX)I(X; Y) = H(X) - H(X| Y) = H(Y) - H(Y|X)

H(YX)H(Y|X)是條件熵,定義爲 H(YX)=xp(x)H(YX=x)H(Y|X)=\sum_{x}p(x)H(Y|X =x),因此,可以將XXYY之間的互信息解釋爲觀察YYXX的不確定性的減少,
或者說是觀察XXYY的不確定性的減少。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章