【论文精读】VOYAGER: An Open-Ended Embodied Agent with Large Language Models

Understanding LSTM Networks

  • 前言
  • Abstract
  • 1 Introduction
  • 2 Method
    • 2.1 Automatic Curriculum
    • 2.2 Skill Library
    • 2.3 Iterative Prompting Mechanism
  • 3 Experiments
    • 3.1 Experimental Setup
    • 3.2 Baselines
    • 3.3 Evaluation Results
    • 3.4 Ablation Studies
    • 3.5 Multimodal Feedback from Humans
  • 4 Limitations and Future Work
  • 5 Related work
  • 6 Conclusion
  • 阅读总结

前言

一篇AI-Agent的文章,论文一出即火遍全网,用大语言模型玩Minecraft,在这之前想都不敢想。文章中所有的工作基本上都是基于prompt实现的,这也进一步说明了GPT-4丰富的知识储备和强大的理解能力。作者从人学习的角度出发,让LLM也遵循人学习的范式,一步步在未知的世界中进行探索,这样的工作思路对探索当前大语言模型的能力来说可谓至关重要。


Paperhttps://arxiv.org/pdf/2305.16291.pdf
Codehttps://github.com/MineDojo/Voyager
FromarXiv

Abstract

本文提出VOYAGER,这是在Minecraft中第一个由LLM驱动的终身学习智能体,用于持续探索这个世界。它有三个核心组件:

  1. 最大化探索的自动课程。
  2. 不断增长的技能库(可执行代码),用于存储和检索。
  3. 新的迭代提示机制,结合环境反馈、执行错误和自我验证来改进程序。

VOYAGER通过黑盒查询与GPT-4交互,无需参数微调。在游戏中,VOYAGER展现出强大的情景终身学习能力,表现出非凡的熟练度,远比其它SOTA方法高效。
image.png

1 Introduction

构建具有通用能力的具身智能体,在开放世界不断探索、规划和开发新技能,是AI社区面临的一项巨大挑战。传统的方法采用强化学习和模仿学习,这些方法在系统探索、可解释性和泛化性上都具有挑战性。最近基于LLM的智能体利用预训练封装的世界知识来生成一致的动作计划和可执行的策略,可以应用到游戏或者机器人上,但是这些智能体并不是终身学习者,无法在较长时间跨度内逐步获取、更新、累积和转移知识。
Minecraft和许多AI研究的游戏不同,它没有强加的特定目标和故事情节,是一个具有无限可能的游乐场。玩家需要在广阔无垠的3D场景通过收集资源来解锁技能树,从学习最基本的砍树、做饭技能,到学习复杂的战斗、制作钻石等技能。作者认为高效的终身学习智能体应该有和人类类似的能力:

  1. 根据当前能力和环境,提出合适的任务。
  2. 基于环境改进技能,牢记核心技能以便复用。
  3. 不断探索世界,通过自我驱动方式寻找新技能。

基于上述目标,本文提出VOYAGER,它是第一个LLM驱动的具身终身学习智能体,在Minecraft中不断探索学习,做出新的发现,而无需人工干预。VOYAGER通过三个关键模块实现:

  1. 自动课程:最大化探索;
  2. 技能库:存储并检索复杂行为。
  3. 新的迭代提示机制。生成用于具体控制的代码。

image.png
作者采用具体的代码而不是低级的运动指令,是因为程序可以自然表示时间扩展和组合动作,这些都是Minecraft中长期任务的关键。VOYAGER通过prompting和上下文学习与黑盒GPT-4交互,无需微调模型的参数。
更具体来说,VOYAGER考虑到探索进度和智能体状态,试图解决自动课程提出的越来越困难的任务。课程是通过GPT-4根据“发现尽可能多的不同事物”的总体目标而生成的,这可以看做是一种新的上文搜索形式。VOYAGER通过存储帮助任务成功的行动程序来逐步构建技能树,每个程序都采用描述嵌入作为索引,以帮助之后的检索。复杂的任务可以解耦成多个简单的程序,这可以迅速增强VOYAGER的能力,并减轻灾难性遗忘问题。
然而,LLMs很难在one-shot下给出正确一致的行为代码,因此本文提出了迭代提示机制:

  1. 执行生成的程序,获取在Minecraft的观察结果。
  2. 将反馈结果纳入GPT-4的prompt中,以进行下一轮优化。
  3. 重复执行,直到自验证模块确认任务完成。

