天天看點

機器學習資訊論基礎

機器學習資訊論基礎

科學真理最重要的是兩點,一是能量,二是資訊。一是通過愛因斯坦的 E = m c 2 E=mc^{2} E=mc2,物質和能量其實是一回事,另外如何描寫和衡量資訊則是更重要的,愛因斯坦本人曾經說過随着時間的改變品質方程可能會錯,而這個資訊方程卻絕對不會,shannon。

資訊論是應用數學的一個分支,主要研究的是對一個信号能夠提供資訊的多少進行量化,最初用于研究在一個含有噪聲的信道上用離散的字母表來發送消息,指導最優的通信編碼等。

  • 熵是英文是entropy,來自于熱力學,表示系統在不受外部幹擾時,其内在最穩定的狀态,由于entropy是能量Q和溫度T的商,又與火有關,就被翻譯為了熵。溫度可以看作是讓例子有序化的能量,而熵可以看作是“無序化”的度量。”*

那麼如何度量這種無序性?能得到某個确定的值友善比較嗎?

關于資訊一個基本想法是一個不太可能的事情竟然發生了要比一個非常可能的事件的發生能提供更多的資訊,也就是說導緻那些“異常”事件發生的背後擁有着我們更想知道的東西,比如說“我每天都要吃飯”和“我每天都不吃飯”,哪個更有意思?再比如每天太陽都照常升起,抛一枚硬币,如果每次都是同一面朝上,完全可以預知它下一次出現的圖案,那麼還有意思嗎,它的出現有值得我們更加關注的理由嗎?是以以此來量化資訊的不确定性就得滿足

1.常見的,非常可能發生的事它的資訊量要少,但非負
2.單調性,越不可能發生的事件資訊量應該越多
3.獨立事件應該具有增量的性質,即二個硬币結果的資訊量應該是一個的兩倍
           

于是為了滿足上述各條件就産生了自資訊(self-information): I ( x ) = − l o g P ( x ) I(x)=-logP(x) I(x)=−logP(x)

這個公式完美的符合了所有的要求,能夠度量這樣單個變量發生的不确定性。

資訊熵代表的是随機變量或整個系統的不确定性,熵越大,随機變量或系統的不确定性就越大。即描述的是有關事件 X X X的所有可能結果的自資訊期望值: H ( X ) = − ∑ i = 1 n p i l o g p i H(X) = -\sum\limits_{i=1}^{n}p_i logp_i H(X)=−i=1∑n​pi​logpi​

其中n代表事件 X X X的所有n種可能的取值, p i p_i pi​代表了事件X為i時的機率,log為以2或者e為底或者其他但影響不大,不同底數的對數之間的差別隻存在一個常數的關系,但是如果使用 log2 作為底,那麼熵可以更容易被了解為編碼所有資訊所需要的最小位數(minimum numbers of bits) 。

機器學習資訊論基礎

跟熵(entropy)類似,交叉熵用于比較,衡量兩個事件X,Y的機率分布,經常做損失函數使用。從資訊壓縮的角度來看,它代表着每個詞(X,真實分布)平均要用幾個位(Y,非真實分布)來編碼,即計算 log(X) 在機率Y 下的期望: H ( X , Y ) = E p [ − l o g ( Y ) ] = − ∑ i = 1 n p ( x i , y i ) l o g p ( x i , y i ) H(X,Y) =E_p[-log(Y)]= -\sum\limits_{i=1}^{n}p(x_i,y_i)logp(x_i,y_i) H(X,Y)=Ep​[−log(Y)]=−i=1∑n​p(xi​,yi​)logp(xi​,yi​)

KL散度(Kullback-Leible Divergence ,相對熵)

KL是另一個用來衡量分布相似度的量,即從分布p到分布q的 KL 散度為它們之間的變化所帶來的資訊增益,而不是“距離”(KL散度不具有交換性,衡量不是空間而是兩個分布間的資訊損失):

