R1-Reward:基于稳定强化学习的多模态奖励模型,解锁长时推理能力

R1-Reward:基于StableReinforce算法的多模态奖励模型,解决了训练不稳定等问题,显著提升了模型在多模态推理任务中的表现,并在实际业务中取得成功。

原文标题:RL训练总崩溃?R1-Reward稳定解锁奖励模型Long-Cot推理能力

原文作者:机器之心

冷月清谈:

快手、中科院、清华、南大的研究团队提出了一种新的多模态奖励模型 R1-Reward,它利用改进的强化学习算法 StableReinforce,解决了传统 RL 算法在训练奖励模型时遇到的不稳定问题。R1-Reward 通过重新定义问题、改进损失函数、优化优势值处理方式,并引入一致性奖励,显著提升了模型在多模态推理任务中的表现。该模型采用渐进式训练策略,先通过监督微调让模型“入门”,再利用强化学习在难题上进行训练。实验结果表明,R1-Reward 在多个多模态奖励模型测评基准上超越了现有 SOTA 模型,且通过推理时多次采样并投票的方式,性能还能进一步提升。此外,该方法已在快手的实际业务场景中得到成功应用,展示了较强的工业化潜力。

怜星夜思:

1、R1-Reward 中提到的一致性奖励,通过引入外部模型作为“裁判”来检查奖励模型分析和答案的一致性。这种方法在长期来看,会不会导致奖励模型过度依赖“裁判”模型的判断,反而限制了自身的独立思考能力?
2、文章提到 R1-Reward 在推理时通过多次采样并投票的方式提升准确率,这个策略为什么有效? 背后更深层的原因是什么? 会不会增加计算成本?
3、R1-Reward 使用了渐进式难度训练策略,先用 GPT-4o 生成的思考过程进行监督微调,然后再用强化学习训练“更难”的样本。 这种由易到难的训练方式,对提升模型的推理能力有什么帮助?如果一开始就用强化学习训练所有数据,效果会差很多吗?

原文内容

机器之心发布

机器之心编辑部


多模态奖励模型(MRMs)在提升多模态大语言模型(MLLMs)的表现中起着至关重要的作用,在训练阶段可以提供稳定的 reward,评估阶段可以选择更好的 sample 结果,甚至单独作为 evaluator。尽管近期强化学习(RL)在传统视觉任务和多模态推理任务中取得了显著进展,但其在奖励建模中的应用仍然受到挑战,尤其是如何通过强化学习对奖励模型引入长期推理能力。



来自快手、中科院、清华、南大的研究团队发现,直接把现有的 RL 算法(比如 Reinforce++)用到训练 MRM 上,会遇到很多问题,比如训练过程很不稳定,甚至直接崩掉。本文的出发点就是要解决这些问题,探索如何利用强化学习来稳定、有效地提升多模态奖励模型的长时推理能力。基于团队在多模态强化学习的工作 MM-RLHF (ICML 2025),本文进一步提出了 R1-Reward,在现有的多模态奖励模型 benchmark 上相比于 SOTA 模型有 5%-15% 的提升,且随着 inference sampling 的数目增多还能进一步增长。


