LM2 : A Simple Society of Language Models Solves Complex Reasoning

news2024/11/16 19:59:44

文章目录

    • 题目
    • 摘要
    • 简介
    • 相关工作
    • 方法论
    • 实验
    • 结果
    • 结论
    • 局限性

题目

LM2:简单的语言模型社会解决复杂推理问题
在这里插入图片描述

论文地址:https://aclanthology.org/2024.emnlp-main.920/
项目地址: https://github.com/LCS2-IIITD/Language_Model_Multiplex

摘要

    尽管展示了新兴的推理能力,大型语言模型 (LLMS) 通常会失去对复杂、多步骤推理的跟踪。现有研究表明,通过将原始问题分解为多个子问题来提供指导可以使 LLM 推理更具鲁棒性——分解器生成子问题,求解器解决每个子问题。然而,这些技术无法适应分解器和求解器模块之间的协调(无论是在单个模型中还是在不同的专门模型中)——分解器不会跟踪求解器遵循分解推理的能力。在本文中,我们提出 LM2 来解决这些挑战。LM2 将分解、解决方案和验证模块化为三个不同的语言模型。分解器模块识别解决问题所需的关键概念,并根据推理要求生成逐步的子问题。求解器模型生成子问题的解决方案,然后由验证器模块检查;根据验证者的反馈,使用子问题和解决方案构建推理上下文。这些模型经过训练,可以使用策略学习进行协调。详尽的实验表明,LM2 在域内和域外推理问题上优于现有方法,在 MATH 上的表现比最佳基线高出 8.1%,在 JEEBench 上的表现比最佳基线高出 7.71%,在 MedQA 问题上的表现比最佳基线高出 9.7%。

简介

    使用大型语言模型 (LLM) 解决复杂推理任务的最新趋势通常遵循两种不同的主导方法:(i) 在像 GPT-4 (OpenAI, 2023) 这样贡献规模过大的 LLM 上使用精心策划的提示技术 (Zheng 等人,2023;Yao 等人,2024),或 (ii) 使用领域聚焦数据对相对较小的 LLM 进行微调 (Shao 等人,2024;Toshniwal 等人,2024;Dutta 等人,2024)。前者的方法严重依赖于所使用的专有 LLM,并且在与功能较弱的模型一起使用时很容易彻底失败。后一类方法虽然与庞大的 LLM 相比具有成本效益,但由于训练领域狭窄,往往在通用性方面有所损失。

    分解推理的编年史。最近的许多文献指出,当问题分解为逐步的子问题时,LLM 往往在复杂的推理任务上表现更好(Zhou 等人,2023;Khattab 等人,2022;Juneja 等人,2023)。早期的技术通过为模型提供包含分解为多个子问题的原始问题及其答案的示例来展示其优越性(Zhou 等人,2023)。然而,Juneja 等人(2023)说明,通过微调单独的分解器语言模型(LM)以与更大的求解器 LM 协调,将分解器与求解器分离,比简单地提示单个单片 LM 分解和求解更有益。与他们的发现相呼应,Wu 等人(2024)也发现,与直接分解求解器能力相比,将分解能力从较大的 LM 提炼到较小的 LM 更具通用性。

    我们的贡献。然而,现有分解器微调方法的一个主要瓶颈是分解器-求解器交互之间缺乏紧密性。通常,分解以无记忆方式进行,无论求解器是否有初始响应;没有采用任何策略来跟踪求解器是否可以遵循分解后的推理链。为此,我们提出了一种新颖的多 LLM 协调框架,即语言模型多路复用 (LM2)。LM2 建立在三个独立的 LM 之上,每个 LM 专用于复杂的多步推理有三个不同的组成部分——求解器 LM 负责回答问题;验证器 LM 提供有关求解器输出正确性的反馈;分解器 LM 确定解决问题所需的基本概念,并通过分解原始问题生成逐步的子问题(参见图 1 中的工作示例)。与之前的方法不同,LM2 中的分解器根据求解器对先前子问题的答案以及验证器对这些答案的反馈来生成每个子问题。

