KL散度(Kullback-Leibler Divergence)也叫做相对熵,用于度量两个概率分布之间的差异程度。
离散型
比如随机变量 X∼P X ∼ P 取值为 1,2,3 1 , 2 , 3 时的概率分别为 [0.2,0.4,0.4] [ 0.2 , 0.4 , 0.4 ] ,随机变量 Y∼Q Y ∼ Q 取值为 1,2,3 1 , 2 , 3 时的概率分别为 [0.4,0.2,0.4] [ 0.4 , 0.2 , 0.4 ] ,则:
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散度的性质:
- DKL(P∥Q)≥0 D K L ( P ∥ Q ) ≥ 0 ,即非负性。
- DKL(P∥Q)≠DKL(Q∥P) D K L ( P ∥ Q ) ≠ D K L ( Q ∥ P ) ,即不对称性。
连续型
(没怎么用到,后面再补吧)