当前位置: 首页 > news >正文

北京大学发布,将试错引入大模型代理学习!

引言:探索语言智能的新边界

在人工智能的发展历程中,语言智能始终是一个核心的研究领域。随着大语言模型(LLM)的兴起,我们对语言智能的理解和应用已经迈入了一个新的阶段。这些模型不仅能够理解和生成自然语言,还能够在多种环境中控制代理(agent)进行交互和决策。然而,尽管LLM在理解语言和规划方面展现出了巨大的潜力,它们在从经验中学习并改进行动策略方面仍存在限制。

传统的强化学习方法通过试错学习来训练代理策略,但这种方法往往忽略了代理在特定环境中的先验知识。而LLM正是在这方面表现出了优势。然而,直接对大规模的LLM进行策略模型微调在实践中是不切实际的,因此研究者们开始探索如何将历史交互融入提示中,以利用过去的经验来规划未来的行动。这些方法虽然有其局限性,但也提供了新的思路。

本文提出了一种新的学习范式,即通过学习扩展和精细化行动空间,使任务与代理的规划能力更加紧密对齐。研究者通过适应LLM的规划来解决固定行动空间带来的限制,例如常识知识引导的规划与行动之间的不匹配,以及由于未满足的先决条件或无效策略导致的行动错误。研究者们的方法不仅缓解了语言代理性能的瓶颈,还允许跨不同任务转移经验。

为了更具体地说明该方法,研究者们将介绍LearnAct框架,它旨在动态生成新的行动类型作为API,并通过反馈循环不断精炼行动。实验结果表明,LearnAct通过迭代精炼,不仅创造了复杂且用户友好的行动类型,而且相较于以往的方法,实现了更有效和高效的学习。

论文标题: Empowering Large Language Model Agents through Action Learning

论文链接:https://arxiv.org/pdf/2402.15809.pdf

LearnAct框架介绍:动态生成新的行动类型

1. LearnAct的核心理念与目标

LearnAct框架的核心理念是通过学习扩展和精炼行动空间,从而更紧密地与代理的规划能力相结合。与传统的语言模型代理不同,LearnAct不仅仅在预设的行动空间内操作,而是通过经验学习自然地扩展其行动类型。

这种方法解决了固定行动空间带来的限制,例如常识知识引导的规划与行动之间的不匹配,以及由于未满足的先决条件或无效策略导致的行动错误。

  • 例如,在制作鸡尾酒的任务中,LearnAct允许LLM自然地指导代理按特定顺序收集所有组件并混合它们,而封闭的行动空间可能只涉及基本操作,如移动到不同地点和抓取瓶子,这大大增加了LLM代理的任务难度。

LearnAct通过动态生成新的行动类型作为API,利用LLM的广泛先验知识和代码生成能力来设计一个多样化和具有代表性的行动空间。此外,LearnAct的迭代学习策略通过反馈循环不断精炼行动,每个周期中,LLM使用训练示例评估当前行动的有效性,识别并纠正失败实例中的错误。

2. LearnAct的行动类型生成与迭代学习策略

LearnAct生成新的行动类型基于原子行动,以实现更具信息性和适用性的行动,类似于分层强化学习中的做法。不同于传统的分层强化学习,LearnAct不仅使用基于代码的行动空间,提供了更强的能力,还避免了严格的两级结构,而是使用灵活的混合级别行动

LearnAct的行动类型生成涉及两个步骤

  • 首先,LLM被提示总结高级行动以完成任务,并以Python函数的形式为代理生成。这些函数可以调用多个基本或定义的行动来完成子任务。生成后,函数被解析并添加到行动空间中。

  • 其次,生成新的行动函数后,研究者更新代理关于它们潜在应用的信息。基本指令包含行动描述和使用示例,更新后的策略指导包括每个函数的描述和使用示例。

    ( 图为LearnAct的训练和测试阶段示意图)

在学习阶段,代理首先尝试用当前可用的行动空间和策略指令解决训练集中的问题,然后通过选择错误案例和行动学习操作来识别行动失败,并迭代更新行动集,直到成功解决所有实例中的行动错误或超过最大优化步骤。

(在学习阶段,代理的动作使用和动作优化被重复执行)

行动学习通过实现函数更新或编写注释来解决错误,函数更新精炼Python函数以纠正对任务的误解和忽视,而编写注释则增强函数的描述,以指导代理更准确地使用行动。

