讨论一下KL在LLM强化学习中的应用
背景
在LLM的强化学习方法中,KL用于限制Actor模型相对于SFT模型的变化幅度。围绕KL,本文主要讨论以下几点:
- 要不要加KL?
- KL加在哪里?放在Loss还是Reward,两者有什么关系,各自有什么效果?
- KL如果放在Reward里,需不需要考虑未来token,既需不需要折扣累计?
- KL具体实现方式,用哪种近似计算方法?
符号定义
KL放哪里
KL Penalty放在Loss里
PPO和GRPO把KL Penalty放在了Actor Loss
由于
首先看下PPO的办法,它把KL的计算融入到了
这里看到,
再看下GRPO的办法,它采用了k3估计来计算KL。
用k1和k2估计可以吗?
回过头来再看下GRPO为什么选择k3,可以看到k3也是有下界的,不会导致像k1那样的问题。至于k2和k3哪个效果好,就得实验验证一下了。
KL Penalty放在Reward里
上一节的公式
继续分析,既然
接下来,去掉Critic,然后使用
根据Policy Gradient基础里的介绍,
参考
- [1][Training language models to follow instructions with human
feedback](http://arxiv.org/abs/2203.02155)
- [2][DeepSeek-V3 Technical Report](http://arxiv.org/abs/2412.19437)
- [3][ReMax: A Simple, Effective, and Efficient Reinforcement Learning
Method for Aligning Large Language
Models](http://arxiv.org/abs/2310.10505)
- [4][REINFORCE++: A Simple and Efficient Approach for Aligning Large
Language Models](http://arxiv.org/abs/2501.03262)
- [5][DAPO: An Open-Source LLM Reinforcement Learning System at
Scale](http://arxiv.org/abs/2503.14476)
- [6][GPG: A Simple and Strong Reinforcement Learning Baseline for Model Reasoning](http://arxiv.org/abs/2504.02546)