核心观点
生成中间步骤提升性能:通过生成中间步骤,LLM能够更有效地解决复杂问题,尤其是在数学、代码生成等领域。 少量示例即可达到高精度:与传统的机器学习模型相比,LLM只需要少量的示例就能学习到复杂的推理模式。 自一致性提高准确性:自一致性是一种通过多次采样并选择最频繁答案的方法,可以显著提高LLM Reasoning的准确性。
易受无关上下文干扰:LLM对无关信息的敏感性较高,容易被干扰导致推理错误。 无法自我纠正:LLM在发现错误后,往往无法自行纠正,需要外部提示。 前提顺序影响推理结果:LLM对前提的顺序非常敏感,改变前提顺序可能导致推理错误。
定义正确的AGI问题:从更基础的层面出发,重新定义AGI的问题,而不是仅仅关注当前LLM的能力。 提高LLM对无关信息的鲁棒性:增强LLM对无关信息的抵抗能力,提高其在复杂环境下的推理能力。

课程名称: Large Language Model Agents 课程代码: CS294/194-196 课程链接:https://rdi.berkeley.edu/llm-agents/f24 主题: LLM Reasoning: Key Ideas and Limitations 主讲教师: Dawn Song 讲课嘉宾: Denny Zhou, Principal Scientist/Research Director, Google DeepMind 时间: 2024年9月9日

Dawn Song
我首先进行一些介绍,然后我们将正式开始本课程的内容。
我的名字是Dawn Song。我是加州大学伯克利分校计算机科学教授,同时也是一个名为“负责任的去中心化智能中心”的校园中心的共同主任。

大家都注意到大型语言模型的快速发展,进步速度令人惊叹。然而,这些大型语言模型的运作方式相对简单:它们接收文本输入并生成文本输出。

本课程将涉及下一个前沿——大型语言模型代理。我们不仅仅是将文本作为输入并输出文本,而是将大型语言模型作为推理和规划的核心,使代理能够与外部环境互动、观察环境并采取行动。代理将利用外部工具和数据库进行检索,以帮助执行这些任务。

这些大型语言模型的丰富能力使代理非常灵活,它们可以在多样的环境中运作,而不需要特别的训练。它们可以与不同类型的环境进行互动,包括浏览网页和访问各种在线API,甚至可以在物理世界中的机器人中体现。它们可以通过不同类型的输入感知环境,甚至在多模态设置中,在这些多样的环境中采取行动。通过与复杂多样的环境互动,它们可以更新记忆,学习与人类互动,并通过这些互动获得扎根理解。

这些代理不仅与环境互动,还可以与其他代理,包括人类合作。这种多代理协作有助于代理解决更复杂的任务。

为什么我们的代理是下一个前沿?我们需要为代理赋能代理框架,有几个原因。解决现实世界的任务很少涉及单一文本输入生成文本输出;这通常需要试错过程。利用外部工具和从外部知识中检索可以扩展能力。更重要的是,这种动态代理流动可以通过任务分解、将子任务分配给专业模块以及项目协作的劳动分工,促进解决复杂任务。在整个课程中,我们还将看到多代理生成可以激发更好的响应。

虽然这是一个近期的发展,但我们已经看到代理正在转变各种应用领域,包括教育、法律、金融、医疗和网络安全等。

这个发展令人兴奋并迅速提升。在线上有许多不同代理基准的排行榜,展示了各种框架的快速进步。

为了更好地支持代理部署,需要解决几个关键挑战。首先,我们需要提升代理的推理和规划能力。在执行复杂任务时,它们经常出错,因此增强这些能力至关重要。我们还需要改善身体化和从环境反馈中学习的能力;代理在长时间任务中的错误恢复仍不够高效。必须为这些代理开发持续学习和自我改进的方法,以及改善多模态理解、扎根理解和水模型能力。此外,激励可以帮助代理提供更好的解决方案,发展心智理论有助于多代理协作。
安全和隐私问题至关重要;代理容易受到对抗性攻击,并可能基于私人数据发布有害信息。解决这些挑战对于在现实世界中安全部署代理至关重要。此外,促进人类互动和伦理——有效控制代理行为并设计人机交互模式以最好地服务于人类需求——也是重要的。

为了帮助学生学习和发展解决这些挑战的方法,课程涵盖了代理框架不同层次和多个领域的广泛主题。我们将讨论关键模型能力,包括推理、规划和多模态理解。我们还将探索流行的现实世界代理框架,使学生学习如何设计代理应用程序和利用各种工作流程。这将帮助学生学习使用我们的代理框架进行工作流程设计、增强生成和多代理系统。
最后,我们将讨论与代理安全和伦理相关的重要主题。
Denny Zhou

我想问大家一个问题:你们对人工智能有什么期待?请花几秒钟思考一下。
我能想象到许多不同的答案,比如解决人类无法解决的最难数学问题,或者发现新的科学理论,甚至实现通用人工智能。

我的背景是机器学习。我不知道这里是否有很多人学习机器学习课程,因为这正是我关注的重点。作为一名机器学习研究者,我对人工智能有一些期望,它应该能够从少量例子中学习,正如人类通常所做的那样。

在过去的几十年中,机器学习社区付出了巨大的努力来开发数据高效的方法,比如总结学习和主动学习。如果你查看过去十年的报纸,人们总是对机器学习中的一点或两点进展感到兴奋。然而,在实践中,我很少见到真正数据高效的方法。我想说这是一个失败的任务。不要对此感到难过;我才是应该感到难过的人,因为我已经研究了将近20年。

这激励我思考另一个问题:机器学习中缺少什么?经过多年的模型训练,我终于找到了答案:推理(Reasoning)。在今天的背景下,尤其是对于参与课程的人来说,这个想法似乎是显而易见的,对吧?人类能够从少量例子中学习,是因为人类能够推理(Reasoning),而不仅仅是基于数据统计。这听起来非常简单明了。

我们先从一个游戏问题开始。在我的研究中,我通常更喜欢那些包含所有细节和挑战的游戏问题。

这个游戏问题被称为最后字母连接。如果你熟悉神经符号文献,就会发现类似的问题。对于这个问题,给定一个人的名字作为输入,输出将是名字最后一个字母和姓氏最后一个字母的连接。例如,对于“Elon Musk”,名字“Elon”的最后一个字母是N,姓氏“Musk”的最后一个字母是K。因此,输出是NK。

如果几年前你遇到这个问题,可能会尝试使用机器学习模型,比如Transformer模型。一部分作为编码器,另一部分作为解码器。你会发现需要大量带标签的示例来训练模型。最终,你可能会达到大约85%或90%的准确率。
考虑机器学习方法来解决这样一个简单任务——对人类来说是简单的。如果这种方法需要大量的带标签数据来学习,你还会称之为人工智能吗?人工智能意味着“人工智能”,一个智能模型应该能够仅用一两个例子就学习这个任务。

现在,让我们看看如何使用大型语言模型解决这个问题。

我假设大多数人对大型语言模型有所了解,但教授会解释LLM是什么。大型语言模型是经过训练以预测下一个词的Transformer模型。例如,给定文本“AI是未来”,模型学习预测下一个可能的词。如果预测的词不是“未来”,我们需要通过反向传播调整参数。你可以使用许多句子分享你的模型,比如使用互联网上的所有文本。

如果想简化一下,可以把训练大型语言模型看作是训练鹦鹉模仿人类语言。我实际上在推特上提到过这个,有人回应表示对训练鹦鹉感到好奇,因为那是他的工作。

一旦我们训练了这个模型,我们可以模拟训练过程。训练是关于生成下一个标记。我们可以使用任何输入来看看输出会是什么。模型预测下一个标记,然后我们可以将生成的标记与输入结合。对于这个问题,我们可以将所有示例与测试示例“Barack Obama”连接在一起。
如果我们尝试在任何大型语言模型上执行此操作,我们会看到输出。然而,输出是错误的。K是“Barack”的最后一个字母,A是“Obama”的最后一个字母,所以输出应该是KA。这个错误是少量示例提示的一个例子。它模仿了机器学习过程;我们不是训练模型,而是简单地使用示例作为输入。

最近,我们知道如何修正这个提示的想法。我们只需在回答之前添加一个推理过程。例如,我们会说:“‘Elon’的最后一个字母是N,‘Musk’的最后一个字母是K,所以连接得到NK。”同样,我们可以应用于“Bill Gates”。

使用这个新输入,我们可以期待从大型语言模型中获得完美的响应。

就像人类一样,一个演示就足以达到100%的准确率。这正是我所追求的。我们无法想象任何机器学习方法能实现这样的完美准确性。这是毫无疑问的。
然而,不要高估我对机器学习的评价;它在研究中仍然非常有用且重要。如今,我看到很多社交媒体、新闻,甚至会议论文中出现了许多幼稚的错误——这些错误通常来自缺乏机器学习专业知识的人。他们只是随意尝试不同的想法。

多年前,文献中就提出了添加中间步骤的想法。例如,谷歌DeepMind的研究人员在2017年ACL会议上发表了一篇出色的论文。在他们的论文中,他们使用自然语言推理来解决数学问题。他们写道:“通过一系列小步骤推导最终答案。”随后,他们从零开始训练了一个序列模型。如果你了解通道的工作原理,就会发现这篇论文的惊人之处。他们还提出了时间旅行者的概念,知道如何采取不同的方法。

2021年,OpenAI团队发布了一个名为GSM8K的出色数据集,他们沿用了DeepMind在2017年提出的思路。在这个数据集中,每个问题都附有中间步骤作为解决方案,以及最终答案。该团队创建了一个令人印象深刻的数据集,并用它来微调GPT-3模型,显著提升了2017年谷歌DeepMind的工作。

同年,谷歌Brain(现为谷歌DeepMind的一部分)的研究团队发布了关于使用语言模型进行中间计算的草稿板的研究。他们在程序合成领域独立发现了类似的想法,因此使用了抽象符号而非自然语言。

许多人可能熟悉我们在链式思维提示方面的工作。“链式思维”(Chain-of-Thought,CoT)这个术语并不是我们发明的,而是一个常见的英语短语,意味着多步骤推理。在这项工作中,我们对包含中间步骤的提示进行了广泛评估,几乎在所有自然语言处理任务上都展示了惊人的结果。


总之,无论是训练、微调还是提示,当提供包含中间步骤的示例时,大型语言模型将生成同样包含中间步骤的响应。

考虑到中间步骤,我们必须问:在这些示例中引入推理策略是否有帮助?对于人类来说,当他们解决问题时,通常会有解决问题的策略。

这是我们团队在由易到难提示方面的研究。在这项工作中,我们通过分解实现了由易到难的泛化。

许多人可能熟悉Polya的著作《如何解题》,这是数学教育的经典之作。其中有一章讲述分解。如果深入到细节中,可能会失去大局观。现在,让我们看看分解所带来的不同。

考虑这个数学问题:“Elsa有3个苹果,Anna比Elsa多2个苹果。他们一共有多少个苹果?”关键在于我们首先建模如何拆分这个问题,然后逐一解决较小的部分。这就是为什么我将这两种模型称为处理由易到难的复杂问题。

这是一个简单的想法,但出人意料地有效。人类知道如何将复杂任务分解为更简单的任务。这是一个关于组合泛化的SCAN任务。给定自然语言命令,我们需要将其翻译成机器人可以执行的动作序列。通过使用由易到难的提示,我们仅用0.1%的演示示例就达到了99.7%的准确率。
你可能会想,为什么我选择这个任务。我是从今天在场的Xinyun那里了解到的。几年前,她开发了一种出色的方法来解决这个任务。当我看到时,我很惊讶,因为这对人类来说似乎如此简单。为什么对机器来说如此困难?最终,我们在大型语言模型上取得了进展。

另一个名为CFQ的任务,文本转代码,也涉及组合泛化。我不知道这里是否有人了解组合泛化的概念。大致而言,任务示例比训练示例或提示示例更复杂。对于文本转代码的问题,任务要求更长的代码片段。在这里,我们的操作稍微改变为动态由易到难的提示,并且在使用仅1%的数据时取得了良好的效果,远超文献中的结果。

我有两个孩子;我的女儿10岁,儿子7岁。当那篇论文发表时,我听到我女儿和我儿子之间有一个有趣的对话。女儿问弟弟:“17乘以3是多少?”他回答:“我不知道。”接着她问:“10乘以3是多少?”他回答:“30。”她继续问:“7乘以3是多少?”他回答:“21。”最后她问:“那么17乘以3是多少?”他猜:“31。”有趣的是,我女儿对我大喊:“爸爸,链式思维提示在我弟弟的脑子里也有效!”
现在,可能有人会问,为什么中间步骤是有帮助的。虽然这对人类来说似乎很自然,但我们在研究中需要更深入地思考。我们的大型语言模型仍然只是机器学习模型。它们为什么不理解?到底发生了什么?

我们与斯坦福大学的优秀科学家合作,在ICLR 2024上发表了研究。在这项工作中,我们进行了严格的数学分析。关键结果是:只要深度超过一个常数阈值(与输入无关),生成中间步骤的Transformer模型可以解决任何固有的串行问题。然而,如果模型直接生成答案,则要么需要巨大的深度来解决,要么根本无法解决该问题。

你可能会看到这一理论的许多实际应用。如果无法解决一个问题,可以考虑生成更多的中间步骤。此外,还可以调用外部工具,如搜索,引导这些中间步骤的生成。
在这个大型语言模型的课程,许多人讨论如何使用外部工具。考虑如何诊断大型语言模型的局限性是非常重要的。我最喜欢的活动之一就是找出我女儿能在几秒钟内解决的问题,而大型语言模型却无法做到。

到目前为止,我们讨论了如何使用示例来鼓励大型语言模型生成逐步推理。然而,也可以在不使用示例的情况下引发推理。

这里有一项令人惊叹的工作。当论文“让我们逐步思考”发布时,我最初以为这是个玩笑,但结果却非常启发人。给定一个问题,我们不需要任何示例;只需要说“让我们逐步思考”,模型就能生成推理步骤。

这种方法令人着迷,但通常情况下,zero-shot方法——即没有演示示例——的效果不如few-shot方法。

人们可能会想,我们能否找到一种保持zero-shot但表现显著更好的方法。这引出了另一项名为“将大型语言模型视为类比推理者”的研究。

在数学问题的类比推理背景下,可以参考Polya的经典著作《如何解题》。你应该问:“你知道相关的问题或方法或策略吗?”这最终会引导出从书中获得的见解。

Banach曾说:“终极的数学家是能够在类比之间看到类比的人。”

现在,给定一个简单的问题,可以采取不同的方法。通过调用一个相关问题,我们可以解决新的问题。即使问题看起来相同,相关的示例和知识也是有价值的。

我们发现,实际上,我们通过基准测试验证了效果,结果非常好。你可以看到最后一行是通过提示生成的类比推理器。当然,你可以自己优化这些提示,以获得更好的结果。
这里最重要的一点是,它的表现远远优于“逐步思考”策略。“逐步思考”在这里指的是zero-shot推理或思维链(CoT)。即便是这个方法,也优于我们很多的思维链模型。
我认为主要原因是,当你使用这种方法时,模型会自动为每个不同的问题生成相关的方程。

这个结果是在BIG-bench上获得的,表现非常出色。

还有另一个领域:竞赛编程。如果你对竞赛编程感兴趣,可以尝试这种方法。我们没有深入探讨的是扩展性问题。如果你能够通过网络搜索到所有相关问题及其知识,这对我们要解决的问题将非常有帮助。

关键思想是自适应地为每个给定问题生成相关示例和知识,而不是像手动链式思维提示那样依赖大量示例。

我们可以看到可以使用few-shot示例来演示逐步推理。是否可以在不使用任何提示(例如“让我们逐步思考”)的情况下触发逐步推理?
你可能会争辩说,所有模型都是这样工作的,你是正确的。这一概念涉及微调,即它们在训练数据中使用了许多示例。

我们发现答案是肯定的。这在我们最近的研究“没有提示的链式思维推理”中有详细说明。这意味着在没有提示的情况下——仅向模型提供问题,即使对于现有的大型语言模型。

让我们看一个例子:“我有3个苹果。我爸爸比我多2个苹果。我们一共有多少个苹果?”对于这个例子,方法很简单。在解码过程中,我们考虑所有可能的token。
这里列出了五个token。我们从前五个token开始,然后继续贪婪解码。第一个token是5,生成的结果是“5个苹果”。如果我们将第二个token视为“I”,那么第四个生成结果可能是“I有3个苹果。我爸爸比我多2个苹果,他有5个苹果。”这个结果确实是正确的。
有趣的是,我们并没有明确陈述推理(Reasoning),但如果从不同的token开始,模型仍然能够进行某种推理(Reasoning)。

另一个例子是:“尼古拉斯·凯奇是出生在偶数年还是奇数年?”第一次回答是“尼古拉斯·凯奇出生在奇数年。”那个“尼古拉斯”是第一个token。第二个回答说“偶数”,后面跟着句号,第三个是“奇数”,同样跟着句号。现在,我可能会说,如果尼古拉斯·凯奇知道的话,模型在回答中可以利用链式思维。
问题是如何找到这种推理。显然,你可以使用更长的句子。更长的句子意味着模型可以执行一些推理步骤。一个令人惊讶的方面是查看左侧token的概率。在这里的第一行中,“尼古拉斯·凯奇出生在奇数年”的概率相当低。然而,如果有推理路径,比如最后一个“凯奇出生在1964年,这是一个偶数年”,这里有一个推理过程,最终概率跳升至0.978。

这太令人惊讶了。它表明模型的校准效果很好。我对句子的概率感到非常惊讶。在那20个连续的偶数或奇数中,概率都非常低。

关键观察:预训练的大型语言模型在从前k个token开始的生成中显示出逐步推理的响应。在这里我们不需要使用任何提示。在逐步推理路径上,解码最终答案的置信度更高。

这里是贪婪解码和链式思维解码的比较。我们可以看到,链式思维解码的表现要好得多。到目前为止,有什么问题吗?


生成中间步骤是有帮助的——确实很有帮助——但在生成中间步骤而非直接答案时是否有任何问题?
我们必须始终记住,大型语言模型是生成下一个token的概率模型。无论我使用关键示例与否,它们都不是人类。请记住这一点。