R1-Reward 不仅在学术上展现了巨大价值,还在快手的实际业务场景中得到了成功应用。例如,在短视频、电商和直播等场景中,该方法已用于标签识别、多图 / 多视频相关性判断以及短视频推荐,并取得了显著的性能提升,展示了较强的工业化潜力。



  • [📖 arXiv Paper](https://arxiv.org/abs/2505.02835)

  • [📊 Training Code](https://github.com/yfzhang114/r1_reward)

  • [🏆 R1-Reward Model](https://huggingface.co/yifanzhang114/R1-Reward)


一分钟速看全文内容



1. 重新定义问题:作者把训练奖励模型这个问题,看成是一个基于规则的强化学习任务。简单说,就是给奖励模型一个问题和两个答案,让它通过学习来判断哪个答案更好,并且能给出合理的分析。


2. 提出新算法 StableReinforce:针对现有 RL 算法的不足,他们提出了一个改进版的算法叫 StableReinforce。这个算法主要在几个方面做了优化:


  • 改进了损失函数里的裁剪操作,提出了 Pre-Clip,防止数值计算不稳定。

  • 提出了一种更稳健的优势值(advantage)处理方法(叫做优势过滤器 Advantage Filter),不容易被极端值带偏。

  • 设计了一个新颖的“一致性奖励” (Consistency Reward)。它引入了另一个大模型作为 “裁判”,专门检查奖励模型自己的分析过程和它最终给出的答案是不是一致的。如果一致,就给奖励,这样能促使模型做出更符合逻辑的判断。


3. 渐进式的训练策略:


  • 他们从各种公开数据集中收集了 20 万条偏好数据,构建了一个名为 R1-Reward-200k 的数据集用于训练。

  • 采用了一种 “渐进式难度” 的训练策略。因为直接用 RL 训练模型效果不好(冷启动问题),他们先用 GPT-4o 对这些数据生成了详细的思考过程,作为监督微调(SFT)的数据,让模型先 “入门”。同时,他们记录了 GPT-4o 判断每个样本的难度(需要尝试几次才能判断对)。

  • 在后续的强化学习阶段,专门挑选那些 GPT-4o 都觉得比较难(需要尝试多次或者干脆判断错误)的样本进行训练,让模型在难题上得到锻炼。


4. 效果显著:


  • 实验结果表明,这个 R1-Reward 模型在几个主流的多模态奖励模型测评基准(如 VL Reward-Bench, Multimodal Reward Bench)上表现非常出色,显著超过了之前的最佳模型 (SOTA)。比如在一个榜单上提升了 8.4%,在另一个榜单上提升了 14.3%。

  • 更有趣的是,他们发现通过在推理时多做几次计算(比如采样 5 次或 15 次,然后投票选最多的答案),R1-Reward 的性能还能进一步大幅提升,这说明 RL 方法在优化奖励模型方面潜力巨大。

  • 他们还观察到,经过 StableReinforce 的 RL 训练后,模型输出的平均长度减少了大约 15%,这意味着模型可能变得更有效率了。


现有强化学习方法的局限性


什么是奖励模型


奖励模型(Reward Model)通常被用来判断两个模型的回答,哪一个更符合人类喜好。具体的优化公式如下:


具体的优化公式大概长这样:



这里的 r (y|x) 是模型打的分数,σ 是个 sigmoid 函数,E 表示求期望(平均)。即模型要尽量让好答案的分比坏答案的分高,差距越大越好,然后通过 log 和 sigmoid 函数来计算损失。


PPO 和 Reinforce++ 算法简介


  • PPO (Proximal Policy Optimization)


PPO 是一种很常用的强化学习算法,属于策略梯度方法,目标是直接优化模型(策略)来获得最大的累积奖励。它的厉害之处在于,它不像传统的策略梯度方法那样容易因为步子迈太大而导致训练不稳定。PPO 通过一种特殊的方式来限制每次策略更新的幅度。


它的目标函数如下:



这个公式的核心思想在于 min 和 clip 操作。它确保了就算 ratio * A_t (标准的策略梯度目标)很大,也会被 clip 后的项限制住,防止策略更新过猛导致训练不稳定。PPO 因为实现简单、效果好,所以在很多地方(比如机器人控制、玩游戏)都得到了应用。


  • Reinforce++


Reinforce++ 是在 PPO 基础上做了一些优化的版本,目的是让训练更稳定、更高效。主要改进有:


1、在reward中增加了KL 散度惩罚:在奖励函数里加入了一项用来惩罚强化学习模型(RL model)和监督微调模型(SFT model)在每个词(token)上的输出概率分布差异过大。奖励函数变成了:图片。这里图片表示只有在生成结束符时才加上原始的任务奖励r(x, y) ,图片是那个 KL 惩罚项。

2、奖励和优势的归一化:它会对整个批次(batch)的奖励进行归一化、裁剪和缩放,还对优势值A进行归一化:(减去均值图片,再除以标准差图片)。


在很多研究中 Reinforce++ 比 GRPO 更稳定,比 PPO 收敛更快。


PPO/Reinforce++ 的问题在哪?


虽然 PPO 和 Reinforce++ 不错,但在实际训练中,尤其是在训练奖励模型的时候,研究者们发现它们有两个核心问题,很容易让模型训练不稳定甚至失败:



1. 训练损失导致的不稳定:


    • 计算 PPO 损失时,需要算概率比值 ratio。如果新旧策略差别很大,此 ratio 可能会变得非常大或非常小。

    • 在代码实现里(比如用 PyTorch),通常是算 ratio = torch.exp(log_probs - old_log_probs)。如果 log_probs - old_log_probs 差值很大,exp() 运算可能会导致数值溢出,最终导致程序崩溃。

    • 即使数值没有溢出,如果算出来的 ratio 很大,并且优势 A_t 是负的(表示这个动作不好),那么根据 PPO 的损失公式 ,这个损失值可能会变得异常大。这么大的损失会让模型的参数更新变得极其不稳定。


    2. 优势归一化导致的不稳定:


    • 奖励模型的训练数据标签通常很简单,比如就两个标签:1 和 2(1 好还是 2 更好)。模型比较容易学会区分。

    • 这就导致在训练后期,一个批次(batch)里的数据,模型可能大部分都能预测对。比如一个 batch 里有 255 个样本的真实奖励是 1,只有 1 个是 0。

    • 在这种情况下,奖励的方差会非常小。如果这时候还用标准的优势归一化方法(减均值除以标准差 ),那个奖励为 0 的样本对应的优势值,在归一化之后可能会变成一个绝对值非常大的数(例子中是 -15.96)。

    • 这么大的优势值同样会干扰模型的更新,导致训练不稳定。


    总的来说,就是直接把 PPO 或者 Reinforce++ 用在奖励模型训练上,会因为损失计算和优势归一化这两个环节内在的问题,在高效率训练或者训练后期特定数据分布下,引发数值不稳定,最终影响模型效果。


    StableReinforce 提升训练稳定性


    1. Pre-CLIP 策略:为了减小大比例差异的影响,Pre-CLIP 策略会在计算对数概率的指数值之前对比例进行裁剪。通过在应用指数函数前裁剪 log-πθ/πθold 的比例,可以避免由于比例差异过大而导致的溢出问题,并缓解负优势情况下的大对数差异。裁剪后的公式为:



    其中图片和分别为允许的最小和最大比例限制(上面的伪代码会更清晰一些(algorithm 1))。


    2. Advantage Filter 策略:为了避免由于优势分布的极端不平衡对训练带来的影响,文章采用了 3-sigma 规则(即保留标准化优势在范围内的样本)。公式为:



    标准化后的优势通过公式

    计算,其中图片图片分别为优势分布的均值和标准差。


    结合了 Pre-CLIP 和优势过滤器,最终用来优化的目标函数长得有点像常用的 PPO 算法的目标函数,但有所修改:



    R1-Reward


    将 MRM 转化为强化学习问题


    首先使用下面的 prompt,将奖励建模问题转化为 rule-based 的强化学习问题



    近期 follow deepseek-r1 工作的方法基本上都是格式奖励 + 结果奖励,但是在奖励模型训练过程中,这存在着一致性问题:即只用上面两个奖励时,模型有时会 “精神分裂”:分析部分(<analysis>)明明说回答 2 更好,但最后却输出 <answer>1</answer>。因此本文引入了一个额外的 “裁判” 模型(文中用了 Qwen2.5-VL-7B-Instruct)。这个裁判专门负责检查奖励模型自己输出的分析内容,看它是不是真的支持最终给出的那个答案。


    1. 奖励函数设计:文章提出了三种奖励函数:


    • 格式奖励:要求模型的输出符合指定的格式,即‘<think> </think><answer> </answer>’,鼓励模型在给出最终答案之前先进行推理,以提高内容的质量和可解释性。

    • 结果奖励:模型最终生成的答案必须与人类专家的偏好一致。

    • 一致性奖励:确保推理过程与最终答案一致,即模型的最终结果应当直接源自其推理过程,而不是与推理步骤无关的生成内容。


    2. 最终奖励计算:为了解决可能出现的一致性奖励过度偏重的问题,最终的奖励计算公式为:


    图片


    这样的设计好在 Consistency Reward 的加成效果(乘以 0.5 再加 1)只有在 Result Reward 大于 0(也就是答案选对)的时候才能真正起作用。如果答案选错了,Result Reward 通常是 0 或者负数,那么一致性奖励就不会带来正向激励(或者激励很小),从而确保模型首要目标还是把答案选对。格式奖励作为一个基础分被加上去。


    “长思考链” 的冷启动问题 (Long-CoT Cold Start)


    多模态大模型(MLLMs)本身并不是为做奖励模型这种 “评价比较” 任务而设计的,所以直接用强化学习去训练它们,效果通常很差而且不稳定,因此本文先进行了一轮监督微调。


    做法:让 GPT-4o 对 R1-Reward-200k 数据集里的每一条数据,都按照 Table 1 里的提示模板,生成标准的 “分析过程” 和 “最终答案”。生成时设置 temperature=1(让输出更发散),并且最多尝试 3 次,直到生成的答案和真实标签一致。


    记录难度:同时,他们还记录了 GPT-4o 需要尝试几次才能生成正确答案,把这个次数作为样本 “难度” 的指标。


    目的:这个 SFT 阶段就像是给模型 “预习”。通过模仿 GPT-4o 的输出,先让模型学会任务的基本格式和流程,熟悉这个奖励建模任务应该怎么做。


    强化学习(RL)训练数据的筛选


    1. 筛选标准:在进行真正的强化学习训练时,并不是用 SFT 阶段的所有数据。研究人员专门挑选了那些被认为是 “更难” 的样本。


    2. 具体来源:


    • 在 SFT 阶段,那些 GPT-4o 需要尝试 2 次或 3 次才能给出正确答案的样本。

    • 以及那些 GPT-4o 尝试了 3 次仍然没能给出正确答案的样本。


    研究人员认为,这些样本通常意味着两个回答之间的差别更小,更难判断优劣。用这些 “硬骨头” 来训练模型进行强化学习,可以更有效地提升模型辨别细微差异的能力。


    有趣的实验发现


    研究人员通过一系列实验来验证他们提出的 R1-Reward 模型和 StableReinforce 算法的效果,得到了一些挺有意思的结果:


    R1-Reward 效果拔群


    在好几个主流的多模态奖励模型排行榜(比如 VLReward Bench, Multimodal Reward Bench, MM-RLHF-Reward Bench)上,R1-Reward 的表现都非常亮眼,平均准确率显著超过了之前最好的开源模型(比如 IXC-2.5-Reward)。


    Test-Time Scaling



    他们尝试在评价的时候,让 R1-Reward 模型对同一个问题输出好几个判断结果(比如输出 5 次或 15 次),然后采取少数服从多数(投票)的方式来决定最终哪个答案更好。


    结果发现,这种简单的 “投票” 策略能大幅提升 R1-Reward 的准确率。比如在 MM-RLHF 这个比较难的榜单上,投票 5 次就能把准确率从大约 71% 提升到 85.3%,投票 15 次更是达到 86.47%,远超其他模型。


    更有意思的是,他们还试了另一种策略叫 “Any Correct”,就是只要模型输出的 K 次结果里有一次是正确的,就算对。结果发现,当 K=15 时,这种策略的准确率 几乎接近 100%!这暗示 R1-Reward 其实有潜力完美区分所有样本,只是需要更多的数据或更好的训练策略来完全激发出来。


    aha Moment



    通过 SFT 和 RL 训练,R1-Reward 不仅学会了如何评价两个回答,还自主地学习到了一套分析流程:先明确目标、分析图像、尝试解决问题、给出答案,然后基于这个过程去评价两个外部给定的回答。


    更有趣的是,模型展示出了类似人类的反思和纠错能力。比如在上图中,模型自己计算时出错了,但在检查图表后,意识到了错误并重新计算得到了正确结果。这说明模型不仅仅是在模仿,还在学习某种程度的自我检查和修正机制。


    经过强化学习训练后,模型输出的分析内容的平均长度还减少了约 15%,说明模型可能变得更 “言简意赅”,推理效率提高了。


    结论


    本文介绍了 R1-Reward,这是一种使用 StableReinforce 算法训练的多模态奖励模型(MRM)。通过实验,本文证明了强化学习(RL)在奖励建模中的有效应用,显著提升了模型的表现。R1-Reward 解决了多个关键问题,包括训练不稳定、优势归一化限制以及推理和结果之间的不一致性。通过引入 Pre-Clipping、优势过滤、一致性奖励以及渐进式训练策略,StableReinforce 算法有效稳定了训练过程并提升了模型性能。


    实验结果表明,R1-Reward 在多个多模态奖励模型基准上超越了现有最先进的模型(SOTA),在准确率和数据效率方面取得了显著进展。此外,R1-Reward 还展示了优秀的推理时扩展能力,为未来将强化学习融入多模态奖励模型(MRM)的研究奠定了基础。


    展望未来,RL 在奖励建模中的应用仍有许多值得探索的方向。例如,本文仅测试了简单的多数投票策略用于推理时扩展,未来可能通过更先进的方法进一步提升性能。此外,改进训练策略以进一步增强奖励模型的基础能力,也是一个有意义的开放性问题。



    © THE END 

    转载请联系本公众号获得授权

    投稿或寻求报道:[email protected]

    这位老哥的比喻很形象!但是话说回来,这种由易到难的训练方式,真的能让模型学到更强的推理能力吗?还是说只是让它在“舒适区”里待得更久?

    这个问题很有意思,也确实是潜在的风险。我理解作者引入一致性奖励是为了解决奖励模型“精神分裂”的问题,出发点是好的。但是,长期来看,如果一致性奖励的权重过高,或者“裁判”模型本身存在偏见,就有可能导致奖励模型学到的只是如何更好地迎合“裁判”的口味,而不是真正理解人类的偏好。

    一种可能的解决方案是,动态调整一致性奖励的权重,或者定期更换“裁判”模型,避免模型过度拟合。另外,可以考虑引入更复杂的机制来评估一致性,例如,不仅仅看分析和答案是否一致,还要评估分析的质量和深度。

    没错。而且,直接用强化学习训练,可能还会遇到reward sparse的问题。模型不知道哪些行为是好的,哪些行为是坏的,就很难进行有效的学习。

    集成学习是个好思路!可以考虑用一些boosting或者stacking的方法,把多个模型的优势结合起来。不过,要注意模型的 diversity,避免出现多个模型都犯同样错误的情况。

    这位朋友说的有道理,一致性奖励像是给个提示。但我觉得不能完全排除过度依赖的可能性,模型有可能偷懒,直接抄“裁判”的逻辑,虽然答案对了,但思考深度不够。应该在训练的时候加一些对抗样本,故意让“裁判”说一些模棱两可的话,逼着模型自己去思考。

    有道理!裁判的质量是关键。感觉可以考虑用多个裁判,然后用投票的方式来决定最终的一致性奖励。或者,干脆让人来当裁判,抽样检查一部分数据,这样可以保证一致性判断的准确性。

    确实。而且,这个难度指标还可以动态调整。比如,如果模型在某个难度级别的样本上表现很好,就可以提高难度级别。如果表现不好,就降低难度级别。

    朋友说的有道理,有点bagging的意思。采样15次计算量直接翻了15倍,实际应用的时候需要权衡一下收益和成本。我觉得可以在采样的时候加一些策略,比如先用一个简单的模型快速过滤一遍,只对那些难以判断的样本进行多次采样。

    对!而且我觉得这说明模型其实是有潜力达到更高准确率的,只是受限于训练方法和数据,没能完全发挥出来。多次采样相当于给它更多机会去探索,找到正确的答案。