LearnAct的实验设计:挑战与任务设置

1. 机器人规划任务

机器人规划任务中,研究者在四个具有挑战性的任务上进行了实验,包括Gripper、Blockworld、Barman和Tyreworld。这些任务涉及长期机器人规划问题,例如根据客户订单使用可用成分和容器制作鸡尾酒,使用两个夹具在不同房间之间移动物体,或重新排列一堆积木以达到指定的目标配置。这些任务对代理的长期规划能力提出了重大要求。

2. 家庭环境任务

研究者还在AlfWorld任务上测试了代理,这些任务模拟了家庭环境中的六种目标。例如,代理需要在房子里找到一个苹果,加热它,然后将它放在目标区域。这些任务要求代理系统地探索房子,因为在代理观察到特定位置之前,环境的完整状态保持未知。此外,代理执行完成任务所需的基本步骤的能力至关重要。

LearnAct与现有方法的比较

1. 行动学习与语言智能的结合

LearnAct框架的提出,是为了解决现有大语言模型(LLM)控制的语言代理在学习经验方面的局限性

  • 传统的强化学习范式通过试错来学习代理策略,而LearnAct则通过生成新的动作类型作为API,利用LLM的广泛先验知识和代码生成能力,来构建一个多样化且具代表性的动作空间。

  • 与此同时,LearnAct采用迭代学习策略,通过反馈循环不断完善动作。这种方法不仅创造了复杂且用户友好的动作类型,而且与先前的方法如Reflexion相比,实现了更有效和高效的学习。

    (图为不同最大学习迭代步数的性能)

2. LearnAct在不同任务中的表现

在实验中,LearnAct在机器人规划和AlfWorld任务中的表现明显优于其他基线模型。这表明,通过在动作空间内学习,LearnAct能够显著提高代理的性能。与直接在开环中生成代码的CodeAsPolicy方法和缺乏迭代动作学习的Voyager方法相比,LearnAct的动作学习对于提高动作质量至关重要。

学习过程分析:行动的可靠性与实用性

1. 行动学习前后的变化

通过对比学习前后动作的使用频率和准确性,可以看出学习后的动作在可靠性和实用性上有了显著提升。这是因为LearnAct的学习方法专注于纠正使用过程中遇到的错误。此外,动作的使用率在学习后也有所提高,这可能是因为代理在认识到这些动作的有效性后更倾向于使用它们。

2. 行动学习对性能的影响

LearnAct的学习过程通过动作的可靠性和实用性提高了代理的性能。在学习迭代的过程中,代理首先尝试用当前可用的动作空间和策略指令解决训练集中的问题,然后通过选择错误案例和动作学习来修正错误,直到成功解决所有实例或达到最大优化步骤。学习算法的各个组成部分,包括更新函数和编写注释,以及学习过程中的采样,都对提高性能起到了关键作用。

LearnAct的学习算法:功能更新与注释编写

1. 学习算法的关键组成部分

LearnAct的学习算法是一种新颖的学习范式,旨在通过扩展和细化动作空间来提升LLM代理的性能。这种方法的核心在于动态生成新的动作类型,这些动作类型以Python函数的形式出现,利用LLM的广泛先验知识和代码生成能力来设计一个多样化且具有代表性的动作空间。

通过这种方式,LearnAct不仅能够解决固定动作空间带来的限制,比如常识知识引导的规划与动作之间的不匹配,还能够跨不同任务转移经验。

在LearnAct的学习算法中,关键的组成部分包括:

  • 动作创建:通过生成新的动作函数,LearnAct能够让LLM与环境更加无缝地交互。这些动作函数能够调用多个基础或已定义的动作来完成子任务,从而实现更复杂的逻辑表达。

  • 策略指令生成:生成新动作函数后,需要更新代理的策略指令,以包含每个函数的描述和使用示例,从而指导LLM在适当的场景中使用新动作。

  • 基于错误反馈的动作学习:在创建初始动作集后,可能存在错误或对任务的误解。LearnAct通过试错的训练阶段,让语言模型通过反馈循环不断地完善动作,包括修正函数或编写注释。

2. 学习算法的实际应用与效果