大型语言模型在解码中做什么?它实际上是取给定问题的推理路径和最终答案的概率的最大值。然而,我们想要的是给定问题的最终答案的概率最大值。这是我们在机器学习中学到的。
这并不意味着推理路径不重要;只是意味着我们必须确保最终答案是正确的,然后再检查推理路径。它们并不对齐——这是两个不同的目标。

现在,让我们进一步探讨。给定问题的最终答案的概率——我们如何计算?我们应该对所有可能的推理路径进行求和。因此,总概率是根据我们所学得出的。对于一个数学问题,你可以找到不同的解决方案,这些解决方案在求和时会导致相同的答案。
那么,我们如何计算这个和?如果你在学习机器学习,你就会知道答案:采样。就是这么简单。

现在,这引出了我们的工作“自一致性”。许多人可能没有听说过自一致性。我的目标是阐明潜在的动机,以及我们如何从机器学习的基本原则来解决这个问题。

让我们看这个问题:给定一个数学问题,我们可以多次采样答案。最后,你会说出现次数最多的答案是18。然而,我要在这里警告:这并不是推理路径中出现次数最多的答案。它会选择出现次数最多的答案吗?这有着显著的区别。这里的推理路径是一个潜在变量。



第二个问题,通过让大型语言模型生成多个响应而不是采样,然后选择最常见的答案,是否有意义?答案是否定的。对于这两个答案,我们只需要遵循这个原则:给定问题,最终答案的概率的最大值。这就是你需要理解的自一致性。这是一个非常简单的原则,也是机器学习中的基本原则之一。如果我们对机器学习了解得更好,我们会将其视为最大边际推理(Inference)。

那么,自由形式的答案怎么样?这次是“通用自一致性”。这个想法有些不同但相关。给定问题“在哪里人们喝咖啡的量少于墨西哥?”如果你查看答案,最初的答案与其他答案不同。最常见的响应是日本、中国和印度。


接下来,我要谈论局限性。我想讨论的第一个局限性是“大型语言模型容易受到无关上下文的干扰。”

心理学研究表明,无关信息可以显著降低儿童和成人的问题解决准确性。我想检查这一观察是否适用于大型语言模型。

这些都是简单的问题。突出文本“玛利亚的月租是10美元”与原问题无关。你可以看到,之后模型产生了错误的解决方案。

有趣的是,如果我们添加一个提示,比如“忽略无关上下文”,模型会立即识别并进行修正。

然而,如果我们使无关上下文任意增大,恢复仍然具有挑战性。例如,我们可以添加无关句子,比如“天空是蓝色的,草是绿色的。”你可以让这个输入任意长,你会观察到所有大型语言模型的性能都有显著下降。

下一个局限性是大型语言模型尚不能自我纠正推理(Reasoning)。

让我们再次从一个数学问题开始。这个问题有点棘手。模型给出了错误的答案,当我们提示它“检查你之前的答案并找出问题”时,模型有趣地识别了错误并自行纠正。这看起来听起来很惊人,对吧?
然后我们看到另一个提示:“根据你发现的问题,改进你的答案。”最终答案是正确的。

然而,如果原始答案是正确的,而我们使用相同的提示,模型仍然可能出错。这就是问题所在。

总体而言,尽管允许大型语言模型回顾其生成的响应可以帮助纠正不准确,但也有可能将正确答案改为错误答案。

我们在GSM8K、CommonSenseQA和HotpotQA等基准上进行了广泛研究,发现自我纠正方法并没有带来改进。实际上,往往情况更糟。

你可能见过一些文献中的改进声明,声称这些改进源于推理(Reasoning)。然而,它们通常使用的是oracle答案。oracle意味着你只在答案错误时提示大型语言模型进行纠正。问题在于模型并不知道答案是正确还是错误。你告诉它,“好的,答案是错误的。请纠正。”

此外,还可以让多个大型语言模型互相辩论,直到达成一致或共识。我们也尝试了这种方法,但发现关键在于生成多少响应。例如,如果我们有三个大型语言模型,但并非所有模型都生成响应,那就是三个响应。如果让它们辩论,那么就会有九个响应。
我们用九个响应检查自一致性,看看会发生什么,发现这些方法无法超越自一致性。自一致性要简单得多;我们只需多次采样,然后选择最频繁的答案作为最终预测。

我们最后要学习的要点是,oracle反馈对于大型语言模型自我纠正是必需的。

这引出了我们的自调试工作。自调试自然利用单元测试作为oracle,这是我们编码问题的一部分。我们很早就开始这项工作,但没有继续后续研究。

最后,我想讨论前提的顺序在大型语言模型推理(Reasoning)中的重要性。