VOYAGER展现出强大的上下文终身学习的能力。它可以构建一个不断增长的动作程序技能库,这些程序可复用、可解释并可以推广到新任务。远远优于其它基于LLM的代理技术,作者进一步证明,VOYAGER能够在新的Minecraft世界中利用学习到的技能库解决新的任务,具有很好的泛化性能。

2 Method

VOYAGER由三个新颖的组件构成:

  1. 一个自动化课程,指引开放式搜索的目标。
  2. 技能库,存储日益增多的复杂行为。
  3. 迭代提示机制,生成具身控制的代码。

2.1 Automatic Curriculum

具身智能体在开放环境中会遇到各种不同复杂程度的目标,而自动化课程可以确保有挑战性但可管理的学习过程,培养智能体智能体在好奇心驱动下学习并探索,鼓励制定通用且灵活的问题解决策略。本文的自动化课程基于GPT-4庞大的知识,促使其生成源源不断的任务或挑战。课程以自下而上的方式展开,会根据智能体当前的探索和状态自适应响应。随着VOYAGER朝着更复杂的目标前进,它自然会学会各种技能。
image.png
输入给GPT-4的prompt有如下组件:

  1. 鼓励多样化的行为并加以约束。
  2. 智能体当前的状态。
  3. 之前完成和失败的任务。
  4. 附加文本。利用GPT-3.5提出问题,并用wiki知识库自我回复,为GPT-4提供额外的上下文。

2.2 Skill Library

随着自动化课程源源不断提出复杂的问题,有必要一个技能库来存储已经学习到的技能。受到程序通用性、可解释性以及普遍性的启发,作者提出用可执行代码来表示每项技能,这些代码可以支撑扩展的动作,以完成自动课程提出的特定任务。
输入的prompt有如下组件:

  1. 代码生成的指导。包括一些约束和提示。
  2. 控制原始APIs,并且能够从技能库中进行检索。
  3. 上一轮生成的代码,环境反馈,执行错误和评判可以帮助GPT-4进行自我提升。
  4. 智能体当前的状态。
  5. 在代码生成之前进行CoT的推理。

作者通过新颖的迭代提示机制完善程序,并将其作为新技能合并到技能库中(描述嵌入作为索引),对于技能检索,通过任务计划和环境反馈来查询技能库。通过不断完善和扩展技能库,VOYAGER可以不断突破在开放世界的能力界限。

2.3 Iterative Prompting Mechanism

作者引入了迭代提示机制,通过三种反馈进行自我提升:

  1. 环境反馈。
  2. 执行错误。
  3. 自我验证任务是否完成。给定当前的状态和任务,通过GPT-4推理判断是否完成。

image.png
image.png
在生成代码的每一轮,作者都执行生成程序,从代码解释器中获取环境反馈和执行错误,这些信息会纳入到GPT-4的prompt中,用于下一轮代码优化。当自我验证程序验证任务完成后,新完成的任务作为新技能放入技能库中,并向自动课程寻求新的目标。如果智能体陷入代码迭代超过四轮,将会更换任务。

3 Experiments

3.1 Experimental Setup

略。

3.2 Baselines

ReAct、Reflexion and AutoGPT。这些方法都是设计用于非具身的NLP任务,因此需要进行一些兼容操作。实验过程都是通过调用Mineflayer API来控制智能体。本文的重点是突破GPT-4的极限,来实现终身具身学习,因此和3D感知以及运动传感无关。

