zz-haooo/STEER
GitHub: zz-haooo/STEER
STEER 是一种基于 token 级别熵变化重加权的方法,用于解决大语言模型强化学习训练中的 Entropy Collapse 问题。
Stars: 25 | Forks: 2
# 重新思考 RLVR 中的 Entropy 干预:基于 Entropy 变化的视角
### 引言
虽然带有可验证奖励的强化学习 (RLVR) 能够增强 LLM 的推理能力,但其训练过程带来了一个关键风险:Entropy Collapse。
这种现象是策略多样性的快速丧失,源于探索与利用的不平衡,并导致泛化能力的缺失。
最近的 entropy 干预方法旨在防止 entropy collapse,但其潜在机制仍不清楚。
在本文中,
- **我们提出了一个用于 entropy 变化的定量分析框架。** 在此基础上,entropy 干预的效果可以通过 token 级别的分析来统一和阐明。
我们的发现指出了现有方法的一个根本局限:它们试图间接地控制 entropy。
由于仅仅影响相关因素(例如 advantage signal 和生成概率),它们的有效性在本质上受到限制,并且有可能会失效。
- **为了精确地稳定 entropy 变化**,我们提出了一种自适应且细粒度的重新加权方法,即通过重新加权稳定 token 级别的 Entropy 变化 (Stabilizing Token-level Entropy-changE via Reweighting, STEER),该方法将每一步的 entropy 变化保持在一个适度的范围内。
这种方法在确保稳健探索的同时防止了过度利用。
我们的大量实验表明,STEER 显著避免了 entropy collapse,稳定了 entropy 动态,并在数学推理基准测试中取得了更强大的下游性能。
### 快速开始
我们使用与官方 verl 代码库完全相同的环境配置。
* **安装:** [https://verl.readthedocs.io/en/latest/start/install.html](https://verl.readthedocs.io/en/latest/start/install.html)
* **快速开始:** [https://verl.readthedocs.io/en/latest/start/quickstart.html](https://verl.readthedocs.io/en/latest/start/quickstart.html)
环境配置
```
pip install git+https://github.com/volcengine/verl.git@v0.4.1.x
```
### 数据集
我们使用公开数据集 [DAPO-Math-17k](https://huggingface.co/datasets/BytedTsinghua-SIA/DAPO-Math-17k) 进行训练,并使用六个公开的数学基准进行验证。
所有数据集均提供在 `STEER/datasets` 文件夹中。
### 基础模型
我们使用 [Qwen](https://huggingface.co/Qwen/collections) 系列模型进行训练。
您可以从 Huggingface 下载模型,例如:
```
huggingface-cli download Qwen/Qwen2.5-Math-7B --local-dir Qwen2.5-Math-7B --resume-download
```
### 训练
训练脚本完全继承自标准的 GRPO 训练。
我们提供了可直接运行的脚本:
```
cd STEER/run
bash run_linear.sh
bash run_exp.sh
```
可以通过调整以下参数来更改 $\lambda_{\text{min}}$:
```
+actor_rollout_ref.actor.policy_loss.token_weight_min
```
可以在极端场景下进行实验以测试 entropy 控制:
```
bash run_linear_extreme.sh
bash run_exp_extreme.sh
```
核心实现提供在文件:`STEER/verl/trainer/ppo/core_algos.py` 中(约 579–808 行)
请注意,我们使用 8 张 H20 运行所有实验。
如果您想启动分布式任务,请参考 [verl](https://github.com/volcengine/verl/tree/gm-tyx/puffin/main) 的说明。
### Entropy 控制模式
论文中的主要实验采用**对称**模式。
为了进行方向性 entropy 控制,我们额外公开了一种**非对称**模式,该模式尊重 $\Omega$ 的符号,以便仅衰减降低 entropy(或增加 entropy)的 token,而其余 token 的权重保持为 1。
推荐配置:
```
+actor_rollout_ref.actor.policy_loss.entropy_control_mode=asymmetric
+actor_rollout_ref.actor.policy_loss.token_weight_min=0.9
+actor_rollout_ref.actor.policy_loss.token_weight_max=1.0
```
参见 `run/run_asymmetric.sh`。
### 评估
我们提供了集成在 verl 基础设施中的评估代码库。
有关我们在 [Huggingface](https://huggingface.co/zzzzzzzzzzhao/STEER/tree/main) 上发布的模型的评估脚本,请参阅脚本 eval.sh。
```
cd STEER/run
bash eval.sh
```
## 致谢
我们基于 [verl](https://github.com/volcengine/verl) 和 Qwen 的数学推理评估协议进行构建。
所有对比方法都可以在 [verl](https://github.com/volcengine/verl) 中轻松实现或已经实现。