大型语言模型“思考”的陷阱:推理如何影响指令遵循

摘要 研究者发现,无论是经过专门推理训练还是通过思维链提示的推理增强型大型语言模型(RLLM),在执行许多复杂推理任务时已达到顶尖水平。然而,一个出乎意料且此前被忽视的现象是,明确的思维链推理会显著削弱模型遵循指令的准确性 。通过在两个基准(IFEval,包含简单的、规则可验证的约束;ComplexBench,包含复杂的、组合性约束)上评估15个模型,研究一致观察到,当应用思维链提示时,性能会出现下降 。大规模案例研究和基于注意力的分析揭示了推理在何处有益(例如,格式化或词汇精度)或有害(例如,忽略简单约束或引入不必要内容)的常见模式 。 研究者提出了一个名为“约束注意力”的指标,用以量化模型在生成过程中对指令的关注程度,并表明思维链推理常常将注意力从与指令相关的标记上移开 。 为减轻这些影响,研究引入并评估了四种策略:情境学习、自我反思、自我选择性推理和分类器选择性推理 。结果表明,选择性推理策略,特别是分类器选择性推理,可以大幅恢复损失的性能 。据研究者所知,这是首次系统性揭示推理引发的指令遵循失败并提供实用缓解策略的研究 。 1. 引言 研究者提出了一个核心问题:明确的推理是否真的能帮助模型更准确地遵循指令? 本文通过实证研究得出了一个令人惊讶的结论:通过思维链进行推理会降低模型遵循指令的能力 。 为了系统评估大型语言模型的指令遵循情况,引入了IFEval和ComplexBench等基准测试 。 3. 实验 实验部分详细介绍了评估模型指令遵循能力所使用的数据集、评估指标、参与评估的模型以及思维链提示的应用方式。研究使用了IFEval和ComplexBench两个基准数据集 。IFEval包含541个提示,每个提示都与一到三个可验证的约束相关联,这些约束来自25种类型(例如,字数、格式、关键词使用) 。ComplexBench是一个手动策划的数据集,旨在评估模型在通过“与”、“链”、“选择”和“嵌套”等操作形成的复杂组合指令上的表现 。评估指标主要关注每个指令中满足的约束的比例 。研究评估了包括闭源模型(如GPT-40-mini, Claude3.7-Sonnet)和专注于推理的模型(如DeepSeek-R1, Qwen-R1-distilled变体)在内的多种模型 。实验结果一致显示,当应用思维链提示时,几乎所有模型在IFEval和ComplexBench上的性能都出现了下降 。例如,Llama3-8B-Instruct的准确率从75.2%下降到59.0%,降幅超过16个百分点 。 4. 分析 (Analysis) 为了理解推理何时以及为何会降低指令遵循能力,研究者进行了两项分析:一项手动案例研究,检查思维链在何时帮助或损害约束满足;以及一项基于注意力的分析,调查推理如何在生成过程中将模型注意力从约束上移开 。 在案例研究中,研究者发现推理在满足格式或结构要求以及强制执行覆盖默认倾向的词汇约束方面有所帮助 。然而,当多个约束存在时,推理通常会过分关注高级内容规划而忽略简单的机械约束,或者引入多余的或善意的内容,从而无意中违反约束 。在基于注意力的分析中,研究者提出了“约束注意力”指标,用于量化模型对指令中约束标记的关注程度 。分析表明,明确的推理通常会减少对提示中与约束相关部分的注意力,这种意识的减弱增加了违反指令的风险 。 5. 减轻推理引发的指令遵循失败 针对推理导致指令遵循性能下降的问题,研究者提出并评估了四种缓解策略:少样本情境学习、自我反思、自我选择性推理和分类器选择性推理 。 少样本情境学习:通过在每个指令前添加精心挑选的少样本示例来进行,这些示例源自案例研究中发现的代表性失败案例,并经过手动修改以完全满足所有约束。然而,由于令牌长度限制和每个示例的巨大体量,该方法改进效果有限。 自我反思:模型首先生成带有思考过程的初始响应,然后在第二次推理中反思其自身的推理和答案。如果模型认为初始响应满意,则保留它作为最终输出;否则,它会修改响应并输出更新后的版本。自我反思在IFEval上产生了显著的改进,但在较弱的模型和包含更具挑战性指令的ComplexBench上效果较差,并且计算成本较高。 自我选择性推理:允许模型动态决定是否执行明确的推理。模型根据指令自行评估是否需要思维链推理。此方法在IFEval上取得了适度的收益,在ComplexBench上表现更强。分析发现,模型倾向于高召回率(正确识别大多数推理有益的情况),但精确率较低,即使在不必要时也经常应用推理。 分类器选择性推理:使用外部二进制分类器来确定是否应应用思维链推理。研究者为每个目标模型训练一个单独的分类器,以预测使用思维链是否会导致指令遵循性能的提高。该方法被证明非常有效,几乎在所有模型的两个基准测试中都提高了性能。然而,其主要缺点是需要针对每个模型进行特定的训练。 研究者基于这些发现提出了一个决策流程:首先,通过简单启发式或训练好的分类器估计指令的复杂性 。对于较简单的任务,推荐自我反思或分类器选择性推理;对于更复杂或组合性的任务,自我选择性推理或分类器选择性推理更有效 。总体而言,分类器选择性推理在两个基准测试中始终提供最佳的整体性能,尽管需要针对模型进行特定训练 。 6. 结论 研究确定并系统地探讨了一个出乎意料的现象:通过思维链提示进行的明确推理会对大型语言模型的指令遵循能力产生负面影响 。通过在IFEval和ComplexBench两个综合基准上的广泛评估,研究证明了当模型采用明确推理时,性能会持续下降 。详细的分析,包括手动案例研究和基于注意力的检查,揭示了推理如何分散模型对与约束相关的标记的注意力,从而导致指令被忽略或违反 。提出的四种缓解策略,特别是分类器选择性推理,可以大幅恢复损失的性能 。研究者希望这些发现能激发对推理权衡的进一步研究,并有助于构建更具选择性和有效性的推理模型 。

