天天看點

matlab圖像資訊熵交叉熵,【機器學習】資訊量,資訊熵,交叉熵,KL散度和互資訊(資訊增益)...

首先先強烈推薦一篇外文部落格Visual Information Theory這個部落格的部落客colah是個著名的計算機知識科普達人,以前很是著名的那篇LSTM講解的文章也是他寫的。這篇文章詳細講解了資訊論中許多基本概念的前因後果,并且很是的直覺用了大量的圖檔,和形象化的解釋。git

資訊量

資訊量用一個資訊所須要的編碼長度來定義,而一個資訊的編碼長度跟其出現的幾率呈負相關,由于一個短編碼的代價也是巨大的,由于會放棄全部以其為字首的編碼方式,好比字母”a”用單一個0做為編碼的話,那麼為了不歧義,就不能有其餘任何0開頭的編碼詞了.是以一個詞出現的越頻繁,則其編碼方式也就越短,同時付出的代價也大.

github

I=log2(1p(x))=−log2(p(x))

資訊熵

而資訊熵則表明一個分布的資訊量,或者編碼的平均長度

web

H(p)=∑xp(x)log2(1p(x))=−∑xp(x)log2(p(x))

即資訊量的均值

交叉熵 cross-entropy

交叉熵本質上能夠當作,用一個猜想的分布的編碼方式去編碼其真實的分布,獲得的平均編碼長度或者資訊量

機器學習

Hp(q)=∑xq(x)log2(1p(x))

如上面的式子,用猜的的p分布,去編碼本來真是為q的分布,獲得的資訊量

交叉熵 cross-entropy在機器學習領域的做用

交叉熵cross-entropy在機器學習領域中常常做為最後的損失函數

為何要用cross-entropy呢,他本質上至關于衡量兩個編碼方式之間的內插補點,由于隻有當猜想的分布約接近于真實分布,則其值越小。

好比根據本身模型獲得的A的幾率是80%,獲得B的幾率是20%,真實的分布是應該獲得A,則意味着獲得A的幾率是100%,是以

svg

L=−∑iyilog(p(xi))+(1−yi)log(1−p(xi))

在LR中用cross-entry比平方偏差方法好在:

在LR中,若是用平方損失函數,則損失函數是一個非凸的,而用cross-entropy的話就是一個凸函數

用cross-entropy作LR求導的話,獲得的導數公式以下

∂L∂θj=−∑i(yi−p(xi))xij

而用平方損失函數的話,其求導結果為

∂L∂θj=−∑i(yi−p(xi))p′(xi)

平方損失函數中會出現p′(xi)而sigmoid函數的導數會出現梯度消失的問題【一些人稱之為飽和現象】

KL散度

KL散度/距離是衡量兩個分布的距離,KL距離通常用D(q||p)或者Dq(p)稱之為q對p的相對熵函數

Dq(p)=Hq(p)−H(p)=∑xq(x)log2(q(x)p(x))

KL散度與cross-entropy的關系

用圖像形象化的表示兩者之間的關系能夠以下圖:

matlab圖像資訊熵交叉熵,【機器學習】資訊量,資訊熵,交叉熵,KL散度和互資訊(資訊增益)...

上面是q所含的資訊量/平均編碼長度H(p)

第二行是cross-entropy,即用q來編碼p所含的資訊量/平均編碼長度|或者稱之為q對p的cross-entropy

第三行是上面二者之間的內插補點即為q對p的KL距離post

非負性證明

根據上圖顯然其為非負的,可是怎麼去證明呢,仍是利用琴生不等式

學習

Dq(p)=∑xq(x)log2(q(x)p(x))

=−∑xq(x)log2(p(x)q(x))

=−E(log2(p(x)q(x)))

≥log2E(p(x)q(x))

=log2∑xq(x)(p(x)q(x))

=log2∑xp(x)

由于

∑xp(x)=1

是以上式

Dq(p)≥0

非負性證明完成

聯合資訊熵和條件資訊熵

下面幾條咱們要說的是聯合分布中(即同一個分布中)的兩個變量互相影響的關系,上面說的KL和cross-entropy是兩個不一樣分布之間的距離度量【我的了解是KL距離是對于同一個随機事件的不一樣分布度量之間的距離,是以是1.同一随機事件*2.不一樣分布*】。

matlab圖像資訊熵交叉熵,【機器學習】資訊量,資訊熵,交叉熵,KL散度和互資訊(資訊增益)...

編碼

聯合資訊熵:

atom

H(X,Y)=∑x,yp(x,y)log2(1p(x,y))

條件資訊熵:

H(X|Y)=∑yp(y)∑xp(x|y)log2(1p(x|y))

=∑x,yp(x,y)log2(1p(x|y))

舉個例子,更容易了解一些,好比天氣是晴天仍是陰天,和我穿短袖仍是長袖這兩個事件其能夠組成聯合幾率分布

H(X,Y)

是以對應着上面的第一條,而對于

H(x)

來講就是下面第二橫行,由于兩個時間加起來的資訊量确定是大于單一一個事件的資訊量的。像

H(x)

對應着今每天氣分布的資訊量。

而今每天氣和我今天穿衣服這兩個随機幾率事件并非獨立分布的,是以若是已知今每天氣的狀況下,個人穿衣的資訊量/不肯定程度是減小了的。

是以當已知

H(x)

這個資訊量的時候,聯合分布

H(X,Y)

剩餘的資訊量就是

條件熵:

H(Y|X)=H(X,Y)−H(X)

根據上面那個圖,也能夠通俗的了解為已知X的狀況下,H(X,Y)剩餘的資訊量

互資訊(資訊增益)

互資訊就是一個聯合分布中的兩個資訊的糾纏程度/或者叫互相影響那部分的資訊量

I(X,Y)=H(X)+H(Y)−H(X,Y)

I(X,Y)=H(Y)−H(Y|X)

決策樹中的資訊增益就是互資訊,決策樹是采用的上面第二種計算方法,即把分類的不一樣結果當作不一樣随機事件Y,而後把目前選擇的特征當作X,則資訊增益就是目前Y的資訊熵減去已知X狀況下的資訊熵。

經過下圖的刻畫更為直覺一些

matlab圖像資訊熵交叉熵,【機器學習】資訊量,資訊熵,交叉熵,KL散度和互資訊(資訊增益)...

以上圖能夠清楚的看到互資訊I(X,Y)的不一樣求法

這裡還有另一個量叫variation of information【不知道中文名叫啥】

V(X,Y)=H(X,Y)−I(X,Y)

Variation of information度量了不一樣随機變量之間的差異,若是

V(X,Y)=0

說明這兩個變量是徹底一緻的,其約大說明兩個變量越獨立。

這裡再注意一下Variation of information和KL距離的差異:

Variation of information是聯合分布中(即

同一個分布中)的兩個變量互相影響的關系

KL和cross-entropy是

兩個不一樣分布之間的距離度量

非負性證明

I(X,Y)=H(X)+H(Y)−H(X,Y)

=−∑x,yp(x,y)(log(p(x))+log(p(y))−log(p(x,y)))

=−∑x,yp(x,y)(log(p(x)p(y)p(x,y)))

=D(P(X,Y)||P(X)P(Y))

即互資訊能夠轉化成兩個分布

P(X,Y)

P(X)P(Y)

之間的KL距離,而KL距離的非負性在上面已經被證明過了,是以

I(X,Y)≥0