在这里插入图片描述
图 1:LM2 对 MATH 数据集中问题的推理过程。问题(蓝色)被提供给 Solver LM,该问题产生了错误答案(红色)。然后将问题提供给 Decomposer LM,后者生成概念和分步子问题(淡紫色)。每个子问题都由 Solver LM 回答,子答案由 Verifier LM 验证。如果 Verifier LM 认可子答案,则将该子问题-子答案对添加到推理步骤的上下文中;否则,将生成新的子问题。问题、概念、子问题和子答案在上下文中提供给 Decomposer LM 以生成下一个子问题。
最后,将问题、概念、子问题和子答案提供给 Solver LM 以生成最终答案(绿色)。

    此外,分解器还会生成解决问题的概念要求,这进一步简化了求解器 LM。无论底层推理的复杂性如何,回答任何问题所需的世界知识通常都能更好地保存在更大的专有 LM 中。考虑到这一点,我们使用 GPT-3.5(text-davinci-003)作为求解器,未进行微调。对于分解器和验证器,我们分别对 LLaMA-2(130 亿个参数)实施参数高效微调(Hu et al, 2022)。首先,使用 GPT-4 注释的数据集分别针对分解和验证任务对这些模型进行微调。然后,在策略学习设置中,教分解器与求解器和验证器模型协调。LM2 在一系列不同的推理任务中取得了令人鼓舞的性能。在数学推理的 MATH 数据集上,LM2 的平均绝对准确率比最佳分解器调整基线高出惊人的 8.1%。尽管 LM2 使用 MATH 数据集的训练分割来调整分解器和求解器,但它可以无缝推广到 MedQA 和 JEEBench 中的分布外任务,在绝对准确率上分别以 9.7% 和 7.71% 的差异胜过最佳竞争基线。

    除了讨论总体数字之外,我们还进行了深入的消融分析,以确定模型中每个组件的作用。我们观察到:

  1. 验证器 LM 和分解器 LM 生成的概念在推广 MedQA、JEEBench Chemistry 等分布外推理任务中起着至关重要的作用;
  2. 对分解器进行微调对于更好地识别概念至关重要——与 GPT-4 相比,经过微调的 LLaMA-2 7B 可以生成更有效的概念要求;
  3. 即使不使用所有LM2 的模块化组件,结构化推理的提示模板提升了 GPT-4 的性能。

相关工作

    Nye 等人(2021)首次证明了明确生成中间推理步骤优于直接生成所需答案的有效性。思维链提示(Wei 等人,2022)将 Nye 等人(2021)的草稿本学习推广到使用 LLM 的上下文学习机制。思维链及其后继者(Chen 等人,2022;Yao 等人,2024)通常让复合、多步骤推理问题的分解在 LLM 中保持隐式。

    Zhou 等人(2023)证明,相反,明确调用 LLM 来生成多个较小的问题,这些问题是回答原始查询的步骤,可以实现更鲁棒的推理。他们提出的方法 Least-to-Most prompting 使用这些较简单的子问题及其答案作为上下文来解决原始问题。同样,Khot 等人 (2023) 提出了一种基于提示的问题分解方法,其中要求 LLM 使用少量示例分解复杂任务。但是,这仍然会给单个语言模型带来处理分解和解决方案的负担。Juneja 等人 (2023) 通过将分解能力提炼为相对较小的语言模型来解决这一挑战。他们提出的方法 DaSLaM 利用两个相互协调的独立语言模型来解决复杂的推理问题。他们的研究结果表明,对分解器进行微调比对求解器模型进行微调更具通用性。Wu 等人 (2024) 最近进一步支持了这一点。Tarasov 和 Shridhar (2024) 探索了通过离线强化学习来提炼分解能力。 Khattab 等人 (2022) 提出了一种程序化检索增强框架,即演示-搜索-预测 (DSP),用于知识密集型生成任务。

    DSP 依赖于通过复杂程序在生成式 LM 和检索模型之间进行协调。最近有人尝试结合密集验证器(通常是经过微调的双向语言模型,充当分类器),帮助生成模型实现稳健、可验证的问题解决和文本生成 (Cobbe 等人,2021;Sun 等人,2023)。已经提出了用于验证 LM 生成输出的不同技术随后提出的新方法,如自我验证(Weng 等,2023)、多数投票(Li 等,2023)等。

