(轉)KL散度的理解


 KL散度KL divergence

全稱:Kullback-Leibler Divergence。

用途:比較兩個概率分布的接近程度。
在統計應用中,我們經常需要用一個簡單的,近似的概率分布 * 來描述。

觀察數據 D 或者另一個復雜的概率分布 。這個時候,我們需要一個量來衡量我們選擇的近似分布 * 相比原分布 f 究竟損失了多少信息量,這就是KL散度起作用的地方。

 

熵(entropy)

想要考察信息量的損失,就要先確定一個描述信息量的量綱。

在信息論這門學科中,一個很重要的目標就是量化描述數據中含有多少信息。

為此,提出了的概念,記作 H

一個概率分布所對應的表達如下:

 

 

如果我們使用 log 2 作為底,熵可以被理解為:我們編碼所有信息所需要的最小位數(minimum numbers of bits)。

需要注意的是:通過計算熵,我們可以知道信息編碼需要的最小位數,卻不能確定最佳的數據壓縮策略。怎樣選擇最優數據壓縮策略,使得數據存儲位數與熵計算的位數相同,達到最優壓縮,是另一個龐大的課題。

 

KL散度的計算

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

換句話說,KL散度計算的就是數據的原分布與近似分布的概率的對數差的期望值。

在對數以2為底時, log 2 ,可以理解為“我們損失了多少位的信息”。

寫成期望形式:

更常見的是以下形式:

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

 

散度不是距離

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

 

使用KL散度進行優化

通過不斷改變預估分布的參數,我們可以得到不同的KL散度的值。

在某個變化范圍內,KL散度取到最小值的時候,對應的參數是我們想要的最優參數。

這就是使用KL散度優化的過程。

 

神經網絡進行的工作很大程度上就是“函數的近似”(function approximators)。

因此我們可以使用神經網絡學習很多復雜函數,學習過程的關鍵就是設定一個目標函數來衡量學習效果。

也就是通過最小化目標函數的損失來訓練網絡(minimizing the loss of the objective function)。

而KL散度可以作為正則化項(regularization term)加入損失函數之中,即使用KL散度來最小化我們近似分布時的信息損失,讓我們的網絡可以學習很多復雜的分布。

一個典型應用是VAE(變分自動編碼)。

 

https://blog.csdn.net/ericcchen/article/details/72357411


免責聲明!

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



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