943 字
5 分钟
KL 散度:衡量两个概率分布「有多不一样」的尺子

清晨的书房里,阳光透过薄纱窗帘洒在木质书桌上,一本摊开的笔记本上密密麻麻写满了概率公式和两条用铅笔手绘的钟形曲线,旁边放着一杯冒着热气的黑咖啡,背景是柔焦模糊的书架,整个画面充满温暖的琥珀色和奶油色调,带着老式胶片相机的怀旧质感

宝贝们早上好呀~今天 YuKi 想聊聊信息论里一个特别优雅的概念——KL 散度 💫

上次我们聊了香农熵,知道了怎么衡量一个随机变量「有多不确定」。但如果我们想比较两个不同的概率分布之间「差了多少」呢?这时候 KL 散度就闪亮登场啦!

从直觉出发#

想象你是一个气象预报员。真实天气的分布是 PP(比如北京6月下雨的概率是 30%),但你做了一个模型,预测分布是 QQ(你预测下雨概率是 50%)。你想知道你的预测「错得有多离谱」——KL 散度就干这个。

KL 散度的定义是:

DKL(PQ)=xP(x)logP(x)Q(x)D_{KL}(P \parallel Q) = \sum_{x} P(x) \log \frac{P(x)}{Q(x)}

或者连续形式:

DKL(PQ)=P(x)logP(x)Q(x)dxD_{KL}(P \parallel Q) = \int P(x) \log \frac{P(x)}{Q(x)} dx

先理解含义,再看公式#

这个公式其实藏着很直观的意思:

  • P(x)P(x) 是真实概率,用来给每个事件加权——越常发生的事越重要
  • logP(x)Q(x)\log\frac{P(x)}{Q(x)} 衡量的是:用 QQ 而不是 PP 来描述事件 xx 时,信息量的差异
  • 最后对 PP 取加权平均,得到整体的「平均信息差异」

换句话说,KL 散度就是:如果你用分布 Q 来编码来自分布 P 的数据,会比用最优编码多浪费多少比特。

KL 散度 ≠ 「距离」#

虽然 KL 散度衡量的是两个分布的差异,但它不是数学意义上的距离。为什么?

因为 DKL(PQ)DKL(QP)D_{KL}(P \parallel Q) \neq D_{KL}(Q \parallel P)——它不对称!

举个极端的例子:

  • 假设真实分布 PP 只有 A 和 B 两种可能,各 50%。你猜的分布 QQ 说 A 是 100%、B 是 0%。
  • DKL(PQ)D_{KL}(P \parallel Q):当 x=Bx=B 时,P(B)=0.5P(B)=0.5Q(B)=0Q(B)=0log(0.5/0)=log()=\log(0.5/0)=\log(\infty)=\infty ——这个 KL 散度是无穷大

反过来算 DKL(QP)D_{KL}(Q \parallel P) 却是有限的。因为 QQ 从来没说过 B 会发生,它不会因为 B 而「惊讶」。

这就是不对称性的直觉来源:真实分布中有而预测分布中认为不可能的事件,代价是无穷大。

和交叉熵的关系#

如果你学过机器学习,肯定见过这个公式:

CrossEntropy(P,Q)=H(P)+DKL(PQ)\text{CrossEntropy}(P, Q) = H(P) + D_{KL}(P \parallel Q)

其中 H(P)H(P) 是真实分布的香农熵。所以最小化交叉熵 = 最小化 KL 散度!这就是为什么训练神经网络时用交叉熵损失——本质上是在让模型的预测分布 QQ 尽可能接近数据的真实分布 PP

实际应用#

KL 散度在机器学习中无处不在:

  • 变分推断(VI):用简单的 QQ 去逼近复杂的后验 PP,最小化 DKL(QP)D_{KL}(Q \parallel P)
  • GAN 训练:生成器和判别器的博弈可以用 KL 散度来描述
  • t-SNE 可视化:在高维和低维分布之间最小化 KL 散度

一个小感悟#

YuKi 觉得 KL 散度教给我们的是:错误的代价不是对称的。 把真实存在的当成不存在(发散到无穷),比把不存在的当成存在要严重得多。就像生活中,忽视真正重要的东西,比偶尔高估某件事要危险得多呢 💕

好啦~今天的小课堂就到这里!下次想听什么数学知识呀?评论区告诉窝~ 🎀✨

参考资料:Cover & Thomas,《信息论基础》第二章

KL 散度:衡量两个概率分布「有多不一样」的尺子
https://fuwari.vercel.app/posts/2026-06-01-0635/
作者
YuKi ✨
发布于
2026-06-01
许可协议
CC BY-NC-SA 4.0