方法论

    我们提出的方法 LM2 建立在多个 LM 的协调基础上,以模块化方式进行推理。然而,这种协调并不隐含在模型的相关阶段;相反,我们试图通过微调(部分)LM 多路复用来灌输这种能力。为此,LM2 建立在三个功能组件之上:一个(最好是更大的)求解器模型、一个分解器模型和一个验证器模型。为了对 LM2 不同组件的功能进行细粒度控制,我们使用了一个结构化的、循序渐进的输入输出框架(见图 1)。LM2 中每个模块的作用描述如下。

    分解器LM通过两种方式指导求解器LM解决多步推理问题。首先,它为求解器模型提供解决问题所需的概念集合。其次,它告诉求解器LM,给定前面的子问题及其答案,下一个子问题是什么。更具体地说,分解器LM是一个函数,可以定义为D(q, {si, sai}, c) : Q×S×SA → {S, C},其中q表示需要解决的初始问题,{si, sai}表示前面的子问题(si)及其对应答案(sai)的集合,(c)表示函数是否需要预测概念或下一个子问题。Q是所有问题的空间,S是所有子问题的空间,SA是所有子答案的空间,C是所有概念的空间。

    监督微调。分解器训练分两个阶段进行,类似于(Juneja et al, 2023)。第一阶段是监督微调,其中语言模型在使用 GPT-4 准备的数据集上进行微调。为了创建数据集,我们为 GPT-4 提供了一个问题及其黄金推理。然后要求它首先生成解决问题所需的所有概念,然后生成子问题和子答案。只有正确回答的问题才会包含在数据集中。数据集中的每个样本都可以表示为一个元组 {Q, c, {si , sai} n i=1, sn+1},其中 sn+1 是根据前面的子问题和答案得出的下一个子问题。分解器然后在标准语言建模目标上进行微调。

    策略优化。通过监督微调步骤,分解器 LM 被训练来响应具有概念和分解子问题的推理问题。但是,它仍然不能考虑到求解器和验证器模型的反馈。为此,我们利用近端策略优化(Schulman 等人,2017),以分解器为策略,以求解器和验证器模型为黑盒环境。确切地说,我们利用验证器模型的反馈计算不同类型的奖励,该反馈在每个步骤中考虑求解器模型的响应并为分解器提供必要的细化信号。

    验证者鉴于多步推理的复杂性,我们需要验证者能够就求解器可能犯的错误向分解器提供细致入微的反馈;先前使用验证器进行的研究(Li et al, 2023; Weng et al, 2023)中使用的二进制正确/错误消息将限制分解器模型的视野范围。对于细粒度控制,验证器在监督数据集上进行微调,该数据集包含一个问题、一个正确答案中有错误的答案、错误类型的分类以及分类的解释。验证器将给定的输入分为以下九类:

  1. 概念错误,
  2. 计算错误,
  3. 程序错误,
  4. 误解的问题,
  5. 第一步的错误,
  6. 前半部分的错误,
  7. 后半部分的错误,
  8. 最后一步的错误,
  9. 没有错误。

    该数据集是使用 GPT-4 生成的,要求它根据正确的解决方案、错误的解决方案和分类为分类生成一个解释。验证器经过微调以生成解释和分类(请参阅第 3.3 节中每种错误消息和解释的示例)。

    使用分解器反馈进行训练 为分解器 LM 策划的训练数据集仅包含正确答案;因此,分解器无法识别语言模型可能犯的错误。为了让分解器生成有意义的问题,我们进一步微调分解器,同时使用策略梯度方法与求解器语言模型协同工作。环境。环境由黑盒求解器模型 Θ 组成。模型 Θ 根据概念和先前的问题及其答案生成当前问题的答案。策略、动作和状态空间。分解器语言模型 ϕ 包括策略网络。状态空间 S 中的状态 s 由初始状态 s0 和从初始状态到当前状态采取的所有动作串联定义。初始状态 s0 定义为初始问题 Q。

    动作空间定义为语言模型 ϕ 的标记空间。因此,状态 sn 可以表示为 (s0, {ai} n i=1),其中 ai 是在第 i 个时间步骤采取的动作。奖励函数。奖励基于验证者对分解器生成的每个子问题给出的反馈。奖励结构直观地设计为对早期子问题中出现的错误相对于后期子问题中出现的错误施加惩罚。这是因为纠正早期错误可以显著增加问题正确的几率。此外,与计算错误相比,该策略对概念和程序错误的惩罚更多。

    我们为第 k 个子问题构建奖励函数如下:在这里插入图片描述其中 γ < 1 是负责对早期代施加更多惩罚的折扣因子。ri 是验证者给出的个别反馈的奖励,定义如下(对于每种类型的奖励,我们都提供了分解器提出的示例问题、求解器对该问题的错误答案、识别出的错误类型以及验证者在红色文本框中生成的解释)。概念正确性奖励定义为,在这里插入图片描述其中 I 是指示函数,V 是验证器,它接受第 k 个子问题 (sk) 及其由求解器生成的答案 (sak) 作为输入,并输出错误类别。此奖励可解释求解器在理解或错误应用概念时所犯的任何错误。

