KL散度衡量两个概率分布的差异,是信息论和机器学习的核心概念。
定义
离散分布:
连续分布:
核心性质
| 性质 | 说明 |
|---|---|
| 非负性 | ,当且仅当 时为0 |
| 非对称性 | |
| 与熵的关系 |
应用场景
| 领域 | 应用 |
|---|---|
| VAE | 隐空间正则化 |
| 强化学习 | 策略更新约束(PPO、TRPO) |
| GAN | 分布差异度量 |
| 知识蒸馏 | 教师-学生模型优化 |
与其他度量对比
| 指标 | 对称性 | 取值范围 | 适用场景 |
|---|---|---|---|
| KL散度 | 否 | VAE、策略优化 | |
| JS散度 | 是 | 文本相似度 | |
| Wasserstein | 是 | GAN |
Python 实现
import numpy as np
def kl_divergence(p, q):
epsilon = 1e-15
p = np.clip(p, epsilon, None)
q = np.clip(q, epsilon, None)
return np.sum(p * np.log(p / q))