E.4.3 PPO、RLHF 与 DPO 中的信息论
前置知识:E.4.1 熵和E.4.2 交叉熵与 KL——你需要知道熵、交叉熵和 KL 散度的定义。
前面两节建立了熵、交叉熵和 KL 散度的数学基础。现在来看这些工具如何在最前沿的对齐训练中发挥作用。我们会按照"为什么需要 KL 约束"到"RLHF 怎么用它"再到"DPO 怎么绕过它"的顺序展开,三个概念构成一条清晰的叙事线。
PPO 和 RLHF 中的 KL 约束
训练策略时,新策略如果一步变化太大,容易过拟合或钻奖励函数的空子(reward hacking)。为了限制这种漂移,PPO 和 RLHF 引入了 KL 惩罚项——用 KL 散度衡量新策略离旧策略(或参考模型)有多远,并在优化目标中加以约束。
先从一个具体的场景说起。假设旧策略对某个 token 的概率是 ,新策略突然变成 。概率比是:
新策略对这个 token 的偏好突然放大了 20 倍。即使这个 token 在当前样本上带来了高奖励,这种剧烈变动也很危险——它可能意味着过拟合,或者是模型在钻奖励函数的空子(即 reward hacking)。
为了防止这种情况,PPO 和 RLHF 引入了 KL 惩罚项:
这里 控制惩罚强度。如果新策略离旧策略太远,KL 项变大,抵消掉奖励收益,迫使策略更新更平缓。
在 RLHF 中,KL 约束还承担一个特殊使命:让对齐后的模型不要偏离原始语言模型太远。如果不加约束,模型可能会为了迎合偏好数据而丧失一般语言能力——比如变成一个只会说好话、不会正常回答问题的"讨好型"模型。
交叉熵、熵和 KL 的关系
到目前为止,我们分别认识了熵、交叉熵和 KL 散度。三者看似独立,其实被一个等式串在一起——理解这个等式,就能看明白为什么分类模型、奖励模型、语言模型都在用交叉熵损失。
用文字说就是:KL 散度等于"用错误分布 编码真实分布 的代价",减去"用正确分布 编码自身的代价"——多出来的部分,纯粹是预测不准造成的浪费。
推导很直接。先把定义写出来:
相减:
合并求和:
这个等式在机器学习中出现得极为频繁。因为训练时真实分布 是固定的,所以最小化交叉熵 和最小化 完全等价。这就是为什么分类模型、奖励模型、语言模型都在用交叉熵损失——表面上在降交叉熵,实质上在缩小模型分布与真实分布之间的差距。
DPO:用对数概率比替代奖励模型
RLHF 的流程是:先训练一个奖励模型,再用 PPO 优化策略。但这个过程很复杂——要训练四个模型(策略模型、参考模型、奖励模型、Critic),还要处理 KL 约束和训练不稳定的问题。DPO(Direct Preference Optimization)的出发点是:能不能绕过奖励模型和 PPO,直接用偏好数据("回答 A 比回答 B 更好")来优化策略? DPO 通过比较对数概率比来隐式地实现 KL 正则,一步到位地完成了 RLHF 需要多步才能做的事情。
它的损失函数看起来吓人:
先不要急着看整体。只看一个核心部件——对数概率比:
它比较的是:当前模型相对于参考模型,有多偏好回答 。拿一个数字例子。对某个回答 :
| 模型 | 概率 |
|---|---|
| 当前模型 | |
| 参考模型 |
概率比是 ,取对数得到 。这说明当前模型比参考模型更偏好这个回答。
DPO 做的事情是同时比较 winner()和 loser()的对数概率比:
如果 winner 的相对概率提高、loser 的相对概率降低,这个差值就变大,损失就变小——模型正在”更喜欢好的回答、更不喜欢差的回答”。
是 sigmoid 函数,把差值压缩到 区间, 把它变成损失值。整行前面的负号确保”差值越大,损失越小”。
DPO 和 KL 的关系在于:参考模型 不只是被动比较对象,它还像一根”锚”。当前模型不能只追求偏好数据,还会通过概率比受到参考模型约束。直觉上,这和 RLHF 中的:
是同一类思想:提高偏好回答的概率,但不要离参考模型太远。
小结
本篇把信息论工具用到了对齐训练的实战中:
| 概念 | 解决什么问题 | 核心公式/思想 | 在 RL 中的角色 |
|---|---|---|---|
| KL 约束 | 防止策略更新太激进 | 奖励 | PPO/RLHF 中限制策略漂移 |
| 交叉熵-KL 等式 | 解释为什么分类都用交叉熵 | 最小化交叉熵 = 最小化 KL | |
| DPO 对数概率比 | 不训练奖励模型也能做偏好学习 | 用偏好数据优化相对概率 |
三个概念构成一条叙事线:KL 散度限制策略漂移 -> 交叉熵和 KL 的等式关系让训练损失有理论支撑 -> DPO 用对数概率比隐式实现 KL 正则,跳过了奖励模型。
下一篇:E.4.4 互信息与表征学习 —— 用信息论衡量表征质量。