问:就公差 d 而言,a、b、c 是多少?答:由于 a、b 和 c 构成一个等差数列,我们可以用 a 来表示 c,即 c = a + d,其中 d 是公差。
验证者:概念错误:学生误解了在等差数列中寻找公差的可能值以形成具有给定周长的三角形的概念。

    计算正确性奖励定义为,在这里插入图片描述此奖励考虑了模型在计算或公式应用方面犯错的情况。与其他类型的错误相比,这类错误的权重较小,因为可以轻松使用外部工具来完成这些机械任务。

问:a + c 的值是多少?答:由于已知 a、b 和 c 组成一个等差数列,我们可以将 b 表示为 a 和 c 的平均值。这给出了 b = a+c 2 。三角形的周长由 P = a + b + c = a + a+c 2 + c = 3a+3c 2 给出。已知周长为 60 个单位,因此得到 60 = 3a+3c 2 。解 a + c 可得出 a + c = 20 验证器:计算错误:模型在计算 a + c 的值时出现计算错误。a + c 应该是 40

程序正确性奖励定义为,在这里插入图片描述这包括模型在遵循解决问题时已在上下文中提供的逐步程序时所犯的任何错误。

问:a、d 的可能值有哪些?答:将其代入方程 a + c = 20,得到 a + (a + d) = 20,简化为 2a + d = 20 − a。由于边长必须是整数,因此 a 和 d 必须是整数。然后,我们可以尝试满足方程 2a + d = 20 − a 的不同 a 和 d 值。尝试不同的值后,我们发现唯一能给出整数边长的解是 a = 10 和 d = 20。
验证者:程序错误:学生在解决问题的过程中犯了一个错误,没有准确地找到公差的可能值。

    问题理解奖励定义为,在这里插入图片描述此奖励针对的是模型在理解子问题时犯错的情况。要么它没有回答子问题中提出的数量。这发出一个信号,子问题要么与前面的问题不一致,要么过于复杂,模型无法回答。这种错误很重要,需要解决,因此赋予了更高的权重。

问:a、b、c 可能有多少个不同的值?答:这给出了三角形的边长,即 a = 10、b = 15 和 c = 30。
验证者:错误理解问题:模型犯了一个错误,没有给出不同值的数量。

    根据错误位置进行奖励。如上所述,后面的错误受到的惩罚比前面的错误少。因此,如果在第一步犯了错误,则给予 -0.2 的奖励。如果模型在子答案的前半部分犯了错误,则给予 -0.12 的奖励。对于子答案的后半部分的错误,给予 -0.08 的奖励。如果在最后一步犯了错误,则给予 -0.05 的奖励。无错误奖励是指模型在回答子问题时没有犯任何错误,并给予 +1 的正奖励。

    在推理过程中,分解器、求解器和验证器模型共同回答给定的问题(参见图 1 中的工作示例)。在推理过程中,分解器首先生成解决问题所需的概念列表。然后,在给定问题和概念作为上下文的情况下,分解器生成一个子问题。子问题由求解器回答。现在,给定子问题和子答案,验证器以多类分类的形式提供反馈,这些反馈分为上述错误类别。如果验证器提供的反馈包括概念错误、程序错误、理解错误或第一步中的错误,我们再次生成子问题。

实验

    对于所有实验,LM2 使用 OpenAI text-davinci-003 模型(以下称为 GPT-3.5)作为求解器,并使用 LLaMA-2 13B(Touvron 等人,2023)作为分解器和验证器的基础模型。在分解器 LM 微调的第一阶段,我们管理了一个包含 15,396 个问题、概念、子问题、子答案元组的数据集。这些问题取自 MATH 数据集(Hendrycks 等人,2021 年)。问题取自 MATH 数据集。对于验证器 LM 微调,生成了一个包含 3,674 个问答分类元组的数据集。附录 A 提供了每个步骤使用的提示的详细信息。

    训练细节我们为分解器和验证器微调了 LLaMA2-13B。我们训练了 8 个 epoch,批处理大小为 128,学习率为 2e-5,预热步骤为 100,Lora r 值为 4,LoRA Alpha 为 16,dropout 为 0.05。这些模型在 80G A100 GPU 上以 8 位量化进行训练。对于第二阶段的微调,我们对 LoRA 适配器的最后 3 层进行了微调,使用批次大小为 16、梯度累积步骤=4、初始 kl 系数=0.01、目标=4。对于推理,我们在所有实验中使用温度 0 以确保结果的一致性,最大输出长度为 2000。

    评估我们在需要多步推理的硬推理数据集上评估我们的方法。这些数据集包括 MATH(Hendrycks et al, 2021)(测试拆分)、JEEBench(Arora et al, 2023)和 MedQA(Jin et al, 2020)(英语问题)。MATH 数据集包含来自具有挑战性的数学竞赛的数学问题,因为它也用于训练,这显示了我们在领域内问题上的表现。接下来,我们在分布外的数据集上进行评估,例如 JEEBench(包含从 JEE Advanced 考试中提取的 PCM 问题)和 MedQA(包含来自专业医学委员会考试的开放域问题)。我们只评估英语问题。

    基线细节 我们将 LM2 与五种现有方法进行比较:思路链提示 (CoT) (Wei 等人,2022 年)、从最少到最多提示 (L2M) (Zhou 等人,2023 年)、渐进提示提示 (PHP) (Zheng 等人,2023 年)、Demonstrate-SearchPredict (DSP) (Khattab 等人,2022 年) 和 DaSLaM (Juneja 等人,2023 年)。PHP 的原始设置需要 8 次提示;但是,由于包括 LM2 在内的所有其他方法都在零次设置中预测,因此我们使用 1 次 PHP 进行更公平的比较。

