这篇文章目的是方便更通俗、更简单的理解KL散度,所以会尽可能减少公式推导,更多的阐述KL的理论知识和应用。
介绍
KL散度(Kullback–Leibler Divergence),通常简称 KL Divergence,中文叫:
- 相对熵
- KL距离(严格来说它不是“距离”)
- K-L散度
它是信息论中的核心概念之一,用来衡量:
“一个概率分布,相对于另一个概率分布,损失了多少信息。”
或者更直观一点:
“如果真实世界遵循分布 P,但你错误地使用了分布 Q 去描述它,会多付出多少代价。”
直观理解
假设:
- P:真实分布(真实世界)
- Q:你的模型认为的分布(预测世界)
KL散度衡量:
“Q 对 P 的描述到底有多差。”
一个简单例子:
假设真实分布 P:
| 事件 | 概率 |
|---|---|
| 猫 | 0.9 |
| 狗 | 0.1 |
而你的模型 Q:
| 事件 | 概率 |
|---|---|
| 猫 | 0.5 |
| 狗 | 0.5 |
那么:
- 真实世界里几乎总是“猫”
- 但你的模型认为“猫狗一样多”
于是:
- 你的预测浪费了大量信息
- 编码效率下降
- 模型认知错误
KL散度会很大。
如果模型 Q:
| 事件 | 概率 |
|---|---|
| 猫 | 0.89 |
| 狗 | 0.11 |
那么:
- Q 很接近 P
- KL散度就很小
KL散度的本质:信息损失
KL散度来自信息论。
信息论里有一个核心思想:
概率越小,信息量越大。
比如:
- “太阳明天升起” → 信息量很小
- “明天外星人降临” → 信息量巨大
因为后者概率低。
KL散度本质上衡量:
“你因为使用错误概率模型,而额外浪费的信息量。”
所以:
- KL越小 → 模型越接近真实分布
- KL越大 → 模型偏差越严重
KL散度的重要性质
1. KL ≥ 0
KL散度永远非负:
DKL(P∣∣Q)≥0D_{KL}(P || Q) \ge 0DKL(P∣∣Q)≥0
只有:
P=QP = QP=Q
时才等于 0。
即:
完全一致时,没有信息损失。
2. KL不是对称的
这是最重要性质之一。
一般:
DKL(P∣∣Q)≠DKL(Q∣∣P)D{KL}(P || Q) \neq D{KL}(Q || P)DKL(P∣∣Q)\=DKL(Q∣∣P)
即:
- “Q 用来近似 P”
- 和
- “P 用来近似 Q”
完全不是一回事。
为什么不对称很重要?
因为:
场景1:覆盖真实分布
如果真实分布有多个峰:
- 你漏掉一个峰
- KL惩罚会非常大
这叫:
mode covering(模式覆盖)
场景2:只抓最主要模式
有些任务更关注:
- 最重要概率区域
而不是覆盖所有区域。
于是另一方向KL会有不同效果。
这直接影响:
- VAE
- GAN
- 扩散模型
- 强化学习
- RLHF
中的训练行为。
KL散度的应用
1. 分类任务
例如:
- 图像分类
- NLP分类
- LLM next-token预测
模型输出:
真实标签:
训练目标:
让预测分布接近真实分布
于是使用:
- Cross Entropy
- 本质就是KL优化
举例
真实:
模型:
训练会推动:
即:
例如:
- 图像分类
- NLP分类
- LLM next-token预测
模型输出:
真实标签:
训练目标:
让预测分布接近真实分布
于是使用:
- Cross Entropy
- 本质就是KL优化
举例
真实:
模型:
训练会推动:
即:
2. LLM
LLM本质是:
下一个token概率预测器。
例如:
输入:
模型预测:
| Token | 概率 |
|---|---|
| 好 | 0.8 |
| 差 | 0.1 |
| 热 | 0.1 |
真实token:
训练目标:
- 最大化正确token概率
- 等价于最小化KL散度
3. 知识蒸馏(Distillation)
KL散度经典应用。
Teacher → Student
大模型:
小模型:
Teacher输出:
Student学习:
这里不能只学:
而是要学习:
整个概率结构。
因此使用:
为什么有效?
因为Teacher包含:
- 类别相似性
- 不确定性
- 结构知识
例如:
这些信息:
one-hot标签无法表达。
4. RL
PPO中的KL约束
PPO不允许策略突然变化太大。
否则:
- 训练崩溃
- reward hacking
- 模型退化
因此:
新策略必须接近旧策略:
DKL(πnew∣∣πold)D{KL}(\pi{new} || \pi_{old})DKL(πnew∣∣πold)
本质
KL在这里扮演:
“刹车系统”
避免:
- policy collapse
- 梯度爆炸
- 行为突变
5. RLHF
RLHF中:
- 有一个Reference Model
- 一个正在训练的Policy Model
训练时:
不能让模型偏离原模型太远。
因此加入:
KL penalty。
为什么?
否则模型可能:
为了奖励:
- 胡说八道
- 极端输出
- reward hacking
KL约束:
保持语言能力稳定。
RLHF目标本质
不是:
而是:
因此:
KL是核心稳定器。
公式
一、离散分布的KL散度
对于两个离散概率分布:
- :真实分布
- :近似分布
KL散度定义为:
含义解释
公式可以拆成三部分理解:
1.
表示:
2.
表示:
如果:
- Q低估了真实概率
- 比值会很大
- 惩罚会增加
3.
表示:
因为信息论里:
- log体现编码长度
- 信息增益
- 熵变化
4. 最外层求和
表示:
即:
平均信息损失。
二、连续分布形式
如果是连续概率分布:
例如:
- 高斯分布
- 连续latent space
则KL散度写成积分: