张芷铭的个人博客

KL 散度衡量两个概率分布差异,是信息论和机器学习的核心概念。

数学定义

离散分布: $$D_{KL}(P \parallel Q) = \sum_{x} P(x) \log \frac{P(x)}{Q(x)}$$

连续分布: $$D_{KL}(P \parallel Q) = \int p(x) \log \frac{p(x)}{q(x)} dx$$

核心性质

性质说明
非负性$D_{KL} \geq 0$,当且仅当 $P=Q$ 时等于 0
不对称性$D_{KL}(P \parallel Q) \neq D_{KL}(Q \parallel P)$
信息解释用 $Q$ 近似 $P$ 时损失的信息量

原理推导

$$D_{KL}(P \parallel Q) = H(P, Q) - H(P)$$

其中 $H(P)$ 是熵,$H(P, Q)$ 是交叉熵。

应用场景

领域应用
变分推断变分下界目标函数
生成模型GAN、VAE 评估分布差异
强化学习策略优化限制更新幅度

代码实现

1
2
3
4
import numpy as np

def kl_divergence(p, q):
    return np.sum(np.where(p != 0, p * np.log(p / q), 0))

相关度量

度量公式
Jensen-Shannon 散度$\frac{1}{2}D_{KL}(P \parallel M) + \frac{1}{2}D_{KL}(Q \parallel M)$
Rényi 散度$\frac{1}{\alpha-1} \log \sum P(x)^\alpha Q(x)^{1-\alpha}$

Comments