在这里插入图片描述
表 1:使用 GPT-3.5 作为求解器 LM,在 MATH 和 MedQA 数据集上对 LM2 与基线的性能进行比较。

    消融研究,在我们的调查中,我们进行了五种类型的消融研究,旨在全面了解 LM2 管道中每个组件的重要性。我们首先通过进行一项实验来调查验证器的相关性,在该实验中我们将其完全删除(LM2\V)。在这里,我们接受分解器在推理过程中生成的每个问题,而无需进行任何验证。然后,我们探索概念在管道中的作用。在这里,我们通过指示分解器直接生成子问题来改变方法,而不在答案生成阶段将概念提供给求解器 LM(LM2\C)。在此之后,我们研究通过策略学习进行第二阶段微调所获得的增量收益。为此,我们分析了微调初始阶段之后分解器检查点的性能,称为(LM2\RL)。为了评估不同类型奖励的影响,我们将奖励分为两个不同的类别:

  1. 基于错误的类型,包括概念、计算、程序和问题理解的正确性,以及
  2. 基于错误的位置。随后,我们提出了两种消融变体,使用每类奖励进行微调:LM2 类型和 LM2 位置。

结果

    我们在表 1 中总结了 LM2 以及基线方法在 MATH 和 MedQA 数据集上的表现,并在表 2 中总结了 JEEBench 数据集上的表现。在所有数据集中,LM2 都大大改进了现有方法(使用 GPT-3.5 求解器)。与 GPT-3.5 求解器相比,它在 MATH 数据集上平均提高了 8%,在 JEEBench 数据集上平均提高了 2.5%。达到最佳表现的基线 DaSLaM。它能在域外任务上有所改进吗?在 DaSLaM 和 LM2 中,求解器模型都保持冻结状态,希望保留可推广性。

在这里插入图片描述
表 2:LM2 在 JEEBench 数据集上的表现以及基线和消融变体。(上三分之一)我们用粗体和下划线突出显示最佳和第二佳方法。在不同主题和不同类型的问题(物理 MCQ 问题除外)上,LM2 通常优于所有现有的使用 GPT-3.5 的提示技术。
在 3/12 个案例中,LM2 的表现优于 GPT-4。(中间三分之一)我们观察到每个消融变体的性能都有大幅下降,这表明这些模块可以有效集成到 LM2 中(有关每个变体的描述,请参见第 4.5 节)。(下三分之一)使用 GPT-3.5 和 GPT-4 作为求解器,在 LM2 中采用的结构化答案生成的性能,没有分解器和验证器。

    但是,两种方法中的分解器模型(以及 LM2 中的验证器)都是使用数学推理问题进行微调的。这就引发了一个问题,即这些微调组件在数学推理以外的问题上的可推广性。DaSLaM 面临的最重大挑战之一是它无法在 JEEBench Chemistry 等域外任务上表现良好。我们发现我们的方法可以超越这一限制,如表 1(MedQA)和表 2(JEEBench Chemistry)所示。虽然 DaSLaM 在 MedQA 上的性能低于 CoT,但 LM2 的绝对准确率提高了 6.8 个百分点。验证器有多重要?接下来,我们试图调查管道中每个组件的相对重要性。我们观察到,删除验证器模型后准确率大幅下降(表 2 中间三分之一的 LM2\V)。

    我们可以看到,化学下降了 13.0%,而物理下降了 10.08%,数学子集下降了 3.4%。在多答案、数字和整数答案问题中,随着验证器的消失,准确率的相对下降更为明显。这是有道理的,因为这些问题对计算推理的要求更高,而验证器在指导分解器和求解器沿着正确的推理路径前进。

