好的,谢谢。嗯,好,那我首先做一些介绍,然后我们开始这门课的实际内容。好的,那么首先,我叫董松(Dong Song)。我是加州大学伯克利分校的计算机科学教授,同时也是校园内一个名为“负责任去中心化智能中心”(Center on Responsible Decentralized Intelligence)的跨校区联合主任。
我是这门课的主讲教师,我们还有一位客座合授讲师辛云(Xinyun Chen)。她来自谷歌,也是伯克利的校友,更是我的前学生。我们一起教授这门课。此外,我们还有优秀的助教亚历克斯(Alex)和思云(Siyun),以及出色的阅卷人塔拉(Tara)和阿什温(Ashwin)。嗯,好。呃,所以这就是本学期将与你们一起工作的教学团队。
太好了。看来大家都到齐了。大家一定都目睹了大语言模型令人兴奋的增长,其发展速度简直惊人。然而,这些大型语言模型的运作方式相当简单:它们接收文本输入并产生文本输出。
那么,我们在本课程中将探讨的是下一个前沿领域:大语言模型智能体(Large Language Model Agents)。在这里,我们不仅仅将文本作为输入并产生输出,而是利用大语言模型作为智能体推理和规划的核心大脑。
这使得智能体能够与外部环境进行交互:观察环境并在环境中采取行动。此外,智能体会使用外部工具、数据库和知识库等进行检索,以协助完成这些任务。
大语言模型丰富的能力使得这类智能体非常灵活,它们可以在不同的环境中轻松运作,而无需进行大量的特定训练。这些大语言模型智能体可以与各种类型的环境进行交互。
例如,包括通过不同的在线API浏览网页;它们甚至可以嵌入到机器人中,在物理世界中运作。而且,它们可以通过不同类型的输入来感知环境,即使在多模态设置下也是如此,包括各种感官输入。
在这些多样化的环境中采取行动,并通过与复杂且多样化环境的交互,它们可以更新记忆;学习如何使用工具;与人互动。通过这些互动,它们还能获得现实世界的“接地”(grounding)能力。
这些智能体不仅与环境交互,还可以通过多智能体互动与协作与其他智能体进行交互,包括人类在内。这种多智能体的协作可以帮助智能体共同解决更复杂的任务。
那么,为什么我们的“智能体”是下一个前沿?为什么我们需要用智能体框架来赋能我们的人工智能手臂呢?原因有很多。解决现实世界的问题从来不是仅仅通过“文本输入产生文本输出”就能一次性完成的。
这通常涉及一个试错的过程,而利用外部工具和从外部知识中检索信息可以帮助扩展大语言模型的能力。更重要的是,这种动态的智能体流程(agentic flow)和智能体工作流可以促进复杂任务的解决。
通过实现任务分解、将子任务分配给专门模块、项目协作中的分工,我们可以看到多智能体生成有助于激发更好的回应。尽管智能体的发展相对较新,但我们已经看到它在不同应用领域带来了变革性的影响,范围涵盖教育、法律、金融、医疗保健、网络安全等。
developments 确实令人兴奋且进步迅速。在线上有许多针对不同智能体基准测试的排行榜,你可以看到所有这些不同智能体框架的快速改进。
总体而言,为了更好地实现大语言模型智能体的部署,我们仍有许多关键挑战需要解决。首先,我们需要提高智能体的推理和规划能力。大语言模型智能体在执行端到端的复杂任务时往往会出现错误,因此提高推理和规划能力至关重要。
此外,还需要改进这些大语言模型智能体的具身性(embodiment)以及从环境反馈中学习的能力。目前,大语言模型智能体在长周期任务中从错误恢复的效率仍然不高。
我们需要进一步开发方法和能力,以实现这些大语言模型智能体的持续学习和自我改进;同时提升其多模态理解、接地(grounding)和世界模型的能力。
正如我提到的,多智能体确实可以帮助提供任务更好的解决方案,而发展“心智理论”(Theory of Mind)也有助于多智能体的更好发展。
安全和隐私问题对于智能体来说也非常重要。大语言模型容易受到对抗性攻击,可能会发出有害信息或泄露私人数据等。解决这些挑战对于在现实世界中安全地部署大语言模型智能体至关重要。
此外,实现人机交互与伦理问题也极为重要:如何有效控制我们的智能体行为,并设计人类与智能体之间的交互模式,以最好地使我们的智能体服务于人类需求,这也是非常关键的。
为了帮助学生更好地学习并开发解决这些挑战的方法,本课程被设计为涵盖广泛的主题谱系。实际上,课程涵盖了智能体框架的不同层面以及各个应用领域。
首先在课堂上,我们将涵盖关键模型能力,包括推理、规划和多模态理解。我们还将介绍流行的现实世界人工智能智能体框架,使学生能够学习如何更好地设计智能体应用并轻松使用各种智能体流程。
这将帮助学生学会利用我们的智能体框架进行工作流设计,使用检索增强生成(RAG)以及多智能体系统。
我们还将涵盖许多令人兴奋的应用领域,包括软件代码开发、工作流自动化、多模态应用和企业级应用。最后,我们还将涵盖关于智能体安全和伦理的重要话题。
为了覆盖如此广泛的主题,我们组建了一支由客座演讲者和研究人员组成的杰出团队来讲解这些内容。因此,这门课将由我和辛云主持,我们还有这支令人惊叹的客座演讲者团队来帮助在课堂上覆盖这些重要主题。
在讲座开始之前,我想问大家一个问题:你对人工智能有什么期望?请给我几秒钟时间思考一下。
我可以想象出许多不同的答案,比如解决人类无法解决的最难数学问题,例如连陶哲轩(Terence Tao)都无法解决的问题。或者发现新的……
科学理论,或者甚至说人工智能(AI)。嗯,我的背景是机器学习。我不知道在当下,研究机器学习的这些人是否接近目标?因为自从Transformer出现后,复杂度是OED(注:此处可能为口误或特定术语),对吧?作为一名机器学习从业者,我对AI其实没什么期待。我认为AI应该像人类通常做的那样,仅从少量示例中学习。在过去的几十年里,机器学习社区为了开发数据高效的方法做出了巨大努力,比如半监督学习、主动学习、核机器等等。
如果你看过去十年的报纸,人们总是对论文中那0.1或0.2点的提升感到兴奋。但在实践中,我从未见过真正数据高效的方法。我希望看到这种范式失败。那个非常棒的范式——即当下的机器学习,我二十年前就开始从事这一领域了。在目睹了其局限性后,实际上这激励我去思考不同的问题:机器学习中缺失了什么?
我尝试了几年,最终找到了答案:推理。在当下,特别是对于今天课程中的各位来说,这个答案似乎显而易见,对吧?因为这是一堂关于推理的课。人类之所以能从少量示例中学习,是因为人类能够推理,而不是因为数据统计。听起来很简单。让我们从一个玩具问题开始。在我的研究中,我通常更喜欢非常简单的一个问题,但它包含所有细节和具有挑战性的地方。
这个玩具问题叫做“首尾字母拼接”。如果你熟悉神经符号文献,你会发现类似的问题。对于这个问题,给定一个人名作为输入,输出将是名字首字母和姓氏最后一个字母的拼接。例如Elon Musk(埃隆·马斯克)。啊,Elon的尾字母是N,Musk的尾字母是K,所以输出是NK。哎,这是如此简单。
如果你几年前遇到这个问题,你可能会尝试用机器学习模型来解决它。例如,你可以使用Transformer模型。一个是解码器,另一个是编码器;或者说一个是编码器,另一个是解码器。然后你会发现,好吧,你可能需要成百上千的标注样本来训练模型,最终得到的准确率可能是85%、90%或者其他数值。
现在关于机器学习方法有趣的是,对于这样一个简单的任务——我是说对人类来说很简单——如果该方法需要大量的标注数据来学习,你会称其为AI吗?AI意味着人工智能。正如我所想,一个智能模型应该能够仅使用一两个示例就学会这个任务。
现在让我们看看如何使用大型语言模型(LLMs)来解决这个问题。我想大多数人知道大型语言模型,但Tan教授让我解释一下LM是什么。好的,LM是训练用来预测下一个词的Transformer模型。例如,给定文本“AI is the future”(人工智能是未来)。我们将“future”掩码掉,只使用前面的部分作为输入。
那个模型会预测下一个词是什么。如果预测的不是“future”这个词,我们需要调整参数以使其产生正确的结果。你提到了一件事叫做反向传播(back propagation)。当然,是的,你可以用许多句子来训练你的模型。例如,你可以使用互联网上的所有文本。
如果你不想深入细节,可以简单地将训练LM想象为训练鹦鹉模仿人类语言。实际上我发过这条推文(tweet)。有个人问我,他说他对训练模型非常严厉/执着。他做得很好。嗯,一旦我们训练好这个模型,好吧……然后我们可以模仿训练过程,因为训练是关于创建那个程序的。
我们可以使用任何内容作为输入,并查看输出是什么。模型只是预测下一个token(词元),然后你可以将生成的token作为输入,并使用它来预测再下一个token。这就是从LLM获取答案的方式。
对于这个问题,我们可以简单地将所有已有的示例拼接在一起作为输入,并加上来自Obama(奥巴马)的测试示例。我们可以尝试使用任何LM来看看会发生什么,可能你会在这里运行它。结果显示为“CK”。当然这是不正确的,对吧?因为K是Brad的尾字母(注:此处原文可能有误或指代前文未提及的例子),而A是Obama的首字母(注:原文逻辑混乱,通常尾字母拼接应为O和B等,但此处按原意翻译)。输出应该是AK。所以它是错的,对吧?
这个问题被称为“少样本提示”(few-shot prompting)。它只是机器学习过程的微型版本。与其训练模型,我们只是将示例作为输入。这就是唯一的区别。在当下,我们知道如何修复这种提示思路。我们只需要在答案之前添加推理过程即可。
就像我们在上面显式地添加了这个过程:Elm的尾字母是N,Mask(注:原文可能指Musk或其他)的尾字母是K,拼接NK称为NK。这就叫推理过程。同样对于Bill Gates(比尔·盖茨)。现在我们将此作为新输入,你会看到,好吧,我们从大型语言模型得到了完美的响应。
就像人类一样,一个演示就足以获得100%的准确率。这正是我所寻找的。我们无法想象任何机器学习方法能在此实现如此完美的生成。绝无可能。但顺便说一句,不要高估我对机器学习的评论。机器学习对于进行AI研究来说仍然非常强大和重要。在当下,我在社交媒体新闻甚至会议论文中看到了许多天真的错误。
所有这些天真的错误,大多来自那些没有机器学习专业知识的人。他们只是随机产生不同的想法。有趣的是,你知道这种添加中间步骤的想法早在多年前就在文献中提出了过。是的,嗯,这是一篇令人惊叹的论文……我们知道由Google DeepMind的研究人员发表,收录于2017年的ACL会议。
在他们的论文中,他们使用自然语言生成来解决数学问题。在他们的工作中,甚至展示了通过一系列小步骤推导出最终答案的过程,然后从头训练了一个7亿参数的模型。如果你知道Chen Long(陈隆?注:可能指代某位研究者或口误)的工作,你会对这篇论文感到惊讶。对吧?作者们就像时间旅行者一样。他们知道如何采用不同的方法。
在2021年,Open AI的一个团队发布了一个令人惊叹的数据集,称为GSM8K(注:原文为GSMQA,通常指代该数据集)。他们遵循了2017年DeepMind论文中的想法。在这个数据集中,每个问题后面都跟着作为解决方案的中间步骤以及最终答案。这个团队创建了这样一个令人惊叹的数据集,并使用了他们微调过的T5模型(注:原文为TP three,可能指T5或PaLM等)。他们通过启动……
2017年,甚至在同年即2021年,Google Brain(现属Google DeepMind)的一组研究人员发表了一篇题为《展示你的工作:大语言模型中的中间计算策略》的论文。他们独立发现了相似的理念,但应用于程序合成领域,因此这里使用了抽象符号而非自然语言。许多人可能知道我们的“思维链提示”(Chain of Thought prompting),实际上,“思维链”并非我们发明的术语,而是一个常见的英语短语,意为多步推理。在这项工作中,我们从使用单个步骤开始进行了广泛评估,并在几乎所有NLP任务上展示了惊人的结果。
让我们把这些论文放在一起看:2017年,我们发表了一篇关于通过中间步骤进行训练的文章;2021年至2022年间,有多篇关于使用中间步骤微调语言模型以及通过提示进行推理的文章。我不禁要问:哪一部分更重要?你可以看到,无论是训练、微调还是提示模型,其实并不重要。真正重要的是中间步骤,这才是关键。因此总结如下:无论采用训练、微调还是提示方法,当提供包含中间步骤的示例时,语言模型也会生成包含中间步骤的回答。
鉴于这些中间步骤,我们可以问一个问题:在示例中引入推理策略是否有帮助?对于人类而言,解决问题时通常会有相应的解决策略。因此,这里有一项来自我们团队的突出工作:通过分解实现从简单到复杂的泛化。许多人可能看过波利亚的经典数学教育著作《怎样解题》,其中有一章专门讨论分解问题。如果直接陷入细节,你可能会迷失方向。那么,分解带来的区别是什么?
以这道数学题为例:Elsa有三个苹果,Anna比Elsa多两个苹果。他们一共有多少个苹果?顺便提一下,本次演讲中的数学内容保持在基础水平。每次我做报告前,我女儿也会听,她意识到自己能听懂,她现在五年级了。我们首先向大语言模型展示如何将问题分解为子问题,然后逐一解决。这就是为什么从最少到最多、从最简单到最复杂的问题都能处理的原因。这是一个非常简单但出乎意料强大的想法。
让我们像人类一样,将复杂任务分解为更简单的子任务。这是一个用于组合泛化的扫描任务:给定自然语言指令,我们需要将其翻译为一系列可由机器人执行的动作。如果使用最少的提示示例,我们达到了99.7%的准确率,仅使用了0.1%的演示样本。我选择这个任务是因为Xinbin(她今天也在场)多年前发明了一种解决此任务的优美方法。当我看到它时,我很惊讶:这对人类来说如此直白,为何对机器却如此困难?
这是另一个将代码用于组合生成任务的例子。我不确定是否有人了解“组合泛化”的概念:大致来说,测试示例比训练或提示示例更难。例如在文本到代码问题中,我们需要较长的代码片段。我们的方法略有不同,称为动态列表模式提示(dynamic list mode prompting),仅使用一个人工数据就取得了远超文献中单一架构设计训练结果的性能,而后者使用了整个训练数据集。目前为止有什么问题吗?如果没有,我将进入下一部分。
这部分大家可能比较熟悉。我有两个孩子:女儿十岁,儿子七岁。当“思维链提示”论文发表时,我听到了一段有趣的对话:女儿问弟弟:“17乘以3等于多少?”弟弟说不知道。于是她问:“10乘3是多少?三十。”“7乘3是多少?”“二十一。”那么17乘3呢?弟弟说:“哦,我知道,五十一!”有趣的是,女儿告诉我:“爸爸,思维链提示在我弟弟的脑海里也起作用了。”
你可能会问:为什么中间步骤如此有帮助?这对人类来说很自然,但作为研究者,我们需要深入探究。今年我们发表了一项工作,我与斯坦福大学的Sylvain Arlet合作,对大语言模型进行了严格的数学分析。关键结果是:Transformer生成中间步骤可以解决任何本质上具有串行特征的问题,只要存在常数阈值的步数。我必须强调是“常数”,这意味着与输入无关。相反,如果Transformer直接生成答案,要么需要巨大的深度才能解决,要么根本无法解决。
这一理论有许多实际启示:如果你无法解决问题,可以考虑生成更多的中间推理步骤;或者调用外部工具(如搜索)来辅助这些步骤。在这门LLM智能体课程中,许多人讨论了如何使用外部工具。你也可以思考如何诊断语言模型的失败和局限性。我的一大乐趣是找到那些我女儿能在科学问题上解决,但大语言模型却失败的问题。
到目前为止,我已经讲述了如何利用示例来触发语言模型生成逐步推理。那么,是否可能在不使用自然语言的情况下触发这种推理呢?这是一项令人惊叹的工作。起初我认为这是个玩笑,但后来发现并非如此,并深受启发。这项工作被称为“让我们思考”(Let's Think),它展示了即使不使用语言,模型内部也能进行类似的推理过程。
思考步骤。所以,针对这个问题,我们不需要任何示例。只需要看到“让我们一步步思考”。模型可以生成业务任务。是的,这真的很酷。但通常你知道的,零样本方法,我的意思是,零样本没有演示示例。它比少样本更差。所以,我们可能会想,如果我们有一种方法仍然简短,但能做得好得多。
这项工作是关于将语言模型作为分析推理器。再次提到那本美丽的书《如何解题》及其背景知识。书中说,如何使用分析推理来解决数学问题。我们将看到一个新问题。首先问你的问题:你知道相关的问题、方法或策略吗?是的。所以在我的演讲之后,你可能会找到一门学科来阅读并撰写另一篇论文。
我真的很喜欢巴纳德的代码。如果你开始学习函数分析,你会知道巴纳德的定理。我对最后一句话感到惊叹:终极数学家是那些能在类比之间看到类比的的人。当然,我应该加一句话让你知道我们距离通用人工智能还有多远。
给定这个简单的问题,你可以看到“让我们一步步思考”。但现在我看到一种不同的方式:调用相关问题然后解决它。你会发现实际上我们调用了相关示例,知识就在这里。这些问题完全相同,但很有用。这太神奇了。我们发现这在基准测试中效果很好。
你可以看到最后一行是通过类比推理提示实现的。当然,你自己可以优化提示以获得更好的结果。最重要的是它比仅仅“一步步思考”要好得多。“一步步思考”在这里意味着零样本、无提示。甚至这种方法优于手动搜索。
我认为主要原因是我们使用这种方法,模型自动生成相关问题以解决问题。这是在大型基准上的结果,取得了很好的性能。为什么是Codeforces?哎呀,竞技编程。如果你对竞技编程感兴趣,可以尝试这种方法。
我们这里没有做的是扩展性。你甚至可以搜索网络,找到所有相关问题、知识来解决你想要解决的问题。关键思想是直接为每个给定问题生成相关示例和知识,而不是使用大量示例作为手动通用提示。
现在我们可以看到,我们可以用少样本示例向模型展示如何一步步推理。什么可以在不使用任何示例的情况下进行零样本推理?只需看到“一些步骤”。现在我可以问另一个问题:是否可能在不使用任何提示的情况下触发一步步推理?
你可以说,班级里的所有模型都是这样吗?你说得对。数据经过微调或类似处理。这意味着它们已经在训练或调整的数据混合中使用了大量示例。所以我们发现答案是肯定的。
我们的愿景工作是链式思维推理,无需提示。没有看到任何东西,只是给模型问题,即使是预训练的语言模型也是如此。让我们看一个例子:我有三个苹果。我爸爸比我多两个苹果。我们总共有多少个苹果?
对于这个例子,我们看到的方法非常简单。在解码的第一步,我们查看所有可能的令牌。这里列出了五个令牌。我们从前四个令牌开始然后继续贪婪解码。第一个是“五苹果”。
如果你使用名为cancel的工具,第四代将是:我有三个苹果,我爸爸多两个给我,所以他五个。是的,正确。所以这是推理吗?我们没有在这里看到任何关于推理的内容,但如果我们从不同的令牌开始,模型可以进行一些推理。
另一个例子:尼古拉斯·凯奇出生在偶数年还是奇数年?第一个说“核页面是诗歌在顺序年份”,那是第一个令牌;第二个是偶数然后句号。第三个是奇数然后句号。
现在可能说,如果实例中模型可以在他们的回应中有链式思维,他们可能是家庭资助的。我可以说你可以取更长的句子。较长的句子意味着模型可以进行一些阅读步骤。
这很奇怪,要看分析器令牌的网络概率。如果你看第一行的概率,“尼古拉斯·凯奇出生在旧年”,概率相当低。然而,如果我们看最近的过程如最后一个,“凯蒂出生于1964年且是偶数年”。有一个最近的进程,然后概率最终跳到0.998。这太神奇了,对吧?似乎模型校准得非常好。
当我看到那些概率时真的很惊讶。虽然像20岁,如果没有人说偶数或奇数,那么他们的特权真的很低。关键观察是预训练的语言模型具有带有逐步推理和多代生成的响应,从top-k令牌开始。
我们不需要在这里使用任何提示。这是不必要的。当存在逐步推理路径时,解码最终答案的置信度更高。所以这里是贪婪解码和链式思维解码之间的比较。我们可以看到链式思维解码表现好得多。
到目前为止,有什么问题吗?现在让我们进入下一个主题。生成中间步骤是有帮助的,甚至真的很有帮助。但是对生成图像步骤而不是直接答案有任何担忧吗?
哎呀,所以这是个啊,我觉得这是很重要。我们需要始终记住语言模型是生成下一个令牌概率模型。它们不是人类。无论我是否使用我的孩子的示例,请记住这一点。
所以它是概率模型。这就是它在解码时所做的吗?实际上是对给定问题的推理路径和最终答案的概率取最大值。然而,我们想要的是给定问题下最终答案的最大概率值,这就是我们在机器学习中学习到的。
这并不意味着推理路径不重要。但只是最终答案,我们必须确保最终答案是
正确,然后查看推理路径。它们并不一致,对吧?这是两个不同的目标。好的,现在让我们再深入一步。如何计算给定问题下最终答案的概率?我们应该对所有可能的推理路径进行求和,这就是计算方法。这些概率是从我们的课程中学习到的吗?还是通过其他方式计算出来的呢?给定一个数学问题,你可以找到不同的解决方案,这些方案最终导向相同的答案。是的,当你在这里进行求和时……那么,如何计算这个总和呢?如果你学过机器学习,你就知道答案了:采样。很简单吧。
接下来介绍我们的一项工作——自洽性(Self-Consistency)。可能很多人对“自我简洁”这个词不太熟悉,但我希望在这里让大家看到其背后的动机:我们是如何从机器学习的第一性原理出发来解决这个问题的。让我们看这里的问题。给定这个数学问题,我们可以多次采样答案。再次强调,最后你会发现,出现频率最高的答案是18。这里我们要提醒的是:我们选择的不是最常见的推理路径,而是最常见答案。这是一个巨大的区别。过去的做法……这个想法非常简单。通过使用自洽性方法,我们简单地超越了当时文献中的许多结果。
现在你可以去研究一下,你会明白的:这真的主要关乎你的想法。你不需要知道很多复杂的东西。当然,正如我们对自洽性的解释所示,它关乎概率和采样。因此可以想象:结果越一致,崩溃的可能性就越小(注:此处原文crash可能指超越或击败,结合语境理解为性能提升)。当你查看这里的曲线时,如果一致性超过80%,准确率就接近100%。这是一个很好的观点,Trevor。好的。所以当语言模型直接输出答案而不包含中间步骤时,我们使用多次采样并选择最常见的答案。还有吗?我们来给他介绍一下。是的,好的。
现在就是一个token的问题了。这已经涉及到了隐私方面的问题。好的。对于第二个问题,通过让大语言模型生成多个响应来改变自洽性方法,而不是多次采样然后选择最常见的答案。这说得通吗?是的/不(原文有歧义,结合下文理解为否定或澄清)。好的,是的,这是已知的。对于这两个答案,我们都遵循这一原则:在给定问题的情况下寻找概率最大的答案(arg max probability)。这就是你需要理解自洽性的全部内容。这是一个非常、非常简单的基本原则,也是机器学习中最早的原则之一。如果你知道这一点……这涉及边际推断(marginal inference)。
还有一个问题:如果是自由格式的答案呢?你应该寻找更通用的自洽性。这里的想法略有不同,但关系如我所列出的那样。给定这个问题:“人们在哪里喝咖啡的量比墨西哥少?”如果你看答案,每个答案都与其他不同,但最常见的回答有两个:日本、中国和印度。有问题吗?如果没有,我将进入下一节。好的。现在,是的——自洽性:多次采样你的答案,然后选择最常见的答案作为输出。接下来我担心的是局限性。我要谈的第一个局限是:语言模型很容易被无关上下文分散注意力。
从心理学研究中我们知道,无关信息可能会显著降低儿童甚至成年人的问题解决准确率。我们想检查这一观察结果是否适用于语言模型。所以这里有一个小问题,高亮文本是手动添加的。“玛丽被误导了,那是十美元。”这与已经存在的问题无关。但我看到模型在这里给出了一个错误的解决方案。有趣的是,如果我们添加提示“忽略无关上下文”,模型会立即注意到这一点并做出纠正。
但是,如果我们将问题或事件上下文的选项变得很大,很难让性能恢复回来。即使我们只是简单地添加像“天空是蓝色的”或“草是绿色的”这样的无关句子,或者一些废话。你可以让输入选项变得很长。你会看到所有语言模型的性能都会显著下降。我要谈的下一个局限是:语言模型还不能自我纠正推理过程。让我们从一个数学游戏问题开始。实际上,这个问题有点棘手。如果你看……你可以看到模型给出了一个错误的答案。然后我们用提示语“回顾你之前的答案并找出问题”来引导模型。
有趣的是,在回顾之后,模型会识别出错误并纠正答案。这看起来和听起来都很棒,对吧?然后我们看到了另一个提示:“基于你发现的问题,改进你的答案。”这里的最终答案是正确的。然而,如果原始答案是正确的,使用相同的提示语,模型可能会犯错。这就是问题所在。因此,总体而言,允许人工智能审查其生成的响应可以帮助纠正不准确的答案,但也可能将正确的答案变为错误的。
我们在一些基准测试上进行了广泛的研究,如GSM8K、Common Sense QA和HotpotQA,并没有注意到自我纠正方法带来任何改进。它反而使情况变得更糟。可能只是文献中的一些改进,你知道的,他们开始尝试在推理方面进行改进。实际上,他们使用了“神谕答案”(oracle answers)。你可以看到这里的“神谕”。神谕意味着你只在答案错误时提示语言模型去纠正它。问题是,模型本身不知道答案是正确还是错误的。你告诉它们因为答案错了,请纠正它。
这也与多智能体辩论有关。你可以使用多个语言模型相互辩论以达成一致或共识。此外,通过这种方法……我们发现其实诀窍在于生成了多少响应。例如,如果有三个智能体,如果让每个人都生成一个响应,那就是三次;如果他们进行辩论,那将是九次响应的总和。那么,如果只有两个智能体使用自洽性方法会怎样?让我们看看发生了什么。我们发现这些方法无法超越自洽性。自洽性简单得多:我们只是统计所有次数,并将出现频率最高的答案作为最终预测。
这里学到的教训是:人工智能自我纠正需要神谕反馈(oracle feedback)。如果是这样,我们需要的是“自调试”(self-debug)。“自调试”自然地利用单元测试作为神谕。这涉及编程问题,然后我们拥有单元测试作为……
实际上,我们很早就开始了这项工作,并没有将其作为独立的研究成果发表,而是最终与社区合作。最后,我想谈谈前提顺序在大语言模型推理中的重要性。众所周知,在当今时代,每当我们在归档数据或其他地方使用一些临时词汇时,人们往往能展现出极佳的结果。例如,最近模型在GPTK基准测试中取得了优异成绩。然而,我对模型的可靠性存在疑虑。在那个年代,模型是用互联网上的所有数据进行训练的,这引发了一些其他问题。因此,我团队的一项工作就是生成不同的评估任务来测试模型。
在这里,我们只是用了一个简单的技巧:面对原始的TSMC问题,我们对句子顺序稍作调整,看看模型是否仍能解决它。在这个例子中,原问题提到“他在回家时丢失了十年”,我们将这句话移到末尾观察结果。我们对一些GPT问题进行了检查,发现前沿大模型在解决率上下降了约十个百分点。通过对比冬季问题和重新排序问题的回答,可以看出模型实际上只是按顺序知道如何解决这些问题,它们无法来回切换。这可能与语义理解和多步推理有关。
为此我们设计了另一个任务,称为逻辑推断,它比数学问题更加纯粹。例如一系列“如果...那么...”的逻辑规则。即使我们不使用真实词汇,而是使用随机的标记符(tokens),在给定规则和事实的情况下,模型仍能在查询中进行逻辑推断。原问题的规则是根据其在推理过程中的使用顺序排列的。但并非所有规则对查询都是必需的,另一种方法是将这些相关规则随机排序,而不相关的则保持原位。令人惊讶的是,我们在所有前沿大模型上看到了超过三十个百分点的性能提升。
从个人经验来看,我认为在做研究时设计实验非常重要。现在让我总结一下我们讨论的内容:首先,生成中间步骤能显著提升大语言模型的性能,你可以通过训练、微调或提示词来实现。此外,还可以进行零样本类比推理或采用特殊的解码方式(如我今天介绍的安全解码),自洽性也能极大地改善逐步推理能力,无论模型是经过微调的还是基础模型。
我也指出了许多局限性:上下文、自我纠错以及前提顺序,这些都对最终性能至关重要。当我做演讲时,人们常问:“下一步是什么?会出现什么问题?”我认为最令人印象深刻的一点是:显然我们在研究可能通向AGI并解决AGI的问题,但这本身不是问题。真正的挑战在于定义一个正确的问题并从第一性原理出发去解决它,而不仅仅是增加参数或堆砌技术。这就是为什么我说机器学习在此处至关重要。
目前我正在与一群杰出人士组织一场会议,名为“语言建模大会”。这是首届专门致力于语言建模的学术会议。做得好,Julia。是的,就是这样。