【大模型理论篇】R1-Searcher:通过强化学习激励llm的搜索能⼒

1. 论文思想概要介绍 

        现有的推理模型已经显⽰出强化学习(RL)在增强⼤型语⾔模型(llm)复杂推理能⼒⽅⾯的潜⼒。虽然它们在数学和编码等具有挑战性的任务上取得了卓越的表现,但它们往往依赖于⾃⼰的内部知识来解决问题,这对于时间敏感或知识密集型问题可能是不够的,从⽽导致不准确和幻觉。为了解决这个问题,近期有学者推出了R1-Searcher,是⼀种新的基于结果的两阶段RL⽅法,增强 llm的搜索能⼒。该⽅法允许llm在推理过程中⾃主调⽤外部搜索系统来访问额外的知识。框架完全依赖于RL,不需要过程奖励或冷启动的蒸馏。        

        R1-Searcher本质上是通过 RL 增强 llm RAG 能⼒。核⼼动机是通过外部检索环境的探索来激励llm的搜索能⼒。通过定制的奖励设计,⾃由探索如何在推理过程中调⽤外部检索系统来获取相关知识。具体来说,在第⼀阶段,采⽤检索- 奖励来激励模型进⾏检索操作,⽽不考虑最终答案的准确性。通过这种⽅式,llm 可以快速学习正确的检索调⽤格式。在第⼆阶段,进⼀步引⼊答案奖励,以⿎励模型学习有效地利⽤外部检索系统来正确解决问题。 为了在训练过程中⽀持 llm 与外部检索环境之间的探索,进⼀步提出了⼀种基于rag rollout 和基于检索掩码的 loss 计算的改进 RL 训练⽅法。
        
        研究⽬标是使⽤基于结果的RL ⽅法增强 llm 在检索环境中解决问题的搜索能⼒。但是,在RL 训练过程中,检索环境的独⽴性可能会导致超出其查询范围的问题,给问题的成功解决带来挑战,影响训练效率。为了解决这个问题,需要做一定的数据选择,并纳⼊了不同难度⽔平的问题。        
        作者从两个具有代表性的多跳问答数据集的训练集中选择训练数据,即 HotpotQA[5]和 2WikiMultiHopQA[6] 。利⽤ Qwen-2.5-7B-Instruct 模型,配备了⼀个局部检索系统,并使⽤外部检索系统提⽰模型。
        
数据选择的系统提⽰
        关于数据选择的system prompt设置,参考如下:        
你是⼀个有⽤的助⼿。给你⼀个问题,你应该先在脑海中思考推理过程,然后给出最后的答案。
推理过程和最终答案的输出格式分别封装在 <think> </think> <answer> </answer> 标签中,即
<think> here 推理过程 </think><answer> here 最终答案 </answer> ”。你应该⽤分解、反思、头 脑⻛暴、验证、提炼、修正来进⾏思考。此外,如果有必要,你可以“<|begin_of_query|>
search query (only keywords) here <|end_of_query|> ”的格式来进⾏不确定知识的搜索。然后,搜索系统会以“<|begin_of_documents|> …”的格式为你提供检索信息。搜索结果… < | end_of_documents | >”。        
        如之前所说, 基于结果的两阶段 RL 训练⽅法。在阶段 1 中,训练模型有效地利⽤外部检索系统。在阶段2 中,训练模型在推理过程中融⼊搜索,以准确地解决问题。

        由于训练数据中没有中间标注,RL过程主要受结果奖励的影响。通过在两个阶段分配不同的奖励,模型逐渐学会调⽤外部检索系统,并有效地将检索到的⽂档集成到推理过程中以回答问题。         在Stage-1中,奖励函数包括检索奖励和格式奖励。这⾥的主要⽬标是使模型能够识别其调 ⽤外部检索系统的能⼒并学习其使⽤,⽽不考虑模型答案的正确性。模型是明确的⿎励发起搜索查询,因此,在这个阶段没有分配答案奖励。具体来说,检索奖励定义如下:

        其中n表⽰检索调⽤次数。对于格式奖励,⾸先定义正确的格式如下: 
1. 模型的思考过程和最终答案应该包含在 <think> </think> <answer> …分别为 </answer>
标签。另外,在 < / answer> …回答 < / > 标记。
2. ⽣成的输出必须没有任何乱码或不可读的内容。
3. 当调⽤检索时,模型应该提出⼀个查询,并将查询封装在 <begin_of_query> < / end_of_
query > 标签。此外,模型⽆法在不调⽤检索的情况下直接⽣成⽂档。
         基于上述格式需求,格式奖励定义如下:

       因此,第⼀阶段的最终奖励是检索奖励和格式奖励的总和。
       在第⼆阶段,取消了检索奖励,加⼊了答案奖励。采⽤与第⼀阶段相同的格式判断标