LearnAct的学习算法在实际应用中展现了显著的效果。在一系列的实验中,LearnAct通过迭代细化的方法,不仅创建了复杂且用户友好的动作类型,而且与先前的最先进方法相比,实现了更有效和高效的学习。例如上文中所述的制作鸡尾酒的任务。

在机器人规划和AlfWorld任务中,LearnAct的表现显著优于其他基线模型,无论是使用GPT-3.5 Turbo还是GPT-4作为后端。这些结果证明了LearnAct在动作空间学习方面的重要性,以及其在开发更智能和能力更强的LLM代理方面的潜力。

(图为学习前后所学动作的使用频率和准确性)

结论:LearnAct的贡献与未来展望

LearnAct通过其创新的学习算法,为大语言模型代理提供了一种新的能力:通过直接与环境互动来学习和完善动作。这种开放式的动作学习方法与人类获取和增强技能的方式密切相关。实验结果表明,LearnAct在机器人规划和AlfWorld环境中的成功应用,凸显了动作学习在发展更智能和能力更强的LLM代理方面的巨大潜力。

未来,我们期望LearnAct能够进一步提升其学习算法,以更好地适应各种复杂的任务和环境。随着LLM技术的不断进步,LearnAct有望在多个领域中发挥更大的作用,从而推动智能代理的发展和应用。

相关文章:

北京大学发布,将试错引入大模型代理学习!

引言:探索语言智能的新边界 在人工智能的发展历程中,语言智能始终是一个核心的研究领域。随着大语言模型(LLM)的兴起,我们对语言智能的理解和应用已经迈入了一个新的阶段。这些模型不仅能够理解和生成自然语言&#x…...

Java 设计模式

编程设计模式六大原则 开闭原则(Open Close Principle):对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好&#…...

Kivy和BeeWare 开发APP的优缺点,及其发展历史

Kivy和BeeWare都是流行的Python框架,用于开发移动应用。它们各自有独特的特点和优势,同时也面临一些挑战和限制。下面是对这两个框架的开发优缺点及其发展历史的总结。 Kivy 发展历史 起源:Kivy诞生于2010年,旨在提供一个用于P…...

C++递推

统计每个月兔子的总数 #include<bits/stdc.h> using namespace std; int n,sum0; void f(int); int main() {int a[1000];cin>>n;a[1]1;a[2]2;for(int i3;i<1000;i){a[i]a[i-1]a[i-2];}cout<<a[n];return 0; } void f(int n){}猴子吃桃子 #include<b…...

C++ 面试题

一、基础语法 1. C 和 C的区别 i. C是面向对象的的编程语言&#xff0c;C是面向过程的编程语言 ii. C中的内存分配运算符是new/delete而C 中是malloc和free iii. C中有函数重载而C 中没有 iv. C中新增了引用的概念而C 中只有值和指针 2. struct 和 class的区别 i. struc…...

MySQL之索引详解

华子目录 索引概述优缺点 索引的原理索引的设计原则索引结构B-tree&#xff08;多路平衡查找树&#xff09;BtreeHash 为什么InnoDB存储引擎选择Btree&#xff1f;索引分类聚集索引选取规则 单列索引和多列索引前缀索引创建索引1.创建表时创建索引2.在已经存在的表上创建索引3.…...

Java面试题总结8:springboot

Spring Boot自动配置原理 importConfigurationSpring spi 自动配置类由各个starter提供&#xff0c;使用ConfigurationBean定义配置类&#xff0c;放到META-INF/spring.factories下 使用Spring spi扫描META-INF/Spring.factories下的配置类 如何理解Spring Boot中Starter …...

Android 4.4 以下,OkHttp访问Https报错,设置了sslSocketFactory仍无效的解决方法

背景 Android 4.4 及以下&#xff0c;使用 OkHttp 发送 Https 请求&#xff0c;报以下错误&#xff1a; javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl0x6b712c90: Failure in SSL library, usually a protocol erro…...

如何扫码查看企业介绍及填写招聘表?招聘二维码在线生成的方法

现在很多企业会通过生成二维码的方式来做企业介绍以及企业招聘&#xff0c;企业信息通过图片、文字、视频及其他内容展示&#xff0c;再创建合适的表单让扫码者按照制定的内容来填写对应的信息&#xff0c;从而完成扫码招聘的目的。 对于也想采用这种方式的小伙伴&#xff0c;…...

