庫爾貝克-萊布勒散度(Kullback-Leibler divergence)
/ KOOL-bak LYE-bler /
假設你用一個分布 Q 來模型化世界,但現實其實依循一個分布 P。用錯模型你要付出多少代價?庫爾貝克-萊布勒散度用一個數字回答這個:它量的是近似 Q 離真相 P 有多遠,單位是被浪費掉的資訊。它是兩個機率分布之間主力的「距離」,並坐落在統計、資訊理論與機器學習的核心。
定義讀作一個期望的對數比:KL(P given Q) = 對 x 求和 p(x) log[p(x) / q(x)](連續情形是積分)。把它讀成:P 與 Q 之間對數歧異的平均,並由「真實」分布 P 加權。有一個漂亮的編碼詮釋:若你假設分布是 Q 來建一個最佳編碼,但符號其實按 P 到來,那麼 KL(P given Q) 就是相比於使用 P 的正確編碼,你每個符號浪費掉的「額外」位元的平均數——它恰好是交叉熵減去熵,H(P, Q) - H(P)。兩個關鍵性質:KL 永遠大於或等於 0,且當且僅當 P 與 Q 完全相同時等於 0(吉布斯不等式)。所以它恰好在你的模型完美時為零,並隨模型偏離而增長。
它無所不在:最大概似等價於最小化從資料的經驗分布到你的模型的 KL 散度,藉由最小化交叉熵來訓練分類器是同一回事,而變分推論藉由最小化到一個更簡單族的 KL 來近似一個棘手的後驗。誠實且重要的提醒:KL「不是」真正的距離。它不對稱——KL(P given Q) 一般不等於 KL(Q given P)——也不滿足三角不等式,所以稱它為「距離」是寬鬆的說法。而且若 Q 對一個 P 認為可能的結果賦予零機率,它會炸到無窮,這正是為什麼近似模型通常保持得夠寬,以涵蓋真相的支撐。
在 {雨, 晴} 上的真實分布 P 是 (0.5, 0.5);你的模型 Q 是 (0.9, 0.1)。則 KL(P given Q) = 0.5 log2(0.5/0.9) + 0.5 log2(0.5/0.1) 約 0.74 位元——用這個過度自信的模型編碼天氣,你每天浪費約 0.74 個額外位元。把角色對調,KL(Q given P) 算出來不一樣,直接顯示了那份不對稱。
KL 是用錯模型所浪費的額外位元——只有模型相符時才為零。
KL 散度不是真正的距離:它不對稱(KL(P given Q) 一般不等於 KL(Q given P))且不滿足三角不等式,並在 Q 排除了 P 所容許之事時變成無窮。