强化学习的各种方法还可比吗?

《Part I: Tricks or Traps? A Deep Dive into RL for LLM Reasoning》 它揭示了当前“用强化学习提升大模型推理能力”这个领域充满了各种看似高深但又相互矛盾的技术,让实践者感到困惑。作者没有提出更复杂的新算法,而是返璞归真,在一个统一、开源的框架下对现有流行技术(所谓的“tricks”)进行了系统性的独立评估。他们最大的发现是,一个仅包含两种基本技术的极简组合“Lite PPO”,在提升基础模型(非对齐模型)的推理能力上,其性能竟然稳定超过了那些集成了五六种复杂技术的GRPO和DAPO等主流算法。这启发我们,在应用强化学习时,不应盲目堆砌技术,而应深入理解每个技术的核心作用,并根据具体场景(如模型类型、数据难度)做出明智选择,有时候“少即是多”。 当前研究领域的“混乱现象”及其背后的可能原因。例如,有的研究(GRPO)说“组级归一化”好,有的(REINFORCE++)则认为“批次级归一化”更优;有的算法在归一化时使用方差,有的却建议去掉方差以避免“难度偏见”。这种矛盾让从业者无所适从。作者认为,造成这种现象的根本原因在于各研究的实验设置、训练数据和初始模型千差万别,导致结论缺乏可比性。因此,本章启发我们,在评估或应用一个新技术时,必须高度关注其“实验背景”,并提出了一个关键问题引导后续研究:现有技术各自适用于什么场景?是否存在一个简单普适的组合来稳定地优化模型策略? 实验设计 统一框架: 所有实验都在一个开源的ROLL框架下进行,避免了因不同实现方式带来的差异。 多维度模型: 实验覆盖了不同尺寸(Qwen3-4B, 8B)和不同类型(Base基础模型 vs. Aligned对齐模型)的模型。这使得结论更具普适性,能够揭示技术对不同模型的敏感度。 分级数据: 使用了开源数据集,并创新性地将其划分为“简单”、“中等”、“困难”三个等级。这使得分析技术在不同难度任务下的表现成为可能,增加了研究的深度。 通过初步的基线实验,他们还发现了一个有趣的现象:对齐模型虽然起点高,但通过强化学习提升有限;而基础模型潜力巨大,更适合作为评估RL技术效果的“试金石”。 分析 4.1 归一化 (Normalization): 归一化的核心作用是稳定梯度,但如何归一化大有讲究。 启发1 (组级 vs. 批次级): “组级归一化”通常更稳定,因为它只在同一问题的多个答案间比较,不易受全局数据分布影响。而“批次级归一化”在奖励分布倾斜时容易崩溃,但若奖励范围拉大(如从{0, 1}变为{-1, 1}),它又能恢复效果。这表明归一化方法对奖励机制非常敏感。 启发2 (标准差的作用): 在简单任务中,模型输出的答案奖励可能高度一致(全对或全错),导致奖励的“标准差(std)”趋近于零。此时若用标准差去做分母进行归一化,会导致优势值被无限放大,引发梯度爆炸。因此,在这种场景下,去掉标准差项,仅用均值做中心化,反而能让训练更稳定。 启发3 (鲁棒的组合方式): 作者最终发现了一个更稳健的组合:使用“组级”的均值来计算奖励的相对好坏,同时使用“批次级”的标准差来进行缩放。这种“局部均值、全局标准差”的混合模式,既利用了组内比较的精确性,又通过全局标准差避免了因局部标准差过小而引发的不稳定问题。 4.2 更高上限的裁剪 (Clip-Higher): 这是对PPO中裁剪机制的改进。 启发4 (适用场景): 提高裁剪上限(如从0.2到0.28)主要对对齐模型(instruct model)有效。因为对齐模型本身推理能力较强,放宽更新限制能鼓励它探索更多样的解题路径,缓解“熵坍塌”(模型思维固化)。而基础模型由于探索能力本就较弱,放宽限制也难有作为,甚至会起反作用。 启发5 (语言学视角): 标准的裁剪会过度压制“therefore”、“if”等逻辑连接词的生成概率,因为这些词往往是开启新推理路径的关键,其概率变化较大。而提高裁剪上限则给予了模型更多使用这些连接词的自由,让推理结构更多样化。这揭示了超参数背后对模型生成内容风格的深远影响。 启发6 (参数的“缩放定律”): 对于小模型(4B),裁剪上限越高,性能似乎越好,呈现出一种“缩放”关系。但对于大模型(8B),这种关系消失了,存在一个最佳值(如0.28)。这提醒我们超参数的设置并非能简单地随模型尺寸线性缩放。 4.3 损失聚合 (Loss Aggregation): 启发7 (Token级 vs. 序列级): 这两种聚合方式的选择也依赖于模型类型。Token级损失(每个token贡献等同)更适合基础模型,因为它能确保模型从每个token中学到东西,这对于从零开始学习推理至关重要。而序列级损失(每个完整答案贡献等同)更适合对齐模型,因为它能更好地保持高质量答案的整体逻辑连贯性,避免因个别token的优化而破坏整体结构。 4.4 超长过滤 (Overlong Filtering): ...

