原文地址Count Bayesie
這篇文章是博客Count Bayesie上的文章Kullback-Leibler Divergence Explained 的學習筆記,原文對 KL散度 的概念詮釋得非常清晰易懂,建議閱讀
KL散度( KL divergence)
全稱:Kullback-Leibler Divergence
用途:比較兩個概率分布的接近程度
在統計應用中,我們經常需要用一個簡單的,近似的概率分布
觀察數據
熵(entropy)
想要考察 信息量 的損失,就要先確定一個描述信息量的量綱。
在信息論這門學科中,一個很重要的目標就是量化描述數據中含有多少信息。
為此,提出了 熵 的概念,記作
一個概率分布所對應的 熵 表達如下:
如果我們使用
需要注意的是:通過計算熵,我們可以知道信息編碼需要的最小位數,卻不能確定最佳的數據壓縮策略。怎樣選擇最優數據壓縮策略,使得數據存儲位數與熵計算的位數相同,達到最優壓縮,是另一個龐大的課題。
KL散度的計算
現在,我們能夠量化數據中的信息量了,就可以來衡量近似分布帶來的信息損失了。
KL散度的計算公式其實是熵計算公式的簡單變形,在原有概率分布
換句話說,KL散度計算的就是數據的原分布與近似分布的概率的對數差的期望值。
在對數以2為底時,
寫成期望形式
更常見的是以下形式:
現在,我們就可以使用KL散度衡量我們選擇的近似分布與數據原分布有多大差異了。
散度不是距離
因為KL散度不具有交換性,所以不能理解為“距離”的概念,衡量的並不是兩個分布在空間中的遠近,更准確的理解還是衡量一個分布相比另一個分布的信息損失(infomation lost)
使用KL散度進行優化
通過不斷改變預估分布的參數,我們可以得到不同的KL散度的值。
在某個變化范圍內,KL散度取到最小值的時候,對應的參數是我們想要的最優參數。
這就是使用KL散度優化的過程。
VAE(變分自動編碼)
神經網絡進行的工作很大程度上就是“函數的近似”(function approximators)
所以我們可以使用神經網絡學習很多復雜函數,學習過程的關鍵就是設定一個目標函數來衡量學習效果。
也就是通過最小化目標函數的損失來訓練網絡(minimizing the loss of the objective function)
使用KL散度來最小化我們近似分布時的信息損失,讓我們的網絡可以學習很多復雜分布。
一個典型應用是VAE
Tutorial on VAE