3.3 Evaluation Results

作者系统评估了各个方法的探索性能、技能树掌握、地图探索以及对新世界中新任务的零样本泛化能力。
Significantly better exploration.
探索性能在第一张图中得以表现,VOYAGER的优势在于能够不断取得进步,在160迭代中发现了63个不同的物品,是其它方法的3.3倍,此外,AutoGPT在新物品发现上严重滞后,而ReAct和Reflexion则难以取得重大进展,主要原因是在开放世界中没有课程指导。
Consistent tech tree mastery.
Minecraft技能树测试了智能体制作和使用工具层次结构的能力。和baselines相比,VOYAGER在解锁wooden level上快了15.3倍,在解锁stone level上快了8.5倍,在解锁iron level上快了6.4倍,并且VOYAGER是唯一解锁diamond level的方法,这强调了自动课表的有效性。
Extensive map traversal.
VOYAGER的探索距离比baselines长2.3倍,并且基线的智能体往往局限于局部区域。
image.png
Efficient zero-shot generalization to unseen tasks.
为了评估零样本泛化,作者清除了智能体的inventory,重置为新实例化的世界,去做未见过的任务。VOYAGER可以一致地解决所有任务,而基线无法解决50轮迭代内的任务。有趣的是,终身学习的技能库不仅增强了VOYAGER的性能,还增强了AutoGPT的性能,说明技能库可以作为一种即插即用的工具来提高性能。

3.4 Ablation Studies

作者设计了六种消融实验,结果如下图所示:
image.png
有如下主要的发现:

  1. 自动课程对智能体的持续进步有关键作用。
  2. 缺少技能库的情况下,VOYAGER在后期没有上升空间。
  3. 自我验证在所有反馈类型中是最重要的部分。
  4. GPT-4在代码生成上要远优于GPT-3.5。

3.5 Multimodal Feedback from Humans

VOYAGER不支持视觉感知,但是在多模态感知下,VOYAGER的能力理论上会得到增强,以实现更复杂的任务。作者证明给定人类反馈,VOYAGER在Minecraft中可以构建更复杂的3D结构。如下图所示:
image.png
有两种整合人类反馈的方法:

  1. 将人类作为critic,代替自我验证模块,可以帮助VOYAGER纠正涉及3D等结构感知的错误。
  2. 人类作为课程,代替自动课程模块,人类可以将复杂的任务分解为多个小步骤,指导VOYAGER逐步解决。

4 Limitations and Future Work

  1. 开销大。GPT-4 API需要巨大的开销,是3.5的15倍,但是代码生成部分没有GPT-4不行。
  2. 误差大。尽管有迭代提示机制,仍然会出现智能体无法生成正确技能的情况。
  3. 幻觉。自动课程偶尔会提出不可能完成的任务(即游戏中不存在的任务)。在代码生成中也会出现幻觉。

不过对于上述问题,作者相信随着GPT API的改进,在未来是可以克服这些限制的。

5 Related work

略。

6 Conclusion

本文提出了VOYAGER,是第一个基于LLM的具身终身学习智能体,可以让GPT-4不断探索世界,学习复杂的技能,无需人类干预的情况下作出新的发现。VOYAGER展现出超前的探索新物品的能力,解锁技能树,探索地形,并将学习到的技能库用于未见过的任务。整个过程只需要调佣API,无需微调模型。

阅读总结

看的第一篇AI-Agent的工作,说实话有点震惊到我,虽然这个已经是23年5月份的工作了。现在各种各样场景的AI-Agent已经层出不穷,而这篇基于Minecraft的工作让我看到了AI-Agent的无限可能,虽然Minecraft是游戏,但是其对现实世界已经有了非常完整的模仿,在这个世界中,VOYAGER真的像人类玩家一样,进行思考、探索和学习,当然受限于GPT的能力和上下文的长度,以及视觉感知的传感器,它并不能真正实现具身终身学习。相信在之后,随着多模态知识的注入,以及GPT性能的增强,AI-Agent能够表现出更强的能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/196698.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习笔记】Java安全之动态加载字节码

