激发创造力:将语言模型打造成层次化策略,提升解决复杂问题的探索效率 [译]
Zhan Ling1 Yunhao Fang1 Xuanlin Li1 Tongzhou Mu1 Mingu Lee2 Reza Pourreza2 Roland Memisevic2 Hao Su1 1 加利福尼亚大学圣地亚哥分校,2 高通 AI 研究 高通 AI 研究是高通科技公司的一个项目
摘要
虽然大语言模型(LLMs)已经取得了令人瞩目的进展,但它们在处理一些复杂的推理问题时还是会遇到不少困难。目前的解决方案主要是通过挖掘详细和底层的推理链条。但是,这样的方法在寻找解决方案的过程中依然受到了限制,使得正确答案在庞大的可能性中难以脱颖而出。在这项研究中,我们通过上下文学习,把大语言模型构建成一个层次化的策略,从而激发出了其在多样化问题解决策略探索上的创造性潜能。这个层次化策略包含了两个部分:一个能够提出多种高层问题解决策略作为启示的“领导者”,以及一个根据领导者给出的高层指令来执行详细问题解决过程的“执行者”。执行者会以领导者的指示为蓝本,探索多条可能的推理路径来攻克问题,并为每个领导者的建议生成一组可能的解决方案。此外,我们还提出了一种高效且有效的基于锦标赛的方法来从这些探索出来的解决方案中挑选出最终的答案。我们的方法不仅能够给出有深度和启发性的建议,还能够拓宽问题解决策略的探索范围,从而在 MATH 数据集中的一些难题上取得更高的答案准确率。相关代码将在 https://github.com/lz1oceani/LLM-As-Hierarchical-Policy 上公开发布。
1 引言
大语言模型(LLMs)如 Brown 等人(2020)、Chowdhery 等人(2022)、Touvron 等人(2023)以及 OpenAI(2023)的研究所展示,已经在许多学科领域,如常识理解(Hendrycks 等人,2020;Srivastava 等人,2022)和代码生成(Chen 等人,2021;Li 等人,2023)等方面表现出惊人的潜力。然而,在一些复杂的推理任务中,如撰写数学证明和解决高等数学问题等,LLMs 仍然表现得不够理想。这些任务需要高度的创造性思维,因为找到解决问题的正确路径并不是一件容易的事,这需要我们在找到最终成功的方法之前,尝试和探索多种不同的解决策略。††注:所有相关的数据集和模型都是由加利福尼亚大学圣地亚哥分校独立下载和评估的。
近期有一些研究致力于通过采样和搜索的方法,提升大语言模型(LLMs)在解决问题时的探索能力。这些研究包括 Wang 等人在 2022 年的工作,Yao 等人在 2023 年的研究,以及 Besta 等人在同年的另一项研究。尽管这些方法取得了一些进展,但仍然存在很多局限性。
在深入探讨这些局限性之前,我们先来看看人类是如何进行数学证明的。一般来说,我们会先回想以往类似的经验,比如使用过的证明方法或相关的技巧,然后基于这些经验,尝试不同的高层次策略,最终得出详细的证明步骤。值得注意的是,这些高层次策略的质量对问题解决的有效性和效率有着重大影响。这一点在表 1 中得到了很好的体现。
认知科学中有一个概念叫做元认知,它描述的是人类进行高阶思维的能力。研究表明,元认知能力对于找到有效的问题解决策略和成功完成任务至关重要。
相较于人类在解决复杂问题时全面而深入的探索,现有的 NLP 方法过于侧重于细致入微的低层次推理步骤,而忽略了高层次策略和认知过程。因此,我们的目标是激发 LLMs 在探索高层次策略和提示方面的创造性,使其能够像人类一样巧妙且熟练地处理复杂的推理问题。
为了实现这个目标,我们从决策学的文献中找到了灵感,学习了一种叫做“层级策略”的概念(参见 Bacon et al., 2017 年; Li et al., 2017 年; Kulkarni et al., 2016 年的研究)。基于这一概念,我们提出了一种新的定义大语言模型(LLM)的方法:将其视为解决问题的“层级策略”,包括一个富有远见的“高层领导策略”和一个“低层追随策略”。在我们构建的框架中,高层领导策略的作用是搭建起目标问题与 LLM 丰富知识及其以往解题经验之间的桥梁,进而提出多种高层解题策略和探索方向。而低层追随策略则负责根据这些提示,一步一步详细地执行解题过程。我们希望实现这个想法的过程能尽可能简单,事实上,通过运用现成的预训练语言模型和上下文学习,这一目标是可以实现的。最终,我们通过 LLM 的创新探索过程获得了一系列多样化的推理链,接着我们提出了一种高效的基于比赛的方法从中选择最佳推理链,以得出最终的答案。我们在图 1 中展示了这一方法的整体框架。
图 1: 我们方法的框架图,展示了如何将语言模型视为一种用于探索的层级策略。高层领导策略负责将目标问题与语言模型的知识建立联系,并提出多种解题策略和探索方向。低层追随策略则根据这些提示进行详细的解题过程。最终,我们运用一种基于比赛的方法来选出最合适的推理链,从而得出答案。
在实验中,我们证明了高层领导策略不仅能够进行深入探索,还能给出有意义且富有启发性的提示和指导,使得低层追随策略能更容易地找到正确的推理链和答案。我们提出的推理链选择方法也十分有效,能够精准地挑选出最优的推理链,从而在复杂的数学推理任务上取得更高的答案准确率。我们主要贡献可以总结如下:
-
为了高效探索复杂问题中庞大的解决方案空间,我们将大语言模型(LLM)视为一种层级策略,既包括“高层”又包括“低层”的认知过程,从而更加高效地探索出各种创新的高层思路。
-
在我们构建的层级决策框架中,我们引入了两种高效的策略,使得高层的领导者策略能够创造出一系列多样且富有启发性的策略和建议,来指导执行层的策略进行深入探索。
-
我们还设计了一种基于锦标赛的高效选择方法,帮助我们在众多生成的推理路径中挑选出最符合需求的,以便更快速地得出最终答案。
-
通过实验证明,我们的方法不仅能产生富有深度和启发性的高层建议,推动策略探索的深入进行,还能帮助我们更准确地找到和展示正确的解决方案,最终在 MATH 数据集中解决了一系列复杂问题,展现出卓越的答案准确性。
2 相关研究
问题:有多少个整数 能使方程 的解也是整数?
先进的解题方法:运用 Vieta 公式和因式分解技巧: 我们先假设这个一元二次方程的两个解是 和 。注意到 展开后是 ,这个式子又可以写成 。对比同类项的系数,我们可以得到 和 (这个结果也可以直接通过 Vieta 公式得出)。请注意,我们可以通过分子分母同时除以 或者通过观察 来消去 。接下来,我们可以运用 Simon 的特殊因式分解技巧,把 变形为 。由此可知, 和 是 的因数,其因数对为 。求解可得 的取值范围是 。但是,对称的两对解会让 的值重复,因此最终的答案是 。
GPT-4 提供的另一种高级解法:判别式必须是完全平方数: 首先,我们知道如果一个二次方程的根要是整数,它的判别式必须是一个完全平方数。对于方程 ,其判别式为 。我们令这个判别式等于某个整数 的平方,得到 。这是一个关于 的一元二次方程,其解为 。再次强调,为了 是整数, 必须是整数。
想象一下,我们有一个公式 。根据这个公式,我们可以推导出 ,也就意味着 。关键点来了:这个 必须是一个完美的平方数。哪些 的值能满足这个条件呢?经过推算,我们找到了这样的 值:。对于这 7 个 的值,我们各自都能找到两个 的值(一个正一个负)。但在 的特殊情况下,我们发现 ,因此 只有一个值,就是 10。所以,总的来说,方程 在 为整数的情况下,共有 13 个整数解。
表 1: 这是一个来自 MATH 数据集的经典题目,你可以用两种高级的方法来解它:第一种,是找出何时判别式会是一个完全平方数;第二种,就是运用 Vieta 公式和因式分解的巧妙技巧。但要注意,第一种方法可能会让你陷入困境,因为要找出所有让 成为完全平方数的 值,可不是件容易的事。而第二种方法,则能带你找到一个简单又巧妙的解决方案。
探索与语言模型的合作。近来,大语言模型 (LLMs) 在处理一些棘手的推理任务上表现得相当出色。我们主要通过上下文学习技术来引导它们,让它们能够一步一步展示出它们的推理过程。其中,"Chain-of-Thought (CoT) 提示" (由 Wei et al., 2022 提出) 就是一个很好的例子,除此之外,还有许多其他研究者也在探索类似的方法 (例如 Kojima et al., 2022, Zhou et al., 2022a 等)。对于像数学问题求解、证明撰写或归纳推理这样难度较高的任务,LLMs 并不总是能一次就找到正确答案。因此,鼓励它们尝试不同的解决策略和推理步骤对于增强它们的问题解决能力至关重要。最近有些研究 (比如 Bostrom et al., 2022; Tafjord et al., 2021 等) 通过逐步搜索和构建演绎的自然语言证明,展示了在这方面的进展。而 Wang et al. (2022) 的工作则是探索了多种推理链条,通过多数投票来确定最终答案。
Weng 等人(2022);Lightman 等人(2023);Ling 等人(2023)在推理链的探索过程中加入了验证过滤的方法。Yao 等人(2023)和 Besta 等人(2023)则通过树形和图形搜索,结合了回溯和改进步骤。但是,很多之前的研究只集中在具体和详细的推理步骤上,往往忽略了高层次的策略和思考过程。在本研究中,我们把 LLMs 定义为一种层次化的策略,目的是通过探索各种高层次的策略和方法来提高解决问题的效率。
层级策略简介。"层级策略"这个术语最早起源于强化学习(RL)和模仿学习(IL),它是一种用来解决复杂且周期较长的任务的多级决策方法(可以参考 Bacon et al. [2017]、Li et al. [2017]、Kulkarni et al. [2016]、Nachum et al. [2018]、Gupta et al. [2020]、Pertsch et al. [2021] 的相关研究)。在这种方法中,上层的策略会提出一些潜在的特点和子目标,来指导下层策略的具体行动。此外,也有不少研究致力于提升层级策略在探索新领域时的能力(相关研究包括 Li et al. [2020]、Gehring et al. [2021]、Peng et al. [2022]、Huang et al. [2023])。然而,鲜有研究尝试通过上下文学习的方式,将大语言模型嵌入到层级策略中,以增强其解决问题时的探索能力,而这正是我们研究的核心内容。
图 2: 这张图为我们提供了一个详尽的视角,展示了我们是如何将语言模型看作是一个层次分明的探索策略(为了更好的视觉效果,请放大查看)。在这个策略中,高层的引导者会提出各种各样的提示,以帮助底层的执行者在解决问题的过程中进行探索。这些提示可能是一些简短的技巧和定理,也可能是一些找到的类似问题和解答的集合。以这个例子为例,“模块算术”和目标问题密切相关,底层执行者在生成的推理链中成功找到了正确答案。而另一方面,“计数原理”与目标问题无关,底层执行者在寻找正确答案的过程中遇到了困难。接下来,我们将提出一种既高效又有效的方法,从底层执行者生成的推理链中筛选出我们想要的答案。
问题: 小于 18632 的整数中有多少个与 23 (mod37) 同余?
高级思考 1:
模数算术
提示:
参见附录。
低级推理链 1:
为了找出小于 18632 的整数中与 23 (mod37) 同余的整数数量,我们需要找到小于 18632 的 37 的最大倍数,然后计算该数以下 37 的倍数数量。
小于 18632 的 37 的最大倍数是 37·503 = 18611。
为了找到 37 到 18611 的倍数数量,我们可以将 18611 除以 37。我们得到 18611 ÷ 37 = 503。
因此,小于 18632 的整数中与 23 (mod37) 同余的整数有 503 个。
低级推理链 2:
为了找出小于 18632 的整数中与 23 (mod37) 同余的整数数量,我们需要找到小于 18632 的 37 的最大倍数,然后计算小于或等于这个最大倍数的 37 的倍数数量。
小于 18632 的 37 的最大倍数是 37·502 = 18674,因为 37×503 = 18611 小于 18632。
现在我们需要计算小于或等于 18674 的 37 的倍数数量。为了这样做,我们将 18674 四舍五入到最接近的整数:18674 ÷ 37 = 502。
因此,小于 18632 的整数中与 23 (mod37) 同余的整数有 502 个。
高级思考 2:
计数原理
提示:
参见附录。
低级推理链 1:
我们想计算小于的整数中与 23 (mod37) 同余的整数数量。
为了解决这个问题,我们可以从找出与 23 (mod37) 同余的最小整数开始。这可以通过在 23 被 37 整除时找出余数来完成。因为 23 < 37,所以 23 本身与 23 (mod37) 同余。
...…(太长)
因此,小于 18632 的整数中与 23 (mod37) 同余的整数有 481 个。
低级推理链 2:
为了找出小于 18632 的整数中与 23 (mod37) 同余的整数数量,我们可以从找出与 23 (mod37) 同余的最小整数开始。这可以通过将 37 的倍数加到 23 上直到我们得到一个大于 18632 的数来完成。
...…(太长)
因此,小于 18632 的整数中与 23 (mod37) 同余的整数有 498 个。
高级思考 X:
替代法
提示
参见附录
高级思维也可以用于检索问答示例。
问题:
有多少三位数的正整数 x 满足 3874 + 481 ≡ (mod23)?
答案:(从数学训练数据集中的真实答案)
3 将语言模型视为分层探索策略
我们可以将自然语言推理过程定义为一个由三个元素组成的组合:。其中, 代表我们要解决的问题, 是问题的正确答案,它可以是数学问题中的一个数字,也可以是一个需要证明或总结的陈述。 则是一组能够得出正确答案的合理推理链,也就是说, 是一系列从问题到答案的逐步推导:。在这里,大语言模型(LLM),用 表示,它会根据给定的问题 和一些额外的提示 ,生成一个推理链 ,以此来尝试解决问题。为了提高 LLM 在解题过程中的探索能力,许多先前的研究都集中在探索、抽样和寻找具体推理步骤上(参见 Wang et al. 2022, Yao et al. 2023, Besta et al. 2023)。但是,这些方法通常忽略了人类在解题过程中所运用的高阶认知过程。成功解决问题往往需要借助一些引导策略和提示,而忽视这一点可能会导致探索过程既低效又不够准确。
为了克服这些难题,我们提出了一个创新的解决方案:将大语言模型(LLM)转变为一个层级式的策略体系 ,通过上下文学习来解决问题。根据马尔科夫决策过程的传统方法,、 和 分别代表了不同层级的策略,它们对文本序列的选择都有一定的概率性。其中,高层的策略 能够接受一个问题 和一个高层提示 ,进而提供一系列可能的策略和建议 ,这里的 是基于 得出的(需要强调的是,从 中抽取出的结果是一套策略而不是单一策略;从现在开始,策略和建议我们将通用对待)。接着,低层的策略 将利用每一种策略 作为上下文的引导,通过一系列的抽样或搜索操作,形成一组推理链 ,其中 。
为了让这个分层的方法发挥最大效能,我们需要着重考虑两个关键环节:(1)如何激励高层策略 提供真正能够指导低层策略 的高效策略和建议 ;(2)在低层策略 提供了一系列的推理链 后,我们该如何快速而准确地从中选取最佳的推理链,以便得出最终的答案。
引导探索的高级策略和建议生成。面对一个特定问题 ,我们想引导领导者 如何将问题与语言模型中的相关知识巧妙联系起来,并在此基础上给出有力的高级建议和方向。这些建议和方向能够帮助我们更接近问题的解决。同时,我们也注意到要避免给出那些可能会让低级策略走偏的无关建议,因为有研究 (Shi et al., 2023) 显示,语言模型对于与问题无关的信息可能表现得非常敏感。因此,我们提出了两种方法来帮助 生成有助于解决问题的高级策略和建议(具体例子见图 2):
-
[(a)]
-
使用大语言模型,如 GPT-4,生成与目标问题相关的技术和概念列表。我们希望这些建议既清晰又简洁,而且容易理解,比如“角平分线定理”和“导数最小化”,从而能够有效指导低层策略 。详细的提示方式请参阅附录。
-
利用序列嵌入语言模型,如 SentenceBERT (Reimers & Gurevych, 2019),来寻找一系列与问题相关并附带分步解答的问题。这些相关问题和解答将启发 在生成推理链的过程中运用类似的策略和方法。
图 3: 根据解决方案中运用的高级策略和建议,将推理链空间进行分类的示意图。
概率解释:现在,让我们来探讨我们的方法是如何与马尔可夫决策过程(MDP)框架下的层次策略建立联系的,并利用这一框架来解释为什么我们的方法能够更好地进行探索。为了让大家更容易理解,我们用图 3 来展示这个概念。在给定问题 的情况下,我们在低级推理链空间 中,根据使用的高级策略将各个推理链进行分类。比如说, 和 都运用了策略 。在这里,区域的大小代表了在我们没有给出高级策略提示的情况下,从低级推理链中抽样得到 的边际条件概率。这个概率用 来表示。需要注意的是,即使是概率最高的策略,也不一定能够引导我们找到正确的推理链。这一点对于那些需要跳出常规思维的复杂数学问题来说尤其明显。在实际应用中,当 GPT-3.5/4 对某个数学问题给出了错误答案,我们发现生成的推理链往往过分依赖某一种策略。与此不同,我们采用的“领导 - 跟随”策略会分两步生成低级推理链,其过程可以用以下边际概率公式表示:
在这个部分,我们用 来表示 ,用 来表示 ,而 则代表了在 之间均匀分布的情形。需要特别注意的是, 和 是不一样的。通过图 3 的示例来说明,假设我们有三个提示 、、,并且它们整体的概率为 1(即 ),那么根据 来抽样就像是按照每个提示的“面积”来抽样,而根据 来抽样就是把这三个提示当作面积相等来进行均匀抽样。在一般情况下,我们采用的策略是等概率地抽取所有不同的提示,这些提示是由 给出的。因此,我们的策略鼓励了探索性行为,这是强化学习中的一种常见做法,目的是让不同动作的选择概率更加均衡,从而提高探索的可能性(比如通过 -贪婪策略来减小选择最佳动作的概率,增加选择其他动作的概率)。
如何高效且有效地挑选出最优的推理链条呢?首先,领导者给出了个高级策略和一些提示,接着低级追随者策略根据这些策略和提示产生了组推理链条。在我们的实验中,所有组中的推理链条数量都是相同的,也就是说,每组都有条推理链条。由于并非所有由领导者提供的策略和提示都是切题的,有些甚至可能导致推理错误,我们的目标是从低级策略生成的推理链条中筛选出最合适的那些。当然,我们还希望这个筛选过程能够高效进行,避免频繁调用庞大的语言模型。
针对这个目标,我们设计了一种基于竞赛的方法来挑选推理链条:首先,在每一组推理链条中进行投票,找出该组中占多数的答案,记为。然后,从每组中随机挑选一条达到多数答案的推理链条,加入到一个“选择集”中(这样一来,选择集中就有了条推理链条)。接着,我们将选择集中的第一条推理链条定为“最终推理链条”,并开始一轮轮的“竞赛”:在轮迭代中,每轮都用 GPT-4 来比较当前的“最终推理链条”和选择集中的下一条推理链条,看哪个更优。如果后者更优,就将其设为新的“最终推理链条”。在这个过程中,我们还通过多轮投票来确保比较结果的可靠性。
通过这样的方法,我们只需要进行次语言模型调用,就能选出一条理想的推理链条。举个例子,如果我们有 4 组推理链条,每组 16 条,进行 3 轮比较,那么总共只需要调用 GPT-4 12 次。我们后续的实验还将证明,这种挑选推理链条的方法能够显著提升我们最终答案的准确率。
4 实验
在这一部分,我们进行了定量和定性评估,以展示我们方法的有效性。我们首先研究我们的方法是否成功增强了正确解决方案的发现和可见性,并引入一个定量指标进行评估。随后,我们评估我们的方法是否提高了具有挑战性的数学推理问题的最终答案准确性。最后,我们进一步分析我们的方法的成功与失败,以及讨论其局限性。
实验设置。我们采用 MATH 数据集 (Hendrycks et al., 2020) 并使用其 Level-5 测试集,即问题的最困难子集,来评估不同的方法。对于高级策略 ,我们采用在 Sec. 3 中
我们是这样组织评估题目集的:在 4.1 节和 4.2 节中进行的实验中,我们从 MATH Level-5 测试集的七个分类中,每个分类随机选取了 20 道题目,共计 140 道题目,形成了我们的评估题目集。我们选择使用这个较小的题目集进行评估,是因为无论是选择 GPT-3.5 还是 GPT-4 作为 ,评估的成本都较高,仅这 140 道题目的评估费用就约为 $150。如果选择 GPT-4 作为 对整个测试集进行评估,成本将会更加昂贵。后来,在 4.3 节进行消融研究时,我们使用了整个 MATH Level-5 题目子集(除去了需要在矢量图中进行视觉理解的题目)来评估我们的方法,这时选择 GPT-3.5 作为 。实验结果显示,我们的方法是稳定可靠的。
4.1 我们是如何让正确答案更容易被发现和看到的?
在这个部分,我们将探讨一种新的方法:把大语言模型 (LLMs) 设定为一个分层的策略体系,并激励它们尝试多种不同的解题方法和提示。我们想要知道,这样做是否真的能让我们更容易找到并注意到正确的解答。为了验证这一点,我们把我们的方法和另一种常规方法做了个比较:Chain-of-Thought (CoT) Sampling (Wei et al., 2022) 加上 Majority Voting (Wang et al., 2022)。这个常规方法也会生成大量详细的推理链,并通过投票来确定最终的答案。
我们想要了解在寻找答案的过程中,正确答案是否更容易被人注意到。一个简单直接的方法就是比较两种方法找到正确答案的准确率。但我们发现,仅仅用准确率来衡量还不够。举个例子,对于传统的 CoT Sampling 方法,即使只有少数推理链,通过投票后得出的最终答案的准确率就已经相当高了,如图 4 所展示的那样。然而,随着推理链数量的增加,找到正确答案的概率也在稳步上升。这意味着,虽然传统方法有时也能找到正确答案,但这些正确答案往往会在众多其他选项中被忽视。我们在图 4 中详细展示了这一情况。所以,仅凭准确率是无法完全反映出我们想要找到的答案是否真的“显而易见”的。
我们研发了一种名为“显微镜”的工具,用于探测正确答案的可见度。为了更准确地衡量正确答案的可见性,我们引入了一种新的衡量标准——“分组 - 多数记忆”。这个计算分为两个步骤。首先,我们的方法会生成 个组,每个组里包含了 个推理链。而 CoT Sampling 基线方法可以看作是我们方法的一个特殊实例,即只有一个组(),而且没有包含高级策略。为了计算这个“分组 - 多数记忆”指标,我们首先在每个组内进行多数投票,得到 个主流答案,然后计算有多少问题的标准答案出现在这 个主流答案中的至少一个里。有时候,一个组可能会有多个主流答案,这种情况下,我们会计算这个指标的期望值。为了与 CoT Sampling 基线方法进行比较,我们将 个 CoT 样本随机分配到 个组中,并以相同的方式计算这个指标。
图 4: “CoT Sampling + 多数投票”基线方法的统计数据。(a)显示了随着采样推理链数量的增加,正确答案的回忆率是如何提高的,但在进行多数投票后,最终答案的准确率却在几轮推理链样本后趋于稳定。(b)展示了在 64 个推理链样本中,有 个推理链给出了正确答案的问题的百分比( 是一个自然数)。这揭示了一个常见的情况:即使 LLM 偶尔能够找到正确的答案,这些答案也常常无法被有效地识别出来,仍然淹没在大量的推理链样本之中。
模型 | 方法 | 算法类别 | 计算与概率 | 几何 | 过渡算法 | 数论 | Prealg. | Precal. | 综合表现 |
GPT-3.5 | 链式思考 & 抽样 | 46.67 | 32.83 | 11.67 | 17.50 | 29.84 | 69.58 | 10.31 | 31.19 |
我们的方法 - 提示策略 | 41.67 | 32.83 | 19.38 | 15.00 | 35.00 | 75.00 | 10.00 | 32.69 | |
我们的方法 - 检索法 | 49.48 | 31.98 | 15.31 | 15.00 | 45.31 | 72.50 | 10.00 | 34.23 | |
GPT-4 | 链式思考 & 抽样 | 62.50 | 55.67 | 50.00 | 24.83 | 61.67 | 88.75 | 12.00 | 50.78 |
我们的方法 - 提示策略 | 65.00 | 52.83 | 51.25 | 29.31 | 79.08 | 91.25 | 12.50 | 54.46 | |
我们的方法 - 检索法 | 67.50 | 44.58 | 53.50 | 31.00 | 60.17 | 95.00 | 7.83 | 51.36 |
表 2: 本表展示了在链式思考抽样基线方法和我们提出的两种探索策略之间的“分组多数记忆”度量值对比。我们分别使用 GPT-3.5 和 GPT-4 作为链式思考抽样方法的语言模型,并应用我们策略中的底层执行策略。这些数据是基于我们 140 道 MATH Level-5 评测题目,分别通过 4 个推理组和每组 16 条推理链得出的。
聊聊 Grouped-Majority Recall 的独到之处:不同于常见的准确率衡量方式,那些在庞大数据集( 个样本)中可能被忽略的稀有正确答案,在某个特定组内可能变成多数,从而被我们的新评价标准发现。根据我们的观察,这种情况并不罕见:某些高水平策略虽然很少出现,但却能提供大量正确的底层解决方案,并在特定组中占据主导地位。尽管在所有样本中它们仍是少数,但我们的新方法能够妥善识别并给予其应有的重视。
我们在表 2 中展示了 Grouped-Majority Recall 的结果。通过实验我们发现,无论是使用 GPT-3.5 还是 GPT-4 作为底层策略,我们的探索方法都能有效提升 Grouped-Majority Recall,这证明了我们的方法在发现和突显通往正确答案的路径方面取得了进展。此外,我们还发现,在我们尝试的两种探索策略中,使用简洁技巧提示的方法在 GPT-3.5 上的表现不如直接提供问题解决方案的提示,但在 GPT-4 上却表现更好。我们认为,这可能是因为 GPT-4 在理解和运用解决问题的特定技巧方面能力更强。反过来说,对于能力相对较弱的 GPT-3.5,即便提供了富有启发性的高级提示,它也可能无法高效利用这些提示来解决问题。表 6 中的例子就很好地说明了这一点。
模型 | 方法 | 算法 | 计数与概率 | 几何 | 中级算法 | 数论 | 初级代数 | 初级计算 | 总体表现 |
GPT-3.5 | 链式思考抽样 + 投票 | 30.00 | 25.00 | 10.00 | 15.00 | 5.00 | 60.00 | 10.00 | 22.14 |
ToT + 投票 | 15.00 | 0.00 | 5.00 | 20.00 | 0.00 | 49.17 | 0.00 | 13.45 | |
我们的 - 提示策略 | 40.00 | 30.00 | 15.00 | 0.00 | 20.00 | 65.00 | 5.00 | 25.00 | |
我们的 - 检索方法 | 50.00 | 25.00 | 15.00 | 0.00 | 30.00 | 70.00 | 5.00 | 27.85 | |
GPT-4 | 链式思考抽样 + 投票 | 50.00 | 36.25 | 47.50 | 10.00 | 55.00 | 75.00 | 12.50 | 40.89 |
我们的 - 提示策略 | 65.00 | 35.00 | 40.00 | 15.00 | 70.00 | 80.00 | 5.00 | 44.29 | |
我们的 - 检索方法 | 50.00 | 45.00 | 40.00 | 30.00 | 50.00 | 70.00 | 10.00 | 42.14 |
表 3: 本表格展示了采用链式思考抽样基准方法和我们在第 3 节详述的两种探索策略在最终答案准确性上的对比。我们同时提供了以树状思考为基础的结果作为参考。无论是采用 GPT-3.5 还是 GPT-4 作为语言模型,我们都采用了在我们方法中定义的基础策略。所有结果都是基于我们 140 题的 MATH Level-5 评估试卷得出的。
4.2 我们是否在解决复杂数学题上取得了更高的答案准确率?
下面,我们来探讨一下我们的探索方法和基于竞赛的推理链选择策略是否真的提升了 MATH 数据集 Level-5 测试集上的答案准确率。我们把我们的方法和“CoT Sampling + Majority Voting”这个基础方法在表 3 中做了一个比较。结果表明,我们的两种探索策略确实都提高了答案的准确率,这说明我们的方法能有效挑选出高质量的推理链。
我们还尝试使用 Tree-of-Thoughts (ToT)(Yao et al., 2023)来解数学题,并将其结果在 GPT-3.5 上展示作为一个参考 11 需要注意的是,运行 ToT 的成本非常高,在 GPT-3.5 上的费用已经超过了 $100。如果在 GPT-4 上运行 ToT,费用将会高达数千美元,因此我们打算留到将来再研究。我们在 ToT 中运用了广度优先搜索 (BFS),每次扩展 8 个子节点,并在每个深度层级中保留最优的 5 个候选,树的深度限制在 16 层。但是,我们注意到 ToT 的最终答案准确率明显低于“CoT Sampling + Voting”这个基础方法。进一步分析发现,ToT 生成的推理链平均数量为 8.41,远少于基线方法中的 64 条,这可能削弱了其性能。
4.3 更多实验结果和深入分析
如我们之前实验的安排,由于评估 GPT-4 的成本较高,我们仅在第 4.1 节和第 4.2 节中利用了 MATH Level-5 测试集的一个较小样本,即 140 个问题。在这一节,我们将评估范围扩大,选择了 GPT-3.5 作为辅助工具,即低级跟随者 ,并对 MATH Level-5 测试集中的 1047 个问题进行了全面评估。这个评估集覆盖了测试集中的所有问题,唯独剔除了那些题目或答案中包含 Asymptote (一种矢量图形语言) 代码的问题,因为解答这些问题需要视觉理解能力。值得一提的是,与之前的 140 个问题样本不同,这 1047 个问题在不同类别之间的分布并不均衡,其中有 429 个问题来自于代数和预代数这两个相对较易的领域。
我们在表 3(a) 中展示了分组多数召回的评估结果,同时在表 3(b) 中展示了最终答案准确性的评估结果。这些结果与我们在第 4.1 节和第 4.2 节中获得的数据保持一致。我们还注意到,在这个更大样本的评估中,整体的分组多数召回率和最终答案的准确率都高于在 140 个问题样本上的评估结果,这主要归因于评估集中包含了更多容易的代数和预代数问题。
我们还对我们的比赛式推理链选择方法进行了一系列的设计决策测试。在这项实验中,我们选择了 GPT-3.5 或 GPT-4 来执行比赛选择流程,并调整了每轮比赛中重复比较的次数 。实验结果详见 表 5。实验发现,当 较小时,使用 GPT-4 进行推理链选择比使用 GPT-3.5 有更好的效果,特别是在 的情况下,GPT-4 作为推理链选择器的表现非常出色,显著提高了最终答案的准确率,超过了 CoT Sampling 的基准水平。
方法 | Alg. | Count.& Prob. | Geom. | Interm. Alg. | Num. Theory | Prealg. | Precal. | Overall |
---|---|---|---|---|---|---|---|---|
CoT Sampling + Voting | 65.84 | 39.97 | 19.33 | 11.06 | 38.75 | 69.11 | 4.74 | 40.63 |
我们的方法 - 提示策略 | 64.77 | 42.84 | 26.00 | 12.23 | 42.47 | 71.91 | 11.40 | 42.58 |
我们的方法 - 检索 | 69.81 | 40.00 | 22.25 | 15.26 | 43.43 | 72.65 | 8.87 | 44.29 |
(a)分组 - 多数召回率。
方法 | Alg. | Count.& Prob. | Geom. | Interm. Alg. | Num. Theory | Prealg. | Precal. | Overall |
---|---|---|---|---|---|---|---|---|
CoT Sampling + Voting | 56.73 | 26.57 | 16.00 | 6.56 | 23.27 | 60.74 | 4.49 | 32.22 |
我们的方法 - 提示策略 | 55.00 | 33.96 | 24.00 | 8.61 | 32.47 | 63.76 | 6.74 | 35.15 |
我们的方法 - 检索 | 57.86 | 29.25 | 20.00 | 11.07 | 31.82 | 66.44 | 5.62 | 36.10 |
(b)最终答案正确率。
表 4: 使用 GPT-3.5 作为语言模型,对我们 1047 道评估题目的分组 - 多数召回率和最终答案正确率进行了比较。其中,CoT Sampling 作为基准,我们的方法中则采用了低级跟随策略。
方法 | 我们的方法 - 检索 | 我们的方法 - 检索 | CoT 抽样 + 投票 | ||||
采用的模型 | GPT-3.5 | GPT-4 | 不适用 | ||||
对比次数 | 不适用 | ||||||
答案准确性 | 21.43 | 22.86 | 27.14 | 27.85 | 27.85 | 27.85 | 22.14 |
表 5: 我们探索了使用不同模型(GPT-3.5 和 GPT-4)来进行基于竞赛的推理链选择,以及在这个过程中进行不同次数的对比(,,)。同时,我们还将我们基于检索的方法和 CoT 抽样 + 投票方法进行了对比。这些结果都是基于我们的 140 个问题的评估集得出的。
4.4 深入探讨与存在的局限
问题:卡森一个一个地翻动一副常见的 52 张扑克牌,他在翻到 J、Q 或 K 这些面朝上的牌之前,翻到黑桃 A 的几率有多大呢? |
高级提示:条件概率 |
操作指南:试着运用“条件概率”的相关原则来思考这个问题,记得要一步一步来,清晰地展示出你解题的思路。最后,别忘了用 \boxed 命令把你的答案框起来。 |
GPT-3.5 追随者的回答: |
要解开这个谜题,我们得先搞清楚直接翻到黑桃 A 的概率,以及首先翻到 J、Q、K 这些面朝上的牌的概率。接着,我们从 1 中减去首次翻到面朝上的牌的概率。 |
因为整副牌里只有一张黑桃 A,所以它首次出现的概率是 。而牌堆里一共有 12 张 J、Q、K 这些面朝上的牌,所以首次翻到这些牌的概率是 。因此,翻到这些面朝上的牌之前翻到黑桃 A 的概率就是 |
表 6:这是一个展示 GPT-4 在给出极具相关性的高层提示时,GPT-3.5 作为执行者却未能充分运用这一提示、从而导致解答错误的例子。
提出的问题:我们有两个常数 和 ,并且定义了一个分段函数 ,当 时,;当 时,。这个函数有一个有趣的特性:无论你输入什么 ,计算两次 的结果都会回到最初的 。我们想知道,这两个常数的和 是多少呢? |
答案: |
首先,我们试着把 设为 3,计算出 。由于 还没达到 2,所以我们再次计算,得到 。根据函数的特性,我们知道 应该等于 3。 |
接下来,我们再试一个数,比如 4,计算得到 。因为 依然小于 2,我们继续计算,得到 。同样根据函数的特性, 应该等于 4。 |
现在,我们有了两个方程式: 和 。把它们做个减法,我们发现 的值是 。带入其中一个方程,我们又得到 的值是 。所以,这两个常数的和就是 。 |
新问题:这次我们又有两个常数 和 ,并定义了另一个分段函数 ,当 时,;当 时,。这个函数同样满足:无论输入什么 ,两次 的结果都会回到最初的 。我们现在想知道,这两个常数加起来是多少? |
GPT-4 机器人的回答: |
| 当我们令 为 4 时,计算出 。由于 的值超过了 3,根据函数定义,我们再次计算得到 。
| 所以,计算 的结果是 。但我们知道,对于任意的 , 都等于 本身,所以这个表达式也应该等于 4。| | 当我们令 等于 2 时,可以计算得出 的值是 5。注意到 5 大于 3,所以 的值为 。| | 由此,我们再次使用公式 ,代入 ,得出 。但我们已经知道,无论 为何值, 都应该等于 ,所以这里 应等于 2。| | 接下来,我们对之前得到的两个方程式进行相减: 和 ,结果是 ,解得 。| | 有了 的值后,我们再次利用方程 ,解出 。最终,我们得到 。|
表 7: 这里我们看到了一个失败的例子。在这个例子中,我们找到了一个和训练集中的问题非常相似的问题以及它的标准答案,并把它们作为提示给了 GPT-4 低级跟随者。虽然这个模型成功地按照相似的推理步骤来解决问题,但最终仍然没有得到正确答案。
在这一部分,我们将深入剖析我们方法的得与失,并探讨在这一过程中我们方法可能遇到的局限性。
我们注意到,我们的高级引导策略能够给出许多有深度和启发性的提示,比如在图 2 中的“高级思考 1”。当然,它有时也会给出一些不太相关的提示,比如图 2 中的“高级思考 2”。为了进一步评估我们生成的高级提示的质量,我们进行了一个实验:我们将第一种生成提示的方法得到的所有高级技术和概念汇总,找到它们各自对应的问题和标准答案,然后让 GPT-4 根据这些信息生成 10 个“标准提示”。然后,我们计算这些提示中有多少比例的提示至少和一个“标准提示”相匹配,以此作为评价提示质量的标准。结果显示,有 94.3% 的提示符合标准,这证明了我们的方法在提出相关、有深度和启发性的提示方面是非常有效的。
接下来,我们对常见的失败案例进行了分析,以便更全面地了解我们方法的行为模式。我们发现,尽管高级引导策略能够给出有启发性和有意义的提示,低级跟随者有时候并不会严格按照这些提示来解题,这就导致了推理错误。有时候,它甚至会完全忽略这些提示。在表 6 中有一个很好的例子。我们还注意到,相比于更强大的语言模型(比如 GPT-4),较弱的语言模型(比如 GPT-3.5)更容易出现这种情况。即便是在跟随者成功地将提示融入到解题过程中,仍然有可能出现推理错误,表 7 就是一个例子。这些现象揭示了我们方法的局限性,显示了它对高级提示的不稳定遵循以及对跟随者模型能力的依赖。
5 总结
在这篇文章里,我们尝试了一种新方法,将大语言模型(LLMs)作为一种分层策略来应用,目的是更好地解决一些数学推理上的难题。这套策略分为两层:一层是“高层”领导策略,它能够把目标问题和语言模型所知的信息联系起来,并提出一些解题的提示;另一层是“低层”跟随策略,它会利用这些提示,帮助我们在解题的过程中找到正确的方向。通过这种方法,我们提出了两种高效的生成解题策略和提示的方法,并且还发明了一种选出最佳解题路径的竞赛方法,帮助我们在众多可能的答案中找到最终答案。实验结果表明,我们的方法不仅增强了解题策略的多样性,也使得正确答案更容易被发现和理解,特别是在 MATH 数据集上解决复杂问题时,答案的准确性得到了显著提升。
附录 A 答案提取
我们通过识别 LaTeX 环境中 \boxed 里的内容来从推理链中找到最终答案,具体操作方法可参见表格 8 中的示例。
附录 B 提示信息
B.1 连锁思考(COT)基础提示
问题: |
{question} |
请按部就班地给出你的推理过程,并在 LaTeX 环境中给出你的最终答案 |
答案起始于 \boxed。 |
答案: |
表 8: 这是一个在 MATH 数据集上使用连锁思考(COT)抽样加上多数投票方法生成推理链的零次尝试的样板提示。我们需要模型能够在 LaTeX 的 boxed 环境中清晰地给出最终答案,因为这个环境特别适合处理一些格式复杂的输出,比如区间或矩阵。
B.2 给初学者的引导
问题: |
{问题} |
请运用与“{技术或概念}”相关的方法来解决这个问题,并将答案清晰地展示出来。 |
请你一步一步地将思考过程详细地写下来。 |
最终,请使用 LaTeX 命令“\boxed”来展示你的答案。 |
答案: |
表 9: 这是一个由高级指导者制定的零样例提示,用于引导初学者如何简洁地运用某种技术或概念。
问题: |
{示例问题} |
答案: |
{示例的逐步解答} |
作为一个示范,请参考上面的例子。如果这个例子和你现在遇到的问题不太相关, |
你可以选择忽略它。 |
问题: |
{问题} |
答案: |
请你一步步地展示出你的思考过程,并在 LaTeX 环境中将最终答案写出, |
开始时使用 \boxed,并且不要使用任何图表。 |
表 10: 这是一个由高级指导者制定的零样例提示,用来引导初学者通过问题 - 答案的演示来学习。
B.3 高层领导的策略与提示生成向导
面对一个数学难题时,你需要做的是列出一些高级数学技巧或概念,这些可能会帮你找到问题的答案。不需要详细说明,只要简单地说出这些技巧的名称即可。每一种技巧本身都应该足够指引你找到解决方法。为了更明了一些,下面是一些例子: |
示例 1: |
问题描述: |
有一个梯形 ,边长分别是 、、 和 , 和 是平行的。在 上有一点 ,以 为中心画了一个圆,它恰好和 、 两条边相切。已知 ,其中 和 是两个互质的正整数,求 的值。 |
回答建议: |
1: 角平分线定理 |
2: 点幂定理 |
3: 相似三角形 |
示例 2: |
问题描述: |
假设 是直线 上的一个点,试求 到点 的最短距离。 |
回答建议: |
1: 向量几何和直线方程 |
2: 三维空间中直线的参数方程 |
3: 三维空间距离公式 |
4: 利用导数求最小值 |
示例 3: |
问题描述: |
在一个办公室的计算机网络中,有 20 个交换机,每个交换机需要和其他三个交换机直接相连。那么总共需要多少条连接线? |
回答建议: |
1: 图论中的握手引理 |
2: 组合计数法 |
示例 4: |
问题描述: |
请问满足方程 的所有 值加起来是多少? |
回答建议: |
1: 因式分解法 |
2: 有理根定理 |
3: 维达公式 |
4: 多项式除法 |
示例 5: |
问题描述: |
{question} |
回答建议: |
表 11: 这个表格是为高层领导设计的,目的是通过提供一些具体的技术和概念作为启发,来引导下属在解决问题时有更多的思路和方法。
B.4 针对锦标赛式推理链选择的提示
问题: |
{question} |
下面为您呈现了两种可能的答案: |
答案 1: |
{reasoning-chain-1} |
答案 2: |
{reasoning-chain-2} |
请您仔细对比这两种答案,思考哪一种更为准确。请在决策的支持下给出您的理由,并明确告诉我们您更倾向于哪一个答案,方式是声明“我更倾向于答案编号:”并给出您认为最好的答案。 |
表 12: 这是一个用于比较我们在锦标赛式推理链选择过程中两条推理链的无样本提示的例子。
B.5 给思维树(TOT)的提示
答题指南 |
1. 请按照顺序一步步解答问题。 |
2. 每个步骤需要分为两行来进行说明: |
- 第一行用“#”号加上步骤编号开始,紧接着简要描述这一步的主要动作或所得结果。 |
- 第二行用“-”号开始,提供对这一步骤的简短理由或解释。 |
3. 在答题的最后一步,第一行写上“最终答案是什么?”,第二行则用 latex 格式的 \boxed 给出最终答案。 |
示例 |
问题: |
Anisha 从一百万起始,通过交替进行除以 2 和乘以 5 的操作,生成了一个整数序列,序列的前几项是 1000000, 500000, 2500000, 1250000 等。 |
那么,在她的这个序列中最后一个整数是多少?请用 的形式来表达你的答案,其中 和 都是正整数,并且 需要尽可能的小。 |
答案: |
我们一起来仔细思考每一步! |
#1. 如何将一百万分解成它的质因数? |
- 一百万可以写作 ,进一步分解就是 。 |
#2. 这个序列在变化过程中会发生什么? |
- 在 Anisha 每次除以 2 的时候,她实际上是在去除一个 2 的因数;而每次乘以 5,则是在增加一个 5 的因数。因此,当她连续除以 6 次 2 后,所有的 2 的因数都会被消除。 |
#3. 在整个过程结束时,5 的因数有多少个? |
- 一开始就有 个 5 的因数。在接下来的 6 步乘以 5 的操作中,又增加了 6 个 5 的因数,最终数量达到 。 |
#4. 那么,序列的最后一个整数是什么? |
- 在这 12 步操作结束后,所有的 2 的因数都已被 5 的因数替代,最终整数变为 。 |
#5. 那么最终答案是什么? |
- 。 |
| 请根据“答题指南”,并参考上面的示例格式来回答下面的问题!! | | 问题:| | {question} | | 答案:| | 我们来一步步解析吧! | | {current-steps} |
表 13: 用于在 ToT 中引导生成下一步推理的单次提示示例。
指示:在了解了问题的背景和目前我们已经推理出的步骤之后,你需要判断新增的这个推理步骤是否真的有助于我们解决问题。值得注意的是,即使这个推理步骤与问题的最终答案没有直接关联,只要有助于解题,它就是有用的。 |
问题: |
假设有三个实数 ,它们满足方程 和 。 |
请计算 的值。 |
新增推理步骤: |
#1. 首先,我们需要解这组方程,找出 的具体值。 |
这个新推理步骤是否必要或有用? |
否。因为仅凭这两个方程,我们无法确定三个未知数 的具体值。 |
问题: |
设点 位于直线 |
与直线 的交点上。 |
#1. 我们首先需要找到这两条直线起点的连线,这条连线就表示了从点 到点 的方向。 |
新增推理步骤: |
#2. 接下来,计算第一条直线的方向向量和第二条直线的方向向量之间的点积。 |
这个新推理步骤是否必要或有用? |
是的。通过计算点积,我们能够判断这两条直线是否平行,这对于计算它们之间的最短距离非常关键。 |
根据给出的指示,仿照上述例子,评估新问题中推理步骤的合理性。 |
问题: |
{问题描述} |
{目前的推理步骤} |
新增推理步骤: |
{新增的推理步骤} |
这个新推理步骤是否必要或有用? |
表 14: 用于在 ToT 中评估并打分新生成推理步骤的少次提示示例。