巫师3控制台无限负重代码,巫师三配方代码

由于工作原因,我花了两天时间对LLM 代理进行了一些技术初步研究,并对大型模型进行了编码。我看到了伊利诺伊大学研究人员撰写的一篇评论,内容是关于代码如何为大型语言模型提供支持作为智能代理。

如果LLM 是一个向导,那么代码就是Wand: 一项关于代码如何使大型语言模型充当智能代理的研究。

》。我觉得写得很好,所以就翻译了。

原文地址:如果LLM是一个向导,代码是Wand: 研究代码如何让大型语言模型充当智能代理

翻译过程中将进行细微调整。

向图像添加最多140 个字符的评论(可选)

抽象的

当今有吸引力的大规模语言模型(LLM)与过去的语言模型的不同之处不仅在于规模,而且还在于它们是使用自然语言和形式语言(代码)的组合进行训练的。代码充当人类和计算机之间的中介,将高层目标转化为可执行的步骤,具有语法标准、逻辑一致性、抽象性和模块化的特点。本研究概述了将代码集成到LLM 培训数据中的各种好处。具体来说,除了增强LLM 的代码生成功能之外,您还会发现代码的这些独特特征可以帮助您: i) 释放LLM的推理能力,使其能够应用于更复杂的自然语言任务。 LLM 生成结构化且精确的中间步骤,可以通过函数调用连接到外部执行端点。 iii)它利用代码编译和执行环境,并为模型改进提供各种反馈。此外,支持代码的法学硕士的这些高级功能将如何使他们成为智能代理(IA),成功完成需要理解指令、分解目标、规划和执行行动以及根据反馈进行改进的下游任务。最后,我们提出了一些重要的挑战和未来的方向,以使代码可供法学硕士使用。

1 简介简介

图1: 该图显示了代码如何为大规模语言模型(LLM) 及其作为智能代理(IA) 的下游应用程序提供支持,而传统的LLM 可用于擅长自然语言任务,甚至更好。

该代码已成为大规模语言模型(LLM)训练数据的组成部分,包括Llama2、GPT-3.5 系列和GPT-4 等知名模型。 LLM 代码培训很受欢迎,不仅因为您可以将学到的编程技能应用于商业应用程序(例如Github Copilot2),还因为您可以提高模型中以前缺乏的推理能力。结果,基于LLM的智能代理(IA)迅速出现,通过代码培训和工具学习极大地提高了它们的能力。这些基于LLM的IA具有广阔的应用前景,可以处理更复杂的任务,例如多智能体环境模拟和科学人工智能的下游应用。

如图1 所示,本次综述旨在说明特定于代码的培训在常见LLM 培训范式中的广泛应用,以及代码如何允许LLM 充当IAs。与之前专注于评估和比较代码生成能力的代码LLM评论或枚举IA任务的评论不同,本次评论基于代码如何辅助LLM以及相关论文的分类,我们旨在让您全面了解代码LLM的好处。 LLM代码作为IA。 (见图2)。

向图像添加最多140 个字符的评论(可选)

我们首先提供代码定义并介绍训练LLM 代码的典型方法(2)。与自然语言相比(参见附录9.1 中的案例研究),代码更加结构化,并使用源自过程编程和显式定义的模块化函数的逻辑、逐步可执行过程,并且这些函数构成了图形化的可表示抽象。此外,代码通常具有单独的编译和执行环境。深入了解这些代码的特征和全面的文献综述揭示了将代码集成到法学硕士培训中的好处。

我)

增强的编程和推理能力(3)。

二)

通过允许模型在决策过程中直接生成详细的可操作步骤,它有助于通过函数调用扩展不同的工具模块(4)。

三)

将法学硕士置于代码执行环境中,可以使其从集成评估模块接收自动反馈并自我改进(5)。

此外,随着法学硕士成为IAs 在复杂的现实任务中的关键决策者,我们的评论还探讨了这些好处如何促进法学硕士在这方面的能力(第6 节)。

我)

加强IA 认知和规划技能方面的决策能力(6.1)。

二)

通过直接操作原语接口和模块化内存组织促进执行(6.2)。

三)

提供一个用于自我纠正和自我改进的交互式环境(6.3)。最后,我们讨论了一些开放的挑战和有希望的未来方向(7)。

2 预备阶段预备阶段2.1 代码定义我们认为代码是任何形式的机器可执行、人类可解释的语言。例如,人类可读的编程语言在讨论范围内,但基于二进制指令的机器代码等低级语言被排除在外,因为它们无法被人类解释。此外,还考虑了预定义的形式语言,例如WebGPT 使用的功能集。这是因为它可以以基于规则的方式解析和执行。

使用定义一组符号和规则(预定义的函数集、数学推导公式等)的表达式训练的LLM(语言模型)与使用编程语言训练的LLM 具有类似的优点。因此,为了提高本次综述的全面性并使其适应当前的研究需求,我们扩展了代码定义以考虑同质的训练语料库。

2.2 LLM代码训练方法LLM代码训练方法LLM根据标准语言建模目标应用于代码语料库时进行代码训练。 这类似于法学硕士理解和生成自由形式自然语言的方法,因为代码具有自然语言的顺序可读性。 具体来说,对于参数为 的LLM

中号

和代码语料库

时间

=

{t

1

,tn}

,优化后的语言建模损失为:

