真实面经题目 · 原创解析
RLHF/PPO 中为什么要用 KL 散度约束,过强或过弱会带来什么问题?
这题考 RLHF/PPO 中 KL 约束的作用,核心是限制策略偏离参考模型,平衡 reward 优化、语言质量、安全边界和训练稳定性。
真实面经题目 · 原创解析
这题考 RLHF/PPO 中 KL 约束的作用,核心是限制策略偏离参考模型,平衡 reward 优化、语言质量、安全边界和训练稳定性。
RLHF/PPO 里引入 KL 约束,是因为 reward 不是完美目标。如果只最大化奖励模型分数,策略模型可能迅速偏离 SFT 参考模型,出现格式投机、过度迎合、重复啰嗦、拒答异常、事实性变差或 reward hacking。KL 通常用来度量当前策略在生成 token 分布上相对参考策略的偏移,可以作为 reward penalty、loss 正则项、自适应系数控制或 early stopping 信号。它的作用有三层:第一是稳定优化,防止 PPO 一步更新太大;第二是保持 SFT 阶段学到的语言能力、指令跟随和安全边界;第三是给 reward model 留出可信区间,避免策略跑到奖励模型没见过的分布上。KL 太强,模型几乎不敢离开参考模型,reward 提升小,RL 后训练像没做;KL 太弱,模型可能追着 reward 漏洞跑,训练指标好看但人评、事实性、多样性和安全性下降。实际调参要看目标 KL、reward 曲线、验证集、人评、长度和分层 badcase,而不是只盯训练 reward。
奖励模型、规则 reward 或人类偏好数据都只是对真实目标的近似。策略如果只追求 reward 最大化,可能找到奖励函数的漏洞,而不是真正变得更有帮助、更正确或更安全。KL 约束就是给策略优化加一条不要偏离可信分布太远的边界。
在大模型 PPO 中,常见做法是把当前策略和参考策略在生成 token 上的分布差异估出来。参考策略通常是 SFT 模型或某个冻结基线。KL 越大,说明当前模型的输出分布离参考模型越远,训练风险也越高。
KL 不只是数学正则。它能限制单次策略更新幅度,降低 PPO 训练发散风险;也能保留 SFT 阶段已有的语言流畅性、格式遵循、基础知识和安全策略。没有这个护栏,模型可能为了 reward 改掉很多原本有用的能力。
如果 KL 系数过大或目标 KL 过低,模型会被强行拉回参考策略,哪怕某些回答更符合偏好也难以提高概率。表现上可能是 reward 提升很慢、回答风格几乎不变、困难任务胜率没有提升,RL 阶段只消耗算力却带来有限收益。
如果 KL 约束太弱,策略会快速跑向 reward model 喜欢但真实用户不一定喜欢的区域,例如过长回答、固定模板、虚假自信、过度拒答、关键词堆叠或工具调用投机。训练 reward 可能上涨,但 held-out 人评和安全评测下降。
实践中会同时监控 KL、reward、response length、熵、多样性、人评胜率、事实性、安全违规和分任务表现。KL 系数可以固定,也可以按目标 KL 自适应调整。关键不是让 KL 越小越好,而是让策略在可控漂移内获得真实质量提升。
通常约束当前策略和冻结参考模型的距离。参考模型常是 SFT 后的模型,也可能是某个稳定基线,用来代表训练开始时较可信的分布。
不一定。适度 KL 说明模型确实在学习新的偏好。问题是 KL 超过可控范围后,reward model 的泛化不再可靠,语言质量和安全边界可能退化。
常见原因是 KL 约束太弱或 reward 存在漏洞,策略跑到奖励模型偏好的分布外区域。需要检查 KL、长度、重复、拒答、事实性和 badcase。
不是。PPO clipping 限制新旧策略在采样动作上的更新步长;KL penalty 通常限制当前策略相对参考模型的分布漂移。两者都服务稳定,但约束对象不同。