banner
约 2,700 字
9 分钟

Voyager: An Open-Ended Embodied Agent with Large Language Models 论文阅读

摘要

解析 Voyager 的自动课程、可执行技能库和三类反馈,核对科技树、四项新世界任务及消融,保留三次运行、提示预算、高层控制 API 和非视觉输入等条件。

Voyager 在 Minecraft 中不断提出下一项任务,生成执行代码,根据运行反馈修正,再把成功代码保存为可检索技能。后续任务可以调用旧技能,也可以把几个旧技能组合成新的行为。它展示了一种无需更新模型参数的能力积累方式:任务经历转化为经过环境检验的程序,程序再成为后续生成的材料。

这篇论文的核心由自动课程、技能库和迭代提示组成。实验报告了物品探索、科技树进度及新世界任务的收益。阅读时要同时保留边界:输入是结构化状态和文本反馈,执行依赖高层 Mineflayer API,主要实验只有三次运行。它的结论适用于这一控制与评测设置,不能直接当作从视觉到动作的通用机器人能力。

论文信息与总览

项目

信息

论文

Voyager: An Open-Ended Embodied Agent with Large Language Models

作者

Guanzhi Wang、Yuqi Xie、Yunfan Jiang、Ajay Mandlekar 等

阅读版本

arXiv:2305.16291v2,2023 年 10 月 19 日

主实验模型

gpt-4-0314、gpt-3.5-turbo-0301,向量模型为 text-embedding-ada-002

控制环境

MineDojo 与 Mineflayer JavaScript API

资料

论文、作者项目页

Voyager 的自动课程、迭代提示、技能检索与入库循环
Voyager 的自动课程、迭代提示、技能检索与入库循环

图源:原文图 2,PDF 第 2 页。课程提出任务,模型生成代码,环境与验证模块返回反馈,成功代码进入技能库,探索状态再用于下一项课程。

论文中的 lifelong learning 主要指系统持续积累和复用技能。GPT-4 通过黑盒接口参与,不进行在线梯度训练。技能库在当前上下文之外保存代码,所以能够跨任务保持已经形成的行为能力。

自动课程为什么要读取当前状态

开放世界没有唯一终点,直接要求“探索更多物品”过于笼统。第 2.1 节让 GPT-4 根据当前能力和资源提出可执行的新任务,目标是发现尽可能多样的内容。

提示词包含背包、装备、附近物体与生物、地形、时间、生命值、饥饿值和位置,还包含成功与失败任务。GPT-3.5 另外根据状态提出并回答问题,为课程补充背景。

例如,已有木镐和石材时可以制作石镐;处在河边且有鱼竿时可以尝试钓鱼。课程因此需要判断前置条件和当前环境,而非只按固定列表逐项执行。

这个模块仍会产生不存在的任务。论文列举了制作铜剑或铜胸甲等例子。语言模型的世界知识能帮助生成计划,也可能把错误规则带入任务选择。课程输出同样需要环境约束和失败反馈。

技能库保存的内容可以直接执行

Voyager 为代码生成描述并建立向量索引,再按任务检索相关技能
Voyager 为代码生成描述并建立向量索引,再按任务检索相关技能

图源:原文图 4,PDF 第 4 页。向量检索的 key 来自程序描述,value 是程序代码。生成新程序时读取的是相关技能内容,后续代码可以组合已有函数。

一个成功程序由 GPT-3.5 生成描述,再对描述编码建立索引。面对新任务,系统用任务解决建议和环境反馈构造查询,召回最相关的 5 个技能,作为 GPT-4 生成程序的上下文。

这与只保存失败反思存在分工差异。反思记录告诉模型“哪里容易出错”,技能库还保存“已经怎样完成操作”。可执行代码可以直接复用多步行为,并成为更复杂函数的依赖。

不过,某段代码完成过一次任务,不意味着它在所有背包、地形和版本条件下都正确。论文强调通用、可复用的代码生成要求,但没有证明库中每个技能都具备形式化正确性。实际实现需要记录技能依赖、适用条件和验证经历,这是从该设计延伸的建议。

三种反馈怎样进入修正循环

环境反馈报告操作进度和缺失条件,例如合成某项工具仍缺少材料。程序解释器报告异常,例如访问不存在的物品名或调用无效函数。两者分别描述环境状态与程序执行问题。

第三种反馈来自自验证。系统把当前状态和任务交给另一轮 GPT-4 判断,检查是否成功,失败时提出改进意见。它依据外部状态做判断,但判断过程仍由模型完成。

生成代码、运行、收集三种反馈后,系统继续修改。最多进行 4 轮代码生成,成功则入库并提出下一任务,仍未成功时暂时转向其他任务。论文明确设置了循环上限。

自验证也可能误判。图 6 展示了根据背包里的掉落物判断是否击败生物等情况。工程上,当前背包含某物品与本轮新获得该物品并不总是同一个事实。能够读取事件或前后状态差分时,应优先把这些证据提供给验证环节。这个判断是对论文验证方式的应用分析。

主要实验中的“更快”是什么