向图像添加最多140 个字符的评论(可选)

当使用编程语言作为语料库(Python、C 等)时,训练数据通常从可公开访问的代码存储库(例如GitHub)获取。此过程产生的语料库大小与自然语言预训练相当,因此我们将其称为丰富代码训练,例如:

预编码训练。训练策略有两种:一种是在预训练的自然语言LLM上训练代码,例如Codex,另一种是使用混合自然语言和代码语料库训练数据来训练代码,例如CodeLLM如何训练。从零开始攻读法学硕士。

相比之下,当使用其他预定义的形式语言进行训练时,目标会转移到使模型熟悉特定函数、数学证明、SQL 和其他结构的应用。由于该数据集与预训练的自然语言语料库相比较小,因此我们将此训练过程称为:

调整代码。在此过程中,研究人员还应用语言建模损失来优化LLM。

3 预训练代码提高LLM性能LLM预训练及其在OpenAI的GPT Codex等代码中的应用将LLM的范围扩展到任务领域的自然语言之外。此类模型可实现各种应用,例如数学理论的代码生成、常见编程任务和数据检索。代码必须产生逻辑上一致且有序的步骤序列,以确保高效执行。此外,代码中的每个步骤都是可执行的,允许逐步逻辑验证。这两个功能通过在预训练中利用和嵌入代码,提高了LLM 思想链(CoT) 在许多传统自然语言下游任务中的性能,展示了改进的复杂推理能力。通过隐式学习代码的结构化格式,Code LLM 在与理解标记、HTML 和图表相关的常识性结构化推理任务中表现出卓越的性能。

在下一节中,我们的目标是揭示为什么将LLM 训练为代码并采用代码库提示可以提高复杂下游任务的性能。具体来说,我们将重点关注法学硕士从预训练代码中受益的三个关键领域:

我)

增强3.1 中的编程能力。

二)

3.2 赋予复杂的推理能力,以及

三)

如图3 所示,我们促进了第3.3 节中结构化常识知识的获取。

向图像添加最多140 个字符的评论(可选)

3.1 增强法学硕士编程技能法学硕士是强大的编码员。

早期的语言模型只能生成特定领域的程序(Ellis et al. 2023)或仅限于特定的通用编程语言,例如Java 或C#(Alon et al. 2023)。最近基于LLM的代码生成模型(例如AlphaCode(Li等人,2023)、CodeGen(Nijkamp等人,2023)、SantaCoder(Allal等人,2023)、PolyCoder(Xu等人,2023)),参数数量和计算性能的增加,在不断增加的资源的支持下,我们在同一模型内学习10 多种语言取得了前所未有的成功。其中著名的作品之一是CodeX(Chen et al. 2023)。它拥有120 亿个参数,读取整个GitHub 数据库,可以解决72.31% 的人类编写的Python 编程难题。最近的研究(Zan et al. 2023; Xu et al. 2023; Du et al. 2023; Vaithilingam et al. 2023; Wong et al. 2023; Fan et al. 2023)为代码提供系统。 -法学硕士研究和评估。

LLM 具有强大的代码生成功能,使其对于依赖于代码的应用程序非常有用,例如数据库管理(Zhou et al. 2023b)、嵌入式控制(Liang et al. 2023a)和游戏设计(Roberts et al. 2023a) . 在各种应用中的好处。 )、电子表格数据分析(Liu 等人,2023c)和网站生成(Cal 和De Russis,2023)。

LLM 作为最先进的代码评估工具。

另一方面,法学硕士本身也可以成为对人类或机器生成代码的最先进的评估(即分析和评分)。 Kang 等人(2023a) 使用基于LLM 的模型来定位代码错误,而Zhuo (2023) 使用GPT-3.5 来评估代码生成的功能准确性和人类偏好。此外,Deng 等人(2023a) 设计了一个基于LLM 的渗透测试工具,发现LLM 擅长使用测试工具、解释输出并建议后续行动。最近的两项研究(Li 等人,2023a;Mohajer 等人,2023)也利用LLM 来检查和分析源代码而不执行它。此外,Kang 等人(2023b) 使用LLM 来自动重现漏洞,Noever (2023) 使用LLM 来评估易受攻击的软件。

多个法学硕士共同解决复杂的编码问题。

尽管像GitHub Copilot 这样的代码LLM 取得了前所未有的成功,但单个LLM 代理可能会在需要多个步骤的复杂场景中失败。幸运的是,多个特定于角色的LLM 代理之间的联合编码提供了更准确和更强大的性能,特别是对于复杂的任务。 Hon 等人(2023) 使用人类编程工作流程作为协调不同代理的指南。 Dong 等人(2023b) 为三个不同的“GPT-3.5”分配了三个角色,其代码生成能力超出了GPT-4。分析师、编码员、测试员。另一方面,Qian 等人(2023a) 设计了一个基于聊天的软件开发流程,涉及具有多个角色的LLM 代理。其他类似的方法(Liu 等人,2023g;Talebirad 和Nadiri,2023;Wu 等人,2023b;Jiang 等人,2023)都利用多个代码LLM 代理或同一代理的不同阶段并生成软件代码。或者使用生成的中间代码完成其他常见任务。

3.2 增强LLM复杂推理代码的预训练提高思想链性能。

