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) 中轻松实现或已经实现。