天天看點

資訊熵,聯合熵,條件熵,交叉熵,相對熵+例子

  1. 資訊熵(Information Entropy)

所謂熵也就是資訊的不确定性,也就是混亂程度,舉個例子便于了解。

我們玩一個大轉盤,有32個格子,分别标了1-32的數字,格子大小都一樣,那麼轉動以後每個格子被指針指到的機率也是一樣的。那麼在轉盤轉動之前我們要下注的話就很糾結了,随便下哪一個都一樣。這時候整個系統的資訊是非常混亂無序的。

我現在轉好了讓你猜是哪個數字,你會怎麼猜?我會問,是1-16裡面的麼?如果不是,那麼我會猜:是17到28裡的麼?最壞情況我需要猜五次,才能确定到底是哪個數字。

如果每次猜對是1,猜錯是0,那麼表達出來就可能是10101,一共五個數字可以表示最後的結果,我們說這個數字的資訊量是5

5 = log32(這裡的log都是以2為底)

我們變化一下,假如其中數字1的格子占了31份,那麼我們要猜是不是1,那麼第一個問題肯定會問,是不是1啊,有31/32的幾率會猜對,這時候整個系統就沒有那麼混亂了。

為了衡量這個混亂程度,資訊學裡引入了熵的概念, H(xi)表示某個變量的熵

資訊熵,聯合熵,條件熵,交叉熵,相對熵+例子

整個系統的熵:

資訊熵,聯合熵,條件熵,交叉熵,相對熵+例子

如果每個數字的機率都是1/32的話,整個系統的熵是5, 也是最大值,某個數字機率變大都會使得整個系統的熵減少->變的更有序和好猜。

為了友善後面引入其他熵的概念,再看一個列子

我們有10個球,5個白的,5個黑的,那麼設随機變量X為取一個球,顔色的機率分布

P(白) = p(黑) = 0.5

H(X) = -0.5log(0.5) - 0.5log(0.5) = 1

  1. 聯合熵(Joint Entropy)

兩個随機變量X,Y的聯合分布,可以形成聯合熵(Joint Entropy),用H(X, Y)表示。

即:H(X, Y) = -Σ p(x, y) log(x, y)

還是上面的列子,這次我們弄A和B兩個盒子,把10個球先放進去。記随機變量X為取到某種顔色球的機率分布,随機變量Y為取到某個盒子的機率分布

第一次我們把5個黑球放進A盒子,5個白球放進B盒子,聯合機率分布如下:

資訊熵,聯合熵,條件熵,交叉熵,相對熵+例子

第二次我們把2個黑球3個白球放入A盒,3個黑球2個白球放入B盒,聯合機率分布如下:

資訊熵,聯合熵,條件熵,交叉熵,相對熵+例子

根據熵和聯合熵的公式計算一下:

第一次的:

H(X,Y) = -0.5log(0.5) - 0.5log(0.5) - 0log(0) - 0log(0)= 1

H(X) = -0.5log(0.5) - 0.5log(0.5)= 1

H(Y) = -0.5log(0.5) - 0.5log(0.5)= 1

第二次的,不管取的哪個盒子,取到黑球和白球的機率還是一樣的0.5:

H(X,Y) = -0.2log(0.2) - 0.3log(0.3) -0.2log(0.2) - 0.3log(0.3)= 1.97

H(X) = -0.5log(0.5) - 0.5log(0.5)= 1

H(Y) = -0.5log(0.5) - 0.5log(0.5)= 1

于是可以看出來,單論X和Y的不确定性,其實兩種分類是一樣的,資訊熵都是1,但是聯合熵就不同了,一個是1,一個是1.97。第一個分類為什麼是1呢,因為我們确定了盒子就确定了球的顔色,整個系統是非常有序的,需要表達的資訊量和表達盒子的資訊量是一樣的。但第二種分法,我們抽出一個盒子以後,對球的顔色還是不太知道,不過已經比原來不分盒子要好點,最少我們知道哪種顔色多一個,于是聯合熵就沒有等于兩個随機變量的資訊熵之和,而是小了一點。