如何限制一个账号只在一处登陆

大家好&#xff0c;我是广漂程序员DevinRock&#xff01; 1. 需求分析 前阵子&#xff0c;和问答群里一个前端朋友&#xff0c;随便唠了唠。期间他问了我一个问题&#xff0c;让我印象深刻。 他问的是&#xff0c;限制同一账号只能在一处设备上登录&#xff0c;是如何实现的…...

日常工作总结

日常工作总结 1000. JAVA基础1. 泛型1.1 泛型和Object的区别 1100. Spring1. 常用注解1.1 ControllerAdvice注解1.2 缓存Cacheable 2. 常用方法2.1 BeanUtils.copyProperties的用法 3. 常用功能组件3.1 过滤器Filter 2000. Linux应用 1000. JAVA基础 1. 泛型 1.1 泛型和Objec…...

Android Activity启动模式

文章目录 Android Activity启动模式概述四种启动模式Intent标记二者区别 Android Activity启动模式 概述 Activity 的管理方式是任务栈。栈是先进后出的结构。 四种启动模式 启动模式说明适用场景standard标准模式默认模式&#xff0c;每次启动Activity都会创建一个新的Act…...

【JavaScript】面试手撕防抖

引入 防抖可是前端面试时最频繁考察的知识点了&#xff0c;首先&#xff0c;我们先了解防抖的概念是什么。咳咳。&#x1f440; 防抖&#xff1a; 首先它是常见的性能优化技术&#xff0c;主要用于处理频繁触发的浏览器事件&#xff0c;如窗口大小变化、滚动事件、输入框内容…...

【Kubernetes】K3S

目录 前言一、原理单体架构高可用架构 二、初始化1.配置yum源2.关掉防火墙3.关掉selinux4. 修改内核参数5.关掉swap交换分区 三、安装master节点1. 安装container2.启动master服务 四、安装node节点五、卸载六、总结 前言 各位小伙伴们&#xff0c;大家好&#xff0c;小涛又来…...

Docker实战——容器

目录 Docker 容器的基本概念与操作1.使用“docker create”创建容器。这里基于Nginx的镜像创建了一个容器&#xff0c;名字为mycontainer。2.使用“docker ps -a”命令查看所有的容器&#xff0c;这时的容器不一定是运行状态。3.使用 “docker start” 命令可以启动容器。4.使用…...

亚信安慧AntDB开启超融合数据库新纪元

&#xff08;一&#xff09; 前言 据统计&#xff0c;在信息化时代的今天&#xff0c;人们一天所接触到的信息量&#xff0c;是古人一辈子所能接收到的信息量的总和。当今社会中除了信息量“多”以外&#xff0c;人们对信息处理的“效率”和“速度”的要求也越来越高。譬如&…...

数学建模【多元线性回归模型】

一、多元线性回归模型简介 回归分析是数据分析中最基础也是最重要的分析工具&#xff0c;绝大多数的数据分析问题&#xff0c;都可以使用回归的思想来解决。回归分析的任务就是&#xff0c;通过研究自变量X和因变量Y的相关关系&#xff0c;尝试去解释Y的形成机制&#xff0c;进…...

【 10X summary report】怎么看?详细解读笔记

报告内容 在开始正式的分析之前&#xff0c;需要查看在对齐和计数过程中生成的任何总结统计信息。下图是由Cell Ranger工具创建的10X总结报告&#xff0c;在从10X scRNA-seq实验生成计数矩阵时会生成。 The left half of the report describes sequencing and mapping statist…...

K8S—Pod控制器

目录 1.什么是POD控制器 2.POD控制器有几种类型 3.POD与控制器之间的关系 4.示例 4.1 Deployment 4.2 SatefulSet ①为什么要有headless&#xff1f; ②为什么要有volumeClainTemplate&#xff1f; ③服务发现&#xff1a;就是应用服务之间相互定位的过程。 ④K8S里服…...

LabVIEW石油钻机提升系统数字孪生技术

LabVIEW石油钻机提升系统数字孪生技术 随着数字化、信息化、智能化的发展&#xff0c;石油钻采过程中的石油钻机数字化技术提升成为了提高钻井效率、降低生产成本的重要途径。基于中石油云平台提供的数据&#xff0c;采用数字孪生技术&#xff0c;对石油钻机提升系统进行数字化…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...