【機器學習】交叉熵與KL散度

寫在前面的總結:

1、目前分類損失函數爲何多用交叉熵,而不是KL散度。

首先損失函數的功能是通過樣本來計算模型分佈與目標分佈間的差異,在分佈差異計算中,KL散度是最合適的。但在實際中,某一事件的標籤是已知不變的(例如我們設置貓的label爲1,那麼所有關於貓的樣本都要標記爲1),即目標分佈的熵爲常數。而根據下面KL公式可以看到,KL散度 - 目標分佈熵 = 交叉熵(這裏的“-”表示裁剪)。所以我們不用計算KL散度,只需要計算交叉熵就可以得到模型分佈與目標分佈的損失值。

從上面介紹,知道了模型分佈與目標分佈差異可用交叉熵代替KL散度的條件是目標分佈爲常數。如果目標分佈是有變化的(如同爲貓的樣本,不同的樣本,其值也會有差異),那麼就不能使用交叉熵,例如蒸餾模型的損失函數就是KL散度,因爲蒸餾模型的目標分佈也是一個模型,該模型針對同類別的不同樣本,會給出不同的預測值(如兩張貓的圖片a和b,目標模型對a預測爲貓的值是0.6,對b預測爲貓的值是0.8)。

注:交叉熵和KL散度應用方式不同的另一種解釋(我更傾向於上面我自己的解釋,更具公式解釋性)

交叉熵:其用來衡量在給定的真實分佈下,使用非真實分佈所指定的策略消除系統的不確定性所需要付出的努力的大小。這也是爲什麼在機器學習中的分類算法中,我們總是最小化交叉熵,因爲交叉熵越低,就證明由算法所產生的策略最接近最優策略,也間接證明我們算法所算出的非真實分佈越接近真實分佈。

KL散度(相對熵):衡量不同策略之間的差異呢,所以我們使用KL散度來做模型分佈的擬合損失。

信息量

相對熵(KL散度)

交叉熵

參考:

交叉熵、相對熵(KL散度)、JS散度和Wasserstein距離(推土機距離)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章