准,但处罚不同:
        

        
        对于答案奖励,利⽤了ground-truth 答案和预测答案的 F1 分数,计算⽅法如下:
        

       其中PN表⽰预测答案的字数,RN表⽰参考答案的字数,IN表⽰两个答案相交的字数。因此,第⼆阶段的最终奖励是答案奖励和格式奖励的总和。

        训练算法基于reinforcement ++算法,作者对其进⾏了修改,以适应检索增强⽣成场景。在推理过程中,模型使⽤外部检索系统来解决问题,并获得正确解决⽅案的奖励。通过最⼤化这个奖励来增强模型在推理过程中利⽤检索的能⼒。⽬标是使模型在⾯对不确定性时能够⾃主访问外部知识,有效地整合推理和检索。为了⽆缝地整合检索到的⽂档并确保合理的模型优化,需要对原始算法进⾏了两个修改:基于rag的Rollout和基于检索掩码Loss Calculation

        基于rag的Rollout:

        在⽣成过程中通过使⽤标签<begin_of_query> <end_of_query>来指⽰搜索⼯具的调⽤。⽣成 <end_of_query> 后,进程暂停,允许提取和使⽤查询进⾏检索。检索到的⽂档被封装在<begin_of_documents> <end_of_documents> 标签,并集成到模型的推理中。这种⽅法确保了检索被⽆缝地整合到推理过程中,允许模型在不中断的情况下,基于检索到的⽂档继续进⾏推理。
        基础模型的系统提示语:
⽤⼾提出问题,助⼿解决问题。助⼿⾸先在头脑中思考推理过程,然后为⽤⼾提供最终的答案。
推理过程和最终答案的输出格式分别封装在 <think> </think> <answer> </answer> 标签中,即
<think> here 推理过程 </think><answer> here 最终答案 </answer> ”。在思考过程中, ** 助⼿可以在
必要时以“ <|begin_of_query|> 搜索查询(仅列出关键字,如“ keyword_1 keyword_2 …”) <|end_of_
query|> ”的格式对不确定知识进⾏搜索 ** ** 查询必须只涉及单个三元组 ** 。然后,搜索系统会
以“ <|begin_of_documents|> …”的格式向 Assistant 提供检索信息。搜索结果… < | end_of_
documents | > ”。
        
        检索掩码的Loss Calculation 。在训练过程中,使⽤上述解决⽅案来计算 RL 损失,包括奖励、
KL 散度和优势。当模型执⾏检索时,检索到的⽂档被集成到推理过程中,作为环境观察。模
型并不打算⽣成这些⽂档。为了减轻环境影响,指定 <begin_of_documents> <end_of_
documents> 作为特殊的令牌,并在训练时进⾏掩码。这样可以防⽌这些外部令牌影响损失计
算,确保检索到的⽂档不会⼲扰模型的内在推理和⽣成过程。
        

2. 相关对比分析及讨论

        与SFT相⽐,RL在⾃⼰不知道如何回答的情况下,更擅⻓调⽤外部检索进⾏查询。然⽽,SFT容易受到内部知识的影响,直接使⽤不正确的内部知识进⾏回答,最终导致错误的答案。

        如下表所⽰:

        此外,经过RL后,Qwen-2.5-7B-Base模型⽐Llama-3.1-8B-Instruct模型更有效地分解复杂问题。它通过将多步问题分解成⼦问题并顺序检索相关信息来细化推理,从⽽增加检索相关⽂档的可能性,提⾼准确性,如下表所示:        

        
总结:论文提出了⼀种将 RAG RL 相结合的 R1-Searcher 框架。该框架采⽤两阶段结果监督 RL ⽅法,通过设计的奖励机制,使模型能够在推理过程中学习调⽤外部搜索引擎以获取相关知识。所提出的⽅法完全依赖于RL ,允许模型通过探索⾃主学习,⽽不需要任何指令微调冷启动。它展⽰了从域内训练数据集推⼴到域外测试数据集的能⼒,同时⽆缝切换到在线搜索以获取最新信息。此外,R1-Searcher既适⽤于基本模型,也适⽤于指令调优模型。在多个数据集上进⾏的⼤量实验表明,R1-Searcher 优于传统的RAG ⽅法和其他推理⽅法。此外,论文从多个⽅⾯分析了训练过程,包括训练⽅法、数据和奖励设计。

3. 参考材料

【1】R1-Searcher: Incentivizing the Search Capability in LLMs via Reinforcement Learning

【2】https://github.com/RUCAIBox/R1-Searcher