Voyager
Voyager: An Open-Ended Embodied Agent with Large Language Models
用大模型来玩Minecraft
由 LLM 驱动的体现终身学习代理,它不断探索世界,获得各种技能,并在没有人为干预的情况下做出新的发现
这个类似AutoGPT
1)最大化探索的自动课程(Automatic Curriculum)
2)不断增长的可执行代码技能库,用于存储和检索复杂行为,
3)新的迭代提示机制,其中包含环境反馈,执行错误和自我验证(environment feedback, execution errors, and self-verification)以改进程序
Voyager通过黑盒查询与GPT-4交互(对话交互),这绕过了模型参数微调的需要。Voyager开发的技能是时间扩展的,可解释的和组合的(意思是交互的结果会被以代码的形式保存下来),它迅速地增强了agent的能力并减轻了灾难性的遗忘。
这算是In-context learning的一大进步
Voyager表现出强大的上下文终身学习能力,并在玩Minecraft方面表现出非凡的熟练程度。它获得的独特物品增加了 3.3 倍,行驶距离延长了 2.3 倍,解锁关键科技树里程碑的速度比之前的 SOTA 快 15.3 倍。Voyager能够利用在新的Minecraft世界中学到的技能库从头开始解决新任务,而其他技术则难以概括。
动机
构建在开放式世界中不断探索、规划和开发新技能的通用能力体现代理是人工智能社区面临的一项重大挑战。经典方法采用强化学习 (RL) 和模仿学习,它们对原始动作进行操作,这对于系统探索、可解释性和泛化可能具有挑战性。基于大型语言模型(LLM)的代理的最新进展利用预先训练的LLM中封装的世界知识来生成一致的行动计划或可执行策略。它们适用于游戏和机器人等具体任务,以及没有体现的NLP任务。然而,这些智能体并不是可以在较长时间内逐步获取、更新、积累和转移知识的终身学习者。
让我们以《我的世界》为例。与在人工智能中研究的大多数其他游戏不同,《我的世界》没有强加预定义的最终目标或固定的故事情节,而是提供了一个具有无限可能性的独特游乐场。一个有效的终身学习代理应该具有与人类玩家类似的能力:
(1)根据其当前的技能水平和世界状态提出合适的任务,例如,如果它发现自己在沙漠而不是森林中,学会在铁之前收获沙子和仙人掌;
(2)根据环境反馈完善技能,并将掌握的技能记在记忆中,以备将来在类似情况下重复使用(例如,与僵尸战斗类似于与蜘蛛战斗);
(3)不断探索世界,以自我驱动的方式寻找新的任务。
这是很好的动机,利用大模型对开放世界的常识知识,这是RL所不具备的。另外,不断做探索,并获得开放世界的反馈,并把反馈以In-context的形式保存下来提升自身,这样又借用的RL的探索-记忆 思想,非常棒
实现
Voyager通过三个关键模块实现:
1)最大化探索的自动课程;
2)用于存储和检索复杂行为的技能库;
3)新的迭代提示机制,可生成用于体现控制的可执行代码。
我们选择使用代码作为动作空间,而不是低级的马达命令,因为程序可以自然地表示时间扩展和组合动作,这对于 Minecraft 中的许多长期任务至关重要。Voyager通过提示和上下文学习与黑盒LLM(GPT-4)进行交互。我们的方法绕过了对模型参数访问和基于梯度的显式训练或微调的需求。
- Automatic curriculum 自动课程
自动课程会考虑探索进度和智能体的状态,以最大化探索。该课程由 GPT-4 基于“发现尽可能多的不同事物”的总体目标生成。这种方法可以被视为一种上下文形式的新颖搜索形式。
2. Skill Library 技能库
图片上方部分:
添加新技能。每个技能都通过Embedding来索引,可以在将来的类似情况下检索。
图片下方部分:技能检索。
当面对自动课程提出的新任务时,我们会执行查询以确定top 5 的相关技能。复杂的技能可以通过编写更简单的程序来组合,随着时间的推移,Voyager的能力会迅速增强,并减轻灾难性的遗忘。
3. Iterative Prompting Mechanism 迭代提示机制
通过向 GPT-4 提供agent的当前状态和任务,我们要求它充当批评者(Critic)并通知我们程序是否完成了任务。此外,如果任务失败,它会通过建议如何完成任务来提供批评。
@article{wang2023voyager,
title = {Voyager: An Open-Ended Embodied Agent with Large Language Models},
author = {Guanzhi Wang and Yuqi Xie and Yunfan Jiang and Ajay Mandlekar and Chaowei Xiao and Yuke Zhu and Linxi Fan and Anima Anandkumar},
year = {2023},
journal = {arXiv preprint arXiv: Arxiv-2305.16291}
}
ChatGLM+langChain
启动模型
文本分割
chunk大小为500,重叠度为200
构建向量库
向量化
Faiss存储向量化
根据提问query根据Embedding索引相似文本
找到相关的文本定位,再进行上下扩充
topk有多个的话,要重新排序和去重,避免重复浪费Token数量
构造Prompt
已知信息:{context}+根据已知信息回答问题:{query}
ChatGLM生成回答
特点
支持PDF、TXT、markDown、Docx
对PDF使用ocr来识别
优化方向
模型微调
对LLM和Embedding基于专业领域数据进行微调
文档加工
文段划分方式的改进
对上下文怎么做补充,上下文和中心句的相关度比较高的话再加
在文本分段后,对每段分别进行总结,基于总结内容语义进行匹配
借助不同模型的能力
在text2sql、text2cpyher场景下,先经过代码生成模型,然后做检索,然后再去送给语言模型
后续开发计划
扩充数据源
库表、图谱、网页数据
知识库管理
完善知识库中增删改查的功能,支持更多向量库类型
扩充文本划分方式
针对中文场景,提供更多文本划分和上下文扩充方式
探索Agent应用
利用LLM做controller,探索Agent的实现与应用
附赠
【一】上千篇CVPR、ICCV顶会论文
【二】动手学习深度学习、花书、西瓜书等AI必读书籍
【三】机器学习算法+深度学习神经网络基础教程
【四】OpenCV、Pytorch、YOLO等主流框架算法实战教程
➤ 还可咨询论文辅导❤【毕业论文、SCI、CCF、中文核心、El会议】评职称、研博升学、本升海外学府!