資訊熵,交叉熵與KL散度

ZhiboZhao發表於2021-06-29

一、資訊熵

若一個離散隨機變數 \(X\) 的可能取值為 \(X = \{ x_{1}, x_{2},...,x_{n}\}\),且對應的概率為:

\[p(x_{i}) = p(X=x_{i}) \]

那麼隨機變數 \(X\) 的熵定義為:

\[H(X) = -\sum_{i=1}^{n}p(x_{i})logp(x_{i}) \]

規定當 \(p(x_{i})=0\) 時,\(H(X)=0\)

通過公式可以看出,若隨機變數 \(X\) 的取值等概率分佈,即 \(p(x_{i} = p(x_{j}), i \neq j\) 時,\(H(X)\) 最大。

直觀理解:資訊熵表達的時隨機變數 \(X\) 所含的資訊量,當 \(X\) 中所有取值都等概率時,包含的資訊量就越多,就需要用更多的資訊來描述它。如果知道了 \(X\) 中取哪個值概率最大,那麼描述它所需要的資訊就越少,\(H(X)\) 就越小。換句話說,資訊熵表明了資訊的無序狀態。

二、交叉熵

交叉熵定義為用模擬分佈 \(q\) 來編碼真實分佈 \(p\) 所需要的平均編碼長度位元個數:

\[H(p,q) = \sum_{i=1}^{n}p_{i}log\dfrac{1}{q_{i}} = -\sum_{i=1}^{n}p_{i}q_{i} \]

拿一個三分類問題舉例,加入標籤通過 one-hot 編碼後的目標為 \([1,0,0]\),那麼當預測完全準確時,模擬分佈 \(q\) 的熵為:

\[H(q) = -\sum_{i=1}^{n}q_{i}log(q_{i}) = -(1 \times log 1 + 0 \times log 0 + 0 \times log(0)) = 0 \]

因此,在使用交叉熵作為損失函式執行分類任務時,通常使目標函式趨近於0。加入模型預測出來的結果為:\(p = [0.7, 0.2, 0.1]\),那麼 \(p, q\) 的交叉熵為:

\[H(p,q) = -\sum_{i=1}^{n}p_{i}log(q_{i}) = -(1 \times log (0.7) + 0 \times log (0.2) + 0 \times log(0.1)) = -log(0.7) \]

為什麼在分類任務中多用交叉熵而不是MSE作為損失函式?我們以二分類問題為例來解釋這個問題。假設訓練資料集為:\(T = \{ (x_{1},y_{1}),(x_{2},y_{2}),...,(x_{n},y_{n})\}\),其中 \(y_{i} \in \{0,1\}\)。網路的輸出為:\(z = w^{T}x\),標籤為 \(p = \{1,0\}\)。於是最後對網路所預測的概率值為:\(q = \sigma(z)\),其中 \(\sigma()\) 代表 sigmoid 啟用函式:

\[\sigma(z) = \dfrac{1}{1+e^{-z}}\quad\sigma'(z) = \sigma(z)(1-\sigma(z)) \]

若使用 MSE 作為損失函式,則:

\[L = \dfrac{1}{2}||q-p||^{2} \\ \dfrac{\partial L}{\partial w} = \dfrac{\partial L}{\partial q} \times \dfrac{\partial q}{\partial z} \times \dfrac{\partial z}{\partial w} = (q-p)\sigma'(z)x = (q-p)\sigma(z)(1-\sigma(z))x \]

而使用交叉熵作為損失函式,則:

\[L = -\sum_{i=1}^{n}p_{i}ln(q_{i}) = -(pln(q)+(1-p)ln(1-q))\\ \dfrac{\partial L}{\partial w} = \dfrac{\partial L}{\partial q} \times \dfrac{\partial q}{\partial z} \times \dfrac{\partial z}{\partial w} = (-\dfrac{p}{q}+\dfrac{1-p}{1-q})\sigma'(z)x = (q-p)x \]

對比之下發現,由於sigmoid 函式在輸出接近0和1時,梯度很小,而使用 MSE 做損失函式時模型引數w會更新的比較慢,因此分類問題多采用交叉熵作為損失函式。

個人認為,使用交叉熵而不是用MSE的另一個原因在於,交叉熵損失函式的理想分類結果只與正確樣本有關,而MSE損失函式與正誤樣本都有關係。

三、相對熵(\(KL\)散度)

相對熵用來表示兩個概率分佈的差異,它表示2個函式或概率分佈的差異性:差異越大則相對熵越大,差異越小則相對熵越小,特別地,若2者相同則熵為0。公式表示如下:

\[D_{KL}(p||q) = -\sum_{i=1}^{n}p(x_{i})log(\dfrac{p(x_{i})}{q(x_{i}))} = H(p,q)-H(p) \]

於是,相對熵=交叉熵-資訊熵。而在有監督的機器學習和深度學習中,往往已經有了真實的樣本(隨機變數)和標籤(label),因此可以理解為實際的概率分佈 \(p\) 已知,而訓練所得到的分佈為 \(q\),那麼資訊熵 \(H_{p}\) 相當於常量,所以可以直接用交叉熵 \(H(p,q)\) 來衡量兩個獨立概率分佈的差異。

相關文章