如果 LLM 是Wizard,那么代码就是Wand:代码使大语言模型成为智能体的综述

24年1月来自UIUC的论文“If LLM Is the Wizard, Then Code Is the Wand: A Survey on How Code Empowers Large Language Models to Serve as Intelligent Agents”。

当今著名的大语言模型 (LLM) 与过去的语言模型不仅在大小上有所不同,而且它们是基于自然语言和形式语言(代码)的组合进行训练的。作为人与计算机之间的媒介,代码将高级目标转化为可执行步骤,具有标准语法、逻辑一致性、抽象性和模块化等特点。本文概述将代码集成到 LLM 训练数据中的各种好处。具体而言,除了增强 LLM 的代码生成能力之外,代码的这些独特属性有助于 i) 释放 LLM 的推理能力,使其能够应用于一系列更复杂的自然语言任务;ii) 引导 LLM 生成结构化和精确的中间步骤,然后可通过函数调用连接到外部执行端;iii) 利用代码编译和执行环境,这也为模型改进提供了多样化的反馈。此外,分析 LLM 的这些强大功能(由代码带来)如何使它们成为智体 (IA),在这种情况下,理解指令、分解目标、规划和执行操作以及根据反馈进行改进的能力对于它们在下游任务上的成功至关重要。最后,代码赋能 LLM 的几个关键挑战和未来方向。

代码已成为大语言模型 (LLM) 训练数据中不可或缺的组成部分,包括 Llama2、GPT-3.5 系列和 GPT-4 等著名模型 (Touvron,2023;Ye,2023a;OpenAI,2023)。使用代码训练 LLM 之所以如此受欢迎,不仅是因为获得的编程技能可以实现商业应用,例如 Github Copilot,还因为它可以提高模型之前缺乏的推理能力 (Liang,2023b)。因此,LLM 迅速成为智能体(IA) 的主要决策中心 (Zhao,2023),展示了代码训练能力的指数级增长和工具学习的进步 (Qin,2023)。这些基于 LLM 的 IA 准备处理更广泛、更复杂的任务,包括多智体环境模拟 (Wu et al., 2023c) 和科学人工智能 (Boiko et al., 2023) 中的下游应用。

如图所示,这个综述旨在解释在一般 LLM 训练范式中广泛采用代码特定训练,以及代码如何增强 LLM 以充当 IA。

请添加图片描述

以往综述要么专注于评估和比较代码生成能力 (Zan et al., 2023; Xu et al., 2022),要么列出 IA 任务 (Wang et al., 2023d; Xi et al., 2023; Zhao et al., 2023),本文旨在根据分类全面了解代码如何协助 LLM 以及代码在哪些方面使 LLM 作为 IA 受益,如图所示。

请添加图片描述

将代码视为任何既可由机器执行又可由人类解释的形式语言。低级语言(例如基于二进制指令的机器语言)由于缺乏人类可解释性而被排除在外。此外,预定义的形式语言,例如 WebGPT 中使用的函数集(Nakano,2021)也包括在内,因为它们以基于规则的方式进行解析和执行。

使用一组定义的符号和规则(例如,预定义的函数集、数学推导公式等)中形成的表达式(即形式语言)训练的 LLM,表现出与使用编程语言训练的 LLM 类似的优势。因此,扩展代码的定义,纳入这些同质的训练语料库,更具全面性。

LLM 按照标准语言建模目标进行代码训练,该目标应用于代码语料库。鉴于代码具有自然语言那样的顺序可读性,这与指导 LLM 理解和生成自由格式自然语言的方法相似。

当使用编程语言(例如 Python、C 等)作为语料库时(Chen,2021;Li,2022;Nijkamp,2022),训练数据通常来自可公开访问的代码存储库,例如 GitHub。此过程产生的语料库量与自然语言预训练的语料库相当,因此将使用如此丰富代码进行的训练称为代码预训练。训练策略包括在预训练的自然语言 LLM 上训练代码,例如 Codex(Chen,2021),或者使用自然语言和代码语料库的混合从头开始训练 LLM,例如 CodeLLM(Ma,2023a)。

相反,当使用其他预定义的形式语言进行训练时,目标转向让模型熟悉特定函数(Schick,2023)、数学证明公式(Wu,2022)、SQL(Sun,2023b)和类似构造的应用。由于此数据集与预训练的自然语言语料库相比较小,将此类训练过程称为代码微调。同样,应用语言建模损失来优化 LLM。