从逻辑上讲,许多复杂的任务可以分解为更小、更容易解决的子任务。思想链(CoT)线索的设计,即推理提示输入链,允许法学硕士根据进一步的推理步骤生成结果,为任务分解提供直接的方法(Wei et al.2023)。 CoT 成功分解了许多任务,例如规划(Huang 等人,2023b)和基于证据的问答(Dua 等人,2023;Ye 等人,2023b)。尽管LLM的CoT能力最初被认为主要是由于模型大小的显着增加(Wei等人,2023b),但Fu和Khot(2023)总结的最新证据表明,这表明CoT的性能改进是主要是由于代码内预安装。培训正在进行中。例如,在比较不同版本的GPT-3(v1 和v5)时,在数学推理任务GSM8k 中观察到没有代码预训练的LLM,例如GPT-3 中的text-davinci-001(Cobbe 等人, 2023),准确率略有提高,但显着提高,从6.4% 提高到12.4%。相比之下,在GPT-3 的text-davinci-002 和Codex (Chen et al. 2023) 等代码上进行预训练的LLM 在CoT 方面表现出显着的性能提升,准确率分别提高了15.6% 和46.9%。 19.7% 来自63.1%。为了支持Fu 和Khot (2023) 提出的假设,Ma 等人(2023a) 发现,小规模LLM (2.6B) 上的代码预训练已被证明可以显着提高性能。在许多不同的任务上,使用小代码预训练的法学硕士比没有使用大代码的法学硕士表现更好。此外,他们的研究表明,在法学硕士培训的早期阶段加入更多代码可以显着提高推理任务的性能。然而,Ma 等人(2023a) 中的小型LLM 之间的准确率差异小于3%,因此随着模型大小的减小,有和没有代码预训练的CoT 之间的LLM 性能差异会减小,值得注意的是。可以减少。特别是,Fu 和Khot (2023) 以及Ma 等人(2023a) 表明,代码预训练可以提高LLM 在标准和CoT 提示场景下的后续任务的性能。

思维过程比思维链更好。 (思想程序比思想链更好。)

此外,与常规CoT 方法相比,自然语言任务首先被翻译并分解为代码的LLM(Chen 等人,2023b;Gao 等人,2023)。这通常称为思维程序(PoT) 提示或程序辅助语言。我们在需要模型、语言消歧和明确纵向结构的任务中取得了显着的成果。这种方法广泛应用于理论数学(Polu 和Sutskever,2023)、大学数学(Drori 等人,2023)以及通过数据检索回答问题(Sun 等人,2023b;Cheng 等人,2023)。

PoT 通过代码作为可执行语言的准确性和可验证性来提高性能。在任务分解中,LLM可能通过CoT生成错误的子任务或问题(Ji et al. 2023)。 Chen 等人(2023b)、Gao 等人(2023) 和Ye 等人(2023b) 的PoT 实现表明,可以通过LLM 直接运行和验证代码来有效缓解这一问题。翻译后的结果。这是因为推理过程必须遵循程序明确指定的逻辑和约束,从而保证结果更加准确可靠。

然而,使用代码带来的这种改进类似于Python 和SQL 等纯粹可执行的编码语言,或者数学(Drori 等人,2023)和数据检索(Rajkumar 等人)等严格结构化的编码语言。不限于特定任务。等,2023)。这些改进还扩展到分解任务领域,将其转换为伪代码,特别是涉及数字的文字问题和StrategyQA 等常见推理任务(Geva 等人,2023)。

3.3 使LLM能够捕获结构化知识代码生成揭示了卓越的结构常识推理能力

代码生成揭示了更好的结构常识推理

)。考虑到代码具有图形结构的符号表示,文本图形、表格和图像被转换为代码,以便基于代码的LLM可以根据代码推理和生成原理对这些信息进行逻辑处理。

因此,之前的工作表明,在使用代码进行额外的预训练后,LLM 可以在涉及结构常识推理的任务中产生微调的自然语言响应,即使训练数据有限或没有,它们也有潜力。表现得与同龄人一样好,甚至更好。

COCOGEN 首次将常识推理图完成任务重新定义为代码生成任务,并在推理图、表格实体状态跟踪和解释图生成方面展示了改进的少样本效果。

基于这个视角,CODE4STRUCT将代码LLM应用于语义结构,重点关注事件参数提取任务。通过利用注释和类型注释等代码功能,以最少的训练实例实现有竞争力的性能。此外,它还受益于继承的功能和同级事件类型的样本,从而优于零样本场景的基线。 ViStruct 进一步将这种方法扩展到多模态任务,利用编程语言来表示视觉结构信息,并利用课程学习来增强对视觉结构模型的理解。

掌握标记代码可以提高对自然语言的视觉理解

)。另一方面,一些研究侧重于使用HTML 和CSS 等标记代码来描述和解析图形用户界面(GUI) 和文档中的图表和图形信息。该标记代码不仅指定网页的内容,还指定网页的布局,并帮助大规模视觉语言模型(LVLM)捕获视觉本地化自然语言(VSNL)信息。

为了理解LVLM 的标记代码,WebGUM(Furuta 等人,2023)演示了自主网络导航。我们采用预训练方法,使用网页截图作为输入,相应的HTML 作为输出导航动作。 WebGUM 的性能优于SOTA、人类和其他基于LLM 的代理,证明了使用标记代码来增强预训练模型在理解网页方面的有效性。

