相對熵(relative entropy)就是KL散度(Kullback–Leibler divergence),用於衡量兩個概率分布之間的差異。
一句話總結的話:KL散度可以被用於計算代價,而在特定情況下最小化KL散度等價於最小化交叉熵。而交叉熵的運算更簡單,所以用交叉熵來當做代價。
如何衡量兩個事件/分布之間的不同:KL散度
我們上面說的是對於一個隨機變量x的事件A的自信息量,如果我們有另一個獨立的隨機變量x相關的事件B,該怎么計算它們之間的區別?
此處我們介紹默認的計算方法:KL散度,有時候也叫KL距離,一般被用於計算兩個分布之間的不同。看名字似乎跟計算兩個點之間的距離也很像,但實則不然,因為KL散度不具備有對稱性。在距離上的對稱性指的是A到B的距離等於B到A的距離。
舉個不恰當的例子,事件A:張三今天買了2個土雞蛋,事件B:李四今天買了6個土雞蛋。我們定義隨機變量x:買土雞蛋,那么事件A和B的區別是什么?有人可能說,那就是李四多買了4個土雞蛋?這個答案只能得50分,因為忘記了"坐標系"的問題。換句話說,對於張三來說,李四多買了4個土雞蛋。對於李四來說,張三少買了4個土雞蛋。選取的參照物不同,那么得到的結果也不同。更嚴謹的說,應該是說我們對於張三和李四買土雞蛋的期望不同,可能張三天天買2個土雞蛋,而李四可能因為孩子滿月昨天才買了6個土雞蛋,而平時從來不買。
對於兩個概率分布和
,其相對熵的計算公式為:
注意:由於 和
在公式中的地位不是相等的,所以
.
相對熵的特點,是只有 時,其值為0。若
和
略有差異,其值就會大於0。其證明利用了負對數函數(
)是嚴格凸函數(strictly convex function)的性質。具體可以參考PRML 1.6.1 Relative entropy and mutual information.
相對熵公式的前半部分 就是交叉熵(cross entropy)。
若 是數據的真實概率分布,
是由數據計算得到的概率分布。機器學習的目的就是希望
盡可能地逼近甚至等於
,從而使得相對熵接近最小值0. 由於真實的概率分布是固定的,相對熵公式的后半部分
就成了一個常數。那么相對熵達到最小值的時候,也意味着交叉熵達到了最小值。對
的優化就等效於求交叉熵的最小值。另外,對交叉熵求最小值,也等效於求最大似然估計(maximum likelihood estimation)。具體可以參考Deep Learning 5.5 Maximum Likelihood Estimation.
為什么交叉熵可以用作代價?
接着上一點說,最小化模型分布 P ( m o d e l ) P(model)P(model) 與 訓練數據上的分布 P ( t r a i n i n g ) P(training)P(training) 的差異 等價於 最小化這兩個分布間的KL散度,也就是最小化 K L ( P ( t r a i n i n g ) ∣ ∣ P ( m o d e l ) ) KL(P(training)||P(model))KL(P(training)∣∣P(model))。
比照第四部分的公式:
- 此處的A就是數據的真實分布: P ( t r a i n i n g ) P(training)P(training)
- 此處的B就是模型從訓練數據上學到的分布:P ( m o d e l ) P(model)P(model)
巧的是,訓練數據的分布A是給定的。那么根據我們在第四部分說的,因為A固定不變,那么求 D K L ( A ∣ ∣ B ) D_{KL}(A||B)DKL(A∣∣B) 等價於求 H ( A , B ) H(A,B)H(A,B) ,也就是A與B的交叉熵。
得證,交叉熵可以用於計算“學習模型的分布”與“訓練數據分布”之間的不同。當交叉熵最低時(等於訓練數據分布的熵),我們學到了“最好的模型”。
但是,完美的學到了訓練數據分布往往意味着過擬合,因為訓練數據不等於真實數據,我們只是假設它們是相似的,而一般還要假設存在一個高斯分布的誤差,是模型的泛化誤差下線。