相对熵(KL散度)计算过程

KL散度(Kullback-Leibler Divergence)也叫做相对熵,用于度量两个概率分布之间的差异程度。

离散型

DKL(PQ)=i=1nPilog(PiQi) D K L ( P ∥ Q ) = ∑ i = 1 n P i l o g ( P i Q i )

比如随机变量 XP X ∼ P 取值为 1,2,3 1 , 2 , 3 时的概率分别为 [0.2,0.4,0.4] [ 0.2 , 0.4 , 0.4 ] ,随机变量 YQ Y ∼ Q 取值为 1,2,3 1 , 2 , 3 时的概率分别为 [0.4,0.2,0.4] [ 0.4 , 0.2 , 0.4 ] ,则:

D(PQ)=0.2×log(0.20.4)+0.4×log(0.40.2)+0.4×log(0.40.4)=0.2×0.69+0.4×0.69+0.4×0=0.138(3) (3) D ( P ∥ Q ) = 0.2 × l o g ( 0.2 0.4 ) + 0.4 × l o g ( 0.4 0.2 ) + 0.4 × l o g ( 0.4 0.4 ) = 0.2 × − 0.69 + 0.4 × 0.69 + 0.4 × 0 = 0.138

Python代码实现,离散型KL散度可通过SciPy进行计算:

from scipy import stats

P = [0.2, 0.4, 0.4]
Q = [0.4, 0.2, 0.4]
stats.entropy(P,Q) # 0.13862943611198905

P = [0.2, 0.4, 0.4]
Q = [0.5, 0.1, 0.4]
stats.entropy(P,Q) # 0.3195159298250885

P = [0.2, 0.4, 0.4]
Q = [0.3, 0.3, 0.4]
stats.entropy(P,Q) # 0.03533491069691495

KL散度的性质:

  1. DKL(PQ)0 D K L ( P ∥ Q ) ≥ 0 ,即非负性
  2. DKL(PQ)DKL(QP) D K L ( P ∥ Q ) ≠ D K L ( Q ∥ P ) ,即不对称性

连续型

DKL(PQ)=+p(x)logp(x)q(x)dx D K L ( P ∥ Q ) = ∫ − ∞ + ∞ p ( x ) l o g p ( x ) q ( x ) d x

(没怎么用到,后面再补吧)

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页