对于标记代码生成,pix2code(Beltramelli,2023)和sketchcpcode(Robinson,2023)在LLM 时代之前开创了为GUI 或网站模型生成渲染代码的机器学习技术。 Pix2Struct(Lee 等人,2023)建立在当时最先进的VSNL 之上,通过在屏蔽的网站屏幕截图上预训练图像到文本模型,并进一步训练OCR、语言建模和图像字幕。理解已经达成。目标。基于此,MATCHA(Liu et al. 2023a)引入了基于图表分析、布局理解和数学推理的额外预训练目标,以在VSNL 理解任务中超越SOTA。

4 代码将LLM 连接到其他功能边缘代码将LLM 连接到其他功能边缘图4:以代码为中心的工具调用范例作为LLM(语言模型)和许多功能边缘之间的统一接口因为它有效,所以它允许许多跨模态和跨功能方式。域任务。

表1: 将LLM 连接到各个功能端以执行重要任务的典型任务非常灵活,因为它们将工具调用严格嵌入到LLM 的推理机制中(以“*”表示,减少了对工具的访问)。

最近的研究表明,将法学硕士连接到其他功能端点(即使用外部工具和可执行模块对其进行增强)使他们能够更准确、更可靠地执行任务(Mialon 等人,2023;Parisi 等人,2023b;Peng 等人)。2023)。任,2023;郭等,2023)。这些功能端点使法学硕士能够访问外部知识、参与多种形式并与不同环境有效交互。如表1所示,我们观察到法学硕士生成编程语言或利用预定义函数与其他功能端点建立连接的共同趋势。这就是我们所说的以代码为中心的范式。

与LLM 推理机制中硬编码工具调用的严格方法相比,以代码为中心的范例允许LLM 动态生成用于调用可调参数的执行模块的标记。这种范例允许LLM 以简单明了的方式与其他功能端点进行交互,从而提高了应用程序的灵活性和可扩展性。重要的是,LLM 将能够跨多种模式和领域处理大量功能端点,如图4 所示。通过扩展可访问的功能端点的数量和类型,LLM 可以处理更复杂的任务。

在第4.1 节中,我们考虑(数字)文本与多模式工具和法学硕士之间的关系。同时,4.2 重点关注其与物理世界中功能端点的关系,例如机器人和自动驾驶,展示了法学硕士在解决跨多种模式和通用性问题方面的效用。由于域名问题。

4.1 将LLM 链接到Digital End 基于文本的工具将LLM 链接到Digital End。

以代码为中心的框架提高了LLM 工具调用的准确性和清晰度,最初推动了基于文本的工具的进步。在这种以代码为中心的范式流行之前,很难将LM 与单一工具(例如信息检索工具)结合起来(Guu 等人,2023;Lewis 等人,2023;Izacard 等人,2023;Borgeaud 等人)等,2023)。2023;2023))需要在推理机制中进行硬编码(例如,始终在开始生成之前调用检索器),但不够灵活且难以扩展。 TALM(Parisi 等人,2023a)是第一个通过使用预定义分隔符调用API 来集成多个基于文本的工具,使基于文本的工具在生产中的任何时候都明确,以便可以调用。继他们的工作之后,Toolformer(Schick et al. 2023)使用“ ”来标记API 调用及其包含的内容。随后,引入了多种工具学习方法来集成跨不同底层模型的众多基于文本的工具(Song et al. 2023;Hao et al. 2023;Tang et al. 2023)。

以代码为中心的框架便于调用各种外部文本模块。这些模块包括计算器、日历、机器翻译系统、网络导航工具以及HuggingFace 和TorchHub 的API(Thoppilan 等人,2023 年;Yao 等人,2023c;Shuster 等人,2023 年;Jin 等人,2023 年;Jin 等人,2023 年)。 Yao 等人,2023b;Liu 等人,2023;Patil 等人,2023)。

多模式工具。

以代码为中心的法学硕士范式的高可扩展性允许工具学习扩展到文本之外的其他模式。之前的研究(Gupta 和Kembhavi,2023;Surs 等人,2023;Subramanian 等人,2023)利用以代码为中心的范式来解决视觉问答任务。例如,VISPROG(Gupta 和Kembhavi,2023)将各种预先训练的计算机视觉模型和现有图像处理库(例如Pillow 和OpenCV)的功能收集为一组API。 API 调用可以链接在一起作为特定问题的图像理解程序,这些程序是通过LLM 的上下文学习生成的。 API 代码语言包括算术运算,允许程序执行简单的算术任务并使VISPROG 能够回答特定问题,例如计算对象。类似的研究包括ViperGPT(Surs 等人,2023)和CodeVQA(Subramanian 等人,2023)。相比VISPROG,使用Codex直接生成更灵活的Python代码。这使您可以利用Codex 中内置的预先训练的知识来生成具有更复杂控制流的程序。

类似的研究包括ViperGPT 和CodeVQA。与VISPROG相比,它直接使用Codex来生成更灵活的Python代码。 这使得使用Codex 中内置的预训练知识生成更复杂的控制流程序成为可能。 除了视觉推理之外,该代码还用于将LLM 连接到专注于图像生成任务的多模态生成工具。代码中的明确性有助于生成与文本线索更加一致的图像。