探索实验统一给出“探索世界,获得尽可能多的物品”的目标,预算为 160 次代码生成提示迭代,每种方法运行三次。Voyager 报告发现约 63 种物品,约为比较系统的 3.3 倍。这里统计的是不同物品种类,不是所有物品数量。

ReAct、Reflexion 和 AutoGPT 原本无法直接用于该 Minecraft 设置,作者重新组织它们的执行与反馈流程。实验中的系统包含这些适配选择,不能理解为对所有实现版本的永久排名。

不同系统到达 Minecraft 工具等级所需的提示迭代与成功次数
不同系统到达 Minecraft 工具等级所需的提示迭代与成功次数

图源:原文表 1,PDF 第 7 页。括号中的分数表示三次运行中的成功次数。数字表示提示迭代次数,不能解释为秒数。

工具等级

AutoGPT

Voyager

成功次数

木工具

92 ± 72

6 ± 2

两者均为 3/3

石工具

94 ± 72

11 ± 2

两者均为 3/3

铁工具

135 ± 103

21 ± 7

两者均为 3/3

钻石工具

未达到

102

Voyager 为 1/3

摘要中的“最高 15.3 倍”对应木工具阶段约 92/6 的提示迭代比。它没有表示所有任务墙钟时间都缩短 15.3 倍。一轮迭代还可能包含课程、描述和验证调用,完整成本需要另行统计。

钻石工具只在三次运行中的一次解锁,说明高级目标仍不稳定。无技能库版本可以到达铁工具,却未在预算内解锁钻石工具,提示复用程序对后期复杂任务更有帮助。

新世界评测怎样检查技能复用

作者清空背包、重置到新生成的世界,再测试四项未见任务:钻石镐、金剑、熔岩桶和指南针。每项任务最多 50 次提示迭代,运行三次。

任务

Voyager 有技能库

Voyager 无技能库

钻石镐

19 ± 3,3/3

36,2/3

金剑

18 ± 7,3/3

30 ± 9,3/3

熔岩桶

21 ± 5,3/3

27 ± 9,3/3

指南针

18 ± 2,3/3

26 ± 3,3/3

数据来自原文表 2。技能库主要改善所测任务的迭代效率,钻石镐任务中也改善了成功次数。作者还把自己的技能库接入 AutoGPT,后者在部分任务中获得成功,支持技能作为可迁移组件的用途。

这里的 zero-shot 指新任务与新世界中无需重新训练参数,系统仍可利用已经积累的技能。它不表示没有背景知识、没有历史资产或只运行一次。

消融说明了哪些关键组件

自动课程、技能库、代码生成模型与三类反馈的消融曲线
自动课程、技能库、代码生成模型与三类反馈的消融曲线

图源:原文图 9,PDF 第 9 页。横轴为代码生成提示迭代,纵轴为发现的不同物品数。右侧将环境反馈、异常信息和自验证分别移除。

用随机课程替换自动课程,发现物品数下降约 93%;移除技能库,后期增长出现停滞;移除自验证,发现物品数下降约 73%。这些结果支持任务选择、程序复用和成功判断在该系统中的作用。

把代码生成用的 GPT-4 换成 GPT-3.5 后,其他 GPT-4 模块仍保留,因此这个消融并非整个系统换成 GPT-3.5。论文报告完整版本获得约 5.7 倍物品,说明代码生成能力也影响循环能否有效运行。

消融曲线衡量最终探索结果,不能单独给出验证器准确率或课程正确率。模块之间存在依赖:错误判断任务成功,会同时影响技能入库和下一项任务选择。

复用到其他 Agent 时需要哪些条件

这个循环适合有可执行工具、可观察结果和可复用子程序的场景。例如,重复的数据处理工作可以把已验证脚本保存为技能,后续根据新输入组合使用。但游戏环境里的成功定义和程序接口不能直接迁移到另一个业务。

应先明确任务状态、执行日志和验收标准,再决定哪些成功程序能够入库。技能保存来源、输入输出、依赖及验证条件,检索时除描述相似度外还检查条件是否满足。最后记录每项任务的尝试次数和累计模型调用,避免只看到一个最终成功结果。

与低层控制方法比较时,需要保持观察和动作接口一致。论文明确不直接比较只看像素、输出键鼠动作的方法,因为 Mineflayer 已提供较高层控制能力。附录还说明角色死亡后会复活并保留背包,这也是探索结果的环境条件。

限制与阅读重点

论文的主要系统不具备视觉感知。展示复杂建筑时,作者另外引入人工视觉反馈或人工任务分解,不能把这些效果归入完全自主的文本设置。

LLM 仍会生成无效 API、错误合成规则和不可实现的任务,验证模块也会失败。实验三次运行与四项迁移任务的覆盖范围有限,尚不足以证明无限时长的可靠自主进化。

Voyager 最值得学习的是把成功经验保存为程序,并让新任务、执行反馈和技能复用形成循环。阅读时先看第 2 节和图 2—4,再看表 1—2中的预算与分母,最后查附录 B 的控制环境和基线适配。复用之前,先确定自己的环境是否提供同样清楚的执行和成功证据。

来源:Voyager 论文 v2,第 2—4 节、图 2、图 4、图 9、表 1—2、附录 B。技能条件记录和状态差分验证属于阅读后的工程建议。

END