Skip to content

E.4.2 交叉熵与 KL 散度

前置知识E.4.1 自信息、熵与探索——你需要知道熵的定义。


上一节我们用熵衡量了单个策略的随机程度。但训练中更常见的场景是对比两个分布:模型预测的分布 vs 真实标签的分布,或者新策略 vs 旧策略。这就需要两个新工具——交叉熵和 KL 散度。

交叉熵:用"错误的地图"走路的代价

交叉熵衡量的是"用错误分布做预测的代价"——分类模型和奖励模型用它做训练损失。当真实分布是 PP 而你用 QQ 来预测时,交叉熵告诉你付出的代价有多大。

想象你拿着一张不太准确的地图找路。如果地图和实际路况差得不多,你只是多绕了一点路;如果地图严重失真,你可能会完全迷路。交叉熵衡量的就是这种"用错误的地图走路的代价"。数学上定义为:

H(P,Q)=xP(x)logQ(x).H(P,Q)=-\sum_x P(x)\log Q(x).

它和熵长得很像,区别在于 log\log 里面用的是 QQ 而不是 PP——也就是说,你在用"错误"的分布来编码。

举一个分类任务的例子。假设正确答案是第一个类别:

P=[1,0].P=[1,0].

模型预测为:

Q=[0.8,0.2].Q=[0.8,0.2].

因为 P=[1,0]P=[1,0],交叉熵只剩正确类别那一项:

H(P,Q)=log0.8.H(P,Q)=-\log 0.8.

如果模型更自信地预测正确类别,比如 Q=[0.95,0.05]Q=[0.95,0.05],损失变成 log0.95-\log 0.95,比 log0.8-\log 0.8 更小。预测越准确,交叉熵越低——这就是为什么它被广泛用作分类模型的训练损失。在 RLHF 中,奖励模型、偏好模型和策略模型的训练都离不开它。


KL 散度:两个分布之间的"惊讶程度"

交叉熵告诉我们"用一个分布去预测另一个分布要付多大代价"。但如果把这个代价减去真实分布自身的熵,剩下的部分就纯粹反映"两个分布之间的差异"——这就是 KL 散度要解决的问题。KL 散度衡量两个分布的差异,PPO 和 RLHF 用它来限制策略不要变化太大。

直觉上,KL 散度衡量的是:如果你的真实信念是分布 PP,但不得不按分布 QQ 行事,你会有多"意外"。公式为:

DKL(PQ)=xP(x)logP(x)Q(x).D_{KL}(P\|Q)=\sum_x P(x)\log\frac{P(x)}{Q(x)}.

P(x)Q(x)\frac{P(x)}{Q(x)} 是两个概率的比值——如果 PPQQ 对某个 xx 看法一致,比值接近 1,log1=0\log 1=0,没有惊讶。如果分歧很大,比值偏离 1,KL 散度就会变大。

看一个 RL 中的实际场景。PPO 和 RLHF 经常需要比较新旧策略。假设旧策略是:

πold=[0.5,0.5].\pi_{old}=[0.5,0.5].

两个候选新策略分别是:

πnew(1)=[0.6,0.4],πnew(2)=[0.9,0.1].\pi_{new}^{(1)}=[0.6,0.4], \qquad \pi_{new}^{(2)}=[0.9,0.1].

直觉上,新策略 2 离旧策略更远。用 KL 散度量化:以旧策略为 PP,新策略 1 为 QQ

DKL(πoldπnew(1))=0.5log0.50.6+0.5log0.50.4.D_{KL}(\pi_{old}\|\pi_{new}^{(1)}) =0.5\log\frac{0.5}{0.6}+0.5\log\frac{0.5}{0.4}.

以新策略 2 为 QQ

DKL(πoldπnew(2))=0.5log0.50.9+0.5log0.50.1.D_{KL}(\pi_{old}\|\pi_{new}^{(2)}) =0.5\log\frac{0.5}{0.9}+0.5\log\frac{0.5}{0.1}.

第二个值更大,说明新策略 2 偏离旧策略的程度更激进。


KL 散度为什么不对称

理解了 KL 散度的基本用法后,一个容易踩的坑是:KL 散度不满足交换律。也就是说 DKL(PQ)DKL(QP)D_{KL}(P\|Q)\neq D_{KL}(Q\|P)。方向的选择不是随意的——PPO 和 RLHF 中使用不同方向,强调不同类型的偏差。

DKL(PQ)DKL(QP).D_{KL}(P\|Q)\neq D_{KL}(Q\|P).

理解不对称性,考虑:

P=[0.99,0.01],Q=[0.5,0.5].P=[0.99,0.01], \qquad Q=[0.5,0.5].

PP 出发看 QQ(即 DKL(PQ)D_{KL}(P\|Q)):真实世界几乎总是发生第一个动作,但你的模型 QQ 却把一半的概率分给了第二个动作。这种"本来很确定却预测得很模糊"的错误,惩罚较大。

QQ 出发看 PP(即 DKL(QP)D_{KL}(Q\|P)):真实世界两个动作都有可能,但你的模型 PP 几乎把所有概率给了第一个。这种"本来很模糊却预测得很确定"的错误,性质完全不同。

所以在使用 KL 散度时,方向的选择不是随意的。PPO 里用 DKL(πoldπnew)D_{KL}(\pi_{old}\|\pi_{new}),意思是"从旧策略的视角看新策略变了多少";RLHF 里用 DKL(πθπref)D_{KL}(\pi_\theta\|\pi_{ref}),意思是"从当前模型的视角看它离参考模型多远"。不同方向强调不同类型的偏差。


小结

本篇引入了两个衡量分布之间距离的工具:

概念解决什么问题核心公式RL 中的角色
交叉熵用错误分布做预测的代价有多大H(P,Q)=xP(x)logQ(x)H(P,Q)=-\sum_x P(x)\log Q(x)分类模型、奖励模型的训练损失
KL 散度两个分布之间差多远DKL(PQ)=xP(x)logP(x)Q(x)D_{KL}(P|Q)=\sum_x P(x)\log\frac{P(x)}{Q(x)}PPO/RLHF 中限制策略漂移
KL 不对称KL 方向不同含义不同DKL(PQ)DKL(QP)D_{KL}(P|Q)\neq D_{KL}(Q|P)PPO 和 RLHF 使用不同方向

交叉熵和 KL 散度的关系——DKL(PQ)=H(P,Q)H(P)D_{KL}(P\|Q)=H(P,Q)-H(P)——是下一篇理解 PPO、RLHF 和 DPO 的关键桥梁。

下一篇E.4.3 PPO、RLHF 与 DPO 中的信息论 —— 把交叉熵和 KL 用到对齐训练中。

Built for reusable bilingual course delivery