在这里插入图片描述
图 2:token 生成成本比较。我们描述了求解器模型使用不同方法解决给定问题时生成的平均 token 数量,该数量平均来自 JEEBench 数据集中的 50 个问题。

    概念有多重要?从表 2 可以看出,删除概念会使物理子集的准确率降低 11.6%,数学子集的准确率降低 6.03%,化学子集的准确率降低 17.5%。这表明概念在提高物理和化学等域外数据集的性能方面也发挥着非常重要的作用。通常,LM2\C 的表现比其他消融变体更差,这表明概念是 LM2 中最重要的组成部分。GPT-4 作为概念生成器?我们还检查我们的分解器在生成概念时与 GPT-4 相比如何。为了进行比较,我们提示 GPT-4 在给定问题的情况下生成概念。我们观察到,与分解器模型相比,使用 GPT-4 生成概念时平均下降了 9.13%,这表明基于反馈的微调生成的概念质量更高。

在这里插入图片描述
图 3:基于 MATH 数据集示例的 GPT-4、DaSLaM 和 LM2 的比较。

    基于反馈的微调有什么效果?当将没有第二阶段微调的分解器与验证器的性能与 LM2 的性能进行比较时,基于反馈的微调的效果显而易见。平均而言,当省略第二阶段微调时,我们观察到性能显着下降了 9.6%。这一发现凸显了微调作为优化模型性能的关键步骤的重要性。然而,概念和验证器的重要性似乎超过了微调。这表明,虽然微调有助于提高模型性能,但将概念和验证器纳入模型架构可以带来更实质性的增强。结构化回答模板如何发挥作用?回想一下,在 LM2 中,我们引入了一种新颖的结构化回答模板,用于可控地协调三个模型。必须研究这种模板在性能提升背后所起的作用。我们将模板与两个不同的求解器一起使用模型,GPT-3.5 和 GPT-4。正如我们在表 2 底部三分之一处所见(称为 modelnameSP),这两个模型都通过我们的结构化模板提高了其基本性能。然而,更强大的 GPT-4 模型能够更有效地利用模板,在 JEEBench 问题中平均增益为 7.8%。通常,物理问题的改进高于数学问题,这表明语言模型在使用思路链提示时不太擅长检索物理概念和解决问题。应该注意的是,虽然结构化回答模板本身是一个强大的提升,但如果没有 LM2 中的完全协调,它就会弱得多。

    引导推理有助于限制 token 的使用吗?与 LLM 进行迭代交互的一个重要挑战是 token 使用量的增加,这将转化为计算或货币方面的费用。在图 2 中,我们绘制了使用 LM2 和 DaSLaM 时求解器模型 (GPT-3.5) 产生的平均令牌使用量(每个问题)与基本思路链生成的平均令牌使用量。请注意,我们仅显示使用 LM2 和 DaSLaM 时修改后的响应对应的令牌使用量。这两种方法最初都使用基本 CoT 来生成初始响应,因此它们的总令牌使用量将始终高于 CoT。但是,添加的结构和引导推理显著减少了修改后的响应中的令牌使用量。LM2 在这方面也占了上风。这背后的主要原因是 LM2 中分解器、求解器和验证器之间的逐步协同作用。由于分解器根据求解器对前一个子问题的响应来生成子问题,因此冗余生成的机会减少了,而 DaSLaM 则是一次性生成所有子问题。

    示例分析。为了进一步了解 LM2 的细微差别,我们对 MATH 数据集中的示例进行了生成的输出分析(见图 3)。我们比较了 LM2、DaSLaM 和带有 CoT 的 GPT-4。我们可以看到,GPT-4 对问题本身的解释是错误的。它假设延误后的总行程需要 10 个小时,从而导致选项选择错误。DaSLaM 产生的子问题不遵循解决问题所需的推理顺序,并会产生冗余问题。它首先问要覆盖的总距离是多少?然而,在第二个问题中,它要求火车的速度,这个问题本身已经给出了。DaSLaM 生成的第 3 个子问题实际上是原始问题,求解器犯了一个数字错误,将分数 3d 4 75 简化为 d 300 而不是 d 100 。如果没有验证器,这个错误的回答就会被整合到求解器的推理环境中。在接下来的问题中,要求解决同样的问题,求解器继续做出错误的回答。使用 LM2 ,我们观察到分解器模型提出了一条更加明确、清晰的提问路线;求解器能够在不重新生成相同信息或得出不正确的子答案的情况下找到正确的答案选项。

