深度學習之KL散度

2021-08-20 14:21:07 字數 1934 閱讀 7332

kl散度的用途:比較兩個概率分布的接近程度。

在統計應用中,我們經常需要用乙個簡單的,近似的概率分布f∗

f

∗來描述

觀察資料 dd或者另乙個複雜的概率分布

f f

。這個時候,我們需要乙個量來衡量我們選擇的近似分布 f∗

' role="presentation" style="position: relative;">f∗f

∗相比原分布

f f

究竟損失了多少資訊量,這就是kl散度起作用的地方。

為了更好的理解kl散度,在這裡首先丟擲熵的概念。在資訊理論這門學科中,乙個很重要的目標就是量化描述資料中含有多少資訊。 為此,提出了熵的概念,記作h,乙個概率分布所對應的熵表達如下:

h' role="presentation" style="position: relative;">hh=

−∑ni

=1p(

xi)⋅

log(

p(xi

))− ∑i

=1np

(xi)

⋅log

(p(x

i)

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

現在,我們能夠量化資料中的資訊量了,就可以來衡量近似分布帶來的資訊損失了。kl散度的計算公式其實是熵計算公式的簡單變形,在原有概率分布

p p

上,加入我們的近似概率分布

q' role="presentation" style="position: relative;">q

q,計算他們的每個取值對應對數的差:dk

l(p|

|q) dkl

(p||

q)

= ∑

ni=1

p(xi

)⋅(l

og(p

(xi)

)−lo

g(q(

xi))

) ∑i=

1np(

xi)⋅

(log

(p(x

i))−

log(

q(xi

))

)換句話說,kl散度計算的就是資料的原分布與近似分布的概率的對數差的期望值。 在對數以2為底時,log2 ,可以理解為「我們損失了多少位的資訊」

寫成期望形式:dk

l(p|

|q) dkl

(p||

q)

= e[log

(p(x

))−l

og(q

(x))

] e[l

og(p

(x))

−log

(q(x

))

]更常見的是以下形式: dk

l(p|

|q) dkl

(p||

q)

= ∑

ni=1

p(xi

)⋅lo

gp(x

i)q(

xi) ∑i=

1np(

xi)⋅

logp

(xi)

q(xi

)dkl

(p||

q)d kl

(p||

q)

≠≠

dkl(q||

p)d kl

(q||

p)

因為kl散度不具有交換性,所以不能理解為「距離」的概念,衡量的並不是兩個分布在空間中的遠近,更準確的理解還是衡量乙個分布相比另乙個分布的資訊損失(infomation lost)。

KL散度 JS散度

kl divergence kullback leibler divergence kl散度,kl距離,又叫相對熵 relative entropy 衡量兩個概率分布之間的不同程度,是描述兩個概率分布p和q差異的一種方法就是資訊理論學的相對熵 最簡單的情況 當kl divergence為0時,兩個分...

KL散度與JS散度

js散度 jensen shannon divergence 又稱kl距離,相對熵。kl散度是描述兩個概率分布p和q之間差異的一種方法。直觀地說,可以用來衡量給定任意分布偏離真實分布的程度,如果兩個分布完全匹配,那麼kl p q 0,否則它的取值應該是0 inf 之間。kl散度越小,真實分布與近視分...

深度學習之 交叉熵和KL散度區別

交叉熵可在神經網路 機器學習 中作為損失函式,p表示真實標記的分布,q則為訓練後的模型的 標記分布,交叉熵損失函式可以衡量真實分布p與當前訓練得到的概率分布q有多麼大的差異。相對熵 relative entropy 就是kl散度 kullback leibler divergence 用於衡量兩個概...