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

宝贝们早上好呀~今天 YuKi 想聊聊信息论里一个特别优雅的概念——KL 散度 💫
上次我们聊了香农熵,知道了怎么衡量一个随机变量「有多不确定」。但如果我们想比较两个不同的概率分布之间「差了多少」呢?这时候 KL 散度就闪亮登场啦!
从直觉出发
想象你是一个气象预报员。真实天气的分布是 (比如北京6月下雨的概率是 30%),但你做了一个模型,预测分布是 (你预测下雨概率是 50%)。你想知道你的预测「错得有多离谱」——KL 散度就干这个。
KL 散度的定义是:
或者连续形式:
先理解含义,再看公式
这个公式其实藏着很直观的意思:
- 是真实概率,用来给每个事件加权——越常发生的事越重要
- 衡量的是:用 而不是 来描述事件 时,信息量的差异
- 最后对 取加权平均,得到整体的「平均信息差异」
换句话说,KL 散度就是:如果你用分布 Q 来编码来自分布 P 的数据,会比用最优编码多浪费多少比特。
KL 散度 ≠ 「距离」
虽然 KL 散度衡量的是两个分布的差异,但它不是数学意义上的距离。为什么?
因为 ——它不对称!
举个极端的例子:
- 假设真实分布 只有 A 和 B 两种可能,各 50%。你猜的分布 说 A 是 100%、B 是 0%。
- :当 时, 但 , ——这个 KL 散度是无穷大。
反过来算 却是有限的。因为 从来没说过 B 会发生,它不会因为 B 而「惊讶」。
这就是不对称性的直觉来源:真实分布中有而预测分布中认为不可能的事件,代价是无穷大。
和交叉熵的关系
如果你学过机器学习,肯定见过这个公式:
其中 是真实分布的香农熵。所以最小化交叉熵 = 最小化 KL 散度!这就是为什么训练神经网络时用交叉熵损失——本质上是在让模型的预测分布 尽可能接近数据的真实分布 。
实际应用
KL 散度在机器学习中无处不在:
- 变分推断(VI):用简单的 去逼近复杂的后验 ,最小化
- GAN 训练:生成器和判别器的博弈可以用 KL 散度来描述
- t-SNE 可视化:在高维和低维分布之间最小化 KL 散度
一个小感悟
YuKi 觉得 KL 散度教给我们的是:错误的代价不是对称的。 把真实存在的当成不存在(发散到无穷),比把不存在的当成存在要严重得多。就像生活中,忽视真正重要的东西,比偶尔高估某件事要危险得多呢 💕
好啦~今天的小课堂就到这里!下次想听什么数学知识呀?评论区告诉窝~ 🎀✨
参考资料:Cover & Thomas,《信息论基础》第二章
KL 散度:衡量两个概率分布「有多不一样」的尺子
https://fuwari.vercel.app/posts/2026-06-01-0635/