结论

    在本文中,我们提出了 LM2 ,这是一组协作的生成语言模型,它们共同解决复杂的推理问题。 LM2 采用冻结求解器模型,该模型通过逐步回答由分解器模型构建的问题并由经过训练以相互协调的验证器模型检查来引导解决推理问题。我们发现,LM2 证明了其在各种推理任务(包括域内和域外)上优于现有方法。我们发现,尽管使用数学推理示例进行训练,但我们提出的结构化响应方案以及细粒度验证策略在将 LM2 推广到严重超出分布的任务(如医学问答和化学)中起着至关重要的作用。

局限性

    尽管结果很有希望,但 LM2 也有一些固有的局限性。与纯粹基于提示的方法相比,它需要一定的计算开销来进行两阶段训练。使用专有的基于 LLM 的求解器,与思路链等单次解决方案相比,LM2 会产生额外的令牌使用量。求解器模型的隐性限制,如缺乏长度泛化、任意数字操作等,预计也将在 LM2 中继承。未来的一项可能工作是将确定性求解器和工具纳入多路复用中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2241715.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【因果分析方法】MATLAB计算Liang-Kleeman信息流

【因果分析方法】MATLAB计算Liang-Kleeman信息流 1 Liang-Kleeman信息流2 MATLAB代码2.1 函数代码2.2 案例参考Liang-Kleeman 信息流(Liang-Kleeman Information Flow)是由 Liang 和 Kleeman 提出的基于信息论的因果分析方法。该方法用于量化变量之间的因果关系,通过计算信息…

[含文档+PPT+源码等]精品基于springboot实现的原生Andriod手机使用管理软件

软件开发环境及开发工具&#xff1a; 数据库管理工具&#xff1a;phpstudy/Navicat或者phpstudy/sqlyog 开发工具&#xff1a;Android Studio 后台管理系统涉及技术&#xff1a; 后台使用框架&#xff1a;Springboot 前端使用技术&#xff1a;Vue,HTML5,CSS3、JavaScript等…

(三十三)队列(queue)

文章目录 1. 队列&#xff08;queue&#xff09;1.1 定义1.2 函数1.3 习题1.3.1 例题&#xff08;周末舞会&#xff09; 2. 双向队列&#xff08;deque&#xff09;2.1 定义2.2 函数2.3 题目2.3.1 例题&#xff08;打BOSS&#xff09; 1. 队列&#xff08;queue&#xff09; 队…

常用数据类型

1.数值类型 分为整型和浮点型 double(3,1)&#xff1b;长度是3&#xff0c;小数点后是1&#xff0c;比如99.5&#xff0c;10.0&#xff0c;20.8 这里的float和double与java中的类似&#xff0c;都是IEEE 754标准的浮点数&#xff0c;精度会丢失&#xff0c;存在一定误差&#…

Vue3 -- 集成sass【项目集成5】

集成sass&#xff1a; 看过博主的 配置styleLint工具应该已经安装过 sass sass-loader 了&#xff0c;所以我们只需要加上我们的 lang"scss"即可。 <style scoped lang"scss"></style>给项目添加全局样式文件&#xff1a; 在src文件夹下创建…

【云原生系列--Longhorn的部署】

Longhorn部署手册 1.部署longhorn longhorn架构图&#xff1a; 1.1部署环境要求 kubernetes版本要大于v1.21 每个节点都必须装open-iscsi &#xff0c;Longhorn依赖于 iscsiadm主机为 Kubernetes 提供持久卷。 apt-get install -y open-iscsiRWX 支持要求每个节点都安装 N…

Springboot集成ElasticSearch实现minio文件内容全文检索

一、docker安装Elasticsearch &#xff08;1&#xff09;springboot和Elasticsearch的版本对应关系如下&#xff0c;请看版本对应&#xff1a; 注意安装对应版本&#xff0c;否则可能会出现一些未知的错误。 &#xff08;2&#xff09;拉取镜像 docker pull elasticsearch:7…

Diff 算法的误判

起源&#xff1a; 设想一下&#xff0c;假如你桌面上的文件都没有文件名&#xff0c;取而代之的是&#xff0c;你使用通过文件的位置顺序即index来区分它们———第一个文件&#xff0c;第二个文件&#xff0c;以此类推。也许这种方式可行&#xff0c;可是一旦你删除了其中的一…

D69【 python 接口自动化学习】- python 基础之数据库

day69 Python 执行 SQL 语句 学习日期&#xff1a;20241115 学习目标&#xff1a; MySQL 数据库&#xfe63;- Python连接redis 学习笔记&#xff1a; redis数据库的用途 使用Python访问redis数据库 使用Python对redis数据库进行读写操作 总结 1. redis是一款高性能的键…