August 12, 2025 · 小茄墩

PPO训练技巧总览

Jian Hu’s Blogpost 以下所有实例均可在Jian Hu开发的OpenRLHF 0 - 引言 基于人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)结合近端策略优化(Proximal Policy Optimization, PPO)[1]是一种用于微调大语言模型(Large Language Models, LLMs)的强大方法。该方法使用可靠且高效的PPO算法,结合人类评估者的反馈来提高模型生成响应的质量。然而,使用PPO训练LLMs存在几个挑战。这些包括维持稳定的训练过程,以及实现比直接偏好优化(Direct Preference Optimization, DPO)[2]更好的性能。因此,我们总结了RLHF与PPO的实用训练技巧,以帮助研究人员更轻松地微调LLMs,确保训练稳定性和高性能。 1 - 使用PPO训练LLM的高级技巧 我们介绍三类PPO训练技巧:1) LLM特定技巧,2) PPO特定技巧,以及3)来自最新研究的创新策略。LLM特定和PPO特定的技巧已在各种RL框架[3, 4]中实现并证明有效。然而,最近论文中提出的创新策略在特定任务上的适用性仍有待验证。 1.1 - LLM特定技巧 Token级KL惩罚:计算强化学习(RL)模型和监督微调(SFT)模型的响应分布之间的每个token的KL散度[11]。这种散度在训练过程中作为惩罚项被纳入奖励函数。具体来说,每个token的奖励表示如下: $$ r(s_t, a_t) = \textbf{I}(s_t =[\text{EOS}])r(x,y)-\beta \text{KL}(t) $$$$ \text{KL}(t) = \log({\pi_{\theta_{\text{old}}}(a_t|s_t)^{\text{RL}}}/{\pi^{\text{SFT}}(a_t|s_t)} $$​ $$t$$ 是否为最后一个token的标识函数。 ​ 代码链接:utils.py 广义优势估计(Generalized Advantage Estimation, GAE):GAE[10]是一种TD(λ)回报估计方法,用于估计PPO中的token级奖励。在实践中,我们通常设置$λ=1$,将GAE方法转换为蒙特卡洛估计方法。 代码链接:experience_maker.py 将GAE的λ和折扣因子$γ$都设为1,这可以减少值网络引入的偏差。 代码链接:OpenRLHF/openrlhf/cli/train_ppo_ray.py 添加SFT损失:在PPO中加入额外的监督下一个token预测损失,与KL散度一起,可以保持SFT模型的预存能力。 代码链接:ppo_trainer.py 1.2 - PPO特定技巧 模型初始化:在使用PPO训练LLMs时,必须初始化两个模型:演员模型(actor model)和评论家模型(critic model)[6, 7]。具体来说,使用监督微调(SFT)模型初始化演员模型,使用奖励模型初始化评论家模型可以确保PPO训练的效率。 代码链接:examples/train_ppo.py Adam学习率:演员模型的Adam学习率大约是SFT模型使用的十分之一。例如,在OpenRLHF中,SFT模型的Adam学习率为5e-6,而演员模型为5e-7。此外,评论家模型的Adam学习率约为SFT模型的两倍,示例率为9e-6。 代码链接:train_ppo_llama.sh ...

February 9, 2025 · 小茄墩