强化学习赋能大语言模型自我纠错,数学和编程表现飙升:DeepMind SCoRe

原文标题:强化学习让大模型自动纠错,数学、编程性能暴涨,DeepMind新作

原文作者:机器之心

冷月清谈:

**摘要**

机器之心报道

Google DeepMind 提出了一种名为 SCoRe(Self-Correction via Reinforcement Learning)的方法,让大语言模型 (LLM) 具备自我纠正能力。该方法无需依赖外部反馈或额外模型,仅通过在自生成数据上进行强化学习训练,教模型对推理问题做出响应并纠正错误。

原理

SCoRe 将标准强化学习扩展到多轮设置,通过仔细的模型初始化和奖励塑造解决分布偏移和模式崩溃问题。其包含两个阶段:

  • **阶段 I:**提高模型初始化的覆盖率,防止崩溃。
  • **阶段 II:**使用奖励塑形的多轮强化学习,优化两次尝试的响应。

评估

在数学和编码任务的评估中,SCoRe 与基础模型相比,在自我纠正方面取得显著进步:

  • MATH:自我纠正提升 15.6%。
  • HumanEval 编码问题:自我纠正提升 9.1%。

消融实验

消融实验验证了多轮训练、多阶段训练、奖励函数设计和 on-policy 强化学习的重要性。




怜星夜思:


1、SCoRe 的多轮训练如何解决分布偏移问题?
2、SCoRe 的奖励函数设计是如何影响自我纠正性能的?
3、你觉得 SCoRe 是否可以应用于其他类型的任务?




原文内容



机器之心报道

机器之心编辑部

无需依赖外部反馈或额外模型,纯纯的自我纠正。


自我纠正(Self-correction)是大语言模型 (LLM) 非常重要的能力,但人们发现这种能力在现代 LLM 中基本上很少存在。现有的训练自我纠正的方法要么需要多个模型,要么依赖于更强大的模型或其他形式的监督。


我们如何才能让 LLM 具备自我纠正能力?之前的研究要么依赖于提示工程,要么依赖于专门用于自我纠正的微调模型。但前者通常无法有效地进行有意义的内在自我纠正,而后者基于微调的方法需要在推理时运行多个模型,例如需要 oracle「教师」来监督指导自我纠正过程。


在最近提交的一篇论文中,来自 Google DeepMind 的研究者开发了一种无需上述任何要求即可有效进行自我纠正的方法,即通过强化学习进行自我纠正(SCoRe,Self-Correction via Reinforcement Learning),只需训练一个模型,该模型既可以对推理问题做出响应,也可以纠正错误,尽管没有收到任何 oracle 反馈。更重要的是,SCoRe 完全通过在自生成数据上进行训练来教模型具备这种能力,而无需任何 oracle。



  • 论文标题:Training Language Models to Self-Correct via Reinforcement Learning
  • 论文地址:https://arxiv.org/pdf/2409.12917


本文主要贡献在于提出了一种多轮强化学习方法 ——SCoRe,用于教 LLM 如何纠正自己的错误。相对于基础 Gemini 模型,SCoRe 在 MATH 推理问题的自我纠正方面获得了 15.6% 的增益,在 HumanEval 编码问题上获得了 9.1% 的增益。


SCoRe 原理介绍

为了教 LLM 进行自我纠正,SCoRe 将标准单轮强化学习(公式 2)扩展到 Zhou 等人提出的分层框架下的多轮设置。



不过这样做面临诸多挑战。首先,优化公式 1 解决了分布偏移问题,但尚不清楚它是否也能满足要求 [D2]。



这里的 [D2] 如下图所示,图中展示了 SFT 方法失败的两个原因。而有效的解决方案必须满足两个要求:[D1] 模型应该直接在自生成轨迹上进行训练,以缓解 SFT 的分布不匹配(图 4),[D2] 所采用的自生成轨迹应防止在学习过程中因进行微小编辑而崩溃。


作者开发了一种在线 RL 方法,通过仔细的初始化和奖励塑造来解决这些挑战。



其次用于微调的基础模型初始化在编辑距离上呈现出高度倾斜的分布(图 3a),这使得它们容易受到模式崩溃的影响,这是深度强化学习中一个常见的问题。即使基础模型可以在自我校正过程中产生编辑距离比倾斜度较小的分布,但仍然需要强化学习训练过程从训练数据中学习一种可以推广到测试提示的自我校正策略。



SCoRe 旨在解决上述关键挑战,其分为两个阶段,这两个阶段都是通过适当初始化模型和控制后续 RL 使模型偏向学习自我纠正。


具体而言,这两个阶段包括:


阶段 I:训练模型初始化以防止崩溃


SCoRe 第一阶段的目标是通过提高基础模型对第二次尝试响应的覆盖率来获得良好的模型初始化,以便后续自我纠正训练不会出现 STaR/SFT 中观察到的崩溃现象。

为了达到此目的,该研究不采用 SFT 来初始化 RL 训练,而是开发了第一阶段来产生不易崩溃的单独初始化。


作者微调基础模型,以便在第二次尝试时产生高奖励修正,同时通过使用 KL 散度将第一次尝试的响应分布限制为尽可能接近基础模型的响应分布,从而强制模型不改变其第一次尝试的响应。虽然这看起来不是最优的 —— 但第一次尝试的响应错误较少,可以纠正为更好的第二次尝试响应。优化的目标可以表示为:


其中 𝛽_2 是一个超参数,旨在仅在第一次尝试时强制执行严格的 KL 惩罚,以避免第一轮响应发生偏移(用蓝色项表示)。请注意,作者仍然使用公式 2 中的默认 KL 散度惩罚,但该惩罚的权重要小得多,并且为了简洁起见,公式 3 中省略了它。事实上,与简单的多轮 RL 不同,阶段 I 在分离两个响应方面更有效(图 5b)。



阶段 II:带有奖励的多轮强化学习


借助第一阶段的模型初始化,该模型在耦合两个响应时表现出更小的偏差,SCoRe 的第二阶段现在可以训练两次尝试的响应,并根据公式 1 优化奖励。当然,作者还希望确保在此过程中不会降低第一次尝试的响应。因此,对于两轮自我纠正问题,作者针对以下目标训练策略 𝜋_𝜃(⋅∣⋅):


图 6 为阶段 I、阶段 II 流程说明。可以看出 SCoRe 以交错方式应用阶段 I 和 II 进行多次迭代。


实验评估


该研究进行了一系列实验,来验证 SCoRe 在教 LLM 具备自我纠正能力方面的有效性,并通过消融实验探索了 SCoRe 的每个组件的影响。

该研究主要关注数学和编码任务,使用以下基准来评估方法的有效性:


  • MATH;

  • MBPP 和 HumanEval。


几种方法在 MATH 基准上的实验评估结果如下表 3 所示:



在代码生成方面,实验结果如下表 4 所示:



消融研究


为了探究以下几个问题,该研究进行了消融实验:


  • 多轮训练的重要性

  • 多阶段训练的重要性

  • 奖励函数设计(reward shaping)的影响

  • on-policy 强化学习的重要性


消融实验结果如下表 5 所示:



感兴趣的读者可以阅读论文原文,了解更多研究内容。



© THE END 

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

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

SCoRe 通过仔细初始化模型和控制后续强化学习来解决分布偏移。在第一阶段,它将模型初始化为在第二次尝试时产生高奖励修正,同时限制第一次尝试的响应分布尽可能接近基础模型的响应分布,从而迫使模型不改变其第一次尝试的响应。这有助于缓解 RL 训练过程中的分布不匹配。

SCoRe 的自我纠正能力可以广泛应用于需要模型进行推理并提高其响应准确性的任何任务。一些可能的应用场景包括:**问答系统:**从用户问题中提取关键信息并生成准确的答案。**文本摘要:**根据给定的文本自动生成简明扼要的摘要,同时保持其含义。**代码生成:**自动生成高效且无错误的代码,提高开发人员的生产力。**数据清洗:**识别和纠正数据集中的数据错误,提高模型训练和分析的准确性。**机器翻译:**纠正翻译输出中的错误,提高翻译质量。

SCoRe 的奖励函数设计通过塑造模型对不同编辑操作的偏好,对自我纠正性能产生了至关重要的影响。例如,如果奖励函数偏向于较小的编辑距离,模型就会更倾向于进行小的、保守的编辑,而如果奖励函数鼓励更大胆的编辑,模型就会对大范围的编辑更加开放。这种奖励机制允许研究人员定制自我纠正行为,以适应特定的任务和数据集。

奖励函数设计本质上决定了模型学习重视哪些编辑操作。精心设计的奖励函数可以引导模型专注于对目标任务至关重要的编辑类型。例如,在数学问题求解中,奖励函数可以奖励正确的编辑操作,从而将模型推向产生正确答案的方向。通过调整奖励函数,我们可以定制 SC oRe 以适应各种任务,从而提高其自我纠正性能。

多轮训练让 SC oRe 能够在自生成轨迹上直接训练,避免了传统的单轮强化学习中常见的分布偏移。它利用两个阶段的过程:第一阶段专注于初始化模型以防止崩溃,第二阶段引入奖励塑造来优化两次尝试的响应。通过这种分阶段训练,SC oRe 能够从自生成数据中学习自我纠正策略,并克服分布偏移问题。

SCoRe 的多轮训练过程,允许模型在自生成的轨迹上进行多次尝试并根据奖励信号进行更新。通过这种方式,模型可以探索不同的编辑序列,并学习选择导致高奖励的编辑操作。这有助于缓解分布偏移问题,因为模型不再局限于单次尝试,而是可以在多个回合中调整其响应。因此,即使与训练数据中的分布不同,也可以学习有效的自我纠正策略。

该奖励函数在不同的编辑操作和编辑距离上施加了不同的权重。这使得模型可以根据任务和数据集的具体需求,平衡不同类型的编辑操作。例如,在语法纠正任务中,模型可能会受到鼓励进行较小的编辑来纠正语法错误,而在创意写作任务中,模型可能会受到鼓励进行较大的编辑来探索不同的想法。