给游戏行业来点GPT-4式震撼?这个叫Voyager的智能体不仅可以根据游戏的反馈自主训练,而且还能自行写代码推动游戏任务。
继斯坦福的25人小镇后,AI智能体又出爆款新作了。
最近,英伟达首席科学家Jim Fan等人把GPT-4整进了「我的世界」(Minecraft)——提出了一个全新的AI智能体Voyager。
Voyager的厉害之处在于,它不仅性能完胜AutoGPT,而且还可以在游戏中进行全场景的终身学习!
比起之前的SOTA,Voyager获得的物品多出了3.3倍,旅行距离变长了2.3倍,解锁关键技能树的速度快了15.3倍。
对此,网友直接震惊了:我们离通用人工智能AGI,又近了一步。
所以,未来的游戏,就是由大模型带动NPC来玩的吧?
真·数字生命
接入GPT-4之后,Voyager根本不用人类操心,完全就是自学成才。
它不仅掌握了挖掘、建房屋、收集、打猎这些基本的生存技能,还学会了自个进行开放式探索。
它会自己去到不同的城市,路过一片片海洋,一座座金字塔,甚至还会自己搭建传送门。
通过自我驱动,它不断探索着这个神奇的世界,扩充着自己的物品和装备,配备不同等级的盔甲,用盾牌格挡上海,用栅栏圈养动物……
Voyager的英勇事迹包括但不限于——
大战末影人
造基地
挖紫水晶
挖金子
收集仙人掌
打猎
钓鱼
数字生命的潜能究竟有多大?我们只知道,现在Voyager仍然在Minecraft中一刻不停地探索,不断扩展着自己的疆域。
「训练」无需梯度下降
此前,AI领域的一大挑战就是,构建具有通用能力的具身智能体,让它们在开放世界中自主探索,自行发展新技能。
以往,学界都是采用强化学习和模仿学习,但这些方法在系统化的探索、可解释性和泛化性等方面,表现往往差强人意。
大语言模型的出现,给构建具身智能体带来了全新的可能性。因为基于LLM的智能体可以利用预训练模型中蕴含的世界知识,生成一致的行动计划或可执行策略,这就非常适合应用于游戏和机器人之类的任务。
此前,斯坦福研究者构建出生活着25个AI智能体的虚拟小镇,震惊了AI社区
这种智能体还有一个好处就是,不需要具体化的自然语言处理任务。
然而,这些智能体仍然无法摆脱这样的缺陷——无法终身学习,因而不能在较长时间跨度上逐步获取知识,并且将它们积累下来。
而这项工作最重要的意义就在于,GPT-4开启了一种新的范式:这个过程中是靠代码执行「训练」,而非靠梯度下降。
Jim Fan解释道:我们在BabyAGI/AutoGPT之前就有了这个想法,花了很多时间找出最好的无梯度架构
「训练模型」是Voyager迭代式构建的技能代码库,而非浮点数矩阵。通过这种方法,团队正在将无梯度架构推向极限。
在这种情况下训练出的智能体,已经具备了同人类一样的终身学习能力。
比如,Voyager如果发现自己处在沙漠而非森林中,就会知道学会收集沙子和仙人掌就比学会收集铁矿更重要。
而且,它不仅能根据目前的技能水平和世界状态明确自己最合适的任务,还能根据反馈不断完善技能,保存在记忆中,留在下次调用。
所以,我们离硅基生命出现还有多远?
刚刚回到OpenAI的Karpathy对这个工作表示盛赞:这是个用于高级技能的「无梯度架构」。在这里,LLM就相当于是前额叶皮层,通过代码生成了较低级的mineflayer API。
Karpathy回忆起,在2016年左右,智能体在Minecraft环境中的表现还很让人绝望。当时的RL只能从超稀疏的奖励中随机地探索执行长期任务的方式,让人感觉非常stuck。
而现在,这个障碍已经在很大程度上被解除了——正确的做法是另辟蹊径,首先训练LLM从互联网文本上学习世界知识、推理和工具使用(尤其是编写代码),然后直接把问题抛给它们。
最后他感慨道:如果我在2016年就读到这种对智能体的「无梯度」方法,我肯定会大吃一惊。
微博大V「宝玉xp」也对这个工作给予了高度评价——
真的是了不起的尝试,整个代码都是开源的,这种自动生成任务->自动写代码执行任务->保存一个代码库可以重用的思路,应该是可以很容易应用到其他领域。
Voyager
与其他AI研究中常用的游戏不同,Minecraft并没有强加预定义的终点目标或固定的剧情线,而是提供了一个具有无尽可能性的游乐场。
对于一个有效的终身学习智能体来说,它应该具有与人类玩家类似的能力:
1. 根据其当前的技能水平和世界状态提出适当的任务,例如,如果它发现自己是在沙漠而不是森林中,就会在学习收集铁之前学习收集沙子和仙人掌
2. 基于环境反馈来完善技能,并将掌握的技能记入记忆,以便在类似情况下重复使用(例如,与僵尸战斗与与蜘蛛战斗类似)
3. 持续探索世界,以自我驱动的方式寻找新的任务。
为了让Voyager具有上述这些能力,来自英伟达、加州理工学院、得克萨斯大学奥斯汀分校和亚利桑那州立大学的团队提出了3个关键组件:
1. 一个迭代提示机制,能结合游戏反馈、执行错误和自我验证来改进程序
2. 一个技能代码库,用来存储和检索复杂行为
3. 一个自动教程,可以最大化智能体的探索
首先,Voyager会尝试使用一个流行的Minecraft Javascript API(Mineflayer)来编写一个实现特定目标的程序。
虽然程序在第一次尝试时就出错了,但是游戏环境反馈和Javascript执行错误(如果有的话)会帮助GPT-4改进程序。
左:环境反馈。GPT-4意识到在制作木棒之前还需要2块木板。
右: 执行错误。GPT-4意识到它应该制作一把木斧,而不是一把「相思木」斧,因为Minecraft中并没有「相思木」斧。
通过提供智能体当前的状态和任务,GPT-4会告诉程序是否完成了任务。
此外,如果任务失败了,GPT-4还会提出批评,建议如何完成任务。
自我验证
其次,Voyager通过在向量数据库中存储成功的程序,逐步建立一个技能库。每个程序可以通过其文档字符串的嵌入来检索。
复杂的技能是通过组合简单的技能来合成的,这会使Voyager的能力随着时间的推移迅速增长,并缓解灾难性遗忘。
上:添加技能。每个技能都由其描述的嵌入索引,可以在将来的类似情况中检索。
下:检索技能。当面对自动课程提出的新任务时,会进行查询并识别前5个相关技能。
第三,自动课程会根据智能体当前的技能水平和世界状态,提出合适的探索任务。
例如,如果它发现自己在沙漠而非森林中,就学习采集沙子和仙人掌,而不是铁。
具体来说,课程是由GPT-4基于「发现尽可能多样化的东西」这个目标生成的。
自动课程
实验
接下来,让我们看一些实验!
团队将Voyager与其他基于LLM的智能体技术进行了系统性的比较,比如ReAct、Reflexion,以及在Minecraft中广受欢迎的AutoGPT。
在160次提示迭代中,Voyager发现了63个独特的物品,比之前的SOTA多出3.3倍。
寻求新奇的自动课程自然会驱使Voyager进行广泛的旅行。即使没有明确的指示,Voyager也会遍历更长的距离(2.3倍),访问更多的地形。
相比之下,之前的方法就显得非常「懒散」了,经常会在一小片区域里兜圈子。
地图探索率
那么,经过终身学习后的「训练模型」——技能库,表现如何呢?
团队清空了物品/护甲,生成了一个新的世界,并用从未见过的任务对智能体进行了测试。
可以看到,Voyager解决任务的速度明显比其他方法更快。
值得注意的是,从终身学习中构建的技能库不仅提高了Voyager的性能,也提升了AutoGPT的性能。
这表明,技能库作为一种通用工具,可以有效地作为一个即插即用的方法来提高性能。
零样本泛化
上图中的数字是三次试验中提示迭代的平均值。迭代次数越少,方法越有效。可以看到,Voyager解决了所有的任务,而AutoGPT经过50次提示迭代都无法解决。
此外,与其他方法相比,Voyager在解锁木工具上快了15.3倍,石工具快8.5倍,铁工具快6.4倍。而且拥有技能库的Voyager是唯一解锁钻石工具的。
技能树掌握情况(木工具 → 石工具 → 铁工具 → 钻石工具)
目前,Voyager只支持文本,但在未来可以通过视觉感知进行增强。
在团队进行的一个初步研究中,人类可以像一个图像标注模型一样,向智能体提供反馈。
从而让Voyager能够构建复杂的3D结构,比如地狱门和房子。
结果表明,Voyager的性能优于所有替代方案。此外,GPT-4在代码生成方面也明显优于GPT-3.5。
消融实验
结论
Voyager是第一个由LLM驱动、可以终身学习的具身智能体。它可以利用GPT-4不停地探索世界,开发越来越复杂的技能,并始终能在没有人工干预的情况下进行新的发现。
在发现新物品、解锁Minecraft技术树、穿越多样化地形,以及将其学习到的技能库应用于新生成世界中的未知任务方面,Voyager表现出了优越的性能。
对于通用智能体的开发来说,无需调整模型参数的Voyager是可以作为一个起点的。
本文为专栏作者授权创业邦发表,版权归原作者所有。文章系作者个人观点,不代表创业邦立场,转载请联系原作者。如有任何疑问,请联系editor@cyzone.cn。