除了基于图像的工具之外,最近的研究还考虑并联合使用其他方式。 例如,MM-REACT 在其API 中考虑了视频识别模型,而Chameleon 则包含视觉文本检测器和网络搜索等工具。在HuggingGPT 中,作者将LLM 连接到各种Hugging Face 模型,并将每个模型视为可用的API 调用。 因此,HuggingGPT 将能够执行更广泛的任务,包括迄今为止尚未探索的与音频相关的任务。进一步促进API 多样性TaskMatrix.AI 使用的API 数量级增加了一个数量级,从视觉和图形API 到音乐和游戏API。 代码灵活性使法学硕士能够:

同时使用不同的多模态工具。 这使得LLMs更加灵活,能够作为通用的多模态问题求解器,并能够适应多种任务的扩展。
4.2 Relate LLMs to Physical Ends尽管与数字领域相比,物理世界提供了更具沉浸感、上下文丰富和引人入胜的交互环境,但直到代码为中心的范式的出现之前,LLM与物理世界之间的连接一直受到限制。这种范式允许可适应性地调用物理世界的工具和执行模块,首次引发了探索LLM与机器人和自动驾驶集成的研究热潮。
在利用LLM生成真实世界机器人任务代码的过程中,最成功的方法之一是PaLM-SayCan ,其中LLM理解高级指令,然后调用相应的API进行机器人控制。在SayCan之后,最新的研究进展已经表明,通过其强大的代码生成能力,LLM可以作为机器人规划和控制的大脑。例如,ProgPrompt 为机器人任务规划开创了类似于程序的规范,而其他研究人员,如、和将此方法推广到了其他任务领域,包括人机交互和无人机控制。
通过代码生成和工具学习,LLM在诸如人车交互和自动驾驶等更复杂的任务中也表现出巨大潜力 。行业中一个典型的工具学习示例是Wayve的LINGO-1 ,它使用开环视觉、语言和动作LLM来提高驾驶模型的可解释性。通过指导调优,LLM已经发展到了可以理解复杂的驾驶、导航和娱乐指令的程度 ,生成可执行的代码 ,并通过调用底层车辆规划和控制API来执行这些代码 。
总的来说,尽管存在延迟、准确性问题以及缺乏适当的仿真环境、数据集和基准测试等挑战 ,LLM在理解高级指令和执行与代码相关的API方面在机器人和自动驾驶等复杂领域显示出了潜力。展望未来,LLM在弥合物理世界和人工智能之间的差距方面有着巨大的潜力,并将影响交通运输和智能制造等领域 。
5 代码为LLM提供自动反馈的可执行环境 Code Provides LLM with an Executable Environment for Automated Feedback图5:LLM(语言模型)可以嵌入到代码执行环境中,在那里它们收集忠实、自动化和可定制的反馈,用于自我改进。
LLM在超出其训练参数的性能上表现出色,部分原因在于其能够接受反馈,特别是在现实世界的应用中,环境很少是静态的。 然而,反馈必须谨慎选择,因为噪声提示会阻碍LLM在下游任务上的性能。此外,由于人力成本昂贵,关键是反馈应该能够自动收集,并保持忠实。 将LLM嵌入代码执行环境可以实现满足所有这些标准的自动反馈,如图2所示。 由于代码执行在很大程度上是确定性的,LLM从执行代码的结果中接收反馈可以保持对任务的忠诚。此外,代码解释器为LLM提供了查询内部反馈的自动路径,消除了在利用LLM调试或优化故障代码时昂贵的人工注释的需求。 此外,代码环境使LLM能够整合多种形式的外部反馈,例如对二进制正确性的批评,对结果的自然语言解释和带有奖励值的排名,从而实现了高度可定制的方法来增强性能。
我们在§5.1中介绍了从代码执行中产生的各种类型的反馈,可以共同用于提升LLM的效益,并在§5.2中讨论了利用此反馈改进LLM的常见方法。
5.1 Various Feedback from Code Execution代码执行过程可以使用从确定性执行结果派生出的更全面的评估指标来评估LLM生成的内容,而不仅仅依赖于常常模糊的基于序列的指标,如BLEU和Rouge。
用于评估程序执行结果和生成反馈的直接方法包括创建单元测试和应用准确结果匹配技术。通过这些方法,可以提供两种主要形式的反馈:简单的正确性反馈和文本反馈。可以通过评论模型或基于规则的方法生成简单的反馈,指示程序是否正确。对于更详细的文本反馈,可以使用语言模型来生成有关程序本身的解释,或者对程序和其执行的评论进行总结。执行结果还可以使用预定义规则将其转化为奖励函数,规则根据不同错误类型的严重程度将执行结果映射为标量值,因此反馈格式适用于增强学习方法。此外,还可以通过使用软件工程工具进行静态分析来提取附加的反馈。例如,和从执行跟踪中获取附加信息,包括变量或状态跟踪。演示了一种利用函数调用的表面形式约束提取附加反馈的有效方法。
5.2 Methods for Enhancing LLM’s Performance with Feedback从代码执行和外部评估模块获得的反馈可以通过三种主要方法增强LLM的性能。
基于选择的方法。选择性方法,如多数投票和重新排序方案,在增强LLM在代码生成等任务中的性能方面被证明是有效的。这些方法最初是为简单的程序合成开发的,利用代码执行结果(如通过的单元测试数)来选择性能最佳的代码片段。Chen等人的研究证明了多数投票的有效性,而Zhang等人展示了重新排序方案的优势。在此成功基础上,类似的方法已经被调整应用于更具挑战性的任务中,其中代码-LLM被集成到交互环境中,如Shi等人的工作中相似的投票方法,以及Ni等人的工作中的重新排序策略。然而,尽管简单有效,这些方法导致了低效率,因为它们需要多次生成和使用额外的重新排序模型来识别最优解。
基于提示的方法。现代LLM能够在上下文中进行推理,并直接将任务描述的反馈集成到提示中,至少在某种程度上。改进LLM的“自我调试”通常需要以自然语言解释或从执行结果中得出的错误消息的形式呈现的反馈,因为这些格式对LLM更易理解。由于其自动化性质、计算效率和无需额外微调的要求,大部分基于LLM的代理(见§[agent])更加偏爱这种方法。然而,此方法的有效性在很大程度上取决于LLM的上下文学习能力。
微调方法。在前面的方法中,无论是基于选择的方法还是基于提示的方法,都不能保证在任务中稳定改进,因为LLM的参数保持不变。它们在面临相似问题时需要重复调整过程。另一方面,微调方法通过更新参数化的知识,从根本上改善了LLM。典型的微调策略包括直接优化、利用外部模型进行优化以及在强化学习范式下训练模型。Wang等人的研究以直接优化的方法为例,其中原始语言模型通过基于反馈的目标函数进行微调。Haluptzok等人提出了一种独特的方法,其中语言模型生成合成的单元测试来识别和保留仅仅是正确生成的示例,然后将这些示例组合成正确的问题-答案对,并用于进一步微调模型。CodeScore 根据可执行性和单元测试的通过率设计其损失函数。Self-edit 首先将执行结果封装为文本注释,然后训练一个编辑器通过接受问题程序和注释来进一步改进程序。Chen等人训练了一个“改进模型”,该模型首先接受反馈和生成的程序,然后使用改进后的生成示例对生成模型进行微调,展示了一种分层微调的方法。CodeRL 和Wang等人应用强化学习来改进原始语言模型。Wang等人的研究旨在利用编译器的反馈获得错误代码,而CodeRL 根据单元测试结果类型基于经验定义了固定的奖励值。尽管具有上述优点,通过微调来改进LLM通常涉及消耗大量资源的数据收集过程。此外,如CodeRL 的例子所示,评估预定义的奖励值也面临一定的挑战。
6 应用:代码授权的LLM促进智能代理 Application: Code-empowered LLMs Facilitate Intelligent Agents
添加图片注释,不超过 140 字(可选)
在前面的章节中,我们的讨论突出了代码集成增强LLMs的各种方式。在此基础上,我们发现,代码强化LLMs在一个关键领域尤其显著:IA的开发。在本节中,我们强调代码强化LLMs赋予这些代理人的独特能力。
图 6有助于说明一个IA的标准操作流程,特别是作为一个具体身份的、日常通用助手。我们观察到,代码训练在LLMs中带来的改进牢固地根植在它们作为IA时的实际操作步骤中。这些步骤包括(i)在环境感知和规划方面增强IA的决策能力(§6.1),(ii)通过将行动基于模块化和明确的行动原语,并有效组织内存来简化执行(§6.2),以及(iii)通过从代码执行环境中自动衍生的反馈来优化性能(§6.3)。每个方面的详细说明将在后续的章节中给出。
6.1 Decision Making环境感知如图 6所示,在步骤(0-10)中,智能体不断感知世界,与人类和环境进行交互,对相关刺激作出响应(例如,人类关于饭菜准备的指令),并基于观察到的环境条件(例如,厨房布局)进行规划和执行动作。将LLM作为智能体的决策中心需要将环境观察结果转化为文本,例如基于虚拟家庭或Minecraft的任务 。感知到的信息需要以高度结构化的形式组织,确保发生在同一时刻的刺激(例如同时存在的多模态刺激)在没有时间差异的情况下同时影响智能体的感知和决策,这一要求与自由格式文本的顺序性质相反。通过对代码进行预训练,LLM能够更好地理解和生成类似代码中类定义的结构化表示。这种结构化形式中,类属性和函数是置换不变的,有助于智能体在任务执行过程中感知结构化的环境观察结果。
一个直观的例子是基于网页的环境,这些环境在HTML代码的基础上具有高度结构化。在像网购 、网页浏览 和基于网络的问答 这样的智能体任务中,将基于网络的环境直接转化为HTML代码而不是自然语言更可取,直接包含其结构化信息,从而提高LLM智能体的整体感知能力。 此外,在和的机器人研究中,智能体被用编程样式的规范来提示环境中的物体,使LLM能够根据其感知到的虚拟对象生成具有位置的任务计划。
规划如图 [fig:agent_figure] 所示,在步骤(2)中,智能体必须将复杂任务分解为更细致、可管理的步骤。利用代码-LLM的协同规划能力,智能体可以使用模块化和明确的代码以及表达力强的自然语言生成组织良好的推理步骤。正如在第2.2节中讨论的,当将代码-LLM用于规划智能体任务时,它们展示了增强的推理能力。此外,它们在必要时生成可执行程序的子任务,产生更强大的中间结果,智能体会对这些结果进行条件调整并以更高的精度进行规划。此外,智能体还可以无缝集成高性能工具API到规划中,克服了普通LLM在规划过程中数学推理能力差和信息更新滞后的限制。
利用代码进行规划的典型例子主要分为两个主要类别。Progprompt 和代码作为策略(Code as Policies) 代表了利用代码实现更好机器人控制的工作。这两个工作突出了基于代码的规划带来的好处,它们不仅可以直接表达反馈循环、函数和基本API,而且能够直接访问第三方库。另一个工作流是关注于智能体的编程和数学推理能力至关重要的场景,如解决与数学相关的问题 或在科学领域进行实验 。
6.2 Execution行动基础如图6所示,在步骤(3)中,当IA根据计划与外部函数端接口时,必须从预定义的动作集(即函数)中调用动作原语。鉴于现代LLM在形式语言中进行了训练并且能够生成高度形式化的原语,IA的生成可以直接解析和执行,从而消除了额外的动作原语调用模块的必要性。
将IA与其他函数端连接起来需要将动作基础(actions)与形式化的函数式原语相结合。例如,在评估LLM作为真实场景中的代理的基准测试中 ,八个场景中有七个涉及代码作为动作空间。
以前的工作生成纯自然语言的代理计划需要额外的从步骤到原语的模块来将这些规划步骤转化为代码 。相比之下,使用代码-LLM进行计划的IA生成原子动作程序 ,其生成结果可以快速解析并执行。
记忆组织如图 6 所示,在步骤(3)和标有“更新状态的函数端”的组件中,IA通常需要一个外部记忆组织模块来管理公开的信息 ,包括原始规划、任务进展、执行历史、可用工具集、已获得的技能和用户的早期反馈。在这个背景下,代码-LLM通过采用高度抽象和模块化的代码来记录、组织和访问内存,特别是用于扩展可用工具集和管理已获得的技能,从而有助于IA的记忆组织。
通常,代理编写的代码片段可以作为工具集的一部分,集成到代理的记忆组织中。这个研究方向称为工具创建方法。TALM 提出利用更强大的代理(如基于GPT-4的代理)编写代码作为较弱代理(如基于GPT-3.5的代理)的记忆的一部分。在Creator 中,代理不仅被强调为工具的使用者,还是它们的创造者。他们提出了一个四阶段的工具创建框架,使代理能够编写代码作为可执行工具集的一部分。更进一步,Craft 着重确保所创建的工具确实可以执行,使框架更加健壮。另一个分享这个思想的工作是Voyager ,其中代理以代码格式存储学到的技能,并在面对类似任务时在未来执行这些技能。
6.3 Self-improvement如图6 所示,在步骤(5)中,当IA的决策中心,即LLM,在代码执行环境下运行时,环境可以整合各种评估模块来提供自动化反馈(例如正确性、排名、详细评论)。这在很大程度上增强了IA的早期错误纠正,促进了自我改进。
Voyager 是使用模拟环境反馈的代理的一个好例子。该代理从失败的任务案例中学习,并在Minecraft中进一步磨练其技能。Chameleon 通过程序验证器接收反馈,以决定是否重新生成适当的程序。Mint 可以从代理服务器接收反馈,从而使代理在多轮交互设置中自我改进。重要的是,从执行反馈中实现自我改进的能力对于代理成功解决科学问题至关重要,例如 、和 的研究中所观察到的情况。
7 挑战 Challenges在我们的调查过程中,我们发现了一些有趣且具有潜力的未来研究方向,如下所述。
7.1 The Causality between Code Pre-training and LLMs’ Reasoning Enhancement虽然我们已经将3.2节中最相关的工作进行了分类,但明显存在一个问题,就是没有提供明确的实验证据直接证明特定代码属性的习得能够增强LLMs的推理能力。
虽然我们直觉上承认某些代码属性可能对LLMs的推理能力有所贡献,但它们对于增强推理技能的影响程度仍然不明确。在未来的研究中,重要的是要调查在训练数据中强化这些代码属性是否确实可以增强已训练的LLMs的推理能力。如果确实如此,即预先训练代码的特定属性可以直接改善LLMs的推理能力,了解这一现象将对进一步改进当前模型的复杂推理能力至关重要。
7.2 Acquisition of Reasoning Beyond Code尽管通过在代码上进行预训练可以提高推理能力,基础模型仍然缺乏真正广义人工智能所期望的类人推理能力。除了代码,还有大量其他文本数据源具有增强LLM推理能力的潜力,代码的固有特性(如缺乏歧义性、可执行性和逻辑顺序结构)为收集或创建这些数据集提供了指导原则。 然而,如果我们坚持在大型语料库上训练语言模型的范例,很难想象一个比形式语言更抽象、高度结构化且与符号语言紧密对齐的可按顺序阅读的语言,在大量数字化环境中,形式语言(以代码为例)是普遍存在的。 我们设想勘探替代数据模态、多样化的训练目标和新颖的架构将为进一步增强这些模型的推理能力提供额外的机会。
7.3 Challenges of Applying Code-centric ParadigmLLM(Language Model)在使用代码与不同的功能端点进行连接时面临的主要挑战是学习正确调用多个函数,包括选择正确的函数端点并在适当的时间传递正确的参数。即使对于简单任务,例如使用有限的动作原语(例如鼠标移动、点击和页面滚动)进行简化网络导航,LLM通常也需要使用有限的示例以及强大的基础LLM,才能准确把握这些原语的使用方式。对于在化学、生物学和天文学等数据密集领域的更复杂任务,这些任务涉及到具有各种功能和复杂调用的领域特定Python库,增强LLM对学习正确调用这些函数的能力是一个有前景的方向,在精细领域中使LLM能够作为执行专家级任务的IA(智能助理)。
7.4 Learning from multi-turn interactions and feedbackLLM常常需要与用户和环境进行多次交互,不断纠正自己以提高复杂任务的完成度。虽然代码执行提供了可靠和可定制的反馈,但尚未建立起一种完善的方法来充分利用这种反馈。正如在§ 5.2中讨论的那样,我们观察到基于选择的方法虽然有用,但并不能保证性能的提升,并且可能效率低下。基于提示的方法严重依赖于LLM的上下文学习能力,这可能限制了它们的适用性。微调方法显示出持续改进,但数据收集和微调是资源密集型的,因此具有禁止性。 我们提出假设,强化学习可能是利用反馈和改进LLM的更有效的方法。这种方法通过精心设计的奖励函数提供了一种动态的方式来适应反馈,从而潜在地解决了当前技术的限制。然而,仍然需要进行重要的研究,以了解奖励函数如何设计,以及如何最优地将强化学习与复杂任务的LLM集成。
8 总结 Conclusion
在这项综述中,我们汇编了阐明了代码如何赋予LLMs强大能力以及代码如何协助LLMs作为IAs的文献。首先,代码具备自然语言的顺序可读性,同时体现了符号表示的抽象和图结构,使其成为知识感知和推理的媒介,是仅基于语言建模目标的LLMs训练语料库的一部分。通过综合文献回顾,我们观察到,在经过代码训练之后,LLMs
i)
改善了他们的编程技能和推理能力,
ii)
可以生成高度形式化的函数,实现与不同领域和模态的各种功能目标之间的灵活连接,而且
iii)
可以与集成在代码执行环境中的评估模块进行交互,实现自动化的自我改进。此外,我们发现,代码训练带来的LLMs的能力提升有益于它们作为智能代理的下游应用,体现在智能代理工作流程中的具体操作步骤,包括决策、执行和自我改进。除了回顾先前的研究,我们提出了该领域的一些挑战,作为潜在未来发展方向的指导因素。

