天天看點

資訊論相關概念:熵 交叉熵 KL散度 JS散度

機器學習基礎--資訊論相關概念總結以及了解

目錄

    • 1. 資訊量(熵)
    • 2. KL散度
    • 3. 交叉熵
    • 4. JS散度

摘要:

熵(entropy)、KL 散度(Kullback-Leibler (KL) divergence)和交叉熵(cross-entropy)以及JS散度,在深度學習以及機器學習很多地方都用的到,尤其是對于目标函數和損失函數的定義。在邏輯回歸問題中,目标函數就是用交叉熵定義的。

資訊論是應用數學的一個分支,主要研究的是對一個信号包含資訊的多少進行量化。資訊論的基本想法是一個不太可能的事件發生了,要比一個非常可能的事件發生,能提供更多的資訊。事件發生的可能性大,資訊量少;事件發生的可能性小,其資訊量大。

比如:早上你出門碰到一個朋友,他告訴你今天是晴天,這句話的資訊量就很小,因為天氣你已經知道了,而且是個确定性事件,等同于廢話。

要是他再告訴你,明天可能下雪,這句話的資訊量就比剛剛的話要大好多。

可以看出資訊量的大小與事件發生的可能性成反比。

  1. 非常可能發生的事件資訊量要比較少。在極端情況下,確定能夠發生的事件應該沒有資訊量。
  2. 較不可能發生的事件具有更高的資訊量。
  3. 獨立事件應具有增量的資訊。例如,投擲的硬币兩次正面朝上傳遞的資訊量,應該是投擲一次硬币正面朝上的資訊量的兩倍。

      為了滿足上面 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
  • 對稱性

繼續閱讀