機器學習基礎--資訊論相關概念總結以及了解
目錄
-
- 1. 資訊量(熵)
- 2. KL散度
- 3. 交叉熵
- 4. JS散度
摘要:
熵(entropy)、KL 散度(Kullback-Leibler (KL) divergence)和交叉熵(cross-entropy)以及JS散度,在深度學習以及機器學習很多地方都用的到,尤其是對于目标函數和損失函數的定義。在邏輯回歸問題中,目标函數就是用交叉熵定義的。
資訊論是應用數學的一個分支,主要研究的是對一個信号包含資訊的多少進行量化。資訊論的基本想法是一個不太可能的事件發生了,要比一個非常可能的事件發生,能提供更多的資訊。事件發生的可能性大,資訊量少;事件發生的可能性小,其資訊量大。
比如:早上你出門碰到一個朋友,他告訴你今天是晴天,這句話的資訊量就很小,因為天氣你已經知道了,而且是個确定性事件,等同于廢話。
要是他再告訴你,明天可能下雪,這句話的資訊量就比剛剛的話要大好多。
可以看出資訊量的大小與事件發生的可能性成反比。
- 非常可能發生的事件資訊量要比較少。在極端情況下,確定能夠發生的事件應該沒有資訊量。
- 較不可能發生的事件具有更高的資訊量。
-
獨立事件應具有增量的資訊。例如,投擲的硬币兩次正面朝上傳遞的資訊量,應該是投擲一次硬币正面朝上的資訊量的兩倍。
為了滿足上面 3 個性質,定義了一事件 \(x=X\) 的自資訊(self-information)為:
\[I(x)=-log(P(x)) \tag{1}
\]
使用 \(x\) 表示随機變量,使用 \(x_1,x_2,...,x_i,...,x_N\) 或者 \(x\) 表示随機變量 \(x\) 可能的取值。當式(1)中 log 以 2 為底數時,\(I(x)\) 機關是比特(bit)或者香農(shannons);當 \(log\) 以自然常數 \(e\) 為底數時,\(I(x)\) 機關是奈特(nats)。這兩個機關之間可以互相轉換,通過比特度量的資訊隻是通過奈特度量資訊的常數倍。(使用對數換底公式轉化)在機器學習中大部分是以\(e\)為底。
自資訊隻能處理單個的輸出。我們可以使用香農熵(Shannon entropy)來對整個機率分布中的不确定性總量進行量化:
\[H(P)=H(x)=
E_{x∼P}[I(x)]=\sum_{i=1}^NP(x_i)I(x_i)=−\sum_{i=1}^NP(x_i)logP(x_i)\tag{2}
式(2)後兩個等号是在離散型變量的情況下成立,對于連續型變量,則需要求積分。當 x 是連續的,香農熵被稱為微分熵(differential entropy)。
熵的一些性質:
- 那些接近确定性的分布(輸出幾乎可以确定)具有較低的熵。
-
那些接近均勻分布的機率分布具有較高的熵。
當一個事件的發生機率為\(p(x)\) 時,它的資訊量就是\(−log(p(x))\)。那麼我們将這個事件的所有可能發生的結果都羅列出來,求的該事件資訊量的期望(資訊量的算術平均)
熵就是用來描述事件發生的不确定性。事件所含有的資訊
從KL散度的角度了解熵的概念将熵的定義式寫為:
\[H(P)=log(\frac{1}{P(x)})
\(1\)為确定性事件,則事件\(P\)的熵(自資訊)為與确定性事件的差異,也就是\(P\)變成确定性事件所需要的資訊。
KL 散度可以用來衡量兩個分布的差異。
在機率論與統計中,我們經常會将一個複雜的分布用一個簡單的近似分布來代替。KL 散度可以幫助我們測量在選擇一個近似分布時丢失的資訊量。
假設原機率分布為 \(P(x)\),近似機率分布為 \(Q(x)\),則使用 KL 散度衡量這兩個分布的差異:
\[D_{KL}(P||Q)=E_{x∼P}[log(\frac{P(x)}{Q(x)})]=E_{x∼P}[logP(x)−logQ(x)] \tag{3}
如果 x 是離散型變量,式(3)還可以寫成如下形式:
\[D_{KL}(P||Q)=\sum_{i=1}^NP(x_i)logP(x_i)Q(x_i)=\sum_{i=1}^NP(x_i)[logP(x_i)−logQ(x_i)] \tag{4}
對于連續型變量,則式(4)不能這麼寫,需要求積分。如果 x 是連續型變量,則式(3)中機率分布最好用 \(p(x)\)和\(q(x)\) 代替 \(P(x)\)和\(Q(x)\)。習慣上,用小寫字母表示連續型變量的機率密度函數(probability density function,PDF),用大寫字母表示離散型變量的機率品質函數(probability mass function,PMF)。(PDF和PMF都是用來描述機率分布)
KL 散度的一些性質:
- KL 散度是非負的。
- KL 散度為 0,當且僅當 P 和 Q 在離散型變量的情況下是相同的分布,或者在連續型變量的情況下是“幾乎處處”相同的。
- KL 散度不是真的距離,它不是對稱的,即 \(D_{KL}(P||Q)≠D_{KL}(Q||P)\),故稱其為散度。
交叉熵(cross-entropy)和 KL 散度聯系很密切。同樣地,交叉熵也可以用來衡量兩個分布的差異。以離散型變量 x 為例:
\[H(P,Q)=−E_{x∼P}logQ(x)=−\sum_{i=1}^NP(x_i)logQ(x_i) \tag{5}
交叉熵 H(P,Q)=H(P)+DKL(P||Q)。其中 H(P)(即 H(x) ,其中 x∼P)為分布 P 的熵,DKL(P||Q) 表示兩個分布的 KL 散度。當機率分布 P(x) 确定了時,H(P) 也将被确定,即 H(P) 是一個常數。在這種情況下,交叉熵和 KL 散度就差一個大小為 H(P) 的常數。下面給出一個簡單的推導:
我們将式(4)中 KL 散度的公式再進行展開:
\[D_{KL}(P||Q)=\sum_{i=1}^NP(x_i)[logP(x)−logQ(x)]=\sum_{i=1}^NP(x_i)logP(x_i)−\sum_{i=1}^NP(x_i)logQ(x_i)=−[−\sum_{i=1}^NP(x_i)logP(x_i)]+[−\sum_{i=1}^NP(x_i)logQ(x_i)]=−H(P)+H(P,Q) \tag{6}
即 \(H(P,Q)=H(P)+D_{KL}(P||Q)\)。
最好自己手推一下 公式很簡單 手推可以加深印象。
交叉熵的一些性質:
- 非負。
- 和 KL 散度相同,交叉熵也不具備對稱性,即 \(H(P,Q)≠H(Q,P)\)。
-
對同一個分布求交叉熵等于對其求熵。
為什麼既有 KL 散度又有交叉熵?在資訊論中,熵的意義是對 \(P\) 事件的随機變量編碼所需的最小位元組數,KL 散度的意義是“額外所需的編碼長度”如果我們使用 Q 的編碼來表示 P,交叉熵指的是當你使用 Q 作為密碼來表示 P 是所需要的 “平均的編碼長度”。但是在機器學習評價兩個分布之間的差異時,由于分布 P 會是給定的,Q為生成的分布,來衡量量分布的差異,是以此時 KL 散度和交叉熵的作用其實是一樣的,而且因為交叉熵少算一項\(H(P)\),更加簡單,是以選擇交叉熵會更好。
JS散度也是用于度量兩個機率分布的相似度,其解決了KL散度不對稱的缺點。
再GAN公式的推導中會用到,到時候再回來。
\[JS(p||q)=\frac{1}{2}KL(p||\frac{p+q}{2})+\frac{1}{2}KL(q||\frac{p+q}{2}) \tag{7}
JS散度的一些性質:
- 值域\(JS(P||Q)\in[0,1]\),P,Q兩分布相同為0,相反為1
- 對稱性