本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/561543.html

(0)
上一篇 2024年5月25日
下一篇 2024年5月25日

相关推荐

  • 和平精英刚枪技巧口诀?

    和平精英刚枪技巧口诀? 你好,和平精英刚枪技巧口诀如下: 1. 瞄准稳定:在射击过程中,保持枪支的稳定是非常重要的。尽量减少手部的晃动,保持瞄准准心在目标上。 2. 控制后坐力:后坐力是影响枪支稳定的主要因素之一。通过适当的操作,尽量减少后坐力对瞄准的影响。 3. 弹道预判:了解不同枪械的子弹弹道特点,针对不同距离的目标进行预判,调整瞄准点。 4. 利用掩体…

    游戏快讯 1小时前
  • 和平精英怎么租号玩? 和平精英怎么用账号密码登其他号?

    和平精英怎么租号玩? 和平精英组号可以加入和平精英,做好群联系里面的管理员或群主,按每小时多少钱收费。 和平精英怎么用账号密码登其他号? 和平精英用账号密码登其他号的方法 1.想要登录别人的号,玩家只要获得别人的账号和密码,切换登录即可。 2.玩家进入游戏后找到右下方的齿轮状设置图标进入。 3.在页面的最下方可以找到退出登录按钮点击一下就可退出当前账号。 4…

    游戏快讯 2小时前
  • 和平精英怎么查看所有枪械皮肤?

    和平精英怎么查看所有枪械皮肤? 在商场武器里面找到枪就能看到全部皮肤 和平精英没有枪皮肤怎么办? 如果和平精英没有枪皮肤,可以通过不断的参加游戏和完成任务来获取金币和经验值,用它们来购买枪皮肤或者开箱子获得更多深受欢迎的枪皮肤。 此外,也可以参加游戏比赛或者活动,赢得排名奖励和赠品。总之,有许多方式可以获取更多的枪皮肤,即使刚开始没有也不必担心。在游戏中不断…

    游戏快讯 5小时前
  • 和平精英怎么样屏蔽防具?

    和平精英怎么样屏蔽防具? 和平精英屏蔽防具方法是 玩家可以直接点击屏幕最下面的仓库。 然后在左边,有个展示设置,点击进入,就可以选择最后一个战斗中,其中有个隐藏头盔,玩家直接点击把前面的勾给取消掉,这样的话就可以把自己的头盔给隐藏掉,无论是一级、二级、三级头盔都不会显示,不过这个只是对于自己有效果,如果你以你队友或者敌人的视角来看,还是会依然存在。 和平精英…

    游戏快讯 6小时前
  • 和平精英怎么练反应? 和平精英颜色怎么调?

    和平精英怎么练反应? 1、首先,要先找到适合自己的枪械,然后练习压枪。其次要练习打靶的准确度。打靶时先练习固定靶,在固定靶射击稳定的前提下练习射击移动靶。保证枪口能够找到敌人的位置。   2、在练习好射击精度之后,要练习开镜后迅速找人锁定目标的技能,开镜练习直接开镜和左右探头开镜,训练反应速度。   3、练习好射击精度和开镜反应速度之后,就要练习移动情况下的…

    游戏快讯 8小时前