文章目录 什么是Java的字节码利用URLClassLoader加载远程class文件利用ClassLoader#defineClass直接加载字节码利用TemplatesImpl加载字节码利用BCEL ClassLoader加载字节码 最近在学习Phith0n师傅的知识星球的Java安全漫谈系列,随手记下笔记 什么是Java的字节码 J…

jenkins清理缓存命令

def jobName "yi-cloud-operation" //删除的项目名称 def maxNumber 300 // 保留的最小编号&#xff0c;意味着小于该编号的构建都将被删除 Jenkins.instance.getItemByFullName(jobName).builds.findAll { it.number < maxNumber }.each { it.delet…

Vite - 配置 - 文件路径别名的配置

为什么要配置别名 别名的配置&#xff0c;主要作用是为了缩短代码中的导入路径。例如有如下的项目目录&#xff1a; project-name| -- src| -- a| --b| --c| --d| --e| -- abc.png| -- index.html| -- main.js如果想在 main.js 文件中使用 abc.png ,则使用的路径是 &#xff1…

量化交易:公司基本面的量化

公司的基本面因素一直具备滞后性&#xff0c;令基本面的量化出现巨大困难。而从上市公司的基本面因素来看&#xff0c;一般只有每个季度的公布期才会有财务指标的更新&#xff0c;而这种财务指标的滞后性对股票表现是否有影响呢&#xff1f;如何去规避基本面滞后产生的风险呢&a…

【草料】uni-app ts vue 小程序 如何如何通过草料生成对应的模块化二维码

一、查看uni-app项目 1、找到路径 可以看到项目从 src-race-pages-group 这个使我们目标的查询页面 下面我们将这个路径copy到草料内 2、找到进入页面入参 一般我们都会选择 onload() 函数下的入参 这里我们参数的是 id 二、草料 建议看完这里的教程文档 十分清晰&#xff01…

彩色年终工作总结汇报PPT模板下载

这是一套彩色年终工作总结汇报PPT模板&#xff0c;共27页&#xff1b; PPT模板封面&#xff0c;使用了红黄蓝色块、网格背景。中间填写年终工作总结汇报PPT标题。界面为简约商务风格。 PowerPoint模板内容页&#xff0c;由25张彩色动态幻灯片图表&#xff0c;搭配PPT文字排版…

二十一、数组(1)

本章概要 数组特性 用于显示数组的实用程序 一等对象返回数组 简单来看&#xff0c;数组需要你去创建和初始化&#xff0c;你可以通过下标对数组元素进行访问&#xff0c;数组的大小不会改变。大多数时候你只需要知道这些&#xff0c;但有时候你必须在数组上进行更复杂的操作…

Nuxt3框架全局引用外部JS/CSS文件的相关配置方法

全局引入外部文件方法&#xff1a; 找到根目录下的nuxt.config.ts配置文件&#xff1b;然后如上图所示&#xff0c;在defineNuxtConfig配置对象下app选项节点下&#xff0c;head对象中即可配置全局需要的JS或CSS文件&#xff1b; // https://nuxt.com/docs/api/configuration/…

Pytorch torch.norm函数详解用法

torch.norm参数定义 torch版本1.6 def norm(input, p"fro", dimNone, keepdimFalse, outNone, dtypeNone)input input (Tensor): the input tensor 输入为tensorp p (int, float, inf, -inf, fro, nuc, optional): the order of norm. Default: froThe following …

【JVM】内存区域划分、类加载机制(双亲委派模型图解)、垃圾回收(可达性分析、分代回收)

一、JVM简介 JVM (Java虚拟机) 是执行Java字节码的虚拟机。它是Java平台的核心&#xff0c;并且为Java代码提供了跨平台的能力。JVM 是一种虚拟的计算机&#xff0c;在其上运行的程序是Java字节码&#xff0c;它提供了Java代码在不同操作系统和硬件平台上执行的能力。JVM 将Ja…