在我们使用arXiv或类似来源的问题时,人们报告的结果各不相同。例如,最近一个名为Reflection的模型显示出比GSM8K更好的结果。我对信任这些模型表示担忧。
如今,这些模型是用来自整个互联网的数据进行训练的,这导致了一些顺序问题。
我团队的任务之一是生成不同的评估任务以测试模型。在这里,我们进行了一个简单的实验。我们获取了一个原始的GSM8K问题,稍微重新排列了一下句子,然后观察模型是否仍能解决该问题。在原始问题中,主体在回家时丢失了10美元的纸币。我们将这句话移到最后,并记录发生了什么。我们调整了一些GSM8K问题,发现所有前沿大型语言模型的解题率下降了大约10个百分点。

这里是响应结果。你可以比较原始问题和重新排序的问题。模型基本上知道如何顺序解决问题,但无法前后跳转。

有人可能会认为这与某种语义理解有关,而不仅仅是推理(Reasoning)。接着,我们设计了另一个任务,称为逻辑推理(logical inference),这比数学问题更加纯粹。即使我们不使用真实的词语,也在这里利用随机token。给定规则和事实,模型的任务是针对查询提供推理。原始问题的规则按照推理过程中的使用顺序排列。然而,并非所有规则对某个查询都是必要的。

在另一种方法中,我们随机排列这些规则,仅保留与查询相关的规则。令人惊讶的是,我们观察到所有前沿大型语言模型的性能下降超过30个百分点。
根据我的个人经验,我认为在进行研究时设计实验至关重要。这与管理一个部门是相似的。

现在让我总结一下演讲内容。首先,我想强调生成中间步骤显著提高了大型语言模型的性能。你可以通过训练、微调或使用中间步骤进行提示,也可以应用零样本类比推理(Reasoning)或特殊解码技术,例如我今天展示的17种解码方式。此外,自一致性在逐步推理(Reasoning)中也大大增强,无论是来自微调模型还是微调本身。
还需要考虑许多局限性,例如无关上下文、自我纠正和前提顺序,这些都对推理性能至关重要。


在我演讲时,我常常问:接下来是什么?我们想要解决什么问题?我认为目前最紧迫的挑战是,在考虑通用人工智能(AGI)时定义正确的问题。关注点不应仅限于我们在AGI中能看到的内容,而应在于从基本原则出发,定义正确的问题,而不仅仅依赖于既定原则。在这方面,机器学习仍然至关重要。

