kl散度定义_Kullback-Leibler(KL)散度介绍
在這篇文章中,我們將探討一種比較兩個(gè)概率分布的方法,稱為Kullback-Leibler散度(通常簡(jiǎn)稱為KL散度)。通常在概率和統(tǒng)計(jì)中,我們會(huì)用更簡(jiǎn)單的近似分布來代替觀察到的數(shù)據(jù)或復(fù)雜的分布。KL散度幫助我們衡量在選擇近似值時(shí)損失了多少信息。
讓我們從一個(gè)問題開始我們的探索。假設(shè)我們是太空科學(xué)家,正在訪問一個(gè)遙遠(yuǎn)的新行星,我們發(fā)現(xiàn)了一種咬人的蠕蟲,我們想研究它。我們發(fā)現(xiàn)這些蠕蟲有10顆牙齒,但由于它們不停地咀嚼,很多最后都掉了牙。在收集了許多樣本后,我們得出了每條蠕蟲牙齒數(shù)量的經(jīng)驗(yàn)概率分布:
雖然這些數(shù)據(jù)很好,但我們有一個(gè)小問題。我們離地球很遠(yuǎn),把數(shù)據(jù)寄回家很貴。我們要做的是將這些數(shù)據(jù)簡(jiǎn)化為一個(gè)只有一兩個(gè)參數(shù)的簡(jiǎn)單模型。一種選擇是將蠕蟲牙齒的分布表示為均勻分布。我們知道有11個(gè)可能的值,我們可以指定1/11的均勻概率
顯然,我們的數(shù)據(jù)不是均勻分布的,但是看起來也不像我們所知道的任何常見分布。我們可以嘗試的另一種選擇是使用二項(xiàng)分布對(duì)數(shù)據(jù)進(jìn)行建模。在這種情況下,我們要做的就是估計(jì)二項(xiàng)分布的概率參數(shù)。我們知道如果我們有n次試驗(yàn),概率是p,那么期望就是E[x]= np。在本例中n = 10,期望值是我們數(shù)據(jù)的平均值,計(jì)算得到5.7,因此我們對(duì)p的最佳估計(jì)為0.57。這將使我們得到一個(gè)二項(xiàng)分布,如下所示:
將我們的兩個(gè)模型與原始數(shù)據(jù)進(jìn)行比較,我們可以看出,兩個(gè)都沒有完美匹配原始分布,但是哪個(gè)更好?
現(xiàn)如今有許多錯(cuò)誤度量標(biāo)準(zhǔn),但是我們主要關(guān)注的是必須使發(fā)送的信息量最少。這兩個(gè)模型都將我們的問題所需的參數(shù)量減少。最好的方法是計(jì)算分布哪個(gè)保留了我們?cè)紨?shù)據(jù)源中最多的信息。這就是Kullback-Leibler散度的作用。
我們分布的熵
KL散度起源于信息論。信息論的主要目標(biāo)是量化數(shù)據(jù)中有多少信息。信息論中最重要的指標(biāo)稱為熵,通常表示為$H$。概率分布的熵的定義是:
如果在我們的計(jì)算中我們使用log_2,我們可以把熵解釋為“我們編碼信息所需要的最小比特?cái)?shù)”。在這種情況下,根據(jù)我們的經(jīng)驗(yàn)分布,信息將是每個(gè)牙齒計(jì)數(shù)的觀察結(jié)果。根據(jù)我們觀察到的數(shù)據(jù),我們的概率分布的熵為3.12比特。比特的數(shù)目告訴我們,在單一情況下,我們平均需要多少比特來編碼我們將觀察到的牙齒數(shù)目。
熵沒有告訴我們可以實(shí)現(xiàn)這種壓縮的最佳編碼方案。信息的最佳編碼是一個(gè)非常有趣的主題,但對(duì)于理解KL散度而言不是必需的。熵的關(guān)鍵在于,只要知道所需位數(shù)的理論下限,我們就可以準(zhǔn)確地量化數(shù)據(jù)中有多少信息。現(xiàn)在我們可以對(duì)此進(jìn)行量化,當(dāng)我們將觀察到的分布替換為參數(shù)化的近似值時(shí),我們丟失了多少信息。
使用KL散度測(cè)量丟失的信息
Kullback-Leibler散度只是對(duì)我們的熵公式的略微修改。不僅僅是有我們的概率分布p,還有上近似分布q。然后,我們查看每個(gè)log值的差異:
本質(zhì)上,我們用KL散度看的是對(duì)原始分布中的數(shù)據(jù)概率與近似分布之間的對(duì)數(shù)差的期望。再說一次,如果我們考慮$log_2$,我們可以將其解釋為“我們預(yù)計(jì)有多少比特位的信息丟失”。我們可以根據(jù)期望重寫公式:
查看KL散度的更常見方法如下:
??因?yàn)?/p>
利用KL散度,我們可以精確地計(jì)算出當(dāng)我們近似一個(gè)分布與另一個(gè)分布時(shí)損失了多少信息。讓我們回到我們的數(shù)據(jù),看看結(jié)果如何。
比較我們的近似分布
現(xiàn)在我們可以繼續(xù)計(jì)算兩個(gè)近似分布的KL散度。對(duì)于均勻分布,我們發(fā)現(xiàn):
對(duì)于我們的二項(xiàng)式近似:
如我們所見,使用二項(xiàng)式分布所損失的信息大于使用均勻分布所損失的信息。如果我們必須選擇一個(gè)來代表我們的觀察結(jié)果,那么最好還是堅(jiān)持使用均勻分布。
KL散度不是距離
將KL散度視為距離度量可能很誘人,但是我們不能使用KL散度來測(cè)量?jī)蓚€(gè)分布之間的距離。這是因?yàn)镵L散度不是對(duì)稱的。例如,如果我們將觀察到的數(shù)據(jù)用作近似二項(xiàng)式分布的方式,我們將得到非常不同的結(jié)果:
使用KL散度進(jìn)行優(yōu)化
當(dāng)我們選擇二項(xiàng)分布的值時(shí),我們通過使用與數(shù)據(jù)匹配的期望值來選擇概率參數(shù)。但是,由于我們正在進(jìn)行優(yōu)化以最大程度地減少信息丟失,因此這可能并不是選擇參數(shù)的最佳方法。當(dāng)我們更改此參數(shù)的值時(shí),我們可以通過查看KL散度的變化方式來仔細(xì)檢查我們的工作。以下是這些值如何一起變化的圖表:
如你所見,我們對(duì)二項(xiàng)式分布的估計(jì)(由點(diǎn)標(biāo)記)是使KL散度最小的最佳估計(jì)。
假設(shè)我們要?jiǎng)?chuàng)建一個(gè)臨時(shí)分布來對(duì)數(shù)據(jù)建模。我們將數(shù)據(jù)分為兩部分。0-5顆牙齒的概率和6-10顆牙齒的概率。然后,我們將使用單個(gè)參數(shù)來指定總概率分布的百分比落在分布的右側(cè)。例如,如果我們?yōu)閰?shù)選擇p=1,則6-10的概率分別為0.2,0-5組中的所有事物的概率均為0。:
注意:因?yàn)?log在0點(diǎn)未定義,我們唯一允許為零的概率是當(dāng)p(xi)=0,可以推出q(xi)=0
我們?nèi)绾尾拍苷业轿覀兘M合在一起的這個(gè)奇怪模型的最佳參數(shù)?我們需要做的就是像以前一樣最大程度地減少KL差異:
我們發(fā)現(xiàn)在以下情況下找到的KL散度的最小值是0.338,當(dāng)p = 0.47。最小KL散度的值應(yīng)該看起來很熟悉:它幾乎與我們均勻分布得到的值相同!當(dāng)我們用p的理想值繪制出我們的分布的值時(shí),我們發(fā)現(xiàn)它幾乎是均勻的:
由于我們不會(huì)使用臨時(shí)分布來保存任何信息,因此最好使用更熟悉,更簡(jiǎn)單的模型。
這里的關(guān)鍵點(diǎn)是,我們可以將KL散度作為目標(biāo)函數(shù)來找到我們可以得出的任何近似分布的最優(yōu)值。盡管此示例僅優(yōu)化單個(gè)參數(shù),但我們可以輕松想象將這種方法擴(kuò)展到具有許多參數(shù)的高維模型。
變分自動(dòng)編碼器和變分貝葉斯方法
如果你熟悉神經(jīng)網(wǎng)絡(luò),那么你可能已經(jīng)猜到了上一節(jié)之后的去向。在最一般的意義上,神經(jīng)網(wǎng)絡(luò)是函數(shù)近似器。這意味著你可以使用神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)各種復(fù)雜的功能。使神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的關(guān)鍵是使用目標(biāo)函數(shù),該函數(shù)可以告知網(wǎng)絡(luò)運(yùn)行狀況。你可以通過最小化目標(biāo)函數(shù)的損失來訓(xùn)練神經(jīng)網(wǎng)絡(luò)。
如我們所見,我們可以使用KL散度來最小化近似分布時(shí)的信息損失量。將KL散度與神經(jīng)網(wǎng)絡(luò)相結(jié)合,可以讓我們學(xué)習(xí)非常復(fù)雜的數(shù)據(jù)近似分布。一種常見的解決方法稱為“變分自編碼器”,它學(xué)習(xí)了近似數(shù)據(jù)集中信息的最佳方法。以下鏈接一個(gè)很棒的教程,深入探討了構(gòu)建變分自編碼器的細(xì)節(jié):https://arxiv.org/abs/1606.05908。
更一般的是變分貝葉斯方法領(lǐng)域。在其他文章中,我們看到了蒙特卡洛模擬可以有效解決一系列概率問題。盡管蒙特卡洛模擬可以幫助解決貝葉斯推理所需的許多難解積分,但即使這些方法在計(jì)算上也非常昂貴。包括變分自動(dòng)編碼器在內(nèi)的變分貝葉斯方法使用KL散度來生成最佳近似分布,從而可以對(duì)非常困難的積分進(jìn)行更有效的推斷。要了解有關(guān)變分推理的更多信息,可以查看python的Edward庫(kù):http://edwardlib.org/。
總結(jié)
以上是生活随笔為你收集整理的kl散度定义_Kullback-Leibler(KL)散度介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 割了双眼皮可以吃披萨吗
- 下一篇: python斐波那契数列前20项_Pyt