D K L ( p ∣ ∣ q ) = E [ log ⁡ p ( x ) − log ⁡ ( q ( x ) ] = ∑ i = 1 N p ( x i ) ⋅ ( log ⁡ p ( x i ) − log ⁡ q ( x i ) ) D_{KL}(p||q)=E[\log{p(x)}-\log{(q(x)}]=\sum_{i=1}^Np(x_i)\cdot(\log{p(x_i)}-\log{q(x_i)}) DKL​(p∣∣q)=E[logp(x)−log(q(x)]=i=1∑N​p(xi​)⋅(logp(xi​)−logq(xi​))

直覺上KL散度就是求p和q之間的對數差在p上的期望。

而且 D K L ( p ∣ ∣ q ) = H ( p , q ) − H ( p ) D_{KL}(p||q)=H(p,q)-H(p) DKL​(p∣∣q)=H(p,q)−H(p),相當于交叉熵的值等于KL 散度加上一項資訊熵,那麼在最小化交叉熵時,H(x)就可視為一個常量而可以被省略,交叉熵就直接等價于 了KL 散度,而KL 散度可以更加簡單地從最大似然估計推導得到!但是在進行最大似然的時候需要注意到它不是“距離”,也就是說它不會對稱,即便它衡量的是兩個分布之間的差異,是以在一些情況下, D K L ( P p ∣ q ) D_{KL}(Pp|q) DKL​(Pp∣q)和 D K L ( q ∣ ∣ p ) D_{KL}(q||p) DKL​(q∣∣p)是不相等的,比如下圖:

機器學習資訊論基礎

其中設p是兩個高斯分布的混合,q是單個高斯。左邊最小化D_KL(p||q),q将多峰模糊到了一起,使高頻率品質放到所有峰上,而右邊則選擇了單個峰。簡而言之就是左邊的圖是在p的基礎上與q作比較,是以傾向于模糊多峰,而右邊是在單峰的q上于p作比較,注重單峰的高品質。是以利用這個性質可以是可以按照不同的需求去最小化KL散度來達到不同的效果。

像神經網絡的本質是函數的拟合近似,通過最小化損失函數來訓練,此時使用KL散度來最小化近似分布時的資訊損失,可以讓網絡學習到很多複雜的分布。 比如變分自編碼器 (Variational Auto-encoders, VAE)和自編碼器就可以采用。而且使用它會在使用sigmoid函數的網絡情況下,梯度下降時因為學習速率可以被輸出的誤差所控制進而能避免均方誤差損失函數學習速率降低的問題。

JS散度(Jensen-Shannon)

JS是KL散度的變體,嘗試解決KL散度的非對稱問題,即把式子變成:

J S ( p ∣ ∣ q ) = 1 2 K L ( p ∣ ∣ p + q 2 ) + 1 2 K L ( q ∣ ∣ p + q 2 ) JS(p||q)=\frac{1}{2} KL(p||\frac{p+q}{2})+\frac{1}{2} KL(q||\frac{p+q}{2}) JS(p∣∣q)=21​KL(p∣∣2p+q​)+21​KL(q∣∣2p+q​)

Wasserstein距離

KL和JS存在緻命的弱點就是,因為是衡量的分布,那麼如果兩個分布不重合,離得很遠,那麼KL散度值是沒有意義的,而且此時JS散度值會是一個常數,梯度為0,瞬間消失。這在類似GAN的訓練裡很不利,是以産生了Wasserstein距離:

W ( p , q ) inf ⁡ γ ∈ Π ( p , q )   E ( x , y ) ∼ γ ∥ x − y ∥ W(p,q) \inf_{\gamma \in \Pi(p,q)} \ \mathbb{E}_{(x,y) \sim \gamma} \Vert x - y \Vert W(p,q)γ∈Π(p,q)inf​ E(x,y)∼γ​∥x−y∥

應用詳細可以參看:https://blog.csdn.net/qq_39388410/article/details/97137145

總結:

熵:描述随機變量的不确定性,若p表示其分布,則 H ( X ) = − ∑ i = 1 n p ( x ) l o g p ( x ) H(X) = -\sum\limits_{i=1}^{n}p(x) logp(x) H(X)=−i=1∑n​p(x)logp(x)

聯合熵:兩個随機變量X,Y的聯合分布,用H(X,Y)表示

條件熵:在随機變量X發生的前提下,随機變量Y發生所新帶來的熵定義為Y的條件熵,用H(Y|X)表示,用來衡量在已知随機變量X的條件下随機變量Y的不确定性。且此時H(Y|X) = H(X,Y) – H(X)成立。

機器學習資訊論基礎

相對熵:KL散度,p(x)、q(x)是X中取值的兩個機率分布,則p對q(D(p||q) ≠D(q||p))的相對熵 D K L ( p ∣ ∣ q ) = E [ log ⁡ p ( x ) − log ⁡ ( q ( x ) ] D_{KL}(p||q)=E[\log{p(x)}-\log{(q(x)}] DKL​(p∣∣q)=E[logp(x)−log(q(x)],此式一定大于0

交叉熵:可以用來恒定在給定的真實分布下,使用非真實分布所指定的政策消除系統的不确定所需要付出的努力大小。

互資訊:度量 X和 Y共享的資訊,即度量知道這兩個變量其中一個,對另一個不确定度減少的程度。是以互資訊定義為X,Y的聯合分布和各自獨立分布乘積的相對熵,即用I(X,Y)表示: I ( X , Y ) = ∑ x , y p ( x , y ) l o g p ( x , y ) p ( x ) p ( y ) I(X,Y)=\sum\limits_{x,y}p(x,y)log\frac{p(x,y)}{p(x)p(y)} I(X,Y)=x,y∑​p(x,y)logp(x)p(y)p(x,y)​,且此時I(X,Y)=D(P(X,Y) || P(X)P(Y))

機器學習資訊論基礎

又由于H(Y|X) = H(X,Y) - H(X),是以就有了 I(X,Y)= H(X) + H(Y) - H(X,Y)。

#計算真實值與預測值互資訊
from sklearn import metrics

labels_true = [1, 0, 0, 1, 1, 1]
labels_pred = [0, 0, 1, 1, 2, 2]
metrics.adjusted_mutual_info_score(labels_true, labels_pred)  
           

從這個量化的角度看資訊熵是求在最優編碼時,最短的平均編碼長度。交叉熵是編碼不一定最優時(分布的估計不準),平均編碼長度。相對熵則是編碼不一定最優時,平均編碼長度相對于最小值的增值。而在機器學習中經常需要使用它們的關鍵思想來描述機率分布或者量化機率分布之間的相似性。

繼續閱讀