May 22, 2025 · 小茄墩

重新思考预训练中的反思现象

《Rethinking Reflection in Pre-Training》 摘要 语言模型反思其自身推理过程的能力,是其解决复杂问题的关键优势。尽管近期多数研究聚焦于此能力在强化学习阶段如何发展,但我们展示了它实际上在更早的时期——即模型的预训练期间——便已开始显现。为研究此现象,我们故意在思维链中引入错误,并测试模型是否仍能通过识别并纠正这些错误来得出正确答案。通过追踪模型在预训练不同阶段的表现,我们观察到这种自我纠正能力出现较早,并随时间推移而稳步提升。例如,一个基于 4 万亿 Token 预训练的 OLMo-2-7B 模型,在我们设计的六项自我反思任务中展现了自我纠正能力。 引言 反思增强了模型根据先前推理调整其响应的能力,从而提高了其输出的准确性。最近的研究报告称,“诸如反思之类的行为……是模型与强化学习环境互动的结果”。若要将能力的发展归因于此来验证这类主张,则必须在整个训练阶段进行全面的评估。在这项工作中,我们提出了一个详尽的框架来衡量反思,并且我们观察到这种现象在预训练期间持续存在。 使用现有的推理数据集对反思进行基准测试一直具有挑战性。在这类任务中,反思通常是稀疏的,并且每个模型都表现出独特的错误模式,从而产生独特的反思行为表现。我们通过区分情境反思 (situational-reflection) 和自我反思 (self-reflection) 来应对这一挑战。在情境设置中,模型检查由另一个来源(例如不同的前沿模型)创建的推理链。在自我反思中,模型则考虑其自身的推理过程。我们校准模型在被提供一些导致错误答案的干扰性推理时解决任务的能力,并以此在整个预训练过程中衡量反思能力。 \['gsd', 'avdropj'\]”。 通过以编程方式引入错误的思维链 (Chains-of-Thought, CoTs),其特征包含算术扰动和逻辑不一致性等元素,我们可以控制和扩展正确完成这些任务所需的反思程度。这也保持了已建立的 CoT 格式 。此外,我们的算法方法允许通过调整已建立的推理基准,以相对快速和经济的方式创建这些数据集,这反过来又使得对模型在各种领域中的反思能力进行全面研究成为可能。我们的六个数据集,涵盖数学、编码、逻辑推理和知识获取领域,旨在评估情境反思和自我反思能力。 对来自 OLMo-2 模型家族、具有不同预训练计算量的检查点在我们这组六个不同数据集上进行评估的结果表明,反思在各个领域普遍存在。即使是一个简单的触发短语,如“Wait,”,也能使部分预训练的模型持续识别出引入的错误和它们自己产生的错误。具体来说,240 个数据集-检查点对中有 231 个展示了至少一个情境反思的实例,240 个对中有 154 个展示了至少一个自我反思的实例。随着预训练的增加,模型会纠正更多的对抗性示例,导致准确性与 $\log(\text{预训练计算量})$ 之间的平均皮尔逊相关系数在各项任务中达到 0.76。此外,随着预训练的进行,模型越来越多地从不正确的先前推理中恢复,模型生成中明确反思的比率增加,并且明确反思越来越多地有助于从干扰性 CoT 中恢复。 本文的贡献有三方面: 我们引入了一种系统化的方法,用于创建跨越代码、知识获取、逻辑推理和数学领域的六个数据集,以研究模型的反思能力。 我们证明了具有不同能力和训练计算量的预训练模型可以在广泛的领域中使用简单的插入语引发反思,以纠正不准确的先前推理。 我们观察到,持续改进的预训练可以带来更好的反思,从而能够用更少的测试时 Token 来解决相同数量的任务。 方法 定义反思 反思是一种元认知形式,涉及审视信息,评估其背后的推理过程,并基于该评估调整未来的行为。在大型语言模型的背景下,这个过程可以应用于从外部来源引入的信息或模型自身生成的信息。在这项工作中,我们创建了两种情境来引发和衡量反思: 情境反思是指模型反思由其他来源(例如不同的模型)创建的信息。 自我反思是指模型反思其自身生成的输出。 我们还通过两种形式来全面刻画反思: 显式反思 发生在模型生成的 Token 在其含义上识别并处理了对抗性情境中的错误时。显式反思可能出现在正确的模型输出中(换句话说,那些构成对我们对抗性任务的正确答案的输出),也可能出现在不正确的模型输出中。 隐式反思 发生在模型在对抗性情境中设法正确解决任务,但没有输出明确识别先前推理中错误的 Token 时。根据我们的定义,这意味着隐式反思不能导致对我们对抗性任务的错误回答。这使我们能够区分以下两种情况:其一,显式反思缺失但可以推断出发生了隐式反思;其二,根本没有发生任何反思。 使用对抗性反思数据集引发反思 我们提出了一种生成对抗性数据集的算法,该数据集能够引发语言模型的反思行为。该算法创建导致错误解的对抗性思维链 (CoT)。与自我反思(我们可以从模型自身的错误中汲取经验)不同,对于情境反思,我们必须设计人工的对抗性 CoT。从高层次来看,这些对抗性 CoT 是通过破坏正确的 CoT 来创建的,其方式模仿了人类的推理错误,例如逻辑失误和算术计算错误。在这两种情况下,当我们在上下文中提供 CoT 时,模型必须反思这些错误并修正它们,以得出正确的解。我们相信这些设置对于全面研究反思是必要的。 ...

April 14, 2025 · 小茄墩