以 OpenAI 的 GPT Codex(Chen,2021)为例,LLM 在代码上的预训练已将 LLM 的任务范围扩大到自然语言之外。此类模型支持多种应用,包括为数学理论生成代码(Wu,2022)、一般编程任务(Chen,2021)和数据检索(Sun,2023b;Cheng,2023)。代码需要生成逻辑上连贯、有序的步骤序列,这对于有效执行至关重要。此外,代码中每个步骤的可执行性允许逐步进行逻辑验证。在预训练中利用和嵌入代码的这两种特性,提高了 LLM 在许多传统自然语言下游任务中的思维链 (CoT) 性能 (Lyu,2023;Zhou,2023a;Fu & Khot,2022),表明复杂推理能力得到了提高。通过从代码的结构化格式中进行隐式学习,代码 LLM 在常识结构化推理任务,例如与markup、HTML 和图表理解相关的任务 (Furuta,2023;Liu,2023a)上,表现出进一步提高的性能。

分析代码预训练使LLM受益的三个关键领域,即:i)提高编程能力,包括LLM作为强编码工具、LLM作为评估器和多LLM合作解决复杂任务,ii)增强复杂推理能力,包括代码预训练提高CoT和程序链(CoP)超过CoT,以及 iii)促进结构化常识性知识的获取,包括代码生成揭示结构常识推理和Markup代码促进视觉自然语言理解,如图所示。

请添加图片描述

最近的研究表明,将 LLM 连接到其他功能端(即用外部工具和执行模块来增强 LLM)有助于 LLM 更准确、更可靠地执行任务(Mialon,2023;Parisi,2022b;Peng,2023;Gou,2023)。这些功能端使 LLM 能够访问外部知识、参与多种模式并与各种环境进行有效交互。如表所示,有一种普遍趋势,即 LLM 生成编程语言或利用预定义函数与其他功能端建立连接——这种现象称为以代码为中心的范式。

请添加图片描述

与 LLM 推理机制中硬编码工具调用的严格做法相比,以代码为中心的范式允许 LLM 动态生成调用具有可适应参数执行模块的tokens。这种范式使 LLM 能够以简单、明确的方式与其他功能端交互,从而增强其应用的灵活性和可扩展性。重要的是,如图所示,它允许 LLM 与跨越不同模式和领域的众多功能端交互。通过扩大可访问的功能端的数量和种类,LLM 可以处理更复杂的任务。

请添加图片描述

LLM 表现出超出其训练参数的性能,部分原因在于它们能够接受反馈,尤其是在环境很少是静态的实际应用中(Liu,2023f;Wang,2023d)。然而,必须谨慎选择反馈,因为嘈杂的提示可能会妨碍 LM 在下游任务上的表现(Zheng & Saparov,2023)。此外,由于人力成本高昂,因此能够自动收集反馈并保持忠实至关重要。将 LLM 嵌入到代码执行环境中可以实现满足所有这些标准的自动反馈,如图所示。

请添加图片描述

由于代码执行在很大程度上是确定性的,因此从执行代码的结果中获取反馈的 LLM 仍然忠实于手头的任务(Chen,2023a;Fernandes,2023;Scheurer,2022)。此外,代码解释器为 LLM 查询内部反馈提供了一条自动途径,从而无需使用昂贵的人工注释,就像利用 LLM 调试或优化错误代码时所看到的那样(Chen,2023a;Fernandes,2023;Scheurer,2022)。此外,代码环境允许 LLM 结合多种多样的外部反馈形式,例如二进制正确性的批评(Wang,2023g)、结果的自然语言解释(Chen,2023c)和带奖励的排名(Inala,2022),从而实现高度可定制的方法来提高性能。

基于反馈增强LLM性能的方法有三种:
基于选择;
基于提示;
基于微调。

代码赋能的 LLM 优势在一个关键领域尤为明显:IA 开发。

如图所示是有助于说明 IA 的标准操作流程,特别是作为具身的日常助理。LLM 中的代码训练带来的改进牢牢扎根于其作为 IA 时的实际操作步骤。这些步骤包括 (i) 增强 IA 在环境感知和规划方面的决策能力,包括(ii) 将动作建立在模块化和显式动作原语中并有效组织内存,可简化执行,以及 (iii) 根据从代码执行环境自动获取的反馈,优化性能。

请添加图片描述

按照这个基于 LLM 智体的完整工作流水线,将代码 LLM 能力映射到特定阶段:步骤 (2) 中的基于代码的规划、步骤 (3) 中的模块化动作解析和工具创建,以及步骤 (5) 中的自动反馈收集以增强智体自我改进。总的来说,整个循环中的步骤 0-10 有助于提高结构化信息的理解和感知。

四大挑战问题:
代码预训练与LLM推理能力提升的因果关系
获得超越代码的推理能力
应用以代码为中心范式的挑战
从多轮互动和反馈中学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值