反思预训练中的再思考
Rethinking Reflection in Pre-Training
https://arxiv.org/pdf/2504.04022
![]()
摘要
语言模型对其自身推理过程进行反思的能力,为解决复杂问题提供了一项关键优势。尽管近期研究大多聚焦于这种能力在强化学习阶段如何发展,但我们的研究表明,它实际上在更早的阶段——即模型的预训练阶段——就已开始显现。为探究此现象,我们有意在思维链中引入错误,并测试模型是否能通过识别并修正这些错误,最终得出正确答案。通过追踪模型在不同预训练阶段的表现,我们观察到这种自我修正能力出现得较早,并随着时间的推移稳步提升。例如,一个经过4万亿词元预训练的OLMo-2-7B模型,在我们设计的六项自我反思任务中均展现出了自我修正能力。
![]()
1 引言
反思能力增强了模型根据先前的推理调整其回答的能力,从而提高了输出的准确性。近期研究指出,“诸如反思之类的行为……是模型与强化学习环境相互作用的结果” [DeepSeek-AI, 2025a]。要验证此类论断,需要在整个训练阶段对能力的发展进行全面的评估。在这项工作中,我们提出了一个详尽的框架来衡量反思能力,并观察到该现象在预训练阶段始终如一地出现。
利用现有的推理数据集来对反思能力进行基准测试一直颇具挑战性 [Mondorf and Plank, 2024]。在这些任务中,反思行为往往很少见,并且每个模型都表现出不同的错误模式,从而产生独特的反思行为表现 [Madaan et al., 2023, Liu et al., 2025]。我们通过区分情境性反思和自我反思来应对这一挑战。在情境性反思设定中,模型审视由另一个来源(例如,另一个前沿模型)生成的推理链条。在自我反思设定中,模型则思考其自身的推理过程。我们通过衡量模型在遇到导致错误答案的混淆性推理时解决问题的能力,来校准模型的能力,并由此在整个预训练过程中测量其反思能力。
图2展示了一个部分预训练的OLMo-2检查点 [OLMo et al., 2025] 尝试解决一项编程任务 [Gu et al., 2024] 的例子。在此案例中,模型被问及一个问题:确定导致Python函数f输出为‘avdropj gsd ’的输入是什么。在其首次尝试中,这个拥有320亿参数、经过4.8万亿词元预训练的模型,直接将输出‘advdropj gsd ’重复作为了答案。当使用其错误的思考过程加上后缀“Wait,”进行提示后,模型能够成功地进行自我反思,并生成:“我想我可能错了……??的值应该是['gsd', 'avdropj']”。
![]()
通过程序化地引入包含算术扰动和逻辑不一致性等元素的错误思维链(CoT),我们能够控制和扩展正确完成这些任务所需的反思程度。这种方法同时也保留了既定的CoT格式[Wei等人,2022]。此外,我们的算法方法允许通过改编现有的推理基准,以相对快速和经济的方式创建这些数据集,从而得以在跨越多领域的范围内全面研究模型的反思能力。我们构建的六个数据集涵盖了数学、编程、逻辑推理和知识获取等领域,旨在评估模型在情境性反思和自我反思两方面的能力。¹
在OLMo-2系列模型的不同预训练检查点上,使用我们六个多样化数据集评估的结果表明,反思能力在各个领域中普遍存在。即使像“Wait,”[Muennighoff等人,2025]这样简单的触发短语,也能使部分预训练的模型始终如一地识别出引入的错误以及自身生成的错误。具体来说,240个数据集-检查点配对中,有231个展示了至少一次情境性反思实例,240个中有154个展示了至少一次自我反思实例。随着预训练的深入,模型能够纠正更多的对抗性示例,导致任务准确率与预训练计算量对数之间的平均皮尔逊相关系数达到0.76。此外,随着预训练的推进,模型从先前错误推理中恢复的能力不断增强,模型生成内容中显式反思的频率增加,并且显式反思对从混淆性CoT中恢复的贡献也越来越大。
本文的贡献主要有三方面:
• 我们引入了一种系统性的方法,创建了涵盖代码、知识获取、逻辑推理和数学领域的六个数据集,用以研究模型的反思能力。
• 我们证明了不同能力水平和训练计算量的预训练模型,能够在广泛领域内,通过使用简单的插入语,激发反思能力以纠正先前不准确的推理。
• 我们观察到,持续改进的预训练能够带来更好的反思能力,使得解决相同数量任务所需的测试时词元更少。
2 相关工作
评估大语言模型的推理能力自然语言系统的实际应用性取决于其推理能力 [Wos 等人,1992;Schuster 等人,2019;Mondorf 和 Plank,2024]。大语言模型结合诸如思维链 [Wei 等人,2022]、思维树 [Yao 等人,2023] 和自洽性 [Wang 等人,2023b] 等提示技术,已被成功用于解决各种推理任务 [Kojima 等人,2022;Bubeck 等人,2023]。推理能力通常通过观察模型输出 [Fu 等人,2023a;Liu 等人,2023]、分析生成轨迹 [Saparov 和 He,2023;Dziri 等人,2023;Willig 等人,2022] 以及交互式参与 [Zhuang 等人,2024;Wang 等人,2023a;Bertolazzi 等人,2023] 来衡量。先前的研究还通过对模型内部网络进行参数归因,通过研究注意力模式 [Hou 等人,2023]、激活流 [Dutta 等人,2024] 和各个层 [Pirozelli 等人,2024] 来识别推理特征。这些方法主要用于评估训练后模型,而我们的兴趣在于诊断技术,以在整个训练阶段引发推理,其精神类似于通过参数和训练数据规模来研究模型性能 [Kaplan 等人,2020]。在这项工作中,我们通过对抗性数据集评估反思能力的涌现来研究推理。这些数据集要求模型通过推理多步提示(其中包含细微错误)来成功完成任务。
对大语言模型的对抗性攻击长期以来,对抗性输入一直被用来揭示神经网络的脆弱性 [Szegedy 等人,2014;Biggio 等人,2013;Huang 等人,2017]。最近,类似的技术已被应用于大语言模型,证明了它们易受精心设计的提示的攻击 [Schwinn 等人,2023]。这些攻击已成功针对模型的政策对齐 [Deng 等人,2022;Wei 等人,2023]、安全性 [Schuster 等人,2020;Carlini 等人,2021;Kang 等人,2024] 和鲁棒性 [Zou 等人,2023;Shen 等人,2024;Xu 等人,2024],突显了巨大的漏洞。已有几种方法提出使用对抗性训练来改进模型对此类攻击的防御 [Zhu 等人,2019;Jiang 等人,2020;
Xhonneux 等人,2024]。然而,我们工作的主要目的不是展示模型对对抗性攻击的脆弱性,而是强调如何利用此类数据集来持续且全面地评估其推理能力。我们通过引入思维链 [Kojima 等人,2022] 来实现这一点,其中步骤 [Lightman 等人,2023] 大部分正确,但包含需要反思的错误 [Lightman 等人,2023;Fu 等人,2023b]。
训练时与测试时的权衡在先进推理模型中,例如 OpenAI 的 o1 [OpenAI, 2024b] 和 DeepSeek-R1 [DeepSeek-AI, 2025a],对测试时计算的依赖日益增加,这重新引发了关于计算资源最优分配的讨论 [Kaplan 等人,2020;Hoffmann 等人,2022]。先前的工作研究了训练时计算与测试时计算之间的权衡 [Snell 等人,2024],以及监督微调 [Li 等人,2025;Chen 等人,2025] 和强化学习 [DeepSeek-AI, 2025a;Wang 等人,2024] 等训练后技术对推理性能的影响 [Liu 等人,2025]。推理时范式——如树搜索 [Yao 等人,2023]、思维链提示 [Wei 等人,2022] 和预算强制 [Muennighoff 等人,2025]——与模型的预训练表示相互作用 [Yeo 等人,2025;Ruis 等人,2025;Gandhi 等人,2025]。然而,在我们的工作中,我们提供了一个互补的视角,证明某些推理能力可以在预训练阶段本身逐渐涌现,即使在没有微调、强化学习或专门的测试时推理技术的情况下也是如此。我们的发现表明,推理的关键方面可以仅通过预训练来灌输,这可能会改变训练和推理过程中计算最优使用的考量。
3 方法
我们的目标是全面且大规模地衡量反思能力。为此,我们首先给出反思的定义(3.1),然后通过程序化方式创建任务来引发反思(3.2),并最终严谨地衡量反思的存在(3.3)。
3.1 定义反思
反思是元认知的一种形式,涉及审视信息、评估其背后的推理,并基于该评估调整后续行为。在语言模型的语境中,此过程可应用于源自外部或由模型自身生成的信息。在本工作中,我们创设了两种情境来引发和衡量反思:
情境性反思:指模型对由另一来源(如另一个模型)创建的信息进行反思。
自我反思:指模型对其自身生成的输出进行反思。
我们还通过两种形式来全面描述反思的特征:显式反思:指模型生成的词元在语义上识别并处理了对抗性语境中的错误。显式反思可能出现在正确的模型输出中(即,那些对我们对抗性任务给出正确答案的输出),也可能出现在错误的模型输出中。
隐式反思:指模型在处理对抗性语境时,能够正确解决任务,但并未生成明确识别先前推理中存在错误的词元。根据我们的定义,这意味着隐式反思的结果不可能是对我们对抗性任务的错误答案。这使我们能够区分以下两种情况:一种是未出现显式反思但可推断发生了隐式反思的情况;另一种则是根本未发生任何反思的情况。
3.2 使用对抗性反思数据集引发反思
我们提出了一种算法,用于生成能够引发语言模型反思行为的对抗性数据集。该算法创建会导致错误解决方案的对抗性思维链(CoT)。与自我反思(我们可以利用模型自身的错误)不同,对于情境性反思,我们必须设计人工的对抗性CoT。在高层面上,这些对抗性CoT是通过以模仿人类推理错误(如逻辑失误和算术计算错误)的方式破坏正确的CoT而创建的。在这两种情况下,当我们在上下文中提供这些CoT时,模型必须反思其中的错误并加以修正,才能得出正确的解决方案。我们相信,这些设定对于全面研究反思能力是必要的。
任务设计包括附加一个触发词元,例如“Wait,”,以促进在整个任务解决过程中进行持续的推理。
该算法有两个变体。算法1和算法2分别用于创建情境性反思数据集和自我反思数据集。
![]()
3.3 衡量反思
我们基于先前对反思的分类(见3.1),提出了一种使用对抗性数据集来自动衡量模型反思能力的方法:
衡量显式反思:为了识别显式反思的实例,我们开发了一个基于提示的大语言模型分类器。该分类器用于检测模型的输出是否在给定的对抗性语境中明确承认并处理了错误,无论模型最终是否得出了正确答案。该分类器将在下文4.3节中描述。
衡量隐式反思:我们规定,在存在对抗性语境的情况下,所有导致正确答案的模型生成内容都可归因于反思,即使输出中没有生成任何与反思相关的词元。我们认为,这符合描述人类元认知时对“反思”的日常理解。我们这种方法的一个含义是,根据设计,那些产生了正确答案但未被显式分类器识别出的生成内容,将被归类为隐式反思的实例。
关于我们使用的具体反思指标的更多细节,请参见第4.3节。
4 实验设置
为了全面研究反思能力,我们评估了涵盖不同计算预算的部分预训练模型,这些模型在参数量和训练词元数量上均有变化(4.1)。
我们的研究包括两种类型的对抗性任务(4.2):(1) 情境性反思,其中对抗性思维链是使用前沿模型从现有数据集中系统生成的;(2) 自我反思,其中对抗性思维链源自模型自身对原始任务实例的先前错误回答。
我们的评估还检验了模型输出是否展现出显式的反思性推理(4.3)。
我们在第4.4节详细说明了我们的基础设施设置。
4.1 模型系列
OLMo-2
OLMo-2 [OLMo 等人,2025] 是一个完全开源、开放权重的大语言模型项目,提供了7B、13B和32B参数变体的训练检查点。我们总共评估了40个检查点(详情见附录B)。我们力求选择间隔均匀的检查点,并在无法获得时使用最接近的替代检查点。
Qwen2.5
我们评估了Qwen2.5的0.5B、3B、7B、14B、32B和72B参数变体 [Qwen 等人,2025]。详情见附录B。
4.2 数据集
我们在广泛的任务集上评估反思现象,基于BIG-Bench Hard (BBH) [bench authors, 2023]、CruxEval [Gu 等人,2024]、GSM8K [Cobbe 等人,2021]、GSM8K-Platinum [Vendrow 等人,2025] 和 TriviaQA [Joshi 等人,2017] 创建了六个对抗性数据集。我们的对抗性数据集概览见表1和表2。
我们在流程中利用DeepSeek-V3(简称DS-V3)[DeepSeek-AI, 2025b]、GPT-4o² [OpenAI, 2024a] 和 SentenceTransformers [Reimers and Gurevych, 2020] 模型,以及多次自动检查和人工审核,以确保我们数据集的质量和鲁棒性。
情境性反思数据集:这些数据集的创建涉及一个多步骤流程,我们会提示大语言模型创建对抗性思维链(另见算法1)。对于推理任务,原始任务可能已将思维链作为数据集工件包含在内;如果没有,我们使用前沿模型(如GPT-4o或DS-V3)创建它们。随后,通过引入会导致错误答案的故意错误,利用正确的思维链来开发对抗性思维链。此外,最后还会进行检查,以确保思维链不会透露其误导意图。这些流程和提示都经过精心设计以最小化错误,并且是针对特定数据集的,但整体框架可以推广到任何领域和数据集。
自我反思数据集:这些数据集是通过执行我们想要评估的大语言模型在基础任务上的表现,并收集模型未能答对的问题所对应的思维链来创建的(另见算法2)。由于我们对模型随着预训练进程的反思能力感兴趣,在自我反思数据集中,我们只保留每个参数规模下所有检查点都回答错误的问题,以确保在预训练检查点之间进行一致的比较。
关于我们特定于数据集的流程、检查和过滤器的详细说明,请参见附录F。
![]()
4.3 Evaluation 评估
指标
如表3所示,对于情境性反思和自我反思两种设定,准确率是指模型正确解决的任务实例所占的比例。独立于准确率,我们利用显式反思分类器来衡量显式反思率,即模型输出展现显式反思(无论正确与否)的任务实例所占的比例。我们还报告了显式反思准确率,即模型既正确解决又展现了显式反思的任务实例所占的比例。最后,隐式反思准确率是指模型输出正确但未展现显式反思的任务实例所占的比例。关于每个数据集准确率指标的详细信息,请参见附录H。
![]()
此外,对于每个数据点,我们将预训练计算量报告为 6nt,其中 n 和 t 分别是参数量和训练词元数量。关于我们训练时和测试时计算量公式的更多细节,请参见第5.4节。
显式反思分类器
我们开发了一个基于提示的分类器,用于判断模型输出是否展现了显式反思。我们向 DeepSeek-V3 [DeepSeek-AI, 2025b] 提供“反思”的含义描述以及两到四个显式反思示例作为提示。该分类器旨在检测的显式反思短语示例见表5。我们根据 GSM8K、cruxeval-o 和 TriviaQA 上的人工标注黄金标签(每个基准120个问题;标注过程详见附录G)对分类器进行了验证。尽管我们的分类器召回率较低(见表4),但其精确度足够高,足以验证其有效性。在最坏的情况下,我们会少报反思行为,但在报告时会更有信心。
4.4 基础设施
我们的实验设置使用 vLLM 推理框架 [Kwon 等人,2023] 来托管 OLMo-2 和 Qwen 模型。我们使用 SGLang [Zheng 等人,2024] 托管 DeepSeek-V3。我们使用一个由 AMD MI300x 加速器组成的集群,并通过 Kubernetes 将任务调度到该集群中。
5 结果
为了全面衡量跨领域的反思性推理,我们的分类器在情境性反思(5.1)和自我反思(5.3)设定中,分别针对BBH、cruxeval-i、cruxeval-o、GSM8K、GSM8K-Platinum和TriviaQA数据集,区分了显式反思和隐式反思。令我们惊讶的是,我们发现了反思能力的强烈存在,并且这种能力随着训练计算量的增加而增强。此外,随着预训练的推进,模型从混淆因素中恢复的能力不断增强,显式反思的频率增加,并且显式反思对从混淆因素中恢复的贡献也越来越大(示例见表5)。这些结果突显了预训练在发展反思能力中的作用。
![]()
5.1显性情境反射在所有模型中都很突出
从表6可以看出,令人鼓舞的是,除了cruxeval-i任务之外,对于所有其他任务,每一个OLMo-2预训练检查点都显示出能够通过隐式或显式方式从情境性混淆因素中恢复的迹象⁴。这使得240个数据集-检查点配对中,有231个展示了至少一次情境性反思实例。然而,为了证实我们的假设,即模型逐步发展并运用显式反思,大多数恢复情况应归因于显式情境性反思。本质上,我们期望随着预训练计算量的增加,观察到以下现象的频率增加:(a) 从情境性混淆因素中恢复,(b) 对情境性混淆因素进行显式反思,以及 (c) 通过显式反思从情境性混淆因素中恢复。
![]()
各项指标与预训练计算量对数之间的高度正皮尔逊相关性 [Cohen 等人,2009] 证实了 (a)、(b) 和 (c) 点。我们还观察到隐式反思准确率与预训练计算量对数之间的相关性普遍较低。总之,这些结果强调,随着预训练的增加,模型倾向于成功解决更多的对抗性实例,并在此过程中日益倾向于使用显式反思。例如,GSM8K-Platinum 在图3中显示,随着预训练的深入,不同参数规模的模型通过显式反思错误解决了大部分任务实例。TriviaQA 是一个例外,其显著改进可归因于隐式反思,这是因为该任务主要衡量知识获取,其中许多实例可以在没有显式推理的情况下解决。所有六项任务的详细结果见附录C。
![]()
5.2 无触发词时模型也能反思;‘Wait,’增强显式性和准确性
为了理解“Wait,”触发词的因果作用,我们研究了在GSM8K-Platinum任务上,使用两个极端触发词设置时的模型表现。具体来说,我们研究了无触发词( A )和带有包含明确承认“Wait, I made a mistake”(等等,我犯了个错)的触发词( B )时的模型表现。我们选择 A 作为一种将对抗性思维链中错误的注意力降至最低的模式。相比之下,我们选择 B 作为一种强调思维链中存在错误的模式。图4绘制了这些结果。
![]()
这些结果首先证实了我们的假设:即使没有触发词,随着预训练的推进,模型也能越来越成功地从情境性混淆因素中恢复。上文5.1节结果中“Wait,”的作用在此处得到进一步阐明。我们看到模型在此任务上的表现受限于 A 和 B 这两个极端情况。在情景 A 中,模型通过隐式反思来提高准确率;在情景 B 中,模型则通过设计进行显式反思,从而大幅提升性能。带有“Wait,”的设置,在隐式反思时表现类似 A ,在显式反思时表现类似 B 。有趣的是,如图4所示,其性能可以分解为:
![]()
此外,我们看到性能的显著提升可归因于“Wait,”触发词。这是因为该触发词能以随预训练增加的比例引发显式反思,并且能达到相应的由 B 触发的模型所实现的性能——如上所述,我们选择 B 作为一种强调思维链中存在错误的模式。换句话说,当模型在带有“Wait,”的对抗性思维链条件下展现出显式反思时,其表现与模型被明确告知思维链包含错误时的表现相当。相反,当模型在带有“Wait,”的对抗性思维链条件下但未展现出显式反思时,其表现则与模型仅基于对抗性思维链的模式一致。这确立了“Wait,”通过引发显式反思来提高准确率的因果联系。
5.3 显式自我反思更难,但随着计算量增加而进步
初看之下,表7中自我反思的稀少可能被视为一个负面结果。然而,这可以通过以下事实解释:在此设定中,模型被评估的任务实例都是它们之前回答错误的——因此,根据设计,这些任务特别困难(见附录F第2点)。尽管如此,在大约64.2%的任务尝试中,模型确实展现了至少一定的自我修正能力。
为了区分自我反思和自我修正,我们在图5中绘制了模型生成的反思率(与任务是否解决无关)。这些结果表明一个强劲趋势:随着预训练的推进,模型在明确指出的自身错误方面变得更好。对于cruxeval-i,我们注意到随着预训练的增加,模型倾向于学会自我修正。然而,它们能够进行自我反思的时间要早得多。这表明在自我修正能力形成之前,自我反思能力有一个自然的发展过程。
![]()
这些自我反思的萌芽如何通过训练后阶段演变为复杂的自主推理能力,是一个有待未来工作探讨的开放性问题。我们假设,必须存在一个预训练自我反思能力的临界阈值,超过该阈值,模型发展成测试时推理器的可能性将非常高。令我们惊讶的是,从有机的网络数据集 [Li 等人,2024] 中学习时,我们竟然观察到了如此程度的显式自我反思。精准定位在预训练期间促进显式自我反思的数据分布,是我们工作后续自然的下一步。所有六项任务的详细结果见附录D。
5.4 训练时计算与测试时计算可以相互权衡
我们研究了增加训练时计算的投入与在测试时达到下游任务可比准确率所需相应开销之间的权衡关系。我们通过以下方式估算:训练时计算量估算为 6nt,其中 n 和 t 分别是参数量和训练词元数量;测试时计算量估算为 2nw,其中 w 表示为解决一定数量的对抗性问题而生成的词元数量⁵。
我们首先指定一组需要正确回答的对抗性问题的目标数量。然后,为每个目标绘制一条曲线。我们针对之前介绍的 GSM8K-Platinum 对抗性数据集进行此项研究。我们采用一种顺序的测试时扩展方法,即在模型生成内容后附加触发词“Wait,”。实际上,我们引入了两个“Wait,”触发词,以使较弱的模型能够达到与较强模型相同的指标水平。这模仿了 [Muennighoff 等人,2025] 中顺序扩展测试时计算的方法。
如图6所示,随着 OLMo-2-32B 检查点的训练时计算量增加,测试时计算需求减少。这一结果进一步支持了我们的假设,即随着预训练的推进,模型的反思能力变得更强,这意味着在达到给定准确率水平时所需的测试时计算量更少。
![]()
5.5 在更强的模型系列中是否能观察到类似结果?
为了研究这些现象在不同模型系列中的表现,我们在图7中报告了Qwen2.5在我们对抗性任务上的结果。与我们针对OLMo-2的结果一致,我们发现随着预训练计算量的增加——在此情况下即参数数量的增加——模型在对抗性任务上的表现持续提升。这再次证明,仅凭预训练计算量的增加,模型就能在面对先前推理中的错误时,日益有效地解决任务。
![]()
6 结论
本研究旨在解答“反思性推理在预训练期间是如何发展的?”这一问题,这与普遍认为反思能力是在训练后通过强化学习涌现的观点形成对比。我们提出并实施了一个全面的框架,用以在整个预训练阶段衡量反思能力。通过我们构建的对抗性数据集,无论是在情境性反思还是自我反思设定下,我们都能够广泛地校准这些能力。我们发现,仅使用极少训练计算量(例如,使用1980亿词元训练的OLMo-2-7B)的模型,也能在数学、代码、语言理解和逻辑推理领域展现出反思能力。此外,随着投入预训练的计算量增加,这些能力会进一步增强。
原文:https://arxiv.org/pdf/2504.04022
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.