跳到主内容

什么是 KL 散度?两个分布差多远

2026-10-06 发布 来源:我告诉你AI导航 阅读

把训练好的大模型压缩成小模型,怎么判断学得像不像?光看答对多少题不够,答题只反映结果,不反映它心里的概率分布偏了多少。这时候常用的尺子是 KL 散度:它衡量用一套分布去近似另一套分布时,平均要多付多少代价。名字里的「散度」值得留意,...

把训练好的大模型压缩成小模型,怎么判断学得像不像?光看答对多少题不够,答题只反映结果,不反映它心里的概率分布偏了多少。这时候常用的尺子是 KL 散度:它衡量用一套分布去近似另一套分布时,平均要多付多少代价。名字里的「散度」值得留意,它刻意避开「距离」,因为它不满足距离该有的规则。下面讲清四件事:它算什么、为什么不能当尺子、两个方向为何结果相反、它在哪些环节被当成惩罚项。

它算的是一笔额外的编码开销

设想把一串由分布 P 产生的符号传给对方,双方约定一套针对 Q 的编码。Q 和 P 一致时,编码长度刚好贴合;Q 偏离 P 时,在 P 里常见、在 Q 里被当作罕见的符号就得用更长的码,平均每次传输多花一些比特。多花的平均值就是 KL 散度。由此得到两个结论:分布相同时开销为零,所以最小值是零;差得越远,被低估的常见符号越多,开销越大。它衡量的是编码上的低效,跟差了几个单位无关。

四条性质,一条禁忌

性质数学表现工程含义误用会怎样
非负恒大于等于零,同分布时为零可以当优化目标往下压压到零只说明分布重合,不说明都对
不对称P 对 Q 与 Q 对 P 一般不相等方向本身是一个设计选择换方向等于换了目标,结果跟着变
无上界P 有而 Q 几乎为零时趋向无穷需要截断或加平滑直接当损失,早期训练容易数值爆炸
不满足三角不等式A 到 C 可能大于 A 到 B 加 B 到 C不能做几何意义上的远近推理当成距离做聚类,结果不可靠

四行里第二行是理解一切分歧的起点。数学上只是公式不对称,工程上它意味着「你更在意哪一种错」。想清这一点,后面很多看似矛盾的现象都能解释。

两个方向,两种性格

用 P 表示真实分布、Q 表示模型分布,两个方向惩罚重点完全不同。P 对 Q 的方向,只要 P 某处有概率而 Q 给了接近零的值,惩罚就非常大,模型于是把概率铺开,覆盖真实分布的所有峰,代价是两峰之间也铺上一层不该有的概率。Q 对 P 的方向相反,它允许模型忽略 P 的低概率区域,只要在选中的区域贴合得好,于是倾向于锁定某一个峰,果断但可能漏掉另一半。放到生成任务里,前者容易产出平庸但不出错的回答,后者容易产出鲜明但跑偏的回答。方向选错,越优化偏得越远。

它和交叉熵是一家人

三者之间有个恒等关系:交叉熵等于真实分布的熵加上 KL 散度。训练时真实标签固定,熵是常数,最小化交叉熵和最小化 KL 就是同一个优化问题,前者只是省掉常数项。这也解释了一个常见困惑:论文里一会儿说交叉熵、一会儿说 KL,看着像两件事,其实是一个目标。真正需要区分方向的场合,是两边都在变,比如蒸馏里学生和老师同时更新,或者对齐训练里模型和参考模型之间有约束。

它在哪些环节当惩罚项

蒸馏里,学生输出分布被拉向老师的分布,多用 P 对 Q 的方向,目的是别漏掉老师认为可能的答案。对齐训练里,KL 常作为惩罚项,约束新模型别偏离参考模型太远,防止为迎合评分把语言能力改坏,相关讨论见 AI 对齐。变分推断里,用简单分布近似复杂后验,目标函数天然带一项 KL。监控场景里,它用来比较线上和训练时的输入分布,数值抬升往往意味着数据漂移,配合 模型校准 一起看,能分清是分布变了还是置信度失准。前置概念可以看 信息熵 和 交叉熵。

它不会告诉你的事

KL 散度给出一个数,却不指出哪里偏。两个分布可能某个局部差得离谱,也可能整体均匀地差一点,总和相同 KL 就一样大,定位问题得回到逐维对比。它对零概率极敏感,P 有而 Q 为零会让结果发散,计算前必须先平滑,平滑强度又会悄悄改变结论。它也不适合跨任务比较,不同词表、维度下的 KL 没有可比性。还有一层限制常被忽略,它假设你手上的 P 是准的;P 本身来自有偏的统计,KL 衡量的就只是模型有多像这个有偏样本。

什么时候该换一把尺子

判断两个分布形状像不像,或者要把它当优化目标往下压,KL 合适。要严格的距离度量、要做聚类或近邻检索,就该换成满足对称性和三角不等式的指标。要看单个样本往哪偏,逐维残差比一个标量更有信息。把工具和问题对上,比记住公式重要。

速查:KL 散度

  • 一句话:用 Q 编码来自 P 的数据,平均多花多少信息量
  • 三条硬性质:非负、不对称、不满足三角不等式
  • 恒等关系:交叉熵等于真实分布的熵加 KL 散度
  • 方向选择:P 对 Q 偏覆盖,Q 对 P 偏锁定
  • 常见用途:蒸馏、对齐惩罚、变分推断、漂移监控

反馈页面信息

请描述需要更正的地方,页面标题和网址会自动附上。

也可以发邮件至 [email protected]