KL 散度
KL散度公式
KL散度(Kullback-Leibler divergence)也称为 KL 距离。
KL 散度衡量一个概率分布 $Q$ 相对于真实分布 $P$ 的差异,它们的KL 散度计算公式为:
当 $x$ 为连续变量时,则 KL 散度可以写为:
注意:KL 虽然有“距离”之称,但它是不对称的,即:
KL散度计算例子
真实分布 $P$ 和认知分布 $Q$ 如下,现计算 $Q$ 与 $P$ 的距离。

根据 KL 散度公式,可以计算得到:
KL散度的用途
KL 散度广泛应用于机器学习,与分布相关的问题中都经常能看到它。
KL散度应用场景一:监控变量分布
由于模型一般是基于历史样本训练的,所以随着时间推移,可能不再适用于线上数据。
此时,可以使用 KL 散度来监控线上变量的分布是否与建模时训练数据的分布一致。
当 KL 散度大于一定阈值时,就自动发出警报,方便建模人员进行分析与采取相关措施。

KL散度应用场景二:作为损失函数的正则项
在训练模型的时候,可以用 KL 散度作为正则项,强制使模型的预测值趋向目标分布。
例如著名的 VAE 自动编码器模型中,就引入 KL 散度,使其编码器的输出偏向正态分布。
使用 KL 散度作为正则项,可以抵抗过拟合,它可以使模型预测值的分布更加合理化。

KL散度是如何定义出来的
本节讲解 KL 散度的原理与推导,从而进一步理解 KL 的意义。
KL散度的原理与意义
KL 是基于信息熵与交叉熵定义出来的。
下面先简单回顾信息熵与交叉熵,再说明 KL 散度的原理。
变量的信息熵
假设变量 $ X=[x_1,x_2,\dots,x_n] $ 的分布为 $ P=[p_1,p_2,\dots,p_n] $
即 $X$ 取值为 $x_i$ 的概率为 $p_i$。
当我们了解 $X$ 的分布概率 $P$ 时,在知道真相 $X=x_i$ 时,所获得的信息量为: $ -\ln(p_i) $ [1]
由于 $X$ 的所有可能取值为 $x_1,x_2,\dots,x_n$,所以知道 $X$ 真实取值时获得的信息量期望为:
上式称为变量的熵,它代表知道一个以 $P$ 分布的变量的真实值时所获得的期望信息量。
变量的交叉熵
当不知道 $X$ 的真实分布 $ P=[p_1,\dots,p_n] $, 而是认为 $X$ 的分布为 $ Q=[q_1,q_2,\dots,q_n] $ 时,由于认为 $X$ 取值为 $x_i$ 的概率为 $q_i$,则在知道 $X=x_i$ 时获得的信息量为: $ -\ln(q_i) $
由于 $X$ 的所有可能取值为 $x_1,x_2,\dots,x_n$,所以知道 $X$ 真实取值时获得的信息量期望为:
上式称为变量的交叉熵。
它代表以分布 $Q$ 去认识一个分布 $P$ 的变量时,在知道 $X$ 的真实值时所获得的期望信息量。
KL散度的意义
从信息熵与交叉熵可知:
- 信息熵:我们掌握 $X$ 的真实分布时获得的信息量期望;
- 交叉熵:我们不知道 $X$ 的真实分布,而用另一个分布去描述它时获得的信息量期望。
KL 散度定义为交叉熵与信息熵的差值:
展开可得:
因此:
根据吉布斯不等式,KL 散度大于等于 0,故 $$H_x(P|Q) \ge H_x(P|P)$$
说明:
- 交叉熵总是大于或等于信息熵
- 当且仅当 $P = Q$ 时等号成立,说明此时认知分布等同于真实分布[2]。
KL散度大于等于0的证明(吉布斯不等式)
KL 散度作为两个分布的距离,它一定不小于 0。下面证明为什么:
证明过程需要利用不等式:
利用此不等式可证明 KL 散度不小于 0。
由于:
因此:
对所有 $x$ 求和:
而因为概率分布满足:
所以:
因此得到:
等号当且仅当 $P = Q$ 时(两个分布完全相同)成立。
附:$\ln x \le x-1$ 的证明
令:
求导:
令导数为 0,则有:
所以:
可知 $f(x)$ 在 $x=1$ 处取得极值,且易知该点为极大值。
因此:
即:
从而得到:
评论