一句话定义:KL 散度(Kullback-Leibler divergence)衡量两个概率分布 P 和 Q 有多不一样,也叫相对熵。它不是“距离”,因为不对称:KL(P||Q) 通常不等于 KL(Q||P)。
打个比方:P 是真实天气,Q 是天气预报。某天真实下雨概率 30%,预报只给 1%;下雨时你会觉得预报“错得离谱”,惩罚很大。反过来,真实下雨概率 1%,预报给 30%,多数日子没下,惩罚就小。公式是 KL(P||Q)=Σ P(x) log(P(x)/Q(x)):按 P 发生的事,看 Q 给的概率带来多少“惊讶”。P 常发生而 Q 没料到,代价最大;P 很少发生而 Q 多给了概率,代价较小。KL 永远非负,等于 0 当且仅当两个分布几乎处处相同。
和相邻概念的区别:交叉熵(cross-entropy)H(P,Q)=H(P)+KL(P||Q)。训练分类模型时最小化交叉熵,当 P 固定,等价于最小化 KL。JS 散度(Jensen-Shannon divergence)把 KL 对称化,更像距离。Wasserstein 距离则在两个分布几乎不重叠时更稳定。
| 概念 | 是否对称 | 直觉 |
|---|---|---|
| KL 散度 | 否 | P 看 Q 的额外惊讶 |
| JS 散度 | 是 | KL 的对称版 |
| 交叉熵 | 否 | 熵 + KL |
为什么 RLHF 离不开它:基于人类反馈的强化学习(RLHF,Reinforcement Learning from Human Feedback)里,语言模型是策略(policy),奖励模型(reward model)给回答打分。只追求高分,模型会钻空子,输出怪话但骗过奖励。于是目标里加一项 KL 惩罚:新策略不要离参考模型(reference model)太远。像老店换厨师,可以改菜,但不能一夜之间把菜单全换掉。
为什么蒸馏离不开它:知识蒸馏(knowledge distillation)让小学生模型模仿老师模型。老师对每个词的输出是一组概率,比如“猫”0.7、“狗”0.2、“汽车”0.01。学生最小化与老师分布的 KL,学到的不只是标准答案,还有“狗也勉强合理”的软标签(soft label)。这比只学硬标签信息更多。
为什么变分推断离不开它:变分推断(variational inference)想用简单分布 q(z) 近似难算的后验 p(z|x)。衡量近似好坏就用 KL(q||p)。最小化它,等价于最大化证据下界(ELBO,Evidence Lower Bound),这是很多生成模型和贝叶斯方法的地基。
实际意义:看到损失函数里的 KL 项,你该想到“这是在买保险,防止新分布跑太偏”。对普通人,RLHF 后的模型不那么容易胡说,推荐和搜索更新不突然失控,背后都有 KL 在拉缰绳。具体实现和系数以官方文档或论文为准。
