一、資訊熵
若一個離散隨機變數 \(X\) 的可能取值為 \(X = \{ x_{1}, x_{2},...,x_{n}\}\),且對應的概率為:
那麼隨機變數 \(X\) 的熵定義為:
規定當 \(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\) 所需要的平均編碼長度位元個數:
拿一個三分類問題舉例,加入標籤通過 one-hot
編碼後的目標為 \([1,0,0]\),那麼當預測完全準確時,模擬分佈 \(q\) 的熵為:
因此,在使用交叉熵作為損失函式執行分類任務時,通常使目標函式趨近於0。加入模型預測出來的結果為:\(p = [0.7, 0.2, 0.1]\),那麼 \(p, q\) 的交叉熵為:
為什麼在分類任務中多用交叉熵而不是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 啟用函式:
若使用 MSE 作為損失函式,則:
而使用交叉熵作為損失函式,則:
對比之下發現,由於sigmoid 函式在輸出接近0和1時,梯度很小,而使用 MSE 做損失函式時模型引數w會更新的比較慢,因此分類問題多采用交叉熵作為損失函式。
個人認為,使用交叉熵而不是用MSE的另一個原因在於,交叉熵損失函式的理想分類結果只與正確樣本有關,而MSE損失函式與正誤樣本都有關係。
三、相對熵(\(KL\)散度)
相對熵用來表示兩個概率分佈的差異,它表示2個函式或概率分佈的差異性:差異越大則相對熵越大,差異越小則相對熵越小,特別地,若2者相同則熵為0。公式表示如下:
於是,相對熵=交叉熵-資訊熵。而在有監督的機器學習和深度學習中,往往已經有了真實的樣本(隨機變數)和標籤(label),因此可以理解為實際的概率分佈 \(p\) 已知,而訓練所得到的分佈為 \(q\),那麼資訊熵 \(H_{p}\) 相當於常量,所以可以直接用交叉熵 \(H(p,q)\) 來衡量兩個獨立概率分佈的差異。