C++之map容器

C之map容器 map构造和赋值 #include<iostream> #include<string> using namespace std; #include<map>void printMap(map<int,int>&m) {for (map<int,int>::iterator it m.begin();it ! m.end();it){//cout <<"key is: "&l…

vue --version无法显示,只弹出vs窗口

参考连接&#xff1a; nodejs环境配置&#xff08;解压包&#xff09;安装教程_nodejs解压版安装及环境配置_tubond的博客-CSDN博客 原因&#xff1a;环境没搞好&#xff0c;没有设置全局文件夹&#xff0c;node默认放在C盘了&#xff0c;C盘有权限。因为npm -i vue/cli创建…

[acwing周赛复盘] 第 94 场周赛20230311

[acwing周赛复盘] 第 94 场周赛20231118 总结5295. 三元组1. 题目描述2. 思路分析3. 代码实现 5296. 边的定向1. 题目描述2. 思路分析3. 代码实现 六、参考链接 总结 好久没做acw了&#xff0c;挺难的。T1 模拟T2 前缀和以及优化。T3 贪心 5295. 三元组 链接: 5295. 三元组…

Redis面经

Redis使用场景 1、缓存&#xff1a; 缓存三兄弟(穿透、击穿、雪崩) 、双写一致、持久化、数据过期策略&#xff0c;数据淘汰策略 2、分布式锁 setnx、redisson 3、消息队列 4、延迟队列 何种数据类型&#xff08;list、zset&#xff09; 缓存三兄弟 缓存穿透 缓存穿透…

信创之路数据库人大金仓篇

概要 信创大势所趋&#xff0c;吾等上下求索 参考文档 Linux&#xff1a;人大金仓数据库-KingBaseES V8与 php7的连接配置 laravel9适配人大金仓&#xff08;kingbase&#xff09;数据库 thinkphp6适配人大金仓&#xff08;Kingbase&#xff09;数据库 数据库选型 目前比较…

kafka入门(一):kafka消息消费

安装kafka&#xff0c;创建 topic&#xff1a; Windows安装kafka, 详情见&#xff1a;https://blog.csdn.net/sinat_32502451/article/details/133067851 Linux 安装kafka&#xff0c;详情见&#xff1a;https://blog.csdn.net/sinat_32502451/article/details/133080353 添…

[Docker]六.Docker自动部署nodejs以及golang项目

一.自动部署nodejs 1.创建node项目相关文件 app.js代码如下: var express require(express);var appexpress();app.get(/,function(req,res){res.send(首页update); }) app.get(/news,function(req,res){res.send(首页); })//docker做端口映射的时候不要指定ip app.listen(30…

智能指针面试题

智能指针被问到的概率还是很大的&#xff0c;特别是Shared_ptr&#xff0c;最好会手撕&#xff0c;亲身经历&#xff01; 基本概念 1. RAll RAII&#xff08;Resource Acquisition Is Initialization&#xff09;是一种利用对象生命周期来控制程序资源&#xff08;如内存、文…

解决更换NodeJs版本后npm -v返回空白

一、问题描述 win11电脑上输入cmd进入控制台&#xff0c;输入 node --version 有正常返回安装的nodejs的版本号 再输入 npm -v 返回空白。正常情况应该是要返回版本号。 二、问题背景 最近准备学习vue&#xff0c;在不久前已经安装了NodeJs和python。运行了好几个开源项…

Git配置代理:fatal: unable to access*** github Failure when receiving data from

~吐槽一下 github自从被微软收购以后&#xff0c;大多数情况没点科技上网都进不去了&#xff0c;还是怀念以前随时访问的时光。 我一直都是开着系统代理的&#xff0c;但是今天拉一个项目发现拉不下来了&#xff0c;报错&#xff1a; fatal: unable to access https://githu…