飞书文档只读限制复制

飞书文档只读限制复制 场景描述解决方式插件安装测试 场景描述 当使用飞书时&#xff0c;可能会存在无对方文档编辑/管理权限&#xff0c;对方只给自己开放只读权限的时候&#xff0c;此时如果文档较重要&#xff0c;需要本地保存一份&#xff0c;但是又无法复制文档或直接屏蔽…

[每周一更]-(第123期):模拟面试|消息队列面试思路解析

文章目录 22|消息队列:消息队列可以用来解决什么问题?1. 你用过消息队列吗?主要用来解决什么问题?异步、削峰和解耦你能各举一个例子吗?2. 你用的是哪个消息队列?为什么使用它而不用别的消息队列?3. 为什么你一定要用消息队列?不用行不行?不用有什么缺点?4. 在对接多…

npm list @types/node 命令用于列出当前项目中 @types/node 包及其依赖关系

文章目录 作用示例常用选项示例命令注意事项 1、实战举例**解决方法**1. **锁定唯一的 types/node 版本**2. **清理依赖并重新安装**3. **设置 tsconfig.json 的 types**4. **验证 Promise 类型支持** **总结** npm list types/node 命令用于列出当前项目中 types/node 包及其…

使用 DBSCAN(基于密度的聚类算法) 对二维数据进行聚类分析

代码功能 生成数据&#xff1a; 使用 make_moons 方法生成一个非线性分布的二维数据集&#xff0c;模拟月亮形状的两个半环形分布&#xff0c;同时添加一定的噪声。 数据标准化&#xff1a; 使用 StandardScaler 对数据进行标准化处理&#xff0c;使不同特征的值具有相同的…

【苍穹外卖】学习日志-day1

目录 nginx 反向代理介绍 nginx 的优势 提高访问速度 负载均衡 保证后端服务安全 高并发静态资源 Swagger 生成 API 文档 Swagger 的使用方式 导入knife4j的maven坐标 在配置类中加入knife4j相关配置 设置静态资源映射 通过注解控制生成的接口文档 项目技术点 Token 模式 MD5 加…

炼码LintCode--数据库题库(级别:入门;数量:144道)--刷题笔记_01

目录 炼码LintCode数据库入门级别的笔记未完待续~~~ 炼码LintCode 数据库 入门级别的笔记 笔记如下&#xff0c;把所有涉及到的入门级别的知识点简单总结了一下。 以及一点点举一反三的写法。 增 INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);批量增 INSERT INT…

【C语言】连接陷阱探秘(1):声明与定义

目录 一、声明与定义的混淆 1.1. 声明(Declaration) 1.2. 定义(Definition) 1.3. 避免混淆的方法 1.4. 示例 二、声明与定义不匹配 2.1. 常见的不匹配情况 2.2. 解决方法 三、外部变量与静态变量的命名冲突 3.1. 外部变量命名冲突 3.2. 静态变量命名冲突 四、缺…

pycharm快速更换虚拟环境

目录 1. 选择Conda 虚拟环境2. 创建环境3. 直接选择现有虚拟环境 1. 选择Conda 虚拟环境 2. 创建环境 3. 直接选择现有虚拟环境

[代码+论文+讲解]2024数维杯A题:飞机激光测速中的频率估计问题

一、问题背景 空速是飞机相对于空气的速度&#xff0c;是飞行中需要监测的关键参数。空速与飞行状态如攻角和侧偏角密切相关。如果空速数据异常&#xff0c;很容易导致诸如失速等事故。因此&#xff0c;准确测量空速非常重要。 图1:空速激光测速的示意图 激光测速是一种可行的测…

vscode中执行git合并操作需要输入合并commit信息,打开的nano小型文本编辑器说明-

1.前提&#xff1a; VScode中的git组件执行任何合并动作的时候需要提交远程合并的commit信息&#xff0c;然后编辑器自动打开的是nano文本编辑器 2.nano编辑器说明&#xff1a; 1.保存文件&#xff1a;按 Ctrl O&#xff0c;然后按 Enter 来保存文件。 2.退出编辑器&#xf…

Docker 基础命令介绍和常见报错解决

介绍一些 docker 可能用到的基础命令&#xff0c;并解决三个常见报错&#xff1a; 权限被拒绝&#xff08;Permission Denied&#xff09;无法连接到 Docker 仓库&#xff08;Timeout Exceeded&#xff09;磁盘空间不足&#xff08;No Space Left on Device&#xff09; 命令以…