【機器學習基礎】熵、KL散度、交叉熵

wuliytTaotao發表於2018-09-27

  熵(entropy)、KL 散度(Kullback-Leibler (KL) divergence)和交叉熵(cross-entropy)在機器學習的很多地方會用到。比如在決策樹模型使用資訊增益來選擇一個最佳的劃分,使得熵下降最大;深度學習模型最後一層使用 softmax 啟用函式後,我們也常使用交叉熵來計算兩個分佈的“距離”。KL散度和交叉熵很像,都可以衡量兩個分佈之間的差異,相互之間可以轉化。

1. 如何量化資訊?

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

  在資訊理論中,我們認為:

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

  為了滿足上面 3 個性質,定義了一事件 $\mbox{x} = x$ 的自資訊(self-information)為

\begin{equation}
I(x) = -\log P(x) 
\end{equation}

  我們使用 $\text{x}$ 表示隨機變數,使用 $x_1, x_2,...,x_i,..., x_N$ 或者 $x$ 表示隨機變數 $\text{x}$ 可能的取值。當式(1)中 $\log$ 以 2 為底數時,$I(x)$ 單位是位元(bit)或者夏農(shannons);當 $\log$ 以自然常數 $e$ 為底數時,$I(x)$ 單位是奈特(nats)。這兩個單位之間可以互相轉換,通過位元度量的資訊只是通過奈特度量資訊的常數倍。(使用對數換底公式轉化)

  自資訊只能處理單個的輸出。我們可以使用夏農熵(Shannon entropy)來對整個概率分佈中的不確定性總量進行量化:

\begin{equation}
H(\text{x}) = \mathbb{E}_{\text{x} \sim P}[I(x)] = \sum_{i= 1}^{N} P(x_i)I(x_i) = - \sum_{i= 1}^{N} P(x_i)\log P(x_i) 
\end{equation}

式(2)後兩個等號是在離散型變數的情況下成立,對於連續型變數,則需要求積分。當 $\text{x}$ 是連續的,夏農熵被稱為微分熵(differential entropy)。

  在1948年,克勞德·艾爾伍德·夏農將熱力學的熵,引入到資訊理論,因此它又被稱為夏農熵。機器學習(ML)中熵的概念都是由資訊理論而來,所以在 ML 中能看到的熵都是夏農熵,而不會是熱力學的熵。

  熵的一些性質:

    • 那些接近確定性的分佈(輸出幾乎可以確定)具有較低的熵。
    • 那些接近均勻分佈的概率分佈具有較高的熵。

2. KL 散度

  KL 散度全稱 Kullback-Leibler (KL) divergence。

  KL 散度可以用來衡量兩個分佈的差異。

  在概率論與統計中,我們經常會將一個複雜的分佈用一個簡單的近似分佈來代替。KL 散度可以幫助我們測量在選擇一個近似分佈時丟失的資訊量。

  假設原概率分佈為 $P(\text{x})$,近似概率分佈為 $Q(\text{x})$,則使用 KL 散度衡量這兩個分佈的差異:

\begin{equation}
D_{KL}(P||Q) = \mathbb{E}_{\text{x} \sim P}[\log \frac{P(x)}{Q(x)}] = \mathbb{E}_{\text{x} \sim P}[\log P(x) - \log Q(x)] 
\end{equation}

  如果 $\text{x}$ 是離散型變數,式(3)還可以寫成如下形式:

\begin{equation}
D_{KL}(P||Q) = \sum_{i= 1}^{N} P(x_i) \log\frac{P(x_i)}{Q(x_i)} = \sum_{i= 1}^{N} P(x_i)[\log P(x_i) - \log Q(x_i)]   
\end{equation}

  對於連續型變數,則式(4)不能這麼寫,需要求積分。如果 $\text{x}$ 是連續型變數,則式(3)中概率分佈最好用 $p(\text{x})$和$q(\text{x})$ 代替 $P(\text{x})$和$Q(\text{x})$。習慣上,用小寫字母表示連續型變數的概率密度函式(probability density function,PDF),用大寫字母表示離散型變數的概率質量函式(probability mass function,PMF)。(PDF和PMF都是用來描述概率分佈)

  KL 散度的一些性質:

    • KL 散度是非負的。
    • KL 散度為 0,當且僅當 $P$ 和 $Q$ 在離散型變數的情況下是相同的分佈,或者在連續型變數的情況下是“幾乎處處”相同的。
    • KL 散度不是真的距離,它不是對稱的,即 $ D_{KL}(P||Q) \ne D_{KL}(Q||P)$。

3. 交叉熵

  交叉熵(cross-entropy)和 KL 散度聯絡很密切。同樣地,交叉熵也可以用來衡量兩個分佈的差異。以離散型變數 $\text{x}$ 為例:

\begin{equation}
H(P, Q) = - \mathbb{E}_{\text{x} \sim P}\log Q(x) = - \sum_{i= 1}^{N} P(x_i) \log Q(x_i) 
\end{equation}

  交叉熵 $H(P, Q) = H(P) +  D_{KL}(P||Q)$。其中 $H(P)$(即 $H(\text{x})$ ,其中 $\text{x} \sim P$)為分佈 $P$ 的熵,$D_{KL}(P||Q)$ 表示兩個分佈的 KL 散度。當概率分佈 $P(\text{x})$ 確定了時,$H(P)$ 也將被確定,即 $H(P)$ 是一個常數。在這種情況下,交叉熵和 KL 散度就差一個大小為 $H(P)$ 的常數。下面給出一個簡單的推導:

  我們將式(4)中 KL 散度的公式再進行展開:

\begin{equation}\label{equ:tpr}
\begin{split}
D_{KL}(P||Q) &= \sum_{i= 1}^{N} P(x_i)[\log P(x) - \log Q(x)]  \\ &=  \sum_{i= 1}^{N} P(x_i) \log P(x_i)  - \sum_{i= 1}^{N} P(x_i) \log Q(x_i)  \\ &= -[- \sum_{i= 1}^{N} P(x_i) \log P(x_i)]+ [ - \sum_{i= 1}^{N} P(x_i) \log Q(x_i) ] \\ &= - H(P) + H(P, Q)
\end{split}
\end{equation}
即 $H(P, Q) = H(P) +  D_{KL}(P||Q)$。

  交叉熵的一些性質:

    • 非負。
    • 和 KL 散度相同,交叉熵也不具備對稱性,即 $H(P, Q) \ne H(Q,P)$。
    • 對同一個分佈求交叉熵等於對其求熵。

  為什麼既有 KL 散度又有交叉熵?在資訊理論中,熵的意義是對 $P$ 事件的隨機變數編碼所需的最小位元組數,KL 散度的意義是“額外所需的編碼長度”如果我們使用 $Q$ 的編碼來表示 $P$,交叉熵指的是當你使用 $Q$ 作為密碼來表示 $P$ 是所需要的 “平均的編碼長度”。但是在機器學習評價兩個分佈之間的差異時,由於分佈 $P$ 會是給定的,所以此時 KL 散度和交叉熵的作用其實是一樣的,而且因為交叉熵少算一項,更加簡單,所以選擇交叉熵會更好。

 

References

Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. 

https://www.zhihu.com/question/65288314

Kullback-Leibler Divergence Explained

相關文章