這裡再說聯合熵所表達的實體含義是,對一個兩個随機變量組成的随機系統,我們可以先觀察一個随機變量擷取資訊量,觀察完後,我們可以在擁有這個資訊量的基礎上觀察第二個随機變量的資訊量。如果兩個随機變量毫無關系,那麼H(X, Y) = H(X) + H(Y)

  1. 條件熵(Conditional entropy)

條件熵 H(Y|X) 表示在已知随機變量 X 的條件下随機變量 Y 的不确定性。條件熵 H(Y|X) 定義為 X 給定條件下 Y 的條件機率分布的熵對 X 的數學期望:

資訊熵,聯合熵,條件熵,交叉熵,相對熵+例子

我們再對上面的兩種分類計算一下條件熵:

第一次的:

H(Y|X) = -0.5log(1) - 0log(0) - 0log(0) - 0.5log(1) = 0

第二次的:

H(Y|X) = -0.2log(0.4) - 0.3log(0.6) - 0.3log(0.6) - 0.2log(0.4) = 0.97

驚奇的發現:

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

其實條件熵就是在X确定了的情況下,我們要知道Y還需要多少資訊量,第一種分法,盒子一确定我們就知道球的顔色了,于是條件熵是0,第二種分法,确定了盒子我們還是得接着猜,于是條件熵接近于H(Y),第一次分類沒啥用。。。這裡就回想起了之前看得決策樹算法ID3,其實就是做了一次分類之後,再看确定分類還需要多少資訊量——條件熵

https://blog.csdn.net/weixin_43909872/article/details/85206009

條件熵H(Y|X) = H(X,Y) - H(X)的證明:

資訊熵,聯合熵,條件熵,交叉熵,相對熵+例子
  1. 交叉熵(Cross Entropy)

其實交叉熵應該放在相對熵前面講。

相對熵用來衡量在給定的真實分布下,使用非真實分布所指定的政策消除系統的不确定性所需要付出的努力的大小,也就是需要的資訊量。

最低的交叉熵就是原分布的資訊熵,此時p(x) = q(x)

資訊熵,聯合熵,條件熵,交叉熵,相對熵+例子

那麼這個交叉熵到底好不好呢,得跟原來的真實分布做比較,于是有了下面的相對熵。

具體例子也在下面一起說。

  1. 相對熵 (Relative entropy),也稱KL散度 (Kullback–Leibler divergence)

設 p(x)、q(x) 是 離散随機變量 X 中取值的兩個機率分布,則 p 對 q 的相對熵是:

資訊熵,聯合熵,條件熵,交叉熵,相對熵+例子

相對熵用來衡量在給定的真實分布下,使用非真實分布所指定的政策消除系統的不确定性所需要付出的努力的大小。

回到前面32數字轉盤的列子,假設一個數字占了16格,其他的31個數字平分剩下的16格,那麼真實分布就是:1/2,1/62,1/62.。。。。

如果我們要玩這個轉盤,肯定要下重注在數字1上,其他的政策都不太聰明

那麼如何來衡量這個“不太聰明”的程度呢?用相對熵!

先來看下上面的公式,p(x)是真實分布,q(x)為非真實分布,如果我們按照真實分布去猜,那麼這個公式結果就是0, 因為p(x) = q(x)

但是我們現在用的政策是平均下注,也就是認為一個數字占一格,那麼q(x1) = 1/32,而p(x1) = 1/2,很明顯p(x)/q(x) = 16,其他的因為p(x)占比較少,算出來的交叉熵肯定是大于1的,說明選擇的政策不符合真實分布。

再對相對熵的公式做一些變形:

資訊熵,聯合熵,條件熵,交叉熵,相對熵+例子

DKL(p||q)=H(p,q)−H§(當用非真實分布 q(x) 得到的平均碼長比真實分布 p(x) 得到的平均碼長多出的比特數就是相對熵)

資訊熵,聯合熵,條件熵,交叉熵,相對熵+例子

因為H(p)是固定的,是以在機器學習裡我們一般用交叉熵做loss函數

繼續閱讀