KL散度的理解


原文地址Count Bayesie
這篇文章是博客Count Bayesie上的文章Kullback-Leibler Divergence Explained 的學習筆記,原文對 KL散度 的概念詮釋得非常清晰易懂,建議閱讀

KL散度( KL divergence)

全稱:Kullback-Leibler Divergence
用途:比較兩個概率分布的接近程度
在統計應用中,我們經常需要用一個簡單的,近似的概率分布 f 來描述
觀察數據 D 或者另一個復雜的概率分布 f 。這個時候,我們需要一個量來衡量我們選擇的近似分布 f 相比原分布 f 究竟損失了多少信息量,這就是KL散度起作用的地方。

熵(entropy

想要考察 信息量 的損失,就要先確定一個描述信息量的量綱。
在信息論這門學科中,一個很重要的目標就是量化描述數據中含有多少信息。
為此,提出了 的概念,記作 H
一個概率分布所對應的 熵 表達如下:

H=i=1Np(xi)logp(xi)

如果我們使用 log2 作為底,熵可以被理解為:我們編碼所有信息所需要的最小位數(minimum numbers of bits)
需要注意的是:通過計算熵,我們可以知道信息編碼需要的最小位數,卻不能確定最佳的數據壓縮策略。怎樣選擇最優數據壓縮策略,使得數據存儲位數與熵計算的位數相同,達到最優壓縮,是另一個龐大的課題。

KL散度的計算

現在,我們能夠量化數據中的信息量了,就可以來衡量近似分布帶來的信息損失了。
KL散度的計算公式其實是熵計算公式的簡單變形,在原有概率分布 p 上,加入我們的近似概率分布 q ,計算他們的每個取值對應對數的差:

DKL(p||q)=i=1Np(xi)(logp(xi)logq(xi))

換句話說,KL散度計算的就是數據的原分布與近似分布的概率的對數差的期望值。
在對數以2為底時, log2 ,可以理解為“我們損失了多少位的信息”
寫成期望形式
DKL(p||q)=E[logp(x)log(q(x)]

更常見的是以下形式:
DKL(p||q)=i=1Np(xi)logp(xiq(xi)

現在,我們就可以使用KL散度衡量我們選擇的近似分布與數據原分布有多大差異了。

散度不是距離

DKL(p||q)DKL(q||p)

因為KL散度不具有交換性,所以不能理解為“距離”的概念,衡量的並不是兩個分布在空間中的遠近,更准確的理解還是衡量一個分布相比另一個分布的信息損失(infomation lost)

使用KL散度進行優化

通過不斷改變預估分布的參數,我們可以得到不同的KL散度的值。
在某個變化范圍內,KL散度取到最小值的時候,對應的參數是我們想要的最優參數。
這就是使用KL散度優化的過程。

VAE(變分自動編碼)

神經網絡進行的工作很大程度上就是“函數的近似”(function approximators)
所以我們可以使用神經網絡學習很多復雜函數,學習過程的關鍵就是設定一個目標函數來衡量學習效果。
也就是通過最小化目標函數的損失來訓練網絡(minimizing the loss of the objective function)
使用KL散度來最小化我們近似分布時的信息損失,讓我們的網絡可以學習很多復雜分布。
一個典型應用是VAE
Tutorial on VAE


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM