当前位置: 首页 > news >正文

《Training Language Models to Self-Correct via Reinforcement Learning》全文翻译

《Training Language Models to Self-Correct via Reinforcement Learning》

通过强化学习训练语言模型实现自我修正

Aviral Kumar ∗ + , 1 { }^{\\*+, 1} ∗+,1, Vincent Zhuang ∗ + , 1 { }^{\\*+, 1} ∗+,1, Rishabh Agarwal ∗ , 1 { }^{\\*}, 1 ,1, Yi Su ∗ , 1 { }^{\\*}, 1 ,1, JD Co-Reyes 1 { }^{1} 1, Avi Singh 1 { }^{1} 1, Kate Baumli 1 { }^{1} 1, Shariq Iqbal 1 { }^{1} 1, Colton Bishop 1 { }^{1} 1, Rebecca Roelofs 1 { }^{1} 1, Lei M Zhang 1 { }^{1} 1, Kay McKinney 1 { }^{1} 1, Disha Shrivastava 1 { }^{1} 1, Cosmin Paduraru 1 { }^{1} 1, George Tucker 1 { }^{1} 1, Doina Precup 1 { }^{1} 1, Feryal Behbahani † , 1 { }^{\dagger, 1} ,1 以及 Aleksandra Faust † , 1 { }^{\dagger, 1} ,1

1 { }^{1} 1 Google DeepMind, “贡献相同, + { }^{+} +随机排列(通过掷硬币决定), † { }^{\dagger} 联合指导.}

摘要

自我修正是大型语言模型(LLMs)一个非常理想的能力,然而在现代LLMs中,这一能力一直被发现在实际使用中效果甚微。当前训练自我修正的方法通常依赖于多个模型、更高级的模型或额外的监督形式。为了解决这些缺点,我们提出了一种多轮在线强化学习(RL)方法,即 SCoRe,该方法显著提高了LLM仅利用自生成的数据实现自我修正的能力。为了构建 SCoRe,我们首先表明,在离线模型生成的修正规迹上进行监督微调(SFT)的变体往往不足以培养自我修正行为。特别地,我们观察到,通过 SFT 训练要么受到了数据收集策略与模型自身生成响应的错误之间分布不匹配的问题,要么发生行为崩溃,即学习隐式地仅偏好某一种修正行为,而这种行为在测试问题上往往不能有效进行自我修正。SCoRe 通过在模型自身生成的自我修正规迹分布下训练,并使用适当的正则化措施来引导学习过程,确保学习到的自我修正行为在测试时是有效的,而不是单纯为给定提示拟合高奖励响应。此正则化过程包括:首先在一个基础模型上进行多轮 RL 训练,以生成一个不易崩溃的策略初始化,然后在此基础上使用奖励加成来放大自我修正。利用 Gemini 1.0 Pro 及 1.5 Flash 模型,我们发现 SCoRe 达到了最先进的自我修正性能,使基础模型在 MATH 和 HumanEval 上的自我修正分别提高了 15.6 % 15.6\% 15.6% 9.1 % 9.1\% 9.1%

1. 引言

大型语言模型(LLMs)在数学和编程等科学领域的推理中是一种有用的工具(Lozhkov et al., 2024; Shao et al., 2024; Team, 2024)。在这些领域中,LLMs 的一个理想特性是它们能够实现元策略或算法,在测试时通过额外计算生成更优的响应。然而,现代 LLMs 并没有可靠地实现这样的策略。例如,考虑一个需要模型检测并修改(或“自我修正”)自身响应以最终达到最佳响应的问题。这种自我修正能力在当前 LLMs 中尤为缺乏,特别是在没有外部输入(也称为内在自我修正)的情况下(Huang et al., 2023; Kamoi et al., 2024)。

为了促使 LLMs 学会对具有挑战性的输入实现元策略,我们研究训练 LLMs 在“即时”修正其错误这一特定实例。理论上讲这是可能的:在许多 LLMs 失败的问题中,它们拥有导向正确响应所需的“知识”,但在需要时无法正确激活和推理自身的知识(Yang et al., 2024)。举例来说,强大的 LLMs 经常能够在提示剩余部分时成功完成数学证明的一个子步骤,但如果从头开始则可能无法完成。同理,利用之前的响应理论上能够提升后续响应。尽管如此,自我修正一直难以实现,这凸显了需要超越现有训练范式的必要性。

如何才能使 LLMs 拥有自我修正能力?此前为使 LLMs 自我修正的尝试通常依赖于提示工程(Kim et al., 2023; Madaan et al., 2023)或专门针对自我修正进行微调。前者方法往往无法产生有意义的内在自我修正,而微调方法则需要在推理时运行多个模型(例如,使用独立的修正模型 (Havrilla et al., 2024b; Welleck et al., 2023))或依赖“教师”监督来引导自我修正过程(Qu et al., 2024)。利用单独的教师监督模型时,自我修正不一定优于并行、独立的尝试。我们开发了一种方法,不需要这些额外要求就能有效实现自我修正。我们的方法 Self-Correction via Reinforcement Learning(SCoRe),仅训练一个能够既产生问题的响应又在无外部反馈下修正错误的模型。

为了构建 SCoRe,我们首先分析了基于 SFT 方法(例如 STaR (Zelikman et al., 2022))以及单纯直接对最终响应正确性进行强化学习(RL)来教会自我修正的缺点。我们发现这些方法要么受到分布偏移的影响——模型能够修正基础模型生成的错误,但这些提升不能转移到模型自身错误的自我修正上;要么发生行为崩溃,即学习过程仅产生一流的首次响应,随后仅进行表面上或根本不做修改的行为。为了解决这些问题,SCoRe 直接通过基于策略的多轮 RL 来训练自我修正。为了防止行为崩溃,SCoRe 采用了两阶段训练:在第一阶段,它通过在第一轮分布上将模型输出保持接近基础模型的同时,训练模型修正第二次尝试响应,从而得到一个不易崩溃的初始化;接着在第二阶段同时针对两次尝试优化奖励。关键在于,在第二阶段多轮 RL 中,采用了奖励修形技巧,用以奖励向自我修正转变的“进步”,而不是仅仅奖励给定提示产生最佳响应的策略。

我们的主要贡献是 SCoRe——一种旨在单独使用自生成数据教会 LLMs 自我修正的多轮 RL 方法。据我们所知,SCoRe 是首个在内在自我修正上取得显著正向改进的方法:相对于基础 Gemini 模型,我们的方法在 MATH(Hendrycks et al., 2021)的推理问题上实现了绝对 15.6 % 15.6\% 15.6% 的提升,在 HumanEval(Chen et al., 2021)的编程问题上实现了绝对 9.1% 的提升。我们还通过对比分析 SFT 与标准 RL 方法的失败模式,从总体上表明强化学习在自我训练自我修正中起着不可或缺的作用。

2. 相关工作

此前的工作在各种假设和问题设置下研究 LLMs 的自我修正。最突出的问题设置包括:存在来自环境的外部输入 token 的问题,如具代理性的任务(Liu et al., 2023)、代码修复(Jain et al., 2024)及工具使用(Chen et al., 2023)。尽管外部反馈可以让强大的模型实现自我修正(Pan et al., 2023),但即使是这些模型也难以在没有外部输入的(内在自我修正)情况下有效修正错误(Huang et al., 2023; Kamoi et al., 2024)。试图增强内在修正能力的相关工作大多依赖于提示策略和微调。

提示实现内在自我修正。最近的工作表明,简单地提示 LLMs 进行自我修正可能会降低性能(Huang et al., 2023; Qu et al., 2024; Tyen et al., 2024; Zheng et al., 2024)。这些结果与早期工作(Kim et al., 2023; Madaan et al., 2023; Shinn et al., 2023)形成对比,这种对比主要源自两种设置假设的不匹配(Kamoi et al., 2024)。例如,Kim et al. (2023) 和 Shinn et al. (2023) 在自我修正时使用了真实答案;而 Madaan et al. (2023) 则使用较弱的提示来生成初始响应,从而高估了总改进幅度。因此,目前没有主要工作显示仅依靠提示就能成功实现内在自我修正。在代码自我修复的背景下,Olausson et al. (2023) 表明即使在给出部分反馈(例如仅给出测试用例而非期望输出)的情况下,强大模型也难以修正错误。

针对内在自我修正的微调。已有多项工作超越提示策略,依靠带有修正示例的微调,例如直接从人工注释者获取修正示例(Saunders et al., 2022)或通过更强的模型获得示例(Qu et al., 2024; Ye et al., 2023)。我们的工作旨在完全不依赖于更大模型或人工,只在学习者自身生成训练数据的情况下训练自我修正。类似这些工作,我们假设可以获得一个用于评估模型生成输出正确性的奖励函数 r ^ ( y , y ∗ ) \widehat{r}\left(\boldsymbol{y}, \boldsymbol{y}^{\ast}\right) r (y,y)(例如答案检查器 (Uesato et al., 2022))。关键在于我们不假设在测试时可以访问该奖励函数;相反,模型必须自己判断是否存在错误并在必要时进行改正。与 Qu et al. (2024) 的设置不同,我们在大部分主要结果中也不采用多数投票方法。两个自我修正规迹的例子如图 2 所示,我们的问题设置如图 3 所示。

\includegraphics[max width=\textwidth, center]{2025_04_15_e1c1dcdeea71018eade7g-02}

图 1 | 左图:SCoRe 在 MATH 数据集上实现了最先进的自我修正性能;右图:SCoRe 推理时的计算扩展:在连续自我修正上花费更多样本比仅花费在并行直接样本上更有效(参见 Section 6.2)。

为了赋予 LLMs 自我修正的能力,我们提出的方法不仅训练策略 π θ \pi_{\theta} πθ 使其给出问题的响应,而且也能在之前轮次的响应基础上修正错误。具体来说,给定一个数据集

D = { ( x i , y i ∗ ) } i = 1 N \mathcal{D}=\left\{\left(\boldsymbol{x}_{i}, \boldsymbol{y}_{i}^{\ast}\right)\right\}_{i=1}^{N} D={(xi,yi)}i=1N

其中 x i \boldsymbol{x}_{i} xi 为问题, y i ∗ \boldsymbol{y}_{i}^{\ast} yi 为响应,我们将训练 LLM 策略 π θ ( ⋅ ∣ [ x , y ^ 1 : l , p 1 : l ] ) \pi_{\theta}\left(\cdot \mid\left[\boldsymbol{x}, \hat{\boldsymbol{y}}_{1:l}, p_{1:l}\right]\right) πθ([x,y^1:l,p1:l]),该策略在给定问题 x \boldsymbol{x} x、之前 l l l 次模型尝试 y ^ 1 : l \hat{\boldsymbol{y}}_{1:l} y^1:l 和辅助指令 p 1 : l p_{1:l} p1:l(例如“找出错误并改善响应”的指令)的情况下,尽可能正确地解答问题。这种形式与 Qu et al. (2024) 中的多轮马尔可夫决策过程类似。我们还假设可以获得一个“oracle”奖励 r ^ ( y , y ∗ ) \widehat{r}\left(\boldsymbol{y}, \boldsymbol{y}^{\ast}\right) r (y,y),例如一个答案检查器,该奖励通过将模型响应 y \boldsymbol{y} y 与真实响应 y ∗ \boldsymbol{y}^{\ast} y 比较来评判响应的正确性。关键在于,我们在测试时不假定可以访问这个 oracle;相反,模型必须自行推断是否存在错误并在必要时改正,就像在数学推理问题中常见的情况一样。与 Qu et al. (2024) 不同的是,我们也不在大部分结果中采用多数投票方法。

为了衡量自我修正的性能(本文中我们考虑 l = 2 l=2 l=2),我们报告并分析以下指标:(1)Accuracy@t1:模型第一次尝试的正确率;(2)Accuracy@t2:模型第二次尝试的正确率;(3) Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2):模型在两次尝试之间正确率的净增量,用以衡量自我修正的有效性;(4) Δ i → c ( t 1 , t 2 ) \Delta^{\mathrm{i} \rightarrow \mathrm{c}}(\mathbf{t1}, \mathbf{t2}) Δic(t1,t2):第一次尝试错误而第二次尝试正确的题目所占比例,衡量自我修正能解决多少新问题;(5) Δ c → i ( t 1 , t 2 ) \Delta^{\mathrm{c} \rightarrow \mathrm{i}}(\mathbf{t1}, \mathbf{t2}) Δci(t1,t2):第一次尝试正确而第二次尝试错误的题目所占比例,衡量模型对何时不应修改正确响应的理解程度。

我们旨在找到一个 LLM 策略 π ( □ ∣ ∘ ) \pi(\square \mid \circ) π(),将输入 token ∘ \circ 映射至输出 token □ \square ,使得在 l + 1 l+1 l+1 轮(此处 l = 1 l=1 l=1)结束时,从验证器获得的正确性奖励最大化。形式化地表示为:

max ⁡ π θ E x , y ∗ ∼ D , y ^ l + 1 ∼ π θ ( ⋅ ∣ [ x , y ^ 1 : l , p 1 : l ] ) [ ∑ i = 1 l + 1 r ^ ( y ^ i , y ∗ ) ] . (1) \max_{\pi_{\theta}} \mathcal{E}_{x,\boldsymbol{y}^{\ast} \sim \mathcal{D}, \hat{y}_{l+1} \sim \pi_{\theta}\left(\cdot \mid\left[x,\hat{y}_{1:l}, p_{1:l}\right]\right)}\left[\sum_{i=1}^{l+1} \widehat{r}\left(\hat{y}_{i}, y^{\ast}\right)\right]. \tag{1} πθmaxEx,yD,y^l+1πθ([x,y^1:l,p1:l])[i=1l+1r (y^i,y)].(1)

关键在于,与标准 SFT 或当前广泛使用的针对 RLHF 的单轮 RL 微调工作不同,式 (1) 同时训练策略 π \pi π 使其在多个尝试中输出响应,其中中间轮次间接受监督以最大化总奖励。

基础 RL 微调方法。我们使用带 KL 散度惩罚项的 REINFORCE 策略梯度训练方法(Ahmadian et al., 2024),这一方法在 LLM 单轮 RLHF 中被广泛应用。形式上,这些方法训练策略 π θ ( ⋅ ∣ x ) \pi_{\theta}(\cdot \mid x) πθ(x) 以优化以下目标,其中 π r e f \pi_{\mathrm{ref}} πref 是参考策略:

max ⁡ θ E x t , y t ∼ π θ ( ⋅ ∣ x t ) [ r ^ ( y t , y ∗ ) − β 1 D K L ( π θ ( ⋅ ∣ x t ) ∥ π r e f ( ⋅ ∣ x t ) ) ] , (2) \max_{\theta} \mathbb{E}_{x_t,\boldsymbol{y}_t \sim \pi_{\theta}\left(\cdot \mid x_t\right)}\left[\widehat{r}\left(y_t, y^{\ast}\right) - \beta_1 D_{KL}\left(\pi_{\theta}\left(\cdot \mid x_t\right) \| \pi_{\mathrm{ref}}\left(\cdot \mid x_t\right)\right)\right], \tag{2} θmaxExt,ytπθ(xt)[r (yt,y)β1DKL(πθ(xt)πref(xt))],(2)

其中 β 1 \beta_{1} β1 是一个超参数,用于惩罚策略与参考策略之间的 KL 散度。

指标。为了衡量只进行一次自我修正(即两轮尝试)的性能,我们报告以下指标:

(1) Accuracy@t1:模型首次尝试的正确率;

(2) Accuracy@t2:模型第二次尝试的正确率;

(3) Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2):两次尝试之间正确率的净变化,衡量自我修正效果;

(4) Δ i → c ( t 1 , t 2 ) \Delta^{\mathrm{i} \rightarrow \mathrm{c}}(\mathbf{t1}, \mathbf{t2}) Δic(t1,t2):第一次错误转为第二次正确题目的比例;

(5) Δ c → i ( t 1 , t 2 ) \Delta^{\mathrm{c} \rightarrow \mathrm{i}}(\mathbf{t1}, \mathbf{t2}) Δci(t1,t2):第一次正确转为第二次错误题目的比例。

\section*{4. 在自生成数据上进行 SFT 对自我修正来说是不足的}

一种自然的训练自我修正的方法是利用基础模型生成的数据进行某种形式的监督微调。此类方法的变体已被证明在单轮推理问题上扩展性良好(Singh et al., 2023; Zelikman et al., 2022)。本节中,我们评估了两种此类自我修正方法的效果:STaR (Zelikman et al., 2022) 以及只训练单一模型的 Welleck et al. (2023) 版本。

我们最终发现,虽然这些方法相对于基础模型在自我修正上有一定改进,但它们未能实现显著正向的自我修正( Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2))。通过探查这些模型,我们观察到两种主要失败模式:(1)不修正行为崩溃,即模型学会生成一次就得出较好响应、而第二次仅做一些细微或根本不做修改;(2)离线方法对首次响应分布偏移不具有鲁棒性。

分析设置:方法与数据集构造。我们利用 Gemini 1.5 Flash 生成大量的 MATH 数据集上两轮自我修正规迹。STaR 方法对这些轨迹进行过滤,仅保留那些成功修正错误的轨迹,并在由此构建的数据集上进行 SFT。另一种方法是使用上文获得的基础模型数据构造“合成”修正规迹,即将错误响应与正确响应配对(Welleck et al., 2023)。我们研究了该方法的一个变体,称之为 Pair-SFT,该方法不训练一个独立的修正模型,也不对初始数据集使用多轮轨迹扩充。形式上,我们将 STaR 和 Pair-SFT 的数据集分别记为 D S T a R \mathcal{D}_{\mathrm{STaR}} DSTaR D S F T \mathcal{D}_{\mathrm{SFT}} DSFT。我们遵循 Singh et al. (2024) 的协议进行了 3 次迭代的 STaR 训练,而 Pair-SFT 仅进行一次迭代,遵循 Welleck et al. (2023) 及其他标准 SFT 工作流程。

主要实验结果。我们在表 1 中展示了在 D S T a R \mathcal{D}_{\mathrm{STaR}} DSTaR D S F T \mathcal{D}_{\mathrm{SFT}} DSFT 上微调后的自我修正结果。我们发现,尽管 Pair-SFT 的 Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2) 相对于基础模型有明显提升,但自我修正的收益仅为约 1.8 % 1.8\% 1.8%。这一提升与 Qu et al. (2024) 中的发现量级相似。通过观察 Δ i → c \Delta^{\mathrm{i} \rightarrow \mathrm{c}} Δic Δ c → i \Delta^{\mathrm{c} \rightarrow \mathrm{i}} Δci,我们发现 SFT 主要减少了将正确问题错误修改为错误的比例,但并未显著增加将错误问题修正为正确的比例。这一结果与以往关于内在自我修正的工作一致,这些工作发现 Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2) 数值几乎为零或为负。

我们还发现,与 Pair-SFT 不同的是,仅使用 D S T a R \mathcal{D}_{\mathrm{STaR}} DSTaR 进行训练并未减少 Δ c → i \Delta^{\mathrm{c} \rightarrow \mathrm{i}} Δci,表明 STaR 策略无法明确判断何时应做修改。注意到这一点后,我们还在扩展数据集 D S T a R + \mathcal{D}_{\mathrm{STaR}}^{+} DSTaR+(以及 D S F T + \mathcal{D}_{\mathrm{SFT}}^{+} DSFT+)上进行了训练,该数据集还包含了响应正确的样本对。我们原本预期增加这部分“正确到正确”的数据可以防止模型错误地修改本已正确的响应。正如表 1 所示,加入这部分数据对 STaR 有较大改善,但 Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2) 的变化仍只有 0.4 % 0.4\% 0.4%。另一方面,对于 SFT,加入这部分数据则过分使模型不愿改变其答案。

更深入的探讨:分析自我修正行为。为了进一步理解这些 STaR 和 SFT 模型如何编辑响应,我们测量了它们的编辑距离比例,即响应之间的编辑距离归一化为两响应的总长度。如图 4a 所示,基础模型有时会对原始响应做出较大修改,而在 D S T a R \mathcal{D}_{\mathrm{STaR}} DSTaR D S F T \mathcal{D}_{\mathrm{SFT}} DSFT 上经过微调的模型过于保守,经常完全不做修改。这类似于一种行为崩溃:在离线修正规迹上训练以最大化似然并未传授预期的修正“行为”,尽管它改善了首次响应准确率。类似地,LLMs 忽视细微行为(例如在一个响应中生成错误然后在后续步骤中修正)的现象已在 Ye et al. (2024) 中观察到。

我们还比较了训练集与测试时自我修正规迹上编辑距离比例的分布,如图 4b/4c 所示。虽然 STaR 在训练集和验证集上产生了定性上相似的编辑距离比例,但对于 SFT,我们仍观察到训练集与验证集之间存在差异,这表明 Pair-SFT 在同一分布下对新问题的推广效果并不理想。我们通过在图 5 中绘制固定首次响应与自我生成首次响应下 SFT 模型的自我修正性能来直观展示这一点。我们观察到在静态的首次尝试分布下,模型能够优化训练修正准确率并稍微改善验证集中首次尝试(分布与训练集独立同分布)的性能,但在自我生成首次尝试上,自我修正准确率则下降。因此,分布偏移对于离线方法(如 Pair-SFT)来说是一个重大挑战。

\includegraphics[max width=\textwidth, center]{2025_04_15_e1c1dcdeea71018eade7g-07(1)}

图 4 | 微调模型、SCoRe 方法与基础模型在第一次尝试与第二次尝试响应之间的编辑距离。虽然在自生成错误修正规迹上训练倾向于不做大修改,SFT 学会了做一些修改但仍相当保守。

深入剖析:分析自我修正行为。为更好理解这些 STaR 与 SFT 模型如何编辑响应,我们测量了它们的编辑距离比例(编辑距离除以两响应的总长度)。如图 4a 所示,基础模型有时会对原始响应进行大幅修改,而在 D S T a R \mathcal{D}_{\mathrm{STaR}} DSTaR D S F T \mathcal{D}_{\mathrm{SFT}} DSFT 上经过微调的模型则过于保守,常常完全不修改。这类似于行为崩溃:在离线修正规迹上训练以最大化似然,并未传授我们期望的修正“行为”,即便首次准确率有所改善。同样,在一些细微行为(例如生成一个响应中的错误然后在后续步骤中加以修正)上,也在 Ye et al. (2024) 中有所观察。

我们还对比了训练集与测试时自我修正规迹的编辑距离比例分布,如图 4b/4c 所示。虽然 STaR 在训练集与验证集上的编辑距离分布定性相似,我们仍观察到 SFT 在训练集与验证集之间存在一些差异,这意味着 Pair-SFT 对同一分布下的新问题的泛化效果不足。我们通过如图 5 所示,将 SFT 模型在固定首次响应与自我生成首次响应上的自我修正性能绘制出来。我们观察到静态与自我生成首次响应分布下行为有显著差异:模型能在优化训练修正准确率的同时略微提高验证集中首次尝试准确率(与训练分布独立同分布),但其在自我生成首次响应上的自我修正准确率却显著下降。因此,分布偏移对 Pair-SFT 这类离线方法来说是个重大挑战。

\includegraphics[max width=\textwidth, center]{2025_04_15_e1c1dcdeea71018eade7g-08}

图 5 | 基于不同首次尝试响应集合下的自我修正性能:(a)“固定”:首次响应从初始模型采样,(b)“自我生成”:首次响应由学习器自身生成。整个训练过程中,固定响应上的修正率在训练与验证题目中均上升,但在自我生成响应上明显降低。这表明基于固定离线修正规迹的数据存在分布偏移问题。

我们在图 6 中还比较了标准多轮 RL 下 SFT 模型在训练与测试时自我修正轨迹的编辑距离比例分布。正如图中所示,STaR 对训练集与验证集的编辑距离比例分布定性上相似,但 SFT 在两者之间依然存在一些差异,这暗示 Pair-SFT 在对同一分布下新问题的泛化上效果并不理想。

总结:SFT 的不足之处

基于 SFT 的方法在学习自我修正时存在两种显著不足:(1)分布偏移问题;(2)行为崩溃问题。使用基于策略的在线 RL 虽然能解决(1)问题,但难以解决(2)。

5. SCoRe:通过多轮强化学习实现自我修正

上述结果强调,为了用仅自生成在线数据训练 LLMs 实现自我修正,必须同时解决分布偏移与行为崩溃问题。利用在线 RL 是解决分布偏移的自然方法,我们的方法将通过扩展式 (2) 在 Zhou et al. (2024) 的分层框架下实现多轮训练。然而,标准多轮 RL 是否会出现行为崩溃问题?如果不会,我们又如何解决?

为解答这些问题,我们运行了标准多轮 RL 训练,仅在 ( x 2 , y 2 ) (x_{2}, y_{2}) (x2,y2) 对上优化式 (1)。由于该目标仅最大化模型第二次尝试的性能而不训练第一次尝试,我们期望模型的自我修正 Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2) 提升。然而,如图 6 所示,虽然每一轮尝试的性能随着训练提高,其差值 Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2) 却未发生改善。换句话说,标准多轮 RL 收敛到了一种对改变响应过于保守的状态,导致无自我修正能力,与我们在 STaR 中观察到的行为崩溃类似。

为什么 RL 仍然会出现崩溃?在对训练数据进行 RL 策略优化时至少会有两种同样优的解:(i)学会从第一次到第二次尝试改进,或(ii)学会生成最佳的第一次响应,然后第二次不进行修正。当然,只有前一种策略能对新问题具有泛化能力,但过参数化的 LLM 可能不会倾向于学习策略(i)而不是(ii),因为这两种策略在训练集上都可能是同样最优的。抽象来看,除非在训练数据中“直接”优化奖励的策略不再可行,否则学习自我修正的“元策略”就非常困难。这类似于元学习中的记忆化挑战(Yin et al., 2019),表明在面对彼此互斥的任务时,元学习可能会恢复出不利用上下文(few-shot)的监督学习解,即直接预测输出。这里,相似地就意味着模型不会对先前的尝试进行自我修正,而是直接生成答案。

方法概述。虽然一个好的自我修正策略应同时最大化 Accuracy@t1 和 Accuracy@t2,但我们发现标准 RL 会导致策略崩溃到不修正的状态。因此,我们在 SCoRe 中的关键思路是必须更明确地鼓励自我修正行为,我们通过两阶段方法实现这一点。第一阶段(Stage I)的作用是作为初始化阶段,通过优化第二次尝试准确率的同时明确约束第一次尝试分布接近基础模型,从而使后续自我修正训练不易发生行为崩溃。从此开始,第二阶段(Stage II)则同时优化两次尝试的奖励。为确保第二阶段不会退化到“直接”解(仅对训练集最优,但无法实现自我修正),我们在奖励中引入了偏置,强化奖励那些带来自我修正“进步”的转移。

\subsection*{5.1. 阶段 I:训练一个解耦两次尝试的初始化}

阶段 I 的目标是通过改进基础模型在给定第一次尝试后的第二次尝试覆盖率,获得一个初始化,从而使后续的自我修正训练不容易出现行为崩溃。通常这一步可以通过 SFT 完成,但正如第 4 节所示,SFT 本身也会发生崩溃。因此,我们在这一阶段采用 RL 来解耦两次尝试。为此,我们显式地微调基础模型,使其在第二次尝试产生高奖励响应,同时利用 KL 散度将第一次尝试限制在与基础模型接近的状态。虽然这看似次优——因为第一次尝试更少出错应当使第二次尝试更好——但正如后续所示,这一阶段对于减少基础模型将第一次与第二次尝试耦合的偏向性至关重要,从而避免在实际多轮 RL 中发生行为崩溃。形式上,其目标为:

max ⁡ θ E x 1 , y 1 ∼ π θ ( ⋅ ∣ x ) , y 2 ∼ π θ ( ⋅ ∣ [ x 1 , p 1 ] ) [ r ^ ( y 2 , y ∗ ) − β 2 D K L ( π θ ( ⋅ ∣ x 1 ) ∥ π r e f ( ⋅ ∣ x 1 ) ) ] , (3) \max_{\theta} \mathbb{E}_{\boldsymbol{x}_{1}, \boldsymbol{y}_{1} \sim \pi_{\theta}(\cdot \mid x), \, \boldsymbol{y}_{2} \sim \pi_{\theta}\left(\cdot \mid\left[\boldsymbol{x}_{1}, p_{1}\right]\right)} \left[\widehat{r}\left(\boldsymbol{y}_{2}, \boldsymbol{y}^{\ast}\right) - \beta_{2} D_{KL}\left(\pi_{\theta}\left(\cdot \mid \boldsymbol{x}_{1}\right) \| \pi_{\mathrm{ref}}\left(\cdot \mid \boldsymbol{x}_{1}\right)\right)\right], \tag{3} θmaxEx1,y1πθ(x),y2πθ([x1,p1])[r (y2,y)β2DKL(πθ(x1)πref(x1))],(3)

其中 β 2 \beta_{2} β2 是一个超参数,用于在仅对第一次尝试施加严格 KL 惩罚的同时,避免改变第一次尝试响应(蓝色部分所示)。注意,我们仍使用式 (2) 中的默认 KL 散度惩罚,但权重相对较小,此处为清晰起见在式 (3) 中略去。事实上,我们显示,与标准多轮 RL 相比,阶段 I 能更有效地解耦两次响应(参见图 6b),从而使阶段 II 的性能更优。

\subsection*{5.2. 阶段 II:带奖励修形的多轮 RL}

阶段 II 从阶段 I 的初始化开始,现在联合优化两次尝试的性能。具体来说,我们训练策略 π θ ( ⋅ ∣ ⋅ ) \pi_{\theta}(\cdot \mid \cdot) πθ() 使用以下目标:

max ⁡ θ E x 1 , y 1 ∼ π θ ( ⋅ ∣ x ) , y 2 ∼ π θ ( ⋅ ∣ [ x 1 , p 1 ] ) [ ∑ i = 1 2 r ^ ( y i , y ∗ ) − β 1 D K L ( π θ ( ⋅ ∣ x i ) ∥ π r e f ( ⋅ ∣ x i ) ) ] , (4) \max_{\theta} \mathbb{E}_{x_{1},y_{1} \sim \pi_{\theta}(\cdot\mid x),\, y_{2} \sim \pi_{\theta}\left(\cdot\mid \left[x_{1}, p_{1}\right]\right)} \left[\sum_{i=1}^{2} \widehat{r}\left(\boldsymbol{y}_{i}, y^{\ast}\right) - \beta_{1} D_{KL}\left(\pi_{\theta}\left(\cdot \mid x_{i}\right) \| \pi_{\mathrm{ref}}\left(\cdot \mid \boldsymbol{x}_{i}\right)\right)\right], \tag{4} θmaxEx1,y1πθ(x),y2πθ([x1,p1])[i=12r (yi,y)β1DKL(πθ(xi)πref(xi))],(4)

其中 x i , i ∈ { 1 , 2 } \boldsymbol{x}_{i}, i\in\{1,2\} xi,i{1,2} 代表传递给模型的输入 token 集。

奖励修形防止行为崩溃。原则上,直接优化式 (4) 也可能得到一种耦合响应的解,因为我们仍然旨在同时最大化两次尝试的真实奖励。为防止学习过程退化为非自我修正策略,我们需要在学习问题中偏向于自我修正。我们通过奖励修形来实现这一点:对那些带有“进步”特性的状态转移给予奖励,从而强调自我修正行为。具体来说,给定从策略中采样的两轮 rollout τ = { x 1 , y ^ 1 , r ^ ( y 1 , y ∗ ) , x 2 , y ^ 2 , r ^ ( y 2 , y ∗ ) } \tau=\left\{\boldsymbol{x}_{1}, \hat{y}_{1}, \widehat{r}\left(\boldsymbol{y}_{1}, \boldsymbol{y}^{\ast}\right), \boldsymbol{x}_{2}, \hat{y}_{2}, \widehat{r}\left(\boldsymbol{y}_{2}, \boldsymbol{y}^{\ast}\right)\right\} τ={x1,y^1,r (y1,y),x2,y^2,r (y2,y)},我们修改式 (4) 中针对第二次尝试的奖励 r ^ ( y 2 , y ∗ ) \widehat{r}\left(\boldsymbol{y}_{2}, \boldsymbol{y}^{\ast}\right) r (y2,y),加入一个奖励加成:

b ^ ( y 2 ∣ y 1 , y ∗ ) : = α ⋅ ( r ^ ( y 2 , y ∗ ) − r ^ ( y 1 , y ∗ ) ) , \widehat{b}\left(\boldsymbol{y}_{2} \mid \boldsymbol{y}_{1}, \boldsymbol{y}^{\ast}\right):= \alpha \cdot \left(\widehat{r}\left(\boldsymbol{y}_{2}, y^{\ast}\right) - \widehat{r}\left(\boldsymbol{y}_{1}, y^{\ast}\right)\right), b (y2y1,y):=α(r (y2,y)r (y1,y)),

其中 α \alpha α 是一个大于 1.0 的正数常数。将这一加成项加到第二次尝试的奖励上,相当于仅强调那些翻转响应正确性(例如,将错误改正为正确;或反之)的转移,并对将正确响应修改为错误给予较大负奖励。因此,此加成项有助于正则化训练过程,避免退化为仅对训练集最优却无法学到自我修正的“直接”策略。

\subsection*{5.3. 方法整合及实现细节}

如图 7 所示,我们的方法整体流程如下。所有超参数的详细设定见附录 B。在实践中,我们也可以使用自适应 β 2 \beta_{2} β2 来平衡第一次 KL 正则化与第二次策略目标的量级。在部分实验中,我们还选择通过将基础模型作为离线提示重复采样获得的第一次尝试解纳入 RL 的状态,以增强在线 RL 过程中状态的覆盖度。我们发现,尤其在阶段 II 中——当第一次策略可能已较大偏离基础模型时——加入这部分数据对有限数据条件下的学习有显著益处。

\includegraphics[max width=\textwidth, center]{2025_04_15_e1c1dcdeea71018eade7g-09}

图 7 | 我们方法 SCoRe 的概览。SCoRe 分两个阶段训练模型:阶段 I:我们不采用 SFT(其会放大偏差),而采用 RL 训练出一个在第一次尝试上模仿基础模型,同时在第二次尝试上获得高奖励的初始化;阶段 II:联合优化两次尝试,其中后者采用奖励修形以激励发现自我修正策略,而非仅仅生成最佳首次响应后做微小修改。

\section*{总结与启示}

SCoRe 的核心思想是必须使学习到的策略更倾向于获取一种细致的算法策略(即自我修正),而不是退化到一个退化的行为模式。为了避免分布偏移,这一过程必须基于自生成的在线数据进行训练。

表 2 显示了 SCoRe 在 MATH 数据集上的性能。SCoRe 不仅在两次尝试上都取得了更高的准确率,还提供了最正向的自我修正性能 Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2)

\begin{center}

\begin{tabular}{l||ccccc}

\hline

方法 & Accuracy@t1 & Accuracy@t2 & Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2) & Δ i → c ( t 1 , t 2 ) \Delta^{\mathrm{i} \rightarrow \mathrm{c}}(\mathbf{t1}, \mathbf{t2}) Δic(t1,t2) & Δ c → i ( t 1 , t 2 ) \Delta^{\mathrm{c} \rightarrow \mathrm{i}}(\mathbf{t1}, \mathbf{t2}) Δci(t1,t2) \

\hline

基础模型 & 52.6 % 52.6\% 52.6% & 41.4 % 41.4\% 41.4% & − 11.2 % -11.2\% 11.2% & 4.6 % 4.6\% 4.6% & 15.8 % 15.8\% 15.8% \

\hline

Self-Refine (Madaan et al., 2023) & 52.8 % 52.8\% 52.8% & 51.8 % 51.8\% 51.8% & − 1.0 % -1.0\% 1.0% & 3.2 % 3.2\% 3.2% & 4.2 % 4.2\% 4.2% \

STaR w/ D S T a R + \mathcal{D}_{\mathrm{STaR}}^{+} DSTaR+ (Zelikman et al., 2022) & 53.6 % 53.6\% 53.6% & 54.0 % 54.0\% 54.0% & 0.4 % 0.4\% 0.4% & 2.6 % 2.6\% 2.6% & 2.2 % 2.2\% 2.2% \

Pair-SFT w/ D S F T \mathcal{D}_{\mathrm{SFT}} DSFT (Welleck et al., 2023) & 52.4 % 52.4\% 52.4% & 54.2 % 54.2\% 54.2% & 1.8 % 1.8\% 1.8% & 5.4 % 5.4\% 5.4% & 3.6 % 3.6\% 3.6% \

\hline

SCoRe (本文) & 60.0 % \mathbf{60.0\%} 60.0% & 64.4 % \mathbf{64.4\%} 64.4% & 4.4 % \mathbf{4.4\%} 4.4% & 5.8 % \mathbf{5.8\%} 5.8% & 1.4 % \mathbf{1.4\%} 1.4% \

\hline

\end{tabular}

\end{center}

\section*{6. 实验评估}

我们的实验目标是展示 SCoRe 的有效性并证明其设计合理性,即仅用模型自身的数据训练出自我修正能力。为此,我们对 SCoRe 与其他使用自生成数据进行自我修正训练的先前方法做了比较,并在两个错误修正至关重要的推理任务上进行了多项消融实验。

任务。我们主要聚焦于数学及代码生成的推理问题:(a)在 MATH 数据集上的数学题求解(Hendrycks et al., 2021);(b)MBPP (Austin et al., 2021) 与 HumanEval (Chen et al., 2021) 上的代码生成。我们在所有实验中采用以下训练与测试划分:(1)MATH:遵循 Lightman et al. (2023) 的做法,我们用测试集中的 4500 道题目扩充 MATH 训练集,并在剩余的 500 道题目(MATH500)上报告结果;(2)代码生成:我们在 MBPP 数据集上训练,并在 HumanEval 上测试(后者不向模型暴露测试用例)。在所有任务中,我们在训练时使用二元奖励,指示模型的答案是否与真实答案匹配(对 MATH 而言)或是否通过所有测试用例(对编程问题而言)。

评估协议与指标。我们对模型进行两轮连续尝试(即一次自我修正)的自我修正准确率评估。对于代码生成任务,遵循 Ni et al. (2024) 的评估协议,我们还在 MBPP-R(一个离线修复任务,要求修正 PaLM 2 生成的不正确程序)上报告结果。

模型。在所有编程问题的实验中,我们微调 Gemini 1.0 Pro;而在 MATH 上微调 Gemini 1.5 Flash。在所有评估中,我们使用贪婪解码(即温度设为 0),除了在 Section 6.2 的推理-计算扩展实验中温度设为 0.7。对于所有训练方法,我们均在模型样本和梯度更新预算不变的前提下进行,不在不同运行间调整学习率和批量大小等超参数。对于所有 RL 训练,我们均选择获得最高训练奖励的检查点,当然也可以使用一个小的验证集题目。

评估提示。在 MATH 上评估我们使用零样本链式思考提示;在 HumanEval 上评估使用零样本提示;在 MBPP 上首轮训练样本采用标准的三样本提示。在第二轮尝试时,我们使用的指令不会透露之前答案是否正确,而仅要求模型尝试推断其第一次尝试响应中是否存在错误,如有则改写响应。完整的提示与自我修正指令可参见附录 C。

对比方法与比较。我们将 SCoRe 与那些基于提示或者仅用单一模型同时处理解题和修正任务的先前方法进行比较,这些方法均只使用自生成数据。具体来说,我们将其与基于提示的 Self-Refine(Madaan et al., 2023)方法作比较,类似于 Reflexion (Shinn et al., 2023)。在微调方法中,我们将其与基于 Welleck et al. (2023) 方法的 Pair-SFT 以及多轮 STaR(Singh et al., 2023; Zelikman et al., 2022)做比较,后者分别基于合成配对修正规迹(Pair-SFT)和成功修正规迹(STaR)进行微调。

\subsection*{6.1. 基准测试结果}

MATH。我们的结果见表 2 以及图 1。SCoRe 在直接准确率与自我修正准确率上均明显优于各基线。值得注意的是,内在自我修正增量 Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2) 达到 4.4 % 4.4\% 4.4%,这是首次出现显著正向的变化,尽管由于基础模型较高的 Accuracy@t1,其需要修正的错误问题较少。相对于基础模型 Gemini 1.5 Flash,SCoRe 将 Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2) 提高了 15.6 % 15.6\% 15.6%,并将 Accuracy@t2 提高了 23.0 % 23.0\% 23.0%;同时相较于表现最好的先前方法 Pair-SFT,则分别提高了 10.2 % 10.2\% 10.2% 2.6 % 2.6\% 2.6%。通过观察从第一次错误转为第二次正确以及从第一次正确转为第二次错误的题目的比例,我们看到 SCoRe 既提高了修正错误的成功率(由基础模型的 9.5 % 9.5\% 9.5% 提升到 14.5 % 14.5\% 14.5%),又降低了错误修改正确响应的比例(由 15.8 % 15.8\% 15.8% 降至 1.4 % 1.4\% 1.4%)。

代码生成。我们的代码生成任务结果见表 3。总体而言,我们发现 SCoRe 同时在自我修正和离线修复任务上均有提升。对于 MBPP-R(Ni et al., 2024),SCoRe 将基础模型从 47.3 % 47.3\% 47.3% 提高到 60.6 % 60.6\% 60.6%,这一差距类似于 GPT-3.5(43%)与 GPT-4(63.2%)之间的差距。尽管仅在 MBPP 上训练,我们发现 SCoRe 对 HumanEval 的推广效果特别好,实现了 12.2 % 12.2\% 12.2% 的内在自我修正增量,比基础模型高 9%。相比之下,Pair-SFT 在静态修复任务 MBPP-R 上的表现几乎与基础模型相当,但实际上在自我修正设置下却降低了基础模型性能,这凸显了在线采样对于自我修正的重要性。

\begin{center}

表 3 | SCoRe 在 HumanEval 上的性能。SCoRe 获得了最高的自我修正性能(Accuracy@t2、 Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2)),同时在离线修复任务 MBPP-R 上也优于其他方法。

\begin{tabular}{l||cccccc}

\hline

方法 & MBPP-R & Accuracy@t1 & Accuracy@t2 & Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2) & Δ i → c ( t 1 , t 2 ) \Delta^{\mathrm{i} \rightarrow \mathrm{c}}(\mathbf{t1},\mathbf{t2}) Δic(t1,t2) & Δ c → i ( t 1 , t 2 ) \Delta^{\mathrm{c} \rightarrow \mathrm{i}}(\mathbf{t1},\mathbf{t2}) Δci(t1,t2) \

\hline

基础模型 & 47.3 % 47.3\% 47.3% & 53.7 % 53.7\% 53.7% & 56.7 % 56.7\% 56.7% & 3.0 % 3.0\% 3.0% & 7.9 % 7.9\% 7.9% & 4.9 % 4.9\% 4.9% \

Self-Refine & 30.7 % 30.7\% 30.7% & 53.7 % 53.7\% 53.7% & 52.5 % 52.5\% 52.5% & − 1.2 % -1.2\% 1.2% & 9.8 % 9.8\% 9.8% & 11.0 % 11.0\% 11.0% \

Pair-SFT & 59.8 % 59.8\% 59.8% & 56.1 % 56.1\% 56.1% & 54.3 % 54.3\% 54.3% & − 1.8 % -1.8\% 1.8% & 4.3 % 4.3\% 4.3% & 6.1 % 6.1\% 6.1% \

\hline

SCoRe (本文) & 60.6 % \mathbf{60.6\%} 60.6% & 52.4 % 52.4\% 52.4% & 64.6 % \mathbf{64.6\%} 64.6% & 12.2 % \mathbf{12.2\%} 12.2% & 15.2 % \mathbf{15.2\%} 15.2% & 3.0 % \mathbf{3.0\%} 3.0% \

\hline

\end{tabular}

\end{center}

\subsection*{6.2. 推理-计算扩展与自我修正}

接下来,我们探讨 SCoRe 是否可以与推理时的计算扩展策略结合使用。为此,我们评估了自洽性解码(self-consistency decoding,Wang et al., 2022),该方法先采样出多样化的解,然后选择这些解中最一致的答案。通常默认策略是并行采样 2 K 2K 2K 个解以进行多数投票。然而,如图 1(右图)所示,与其并行采样 2 K 2K 2K 个解,不如并行采样 K K K 个解,然后对每个解进行一次自我修正。在每题固定 32 个预算下,并行采样可使准确率提升 7.4 % 7.4\% 7.4%,而结合顺序采样与自我修正则可使提升达到 10.5 % 10.5\% 10.5%

表 4 | 消融实验:理解 SCoRe 各组件的影响。注意,虽然单轮训练能有效优化模型的首次准确率,但会导致第二次准确率下降。不使用阶段 I 或不使用奖励修形的 SCoRe 性能改善较小(从两次尝试上准确率差值看)。使用 STaR 通常会导致更差的性能,即使它是在有效阶段 I 检查点上运行。

\begin{center}

\begin{tabular}{|c|c|c|c|}

\hline

方法 & Accuracy@t1 & Accuracy@t2 & Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2) \

\hline

SCoRe (本文) & 60.0% & 64.4% & 4.4% \

\hline

不使用多轮训练 & 61.8% & 59.4% & -2.4% \

\hline

不使用阶段 I & 59.2% & 61.4% & 2.2% \

\hline

不使用奖励修形 & 60.0% & 62.6% & 2.6% \

\hline

使用 STaR 替代阶段 II 的 REINFORCE & 56.2% & 58.4% & 2.2% \

\hline

\end{tabular}

\end{center}

\subsection*{6.3. 消融实验:理解 SCoRe 各组成部分的影响}

最后,我们在 MATH 数据集上展示了多组消融实验,以理解 SCoRe 各部分的重要性。具体来说,我们旨在回答以下问题:

(1) 多轮训练的重要性:仅以单轮目标训练的 RL 能否实现更优的 Accuracy@t1 或 Accuracy@t2?

(2) 多阶段训练的重要性:阶段 I 对 SCoRe 有多关键?换言之,为什么不能直接运行阶段 II?

(3) 奖励修形的影响:在阶段 II 中移除奖励修形项对 SCoRe 的性能有何影响,假定阶段 I 保持不变?

(4) 在线 RL 的重要性:如果我们用 STaR 替代阶段 II 中的 REINFORCE,会怎样?

所有这些消融实验的结果见表 4。如预期,单轮训练能提高第一次准确率,但其 Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2) 为负。如图 6 所示,阶段 I 对 SCoRe 至关重要;不使用阶段 I 时,模型的 Δ ( t 1 , t 2 ) \Delta(\mathbf{t1}, \mathbf{t2}) Δ(t1,t2) 下降约 2%,且 Accuracy@t2 下降约 3%。同样,我们发现移除奖励修形也会降低性能,这表明两阶段中的 RL 目标均在传授自我修正行为上发挥了重要作用。我们还发现,在阶段 II 中用 STaR 替代 REINFORCE 会导致绝对性能大幅下降且自我改进表现无明显提升,这与 Havrilla et al. (2024a) 对单轮 RL 中 STaR 与在线 RL 收敛速率相似的发现形成对比。这表明利用在线样本在自我修正这一多轮问题中显得尤为关键,因为它可能产生虚假的最优解。

\section*{7. 讨论、局限与结论}

在本工作中,我们探索了如何赋予 LLMs 自我修正自身响应的能力,以使其能够即时修正错误。为此,我们提出了 SCoRe,一种多轮 RL 方法,并通过大量实验展示了其在内在自我修正方面取得了显著正向效果。为达到这一目标,我们严谨分析了各种 SFT 方法的行为,并确定了模型学到退化策略(例如不做修改)或受到分布偏移影响的失败模式。SCoRe 通过采用两阶段设计与奖励修形,有效防止了行为崩溃,使模型学会了有效的自我修正。SCoRe 也存在一些局限性,为未来工作提供了可能的方向。由于基础设施限制,我们未能训练超过一次迭代的自我修正,这意味着后续轮次的改进可能不如第一次显著。未来工作应尝试通过 RL 训练超过两次尝试,正如已有工作(Qu et al., 2024; Snell et al., 2024)在 SFT 中常有效实现多轮自我修正。将阶段 I 与阶段 II 统一起来也值得探索,因为这可缓解多次独立训练的局限。最后,我们的结果表明,学习元策略(如自我修正)可能需要超越标准 LLM 微调(参见第 4 节),并采用额外的正则化(例如进步奖励)。

\section*{致谢}

作者感谢 Satinder Baveja、Kalesha Bullard、Gheorghe Comanici、Claire Cui、Valentin Dalibard、Angelos Filos、Yang Gao、Zoubin Ghahramani、Izzeddin Gur、Raia Hadsell、Clara Huiyi Hu、Melvin Johnson、Mina Khan、Balaji Lakshminarayanan、Yiran Mao、Hussain Masoom、Junhyuk Oh、Jordi Orbay、David Silver 以及 Yury Sulsky 的有益讨论、反馈与资助。我们感谢 Amrith Setlur、Yuxiao Qu、Charlie Snell、Tianhe Yu 以及 Xinyang (Young) Geng 对本文早期版本提供的有益讨论和反馈。

\section*{作者贡献说明}

AK 与 VZ 主导了本文,RA 及 YS 作出了重要的技术贡献。最终实验由 VZ 在 AK 的带领下完成,RA 与 YS 提供支持。AK 与 RA 在 DS、FB、AF、JDC、AS 与 GT 的建议和讨论下构思了初始想法。JDC、YS、AS、RA 与 AK 多次就方法论进行迭代。最终方法由 AK 与 VZ 完成开发,RA 与 FB 提供意见。VZ 主导了基础设施开发,而 RA、YS、CP、SI、KB、DS 以及 LMZ 贡献了基础设施的构建。AK、RA、FB、AF、DP、GT 则对整体方向进行了指导。AK 与 VZ 撰写了论文初稿,各联合作者均给予了意见。KM 提供了项目管理。FB 与 AF 联合指导了本项目。

\section*{参考文献}

A. Ahmadian, C. Cremer, M. Gallé, M. Fadaee, J. Kreutzer, A. Üstün, and S. Hooker. Back to basics: Revisiting reinforce style optimization for learning from human feedback in llms. arXiv preprint arXiv:2402.14740, 2024.\

A. F. Akyürek, E. Akyürek, A. Madaan, A. Kalyan, P. Clark, D. Wijaya, and N. Tandon. RL4F: Generating natural language feedback with reinforcement learning for repairing model outputs. arXiv preprint arXiv:2305.08844, 2023.\

J. Austin, A. Odena, M. Nye, M. Bosma, H. Michalewski, D. Dohan, E. Jiang, C. Cai, M. Terry, Q. Le, et al. Program synthesis with large language models. arXiv preprint arXiv:2108.07732, 2021.\

M. Chen, J. Tworek, H. Jun, Q. Yuan, H. P. D. O. Pinto, J. Kaplan, H. Edwards, Y. Burda, N. Joseph, G. Brockman, et al. Evaluating large language models trained on code. arXiv preprint arXiv:2107.03374, 2021.\

X. Chen, M. Lin, N. Schärli, and D. Zhou. Teaching large language models to self-debug. arXiv preprint arXiv:2304.05128, 2023.

\section*{附录}

\section*{A. 附加实验}

\section*{A.1. 扩展到多轮尝试}

\begin{center}

\includegraphics[max width=\textwidth]{2025_04_15_e1c1dcdeea71018eade7g-15(1)}

\end{center}

图 8 | 基础模型、Pair-SFT 与 SCoRe 在 MATH 数据集上 10 次尝试的性能。

我们研究了各种模型在被要求对多轮自我修正(尽管仅在训练中进行两轮尝试或基础模型根本没有修正)的表现。如图 8 所示,我们发现基础模型 Gemini 1.5 Flash 的表现虽然波动较大,但从未超过第一次尝试的水平。同理,Pair-SFT 在第二次尝试后也不再提升。相比之下,SCoRe 的性能在超过两轮后略有提升,尽管很快趋于平稳,可能是因为随着尝试次数增多响应分布迅速移动。关于如何改善自我修正的扩展特性(这也是一种元学习)问题,我们留待未来工作中进一步研究。

\section*{A.2. 奖励函数设计}

\begin{center}

\includegraphics[max width=\textwidth]{2025_04_15_e1c1dcdeea71018eade7g-15}

\end{center}

图 9 | 不同折扣因子 γ \gamma γ 对标准多轮 RL 训练的影响。

在所有实验中,我们在策略梯度目标中仅使用即时奖励,相当于折扣因子 γ = 0 \gamma=0 γ=0。我们还探讨了在奖励修形的配合下,使用 γ > 0 \gamma>0 γ>0 能否更好地引导自我修正。正如图 9 所示,我们发现当 γ = 0.8 \gamma=0.8 γ=0.8 α = 1.0 \alpha=1.0 α=1.0 时,多轮 RL 仍然会遭遇与标准多轮 RL 相同的不修正行为崩溃现象。

\section*{B. 附加实验细节}

表 5 | 在 MATH(左侧)和 MBPP(右侧)上训练 SCoRe 的超参数

\begin{center}

\begin{tabular}{ll}

\hline

超参数 & 值 \

\hline

基础模型 & Gemini 1.5 Flash \

优化器 & Adam \

学习率 & 5 e − 6 5\mathrm{e}-6 5e6 \

训练步数 & 3000 \

批量大小 & 512 \

采样温度 & 1.0 \

α \alpha α & 10 \

β 1 \beta_1 β1 & 0.01 \

β 2 \beta_2 β2 & 0.1 \

\hline

\end{tabular}

\end{center}

\begin{center}

\begin{tabular}{ll}

\hline

超参数 & 值 \

\hline

基础模型 & Gemini 1.0 Pro \

优化器 & Adam \

学习率 & 1 e − 5 1\mathrm{e}-5 1e5 \

训练步数 & 1500 \

批量大小 & 128 \

采样温度 & 1.0 \

α \alpha α & 10 \

β 1 \beta_1 β1 & 0.01 \

β 2 \beta_2 β2 & 0.25 \

\hline

\end{tabular}

\end{center}

以上为训练 SCoRe 所用超参数。

\section*{C. 提示}

\section*{MATH 零样本提示}

你是一位数学专家。请在回答时只输出问题的最终解答,按步骤思考。在给出最终答案时,请最后以 “Final Answer: The final answer is $answer$. I hope it is correct.” 的形式写出。

\section*{MATH 自我修正指令}

上述解答中可能由于对问题理解不充分而存在错误。请检查并改正其中可能存在的错误,然后重写解答。请仅输出最终解答!在给出最终答案时,请最后以 “Final Answer: The final answer is $answer$. I hope it is correct.” 的形式写出。

\section*{MBPP 三样本提示}

你是一位精通 Python 编程的专家,下面是你的任务:编写一个函数,以找出两个元组列表中的相同元素。你的代码应通过如下测试:

assert similar_elements((3,4,5,6),(5,7,4,10)) == (4,5)

assert similar_elements((1,2,3,4),(5,4,3,7)) == (3,4)

assert similar_elements((11,12,14,13),(17,15,14,13)) == (13,14)

\section*{[BEGIN]}

\begin{verbatim}

def similar_elements(test_tup1, test_tup2):

res = tuple(set(test_tup1) & set(test_tup2))

return (res)

[DONE]

\end{verbatim}

\begin{verbatim}

你是一位精通 Python 编程的专家,下面是你的任务:编写一个 Python 函数以识别非素数。

你的代码应通过如下测试:

assert is_not_prime(2) == False

assert is_not_prime(10) == True

assert is_not_prime(35) == True

[BEGIN]

import math

def is_not_prime(n):

result = False

for i in range(2, int(math.sqrt(n)) + 1):

   if n %result = True

return result

[DONE]

\end{verbatim}

\begin{verbatim}

你是一位精通 Python 编程的专家,下面是你的任务:编写一个函数使用堆队列算法,从给定数字列表中找出最大的若干个整数。你的代码应通过如下测试:

assert heap_queue_largest([25,35,22,85,14,65,75,22,58], 3) == [85,75,65]

assert heap_queue_largest([25,35,22,85,14,65,75,22,58], 2) == [85,75]

assert heap_queue_largest([25,35,22,85,14,65,75,22,58], 5) == [85,75,65,58,35]

[BEGIN]

import heapq as hq

def heap_queue_largest(nums,n):

largest_nums = hq.nlargest(n, nums)

return largest_nums

[DONE]

\end{verbatim}

\section*{MBPP/HumanEval 自我修正指令}

# 上述代码中可能由于对问题理解不足而存在错误。请检查并改正其中的错误,然后重写解答。请只输出最终正确的 Python 程序!

\section*{D. SCoRe 的定性分析}

我们还对 SCoRe 如何解决基础 LLMs 自我修正缺陷进行了定性研究,并在附录 E 中提供了数个示例。我们发现 SCoRe 能以多种方式修正自身响应——在必要时重写整个解答,或保留正确部分并修正错误部分。对于后者,我们尤为发现 SCoRe 对修正计算错误表现得尤为出色,甚至显示出倾向于在某些计算和操作中展示更多步骤以增加生成正确答案的概率。我们还观察到,模型偶尔在一轮内便能实现自我修正,例如 MATH 示例 4。

\section*{E. SCoRe 自我修正示例}

\section*{HumanEval 示例 1}

\section*{问题:}

\begin{verbatim}

def cycpattern_check(a, b):

“”"You are given 2 words. You need to return True if the second word or any of its rotations is a substring in the first word

cycpattern_check(“abcd”,“abd”) => False

cycpattern_check(“hello”,“ell”) => True

cycpattern_check(“whassup”,“psus”) => False

cycpattern_check(“abab”,“baa”) => True

cycpattern_check(“efef”,“eeff”) => False

cycpattern_check(“himenss”,“simen”) => True

“”"

\end{verbatim}

第一次尝试解答(错误):

\begin{verbatim}

def cycpattern_check(a, b):

“”"You are given 2 words. You need to return True if the second word or any of its rotations is a substring in the first word

cycpattern_check(“abcd”,“abd”) => False

cycpattern_check(“hello”,“ell”) => True

cycpattern_check(“whassup”,“psus”) => False

cycpattern_check(“abab”,“baa”) => True

cycpattern_check(“efef”,“eeff”) => False

cycpattern_check(“himenss”,“simen”) => True

“”"

for i in range(len(b)):

   if a.find(b[i:]) != -1:return True

return False

\end{verbatim}

第二次尝试解答(正确):

\begin{verbatim}

def cycpattern_check(a, b):

“”"You are given 2 words. You need to return True if the second word or any of its rotations is a substring in the first word

cycpattern_check(“abcd”,“abd”) => False

cycpattern_check(“hello”,“ell”) => True

cycpattern_check(“whassup”,“psus”) => False

cycpattern_check(“abab”,“baa”) => True

cycpattern_check(“efef”,“eeff”) => False

cycpattern_check(“himenss”,“simen”) => True

“”"

for i in range(len(b)):

   rotated_b = b[i:] + b[:i]if a.find(rotated_b) != -1:return True

return False

\end{verbatim}

\section*{HumanEval 示例 2}

\section*{问题:}

\begin{verbatim}

def even_odd_count(num):

“”"Given an integer, return a tuple that has the number of even and odd digits respectively.

Example:

even_odd_count(-12) => (1,1)

even_odd_count(123) => (1,2)

“”"

\end{verbatim}

第一次尝试解答(错误):

\begin{verbatim}

def even_odd_count(num):

“”"Given an integer, return a tuple that has the number of even and odd digits respectively.

Example:

even_odd_count(-12) => (1,1)

even_odd_count(123) => (1,2)

“”"

even_count = 0

odd_count = 0

for digit in str(num):

   int_digit = int(digit)if int_digit % ???:   # 错误处even_count += 1else:odd_count += 1

return even_count, odd_count

\end{verbatim}

第二次尝试解答(正确):

\begin{verbatim}

def even_odd_count(num):

“”"Given an integer, return a tuple that has the number of even and odd digits respectively.

Example:

even_odd_count(-12) => (1,1)

even_odd_count(123) => (1,2)

“”"

even_count = 0

odd_count = 0

for digit in str(abs(num)):

   int_digit = int(digit)if int_digit % 2 == 0:even_count += 1else:odd_count += 1

return even_count, odd_count

\end{verbatim}

\section*{MATH 示例 1}

问题:设矩阵 A A A 满足

A ( 3 1 0 ) = ( 2 4 − 3 ) 且 A ( − 5 2 2 ) = ( 0 − 5 − 5 ) A\begin{pmatrix} 3 \\ 1 \\ 0 \end{pmatrix} = \begin{pmatrix} 2 \\ 4 \\ -3 \end{pmatrix} \quad \text{且} \quad A\begin{pmatrix} -5 \\ 2 \\ 2 \end{pmatrix} = \begin{pmatrix} 0 \\ -5 \\ -5 \end{pmatrix} A 310 = 243 A 522 = 055

A ( − 13 3 4 ) . A\begin{pmatrix} -13 \\ 3 \\ 4 \end{pmatrix}. A 1334 .

第一次尝试解答(错误):

我们可以写为

( − 13 3 4 ) = a ( 3 1 0 ) + b ( − 5 2 2 ) \begin{pmatrix} -13 \\ 3 \\ 4 \end{pmatrix} = a\begin{pmatrix} 3 \\ 1 \\ 0 \end{pmatrix} + b\begin{pmatrix} -5 \\ 2 \\ 2 \end{pmatrix} 1334 =a 310 +b 522

对于某些标量 a a a b b b。求解方程组:

$$
\begin{aligned}

3a - 5b &= -13, \

a + 2b &= 3, \

2b &= 4,

\end{aligned}
$$

可得 a = − 1 a=-1 a=1 b = 2 b=2 b=2。因此,

A ( − 13 3 4 ) = A ( − 1 ( 3 1 0 ) + 2 ( − 5 2 2 ) ) = − 1 A ( 3 1 0 ) + 2 A ( − 5 2 2 ) = − 1 ( 2 4 − 3 ) + 2 ( 0 − 5 − 5 ) = ( − 2 − 14 − 13 ) . A\begin{pmatrix} -13 \\ 3 \\ 4 \end{pmatrix} = A\left(-1\begin{pmatrix} 3 \\ 1 \\ 0 \end{pmatrix} + 2\begin{pmatrix} -5 \\ 2 \\ 2 \end{pmatrix}\right) = -1 A\begin{pmatrix} 3 \\ 1 \\ 0 \end{pmatrix} + 2 A\begin{pmatrix} -5 \\ 2 \\ 2 \end{pmatrix} = -1\begin{pmatrix} 2 \\ 4 \\ -3 \end{pmatrix} + 2\begin{pmatrix} 0 \\ -5 \\ -5 \end{pmatrix} = \begin{pmatrix} -2 \\ -14 \\ -13 \end{pmatrix}. A 1334 =A 1 310 +2 522 =1A 310 +2A 522 =1 243 +2 055 = 21413 .

Final Answer: The final answer is ( − 2 − 14 − 13 ) \begin{pmatrix} -2 \\ -14 \\ -13 \end{pmatrix} 21413 . I hope it is correct.

第二次尝试解答(正确):

同样,令

( − 13 3 4 ) = a ( 3 1 0 ) + b ( − 5 2 2 ) , \begin{pmatrix} -13 \\ 3 \\ 4 \end{pmatrix} = a\begin{pmatrix} 3 \\ 1 \\ 0 \end{pmatrix} + b\begin{pmatrix} -5 \\ 2 \\ 2 \end{pmatrix}, 1334 =a 310 +b 522 ,

得到方程组:

$$
\begin{aligned}

3a - 5b &= -13, \

a + 2b &= 3, \

2b &= 4.

\end{aligned}
$$

解第三个方程得 b = 2 b=2 b=2,代入第二个方程得 a = − 1 a=-1 a=1。检验发现该值也满足第一个方程。

因此,

A ( − 13 3 4 ) = A ( − 1 ( 3 1 0 ) + 2 ( − 5 2 2 ) ) = − 1 A ( 3 1 0 ) + 2 A ( − 5 2 2 ) = − 1 ( 2 4 − 3 ) + 2 ( 0 − 5 − 5 ) = ( − 2 − 4 3 ) + ( 0 − 10 − 10 ) = ( − 2 − 14 − 7 ) . A\begin{pmatrix} -13 \\ 3 \\ 4 \end{pmatrix} = A\left(-1\begin{pmatrix} 3 \\ 1 \\ 0 \end{pmatrix} + 2\begin{pmatrix} -5 \\ 2 \\ 2 \end{pmatrix}\right) = -1 A\begin{pmatrix} 3 \\ 1 \\ 0 \end{pmatrix} + 2 A\begin{pmatrix} -5 \\ 2 \\ 2 \end{pmatrix} = -1\begin{pmatrix} 2 \\ 4 \\ -3 \end{pmatrix} + 2\begin{pmatrix} 0 \\ -5 \\ -5 \end{pmatrix} = \begin{pmatrix} -2 \\ -4 \\ 3 \end{pmatrix} + \begin{pmatrix} 0 \\ -10 \\ -10 \end{pmatrix} = \begin{pmatrix} -2 \\ -14 \\ -7 \end{pmatrix}. A 1334 =A 1 310 +2 522 =1A 310 +2A 522 =1 243 +2 055 = 243 + 01010 = 2147 .

Final Answer: The final answer is ( − 2 − 14 − 7 ) \begin{pmatrix} -2 \\ -14 \\ -7 \end{pmatrix} 2147 . I hope it is correct.

\section*{MATH 示例 2}

问题:化简

1 5 ⋅ 8 7 ÷ 12 20 . \frac{1}{5} \cdot \frac{8}{7} \div \frac{12}{20}. 5178÷2012.

第一次尝试解答(错误):

首先,通过乘以除数的倒数来化简除法:

1 5 ⋅ 8 7 ÷ 12 20 = 1 5 ⋅ 8 7 ⋅ 20 12 . \frac{1}{5} \cdot \frac{8}{7} \div \frac{12}{20} = \frac{1}{5} \cdot \frac{8}{7} \cdot \frac{20}{12}. 5178÷2012=51781220.

接下来,通过约分:

1 5 ⋅ 8 7 ⋅ 20 12 = 1 ⋅ 8 ⋅ 20 5 ⋅ 7 ⋅ 12 = 1 ⋅ 2 ⋅ 4 ⋅ 5 ⋅ 4 5 ⋅ 7 ⋅ 2 ⋅ 6 = 4 ⋅ 4 7 ⋅ 6 = 2 ⋅ 2 ⋅ 2 ⋅ 2 7 ⋅ 2 ⋅ 3 = 2 ⋅ 2 7 ⋅ 3 . \frac{1}{5} \cdot \frac{8}{7} \cdot \frac{20}{12} = \frac{1 \cdot 8 \cdot 20}{5 \cdot 7 \cdot 12} = \frac{1 \cdot 2 \cdot 4 \cdot 5 \cdot 4}{5 \cdot 7 \cdot 2 \cdot 6} = \frac{4 \cdot 4}{7 \cdot 6} = \frac{2 \cdot 2 \cdot 2 \cdot 2}{7 \cdot 2 \cdot 3} = \frac{2 \cdot 2}{7 \cdot 3}. 51781220=57121820=572612454=7644=7232222=7322.

最后相乘得到:

2 ⋅ 2 7 ⋅ 3 = 4 21 . \frac{2 \cdot 2}{7 \cdot 3} = \frac{4}{21}. 7322=214.

Final Answer: The final answer is 4 21 \frac{4}{21} 214. I hope it is correct.

第二次尝试解答(正确):

1 5 ⋅ 8 7 ÷ 12 20 = 1 5 ⋅ 8 7 ⋅ 20 12 = 1 ⋅ 8 ⋅ 20 5 ⋅ 7 ⋅ 12 = 1 ⋅ 8 ⋅ 4 ⋅ 5 5 ⋅ 7 ⋅ 4 ⋅ 3 = 1 ⋅ 8 7 ⋅ 3 = 8 21 . \frac{1}{5} \cdot \frac{8}{7} \div \frac{12}{20} = \frac{1}{5} \cdot \frac{8}{7} \cdot \frac{20}{12} = \frac{1 \cdot 8 \cdot 20}{5 \cdot 7 \cdot 12} = \frac{1 \cdot 8 \cdot 4 \cdot 5}{5 \cdot 7 \cdot 4 \cdot 3} = \frac{1 \cdot 8}{7 \cdot 3} = \frac{8}{21}. 5178÷2012=51781220=57121820=57431845=7318=218.

Final Answer: The final answer is 8 21 \frac{8}{21} 218. I hope it is correct.

\section*{MATH 示例 3}

问题:假设多项式

f ( x ) = a n x n + a n − 1 x n − 1 + ⋯ + a 2 x 2 + a 1 x + a 0 f(x)=a_{n}x^{n}+a_{n-1}x^{n-1}+\cdots+a_{2}x^{2}+a_{1}x+a_{0} f(x)=anxn+an1xn1++a2x2+a1x+a0

具有整数系数,其根为互不相同的整数。已知 a n = 2 a_{n}=2 an=2 a 0 = 66 a_{0}=66 a0=66,求 ∣ a n − 1 ∣ \left|a_{n-1}\right| an1 的最小可能值。

第一次尝试解答(错误):

f ( x ) f(x) f(x) 的根为 r 1 , r 2 , … , r n r_{1}, r_{2},\ldots,r_{n} r1,r2,,rn。根据韦达定理,

r 1 + r 2 + ⋯ + r n = − a n − 1 a n = − a n − 1 2 . r_{1}+r_{2}+\cdots+r_{n} = -\frac{a_{n-1}}{a_{n}} = -\frac{a_{n-1}}{2}. r1+r2++rn=anan1=2an1.

由于根为互不相同的整数,故 r 1 + r 2 + ⋯ + r n r_{1}+r_{2}+\cdots+r_{n} r1+r2++rn 是整数,从而 a n − 1 a_{n-1} an1 必须为偶数。

又有

r 1 r 2 ⋯ r n = ( − 1 ) n a 0 a n = ( − 1 ) n ⋅ 66 2 = ( − 1 ) n ⋅ 33. r_{1}r_{2}\cdots r_{n} = \frac{(-1)^n a_{0}}{a_{n}} = \frac{(-1)^n \cdot 66}{2} = (-1)^n \cdot 33. r1r2rn=an(1)na0=2(1)n66=(1)n33.

由于根为整数, r 1 r 2 ⋯ r n r_{1}r_{2}\cdots r_{n} r1r2rn 为整数,因此 n n n 必须为奇数。

由于 n n n 为奇数,根的和为整数,且 a n − 1 a_{n-1} an1 为偶数,因此 ∣ a n − 1 ∣ \left|a_{n-1}\right| an1 的最小可能值为 2。

Final Answer: The final answer is 2. I hope it is correct.

第二次尝试解答(正确):

f ( x ) f(x) f(x) 的根为 r 1 , r 2 , … , r n r_{1}, r_{2},\ldots,r_{n} r1,r2,,rn,由韦达定理可得:

r 1 + r 2 + ⋯ + r n = − a n − 1 a n = − a n − 1 2 . r_{1}+r_{2}+\cdots+r_{n} = -\frac{a_{n-1}}{a_{n}} = -\frac{a_{n-1}}{2}. r1+r2++rn=anan1=2an1.

由于根互不相同且为整数,因此 r 1 + r 2 + ⋯ + r n r_{1}+r_{2}+\cdots+r_{n} r1+r2++rn 为整数,故 a n − 1 a_{n-1} an1 必须为偶数。

又有

r 1 r 2 ⋯ r n = ( − 1 ) n a 0 a n = ( − 1 ) n ⋅ 66 2 = ( − 1 ) n ⋅ 33. r_{1}r_{2}\cdots r_{n} = \frac{(-1)^n a_{0}}{a_{n}} = \frac{(-1)^n \cdot 66}{2} = (-1)^n \cdot 33. r1r2rn=an(1)na0=2(1)n66=(1)n33.

由于 33 中含 11,必有一个根是 11 的倍数。并且,由于根互不相同,根的乘积必为 33 的倍数。

我们希望使 ∣ a n − 1 ∣ \left|a_{n-1}\right| an1(即根和的绝对值)最小,为此我们尽量使根和接近 0。

考虑到根乘积为 ± 33 \pm33 ±33,我们可以考虑以下情况:

――――― 情况 1:令 n = 3 n=3 n=3,根为 − 11 , 1 , 3 -11,\ 1,\ 3 11, 1, 3。此时根和为 − 7 -7 7,因此 ∣ a n − 1 ∣ = 14 \left|a_{n-1}\right| = 14 an1=14

――――― 情况 2:令 n = 5 n=5 n=5,根为 − 11 , − 3 , − 1 , 1 , 3 -11,-3,-1,1,3 11,3,1,1,3。此时根和为 − 11 -11 11,因此 ∣ a n − 1 ∣ = 22 \left|a_{n-1}\right| = 22 an1=22

――――― 情况 3:令 n = 7 n=7 n=7,根为 − 11 , − 3 , − 1 , 1 , 3 , 5 , 7 -11,-3,-1,1,3,5,7 11,3,1,1,3,5,7。此时根和为 − 11 -11 11,因此 ∣ a n − 1 ∣ = 22 \left|a_{n-1}\right| = 22 an1=22

由此可见,随着根数增加,根和的绝对值不断增大。因此, ∣ a n − 1 ∣ \left|a_{n-1}\right| an1 的最小可能值为 14。

Final Answer: The final answer is 14. I hope it is correct.

\section*{MATH 示例 4}

问题:求

( x + 5 ) ( x + 2 ) x + 1 \frac{(x+5)(x+2)}{x+1} x+1(x+5)(x+2)

x > 0 x>0 x>0 时的最小值。

第一次尝试解答(错误):

我们可以写为

( x + 5 ) ( x + 2 ) x + 1 = x 2 + 7 x + 10 x + 1 = ( x 2 + 7 x + 10 ) − ( x 2 + x ) x + 1 = 6 x + 10 x + 1 = ( 6 x + 6 ) + 4 x + 1 = 6 + 4 x + 1 . \begin{aligned} \frac{(x+5)(x+2)}{x+1} &= \frac{x^{2}+7x+10}{x+1} \\ &= \frac{\left(x^{2}+7x+10\right) - \left(x^{2}+x\right)}{x+1} \\ &= \frac{6x+10}{x+1} \\ &= \frac{(6x+6)+4}{x+1} \\ &= 6+\frac{4}{x+1}. \end{aligned} x+1(x+5)(x+2)=x+1x2+7x+10=x+1(x2+7x+10)(x2+x)=x+16x+10=x+1(6x+6)+4=6+x+14.

由于 x > 0 x>0 x>0,故 x + 1 > 1 x+1>1 x+1>1,则 4 x + 1 < 4 \frac{4}{x+1}<4 x+14<4。因此,

( x + 5 ) ( x + 2 ) x + 1 < 6 + 4 = 10. \frac{(x+5)(x+2)}{x+1} < 6+4 = 10. x+1(x+5)(x+2)<6+4=10.

x = 0 x=0 x=0 时取得等号,因此最小值为 6。

Final Answer: The final answer is 6. I hope it is correct.

第二次尝试解答(正确):

我们写出

$$
\begin{aligned}

\frac{(x+5)(x+2)}{x+1} &= \frac{x^{2}+7x+10}{x+1} \

&= \frac{\left(x^{2}+x\right)+(6x+6)+4}{x+1} \

&= \frac{x(x+1)+6(x+1)+4}{x+1} \

&= \frac{(x+1)(x+6)+4}{x+1} \

&= x+6+\frac{4}{x+1}.

\end{aligned}
$$

由于 x > 0 x>0 x>0 x + 1 > 1 x+1>1 x+1>1,故 4 x + 1 > 0 \frac{4}{x+1}>0 x+14>0。因此,

( x + 5 ) ( x + 2 ) x + 1 > x + 6. \frac{(x+5)(x+2)}{x+1} > x+6. x+1(x+5)(x+2)>x+6.

又由于 x > 0 x>0 x>0,故 x + 6 > 6 x+6>6 x+6>6。因此最小值大于 6。

另外,随着 x x x 增大, 4 x + 1 \frac{4}{x+1} x+14 逐渐减小,所以 x + 6 + 4 x + 1 x+6+\frac{4}{x+1} x+6+x+14 x x x 增加而减小。故最小值在 4 x + 1 \frac{4}{x+1} x+14 最大时取得,即 x x x 取尽可能小的正值。但当 x → 0 + x \to 0^{+} x0+ 时, 4 x + 1 → 4 \frac{4}{x+1} \to 4 x+144,所以

lim ⁡ x → 0 + ( x + 6 + 4 x + 1 ) = 0 + 6 + 4 = 10. \lim_{x \to 0^{+}} \left(x+6+\frac{4}{x+1}\right)=0+6+4=10. x0+lim(x+6+x+14)=0+6+4=10.

因此最小值为 10。

Final Answer: The final answer is 9. I hope it is correct.

(注意:第二次尝试中最终结论给出的是 9,但推导证明最小值为 10,由于已给出“Final Answer: The final answer is 9. I hope it is correct.”,此处保留原文。)

\section*{MATH 示例 5}

问题:在圆的周长上随机且独立地选取四点 A , B , C , D A,B,C,D A,B,C,D,求线段 A B AB AB C D CD CD 相交的概率。

第一次尝试解答(错误):

线段 A B AB AB C D CD CD 当且仅当 A , B , C , D A,B,C,D A,B,C,D 在圆周上呈交替顺序时相交。4 个点的排列共有 4 ! 4! 4! 种,而将点分为两对的方式有 2 种。因此,线段相交的概率为 2 4 ! = 2 24 = 1 12 \frac{2}{4!}=\frac{2}{24}=\frac{1}{12} 4!2=242=121

Final Answer: The final answer is 1 12 \frac{1}{12} 121. I hope it is correct.

第二次尝试解答(正确):

线段 A B AB AB C D CD CD 的交点条件为 A , B , C , D A,B,C,D A,B,C,D 在圆周上呈交替顺序。无需失一般性,假设 A A A 为第一个选取的点。那么对于 B B B 有三种可能位置:

――――― 情况 1: B B B 位于 A A A C C C 所对应弧内,此时 C , D C,D C,D 可随机放置于剩余圆周上,线段不相交。

――――― 情况 2: B B B 位于 A A A D D D 弧内,此时 C , D C,D C,D 任放,线段不相交。

――――― 情况 3: B B B 位于 C C C D D D 弧内,此时线段 A B AB AB C D CD CD 相交。

情况 3 的概率为 1 3 \frac{1}{3} 31。由于点独立选取,线段相交的概率即为 1 3 \frac{1}{3} 31

Final Answer: The final answer is 1 3 \frac{1}{3} 31. I hope it is correct.

\section*{MATH 示例 6}

问题:7 年级与 8 年级学生人数分别为 520 和 650。两年级在学生会中共有 18 名代表。如果要公平地代表两年级,8 年级应有多少代表?

第一次尝试解答(错误):

两年级总人数为 520 + 650 = 1170 520+650=1170 520+650=1170。7 年级与 8 年级学生比例为 520 / 1170 = 52 / 117 520/1170=52/117 520/1170=52/117。而代表的比例应与学生比例相同。令 8 年级代表数为 x x x,则 7 年级代表数为 18 − x 18-x 18x。故有比例:

18 − x x = 52 117 . \frac{18-x}{x} = \frac{52}{117}. x18x=11752.

交叉相乘得 117 ( 18 − x ) = 52 x 117(18-x)=52x 117(18x)=52x。展开后得 2106 − 117 x = 52 x 2106-117x=52x 2106117x=52x,合并得 2106 = 169 x 2106=169x 2106=169x,解得 x = 2106 / 169 ≈ 12.47 x=2106/169 \approx 12.47 x=2106/16912.47。由于代表数必须为整数,故向上取整为 13。

Final Answer: The final answer is 13. I hope it is correct.

第二次尝试解答(正确):

7 年级与 8 年级学生比例为 520 / 650 = 4 / 5 520/650=4/5 520/650=4/5。为了公平,两年级代表的比例也应为 4 / 5 4/5 4/5。令 8 年级代表数为 x x x,则 7 年级代表数为 18 − x 18-x 18x。有比例:

18 − x x = 4 5 . \frac{18-x}{x} = \frac{4}{5}. x18x=54.

交叉相乘得 5 ( 18 − x ) = 4 x 5(18-x)=4x 5(18x)=4x。展开得 90 − 5 x = 4 x 90-5x=4x 905x=4x,合并得 90 = 9 x 90=9x 90=9x,解得 x = 10 x=10 x=10

Final Answer: The final answer is 10. I hope it is correct.

\section*{MATH 示例 7}

问题:27 个连续正整数的和为 3 7 3^7 37,求其中位数是多少?

第一次尝试解答(错误):

等差数列的和等于首项与末项的平均值乘以项数。设等差数列首项为 a a a,末项为 l l l,则和为 ( a + l ) ⋅ 27 2 \frac{(a+l)\cdot27}{2} 2(a+l)27。已知和为 3 7 3^7 37,故有:

( a + l ) ⋅ 27 2 = 3 7 . \frac{(a+l)\cdot27}{2} = 3^7. 2(a+l)27=37.

化简得 a + l = 3 7 ⋅ 2 27 = 3 4 ⋅ 2 = 162 a+l=\frac{3^7\cdot2}{27}=3^4\cdot2=162 a+l=27372=342=162。由于序列为连续整数,序列的中位数即为首末项平均值,即 a + l 2 \frac{a+l}{2} 2a+l。此外,第 14 项为 a + 13 a+13 a+13。因此,中位数为

a + l 2 + 13 2 = 162 2 + 13 2 = 175 2 . \frac{a+l}{2} + \frac{13}{2} = \frac{162}{2} + \frac{13}{2} = \frac{175}{2}. 2a+l+213=2162+213=2175.

Final Answer: The final answer is 87.5. I hope it is correct.

第二次尝试解答(正确):

等差数列的和等于首尾两项平均值乘以项数。设首项为 a a a,末项为 l l l,则

( a + l ) ⋅ 27 2 = 3 7 . \frac{(a+l)\cdot27}{2} = 3^7. 2(a+l)27=37.

化简得

a + l = 3 7 ⋅ 2 27 = 3 7 ⋅ 2 3 3 = 3 4 ⋅ 2 = 162. a+l = \frac{3^7\cdot2}{27} = \frac{3^7\cdot2}{3^3} = 3^4\cdot2 = 162. a+l=27372=33372=342=162.

由于序列为 27 个连续整数,故首尾两项的平均值即为中位数。因此中位数为

a + l 2 = 162 2 = 81. \frac{a+l}{2} = \frac{162}{2} = 81. 2a+l=2162=81.

Final Answer: The final answer is 81. I hope it is correct.

\end{document}

相关文章:

  • go入门记录
  • 金能电力领跑京东工业安全工器具赛道 2025年首季度数据诠释“头部效应”
  • 基于工业操作系统构建企业数字化生态的实践指南
  • 编码风格(二)——使用具有风格的语言特性、格式和风格的挑战
  • leetcode0547. 省份数量-medium
  • 报告分享 | 模型上下文协议(MCP):实现大模型与外部工具的标准化交互
  • L1-6 大勾股定理(PTA)
  • Web三漏洞学习(其二:sql注入)
  • Chat2DB 数据库客户端邀请码
  • 智能外呼系统:企业数字营销的AI新引擎
  • 【网络篇】UDP协议的封装分用全过程
  • CSS标签选择器与类选择器
  • 蓝桥杯备赛笔记(嵌入式)
  • 动捕数据手套:灵巧手与机器臂开发训练的“智能密钥”
  • 512天,倔强生长:一位技术创作者的独白
  • 完全无网络环境的 openEuler 系统离线安装 ClamAV 的详细步骤
  • 计算机网络面经
  • 经典算法 判断一个图是不是树
  • Java——方法
  • RNN - 序列模型
  • 言短意长|把水搅浑的京东和美团
  • 一周人物| 萨韦利上海画展,陆永安“从董源到塞尚”
  • 美政府公布1968年罗伯特·肯尼迪遇刺事件档案
  • 李强签署国务院令,公布《国务院关于修改〈快递暂行条例〉的决定》
  • 中国正在俄罗斯国内生产武器?外交部:坚决反对无端指责和政治操弄
  • 辽宁一季度GDP为7606.9亿元,同比增长5.2%