KL 散度 (Kullback-Leibler Divergence)
一、核心思想:KL散度是什么?
KL散度,又称相对熵 (Relative Entropy),是衡量两个概率分布之间差异的一种非对称度量。
核心问题:如果我们用一个近似的概率分布 Q 来描述一个真实的概率分布 P,我们需要付出多少“代价”或“损失多少信息”?
通俗理解:信息编码的比喻
想象一下,你负责为一个地区的每日天气(晴、阴、雨)设计一套二进制编码用于传输,目的是让平均传输成本(编码长度)最低。
-
真实分布 P (最优策略):你通过长期的气象数据得知,真实的天气概率分布是:
- P(晴) = 70%
- P(阴) = 20%
- P(雨) = 10%
根据信息论,最优编码是为高频事件分配短编码,低频事件分配长编码。例如:
- 晴 →
0
- 阴 →
10
- 雨 →
11
这种编码方案下的平均编码长度是理论最短的,我们称之为该分布的熵 (Entropy)。
-
近似分布 Q (你的猜测):你没有历史数据,想当然地认为这三种天气等可能发生:
- Q(晴) = 33.3%
- Q(阴) = 33.3%
- Q(雨) = 33.3%
基于这个错误的假设,你可能会设计出这样的编码:
- 晴 →
0
- 阴 →
10
- 雨 →
11 (也许是 00, 01, 10,但为了对比,我们用一个非最优但基于Q的方案)
KL散度就是:
用你那套基于错误假设 Q 的编码方案,去传输遵循真实分布 P 的天气信息时,所导致的平均编码长度的增加量。
这个“增加量”就是信息损失,是衡量你的猜测 Q 与真实 P 之间差异的量化指标。
- 如果你的猜测 Q 和真实 P 完全一样,那么编码长度没有增加,KL散度为 0。
- 如果你的猜测 Q 和真实 P 差异巨大,那么编码长度的浪费就会很严重,KL散度值就很大。
二、数学定义与计算
1. 公式定义
对于离散概率分布 P 和 Q,KL散度的定义如下:
DKL(P∣∣Q)=∑iP(i)log(Q(i)P(i))
- P(i): 真实分布中事件 i 的概率(作为权重)。
- log(Q(i)P(i)): 在事件 i 上,两个分布概率比值的对数,代表了在该点上的信息差异。
对于连续概率分布(概率密度函数为 p(x) 和 q(x)),则用积分表示:
DKL(P∣∣Q)=∫p(x)log(q(x)p(x))dx
2. 计算示例
假设一个骰子的真实投掷概率 P (不均匀) 和我们的猜测 Q (均匀) 如下:
| 点数 (i) | 真实分布 P(i) | 猜测分布 Q(i) |
|---|
| 1 | 0.5 | 1/6 |
| 2 | 0.1 | 1/6 |
| 3 | 0.1 | 1/6 |
| 4 | 0.1 | 1/6 |
| 5 | 0.1 | 1/6 |
| 6 | 0.1 | 1/6 |
我们来计算 DKL(P∣∣Q) (使用自然对数 ln):
DKL(P∣∣Q)=点数1的差异0.5ln(1/60.5)+点数2的差异0.1ln(1/60.1)+⋯+点数6的差异0.1ln(1/60.1)
=0.5ln(3)+5×0.1ln(0.6)
≈0.5×1.0986+0.5×(−0.5108)
≈0.5493−0.2554=0.2939
这个值 0.2939 (单位 nats) 就是用 Q 近似 P 所带来的信息损失。
三、从信息论推导 KL 散度
KL散度的公式不是凭空出现的,它与信息论中的熵和交叉熵密切相关。
Step 1: 熵 (Entropy)
熵 H(P) 衡量了概率分布 P 的不确定性,也是对其进行最优编码所需的平均信息量(理论最短编码长度)。
H(P)=−∑iP(i)logP(i)
Step 2: 交叉熵 (Cross-Entropy)
交叉熵 H(P,Q) 衡量了使用基于错误分布 Q 的编码方案,来编码来自真实分布 P 的事件时,所需要的平均信息量。
H(P,Q)=−∑iP(i)logQ(i)
由于 Q 是一个次优的近似,所以用它的编码方案必然会导致平均编码长度不会短于最优方案,即:H(P,Q)≥H(P)。
Step 3: KL 散度的推导
KL散度正是这两种编码方案平均长度的差值,即信息损失量。
DKL(P∣∣Q)=H(P,Q)−H(P)
代入公式:
DKL(P∣∣Q)=(−∑iP(i)logQ(i))−(−∑iP(i)logP(i))
=∑i(P(i)logP(i)−P(i)logQ(i))
=∑iP(i)(logP(i)−logQ(i))
利用对数运算法则 loga−logb=log(a/b),我们得到:
DKL(P∣∣Q)=∑iP(i)log(Q(i)P(i))
这个推导完美地将KL散度的公式与它在信息论中的直观含义联系了起来。
四、重要特性与总结
-
非负性 (Non-negativity)
- DKL(P∣∣Q)≥0。
- 当且仅当 P=Q 时,DKL(P∣∣Q)=0。
-
不对称性 (Asymmetry)
- DKL(P∣∣Q)=DKL(Q∣∣P)。
- 因此,KL散度不是一个真正的“距离”度量,而是一个“散度”。
- DKL(P∣∣Q):用 Q 近似 P 的信息损失。在机器学习中,P 通常是数据的真实分布,Q 是模型的预测分布。我们希望最小化 DKL(P∣∣Q) 来让模型学习到真实分布。
- DKL(Q∣∣P):用 P 近似 Q 的信息损失。这有不同的应用场景,例如在某些类型的变分推断中。