javascript
KL散度与JS散度
KL散度與JS散度
- KL散度(Kullback-Leibler divergence)
- KL散度的計算公式
- KL散度的基本性質
- JS散度(Jensen-Shannon divergence)
- JS散度的數學公式
- 不同于KL的主要兩方面
KL散度(Kullback-Leibler divergence)
又稱KL距離,相對熵。KL散度是描述兩個概率分布P和Q之間差異的一種方法。直觀地說,可以用來衡量給定任意分布偏離真實分布的程度,如果兩個分布完全匹配,那么KL(p||q)=0,否則它的取值應該是0~∞(inf)之間。KL散度越小,真實分布與近視分布之間的匹配程度就越好。
KL散度的計算公式
離散概率分布的KL散度計算公式:
KL(p∣∣q)=∑p(x)log?p(x)q(x)KL(p||q)=\sum p(x)\log \frac{p(x)}{q(x)}KL(p∣∣q)=∑p(x)logq(x)p(x)?
連續概率分布的KL散度計算公式:
KL(p∣∣q)=∫p(x)log?p(x)q(x)dxKL(p||q)=\int p(x)\log \frac{p(x)}{q(x)}dxKL(p∣∣q)=∫p(x)logq(x)p(x)?dx
KL散度的基本性質
- 非負性
KL散度的結果是非負的,簡單證明如下:
KL(p∣∣q)=∑xp(x)log?p(x)q(x)=?∑xp(x)logq(x)p(x)KL(p||q)=\sum _xp(x) \log \frac {p(x)}{q(x)}=-\sum _xp(x)\ log \frac{q(x)}{p(x)}KL(p∣∣q)=x∑?p(x)logq(x)p(x)?=?x∑?p(x)?logp(x)q(x)?
由于對數函數是一個上凸函數,所以有:
≥?log?[∑xp(x)q(x)p(x)]=?log?[∑xq(x)]=?log?1=0\ge-\log[\sum_xp(x)\frac{q(x)}{p(x)}]=-\log[\sum_xq(x)]=-\log 1=0 ≥?log[x∑?p(x)p(x)q(x)?]=?log[x∑?q(x)]=?log1=0 - 不對稱性
即KL(p∣∣q)?=KL(q∣∣p)KL(p||q)\not=KL(q||p)KL(p∣∣q)??=KL(q∣∣p)
關于KL散度的數學概念,可移步[link] https://www.jiqizhixin.com/articles/2018-05-29-2?from=synced&keyword=直觀解讀kl散度的數學概念
JS散度(Jensen-Shannon divergence)
JS散度也稱JS距離,是KL散度的一種變形。
JS散度的數學公式
JS(p∣∣q)=12KL(p∣∣p+q2)+12KL(q∣∣p+q2)JS(p||q)=\frac12KL(p||\frac{p+q}2)+\frac12KL(q||\frac{p+q}{2})JS(p∣∣q)=21?KL(p∣∣2p+q?)+21?KL(q∣∣2p+q?)
不同于KL的主要兩方面
- 值域范圍
JS散度的值域范圍是[0,1],相同為0,相反則為1。相比較于KL,對相似度的判別更準確了。 - 對稱性
即JS(p∣∣q)=JS(q∣∣p)JS(p||q)=JS(q||p)JS(p∣∣q)=JS(q∣∣p),而對稱能讓散度度量更準確。下面用一段代碼展示這其中的道理:
將第一個實驗與第二個實驗做對比,可以看出KL散度的波動比較大,而JS的波動相對小。
如果將第二個實驗和第三個實驗做對比,可以發現KL散度在衡量兩個分布的差異時具有很大的不對稱性。如果后面的分布在某一個值上缺失,就回得到很大的散度值;但是如果前面的分布在某一個值上缺失,最終的KL散度并沒有太大的波動。這個demo可以清楚地看出KL不對稱性帶來的一些小問題,而JS具有對稱性,所以第二個實驗和第三個實驗的JS散度實際上是距離相等的分布組。
總結
- 上一篇: 外贸独立站模板
- 下一篇: Qt使用系统代理访问网络