论文集
摘要:本研究提出了一种新的方法来解决代数应用题,通过生成自然语言理由来引导程序归纳过程。该方法使用序列到序列模型将问题文本映射到解决方案程序,同时生成解释每个程序步骤的自然语言理由。研究者构建了一个包含100,000个人工注释的代数应用题数据集,用于训练和评估模型。实验结果表明,生成理由不仅提高了模型的可解释性,还显著提升了解题准确率。与仅生成程序的基线相比,该方法在测试集上将准确率提高了约10%。此外,研究还发现生成的理由质量与解题准确率呈正相关。这种将程序归纳与自然语言生成相结合的方法为提高AI系统在复杂推理(Reasoning)任务中的表现和可解释性提供了新的思路,对推动AI在教育和问题解决领域的应用具有重要意义。
摘要:本研究提出了一种新方法来提高大型语言模型在多步数学推理(Reasoning)任务中的表现。研究者首先构建了GSM8K数据集,包含8.5K高质量的小学数学应用题,用于诊断当前模型的不足并支持相关研究。研究发现即使是最大的Transformer模型在这个概念简单的问题分布上也无法达到高测试性能。为提高性能,研究者提出训练验证器来判断模型生成解答的正确性。在测试时,生成多个候选解答并选择验证器评分最高的一个。实验表明,验证器显著提高了模型在GSM8K上的表现。研究还提供了强有力的经验证据,表明与微调基线相比,验证器方法在增加数据时可以更有效地提升性能。这种方法为提高大型语言模型在复杂数学推理任务中的表现提供了新的思路,对推动语言模型在实际应用中的数学推理能力具有重要意义。
摘要:本研究提出了思维链提示(Chain-of-Thought Prompting)方法,通过生成一系列中间推理(Reasoning)步骤来显著提高大型语言模型的复杂推理能力。研究发现,在足够大的语言模型中,这种推理能力可以通过简单的思维链示例提示自然地产生。实验在三个大型语言模型上进行,结果表明思维链提示在算术、常识和符号推理等多种任务中都能提高模型性能。其中一些性能提升尤为显著,例如,仅使用8个思维链示例对540B参数的语言模型进行提示,就在GSM8K数学应用题基准测试中达到了最先进的准确率,甚至超过了经过微调和验证器的GPT-3模型。这项研究为提高大型语言模型的推理能力提供了一种简单而有效的方法,对推动语言模型在复杂推理任务中的应用具有重要意义。
摘要:本研究提出了一种新的解码策略自一致性(Self-Consistency),用于替代思维链提示中使用的简单贪婪解码。该方法首先采样多个不同的推理(Reasoning)路径,而不是仅选择贪婪路径,然后通过边缘化采样的推理路径来选择最一致的答案。自一致性利用了复杂推理问题通常有多种思考方式导向唯一正确答案的直觉。研究在一系列流行的算术和常识推理基准测试中进行了广泛的实证评估,结果表明自一致性显著提高了思维链提示的性能,包括GSM8K(提升17.9%)、SVAMP(提升11.0%)、AQuA(提升12.2%)、StrategyQA(提升6.4%)和ARC-challenge(提升3.9%)。这种方法为提高大型语言模型在复杂推理任务中的表现提供了一种有效的策略,对推动语言模型在实际应用中的推理能力具有重要意义。
摘要:本研究提出了一种新的提示策略最少到最多提示(Least-to-Most Prompting),旨在解决大型语言模型(LLMs)在复杂推理(Reasoning)任务中的易到难泛化问题。该方法的核心思想是将复杂问题分解为一系列简单子问题,然后按顺序解决这些子问题,每个子问题的解决都借助于先前已解决子问题的答案。实验结果表明,在符号操作、组合泛化和数学推理等任务中,最少到最多提示能够泛化到比提示中所见更困难的问题。特别值得注意的是,使用GPT-3的code-davinci-002模型和最少到最多提示,仅需14个示例就能在任何分割(包括长度分割)的SCAN组合泛化基准测试中达到至少99%的准确率,而思维链提示(Chain-of-Thought Prompting)仅达到16%的准确率。这一发现尤为重要,因为文献中专门用于解决SCAN的神经符号模型需要在包含超过15,000个示例的整个训练集上进行训练。这项研究为解决LLMs在复杂推理任务中的易到难泛化问题提供了一种新的有效方法,对提高LLMs在实际应用中的推理能力具有重要意义。
摘要:本研究针对大型语言模型(LLMs)在更现实的语义解析任务中面临的组合泛化挑战,提出了一种基于最少到最多提示(least-to-most prompting)的新方法。该方法首先通过基于提示的句法解析来分解问题,然后利用这种分解来选择适当的示例并顺序生成语义解析。研究在两个基准数据集CFQ和COGS上进行了实验,结果表明该方法在CFQ上达到了新的最优性能,同时仅使用了传统方法1%的训练数据。具体而言,该方法通过提示实现了问题的自动分解,这比固定的基于规则的系统更具通用性。研究还发现,该方法可以成功应用于COGS等输出不类似SQL的任务。此外,与需要微调的传统方法不同,该方法仅依赖于大型语言模型的提示,无需任何微调。这项研究为解决语义解析中的组合泛化问题提供了一种灵活且通用的方法,有望在知识密集型应用等多个领域产生直接影响。
摘要:本研究探讨了大型语言模型(LLMs)在处理包含无关信息的问题时的表现。研究者提出了一个新的基准数据集Grade-School Math with Irrelevant Context(GSM-IC),该数据集在原有的算术推理(Reasoning)问题中添加了无关信息。实验结果表明,当问题描述中包含无关信息时,LLMs的性能显著下降。研究发现,所有被测试的提示技术都对无关信息敏感,即使在原始问题可以被基线提示正确解决的情况下,添加少量无关信息后,不到18%的问题能够被一致地解决。为缓解这一问题,研究者提出了几种改进方法:使用自一致性解码(self-consistency decoding)、在示例中添加无关信息,以及在提示中添加忽略无关信息的指令。这些方法都能在一定程度上提高模型在GSM-IC上的表现。此外,研究还分析了影响模型对无关信息敏感度的不同因素,发现无关信息中的数字变化对模型性能影响不大,而与原问题描述的词汇重叠程度则影响显著。这项研究为提高LLMs在处理真实世界任务时的鲁棒性提供了重要见解。
摘要:本研究提出了自我调试(Self-Debugging)方法,通过少样本示范教导大型语言模型(LLMs)调试自身生成的程序。该方法使LLMs能够执行橡皮鸭调试(Rubber Duck Debugging),即在没有人工反馈或错误信息的情况下,通过检查执行结果并用自然语言解释代码来识别错误。自我调试在多个代码生成基准测试中取得了最先进的性能,包括Spider数据集(文本到SQL生成)、TransCoder(C++到Python翻译)和MBPP(文本到Python生成)。在Spider基准测试中,自我调试配合代码解释consistently提高了基线2-3%,并在最难级别的问题上提高了9%的预测准确率。在TransCoder和MBPP上,自我调试将基线准确率提高了最多12%。此外,通过利用反馈信息和重用失败的预测,自我调试显著提高了样本效率,能够匹配或超越生成10倍以上候选程序的基线模型。这项研究为提高LLMs的编码性能提供了新的思路,强调了通过教导模型迭代调试自身预测,而非要求模型一次性生成正确代码的重要性。
摘要:本研究提出了一种新的提示方法类比提示(Analogical Prompting),旨在自动引导大型语言模型的推理(Reasoning)过程。该方法受人类类比推理启发,让语言模型在解决问题前先自行生成相关示例或知识。这种方法具有几个优势:无需标注或检索示例,提供了通用性和便利性;能够为每个问题定制生成示例和知识,提供了适应性。实验结果表明,该方法在多种推理任务中优于零样本思维链(0-shot CoT)和手动少样本思维链(manual few-shot CoT),包括GSM8K和MATH的数学问题解决、Codeforces的代码生成以及BIG-Bench中的其他推理任务。研究发现类比提示在这些任务中平均提高了5%的准确率。这项研究为提高大型语言模型的推理能力提供了一种新的方法,对推动语言模型在复杂推理任务中的应用具有重要意义。
摘要:本研究深入探讨了大型语言模型(LLMs)在推理(Reasoning)任务中自我纠正能力的局限性。研究聚焦于内在自我纠正,即LLM仅依靠其固有能力而非外部反馈来修正初始响应。通过在多个推理任务上进行实验,研究发现LLMs在没有外部反馈的情况下难以有效自我纠正,有时甚至会导致性能下降。研究者提出了多种自我纠正策略,包括简单重复、多步推理和多实例对比等,但这些方法均未能显著提高模型的推理准确性。此外,研究还发现LLMs在评估自身响应正确性方面存在困难,这进一步限制了其自我纠正能力。基于这些发现,研究者建议在实际应用中谨慎使用自我纠正技术,并提出了未来研究方向,如结合高质量外部反馈和探索混合方法来增强LLMs的自我纠正能力。这项研究为理解和改进LLMs的推理能力提供了重要见解,对推动大型语言模型在实际应用中的可靠性和准确性具有重要意义。
摘要:本研究深入探讨了大型语言模型(LLMs)在推理(Reasoning)任务中自我纠正能力的局限性。研究聚焦于内在自我纠正,即LLM仅依靠其固有能力而非外部反馈来修正初始响应。通过对多个推理任务的实验,研究发现LLMs在没有外部反馈的情况下难以有效自我纠正,有时甚至会导致性能下降。研究者提出了多种自我纠正策略,包括简单重复、多步推理和多实例对比等,但这些方法均未能显著提高模型的推理准确性。此外,研究还发现LLMs在评估自身响应正确性方面存在困难,这进一步限制了其自我纠正能力。基于这些发现,研究者建议在实际应用中谨慎使用自我纠正技术,并提出了未来研究方向,如结合高质量外部反馈和探索混合方法来增强LLMs的自我纠正能力。这项研究为理解和改进LLMs的推理能力提供了重要见解,对推动大型语言模型在实际应用中的可靠性和准确性具有重要意义。
摘要:本研究发现了大型语言模型(LLMs)在推理(Reasoning)任务中的一个重要特性:前提顺序对推理性能有显著影响。研究者通过在三个推理数据集上进行实验,发现改变前提顺序可以显著提高LLMs的推理准确率,平均提升幅度达到12.8%。研究还揭示了最优前提顺序与人类认知过程的相似性,即先呈现更一般的信息,再呈现更具体的信息。基于这一发现,研究者提出了一种新的推理框架REORDER,通过动态重排前提顺序来优化LLMs的推理性能。实验结果表明,REORDER在多个基准测试中均优于现有方法,为提高LLMs的推理能力提供了新的思路。这项研究不仅深化了我们对LLMs推理机制的理解,也为设计更高效的推理系统提供了实用指导。
摘要:本研究提出了一种新方法,通过改变解码过程而非复杂的提示工程来引导大型语言模型(LLMs)进行思维链推理(Chain-of-Thought Reasoning)。研究发现,通过探索top-k替代词而非传统的贪婪解码,可以在预训练的LLMs中自然地激发出思维链推理路径。研究者引入了置信度评分来识别可靠的推理(Reasoning)过程,并在多个推理任务上进行了实验。结果表明,这种思维链解码方法不仅优于传统的贪婪解码,还在某些情况下接近或匹配了复杂提示方法的效果,而无需任何提示工程。研究还发现,思维链推理的出现与模型对答案的置信度相关,且在模型常见的任务中更为普遍。这一发现揭示了LLMs内在的推理能力,为理解和利用预训练LLMs的推理能力提供了新的视角,同时为探索这些模型的思考和问题解决过程提供了更简单的方法。
---【本文完】---
更多交流,可加本人微信
(请附中文姓名/公司/关注领域)





