KL散度的理解

KL散度的理解

標籤(空格分隔): 機器學習

linbin 2018-05-29


KL散度( KL divergence)

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

熵(entropy)

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

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

KL散度的計算

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

散度不是距離


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

使用KL散度進行優化

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

VAE(變分自動編碼)

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

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