← 返回目录

01 main idea

  • high-level 规划 + 基于 RL 的 low-level 执行。
  • 首先,让 LLM 生成基本 skill(技能),例如找到某个物品、制作某个物品。LLM 会提供 skill 的输入(比如制造物品需要消耗什么、需要背包里已经有什么)和输出(制造物品后 得到了新物品)。
  • 基于 RL,学会执行每一个 low-level skill:这一步是常规的 RL 训练,为每个 skill 训练一个 policy。
  • high-level planning:给定一个目标后,根据 LLM 生成的 skill 的输入输出,可以建一个有向无环图(DAG),这个图说明了我们执行任务的逻辑关系。然后,在图上进行搜索,找到从起点到终点的最短路,依次执行路径上的 skill。

02 如何确定要学的 skill 列表

  • 提出了三种细粒度的基本 skill:

    • Finding-skills,找到某个物品;
    • Manipulation-skills,操作某个工具;
    • Crafting-skills,制作某个物品。
  • 使用 ChatGPT 生成 skill 信息(prompt 见附录 E),ChatGPT 能够生成所有 skill(55 个),犯了 6 个错误,作者手动更正了错误。

具体 prompt:(首先提供一些已有 skill 的格式,解释这个格式的含义,然后让 LLM 生成其他 skill 的信息)

I am playing the game Minecraft. I define some basic skills, like attack something, collect something and place something nearby. I list the skills in a special format.

As an example:

furnace_nearby:
consume:
'furnace': 1
require:
equip: ['furnace']
obtain:
'furnace_nearby': 1

To understand this skill line by line: the skill is to get a furnace_nearby . 'consume' means things will be consumed or killed. In this skill, furnace * 1 will be consumed. 'require' means things are needed but will not be consumed. In this skill, nothing else is required. We should equip furnace to the first slot. If you do not have to equip anything, write 'equip: []'. Finally, we will obtain furnace_nearby * 1.

Another example:

cobblestone:
consume:
'cobblestone_nearby': 1
require:
'wooden_pickaxe': 1
equip: ['wooden_pickaxe']
obtain:
'cobblestone': 1

To understand: to mine a cobblestone, we will consume a nearby cobblestone. A wooden_pickaxe is required and should be equipped, but will not be consumed.

Now you understand the rule of this format. Please help me generate the following skills: crafting_table_nearby, wool, beef, diamond.

skill 格式:(consume 代表该物品会消耗,而 require 代表执行 skill 需要这个物品,但执行完 skill 后,该物品不会被消耗)

# Manipulation-skills
crafting_table_nearby:
consume:
'crafting_table': 1
require:
equip: ['crafting_table']
obtain:
'crafting_table_nearby': 1
wool:
consume:
'sheep_nearby': 1
require:
'shears': 1
equip: [ 'shears']
obtain:
'wool': 1 # Crafting-skills
bed:
consume:
'planks': 3
'wool': 3
require:
'crafting_table_nearby': 1
equip: []
obtain:
'bed': 1 furnace:
consume:
'cobblestone': 8
require:
'crafting_table_nearby': 1
equip: []
obtain:
'furnace': 1

03 如何获取一个 low-level skill 的 policy

  • policy:使用 RL 训练,基于 MineDojo 模拟器。

    • observation:RGB 图像 + 一些辅助信息(指南针、位置、生物群落等);
    • action:论文中没有详细说明,应该是往各个方向走 / 跑,蹲下,挖不同方向的物品,转身等等(?)
  • 随机策略会原地打转 + mc 的地图较大 + 稀疏奖励,导致 Finding-skill 很难训:

    • 在 500 步内,随机策略在平原上只能行进到 5 个方块的距离。
    • 由于树木在平原上很少见,并且通常离玩家有 > 20 的距离,因此如果直接训的话,“获得木头”这种 skill 会训不出来。
  • 解决方案:

    • Finding-skills 用分层策略训,high-level 策略输出要到达的点,low-level 策略控制 agent 走到那个点去;先训 low-level 策略,再训 high-level 策略(听起来有道理,感觉确实可以训出来,并且 low-level 策略可以用 HER 训()
  • Manipulation-skills 和 Crafting-skills 也存在稀疏 reward 的问题,这篇工作用 MineCLIP(先前的神秘工作)生成 intrinsic reward。如果需要什么原料,就先用 finding-skills 走过去,或者直接在 agent 旁边生成一个需要的东西。

04 如何根据目标进行 high-level 规划

  • skill 规划方法:构建一个 skill 图,然后在图上跑 DFS(附录 C 的算法 1),在 skill 图中找到从起点到终点的最短路径。
  • 考虑到 low-level policy 可能执行 skill 失败,会交替进行 skill 规划和 skill 执行,直到 episode 结束(附录 C 的算法 3)。一旦 low-level policy 执行 skill 失败,high-level planning 可能会规划别的路径。

misc

  • 事实上,结果看起来一般,执行任务的成功率只有不到 50%;虽然远超所有 baseline,但估计赶不上人类)

LLM · RL | Plan4MC:使用有向无环图 high-level planning + 基于 RL 执行 low-level policy的更多相关文章

  1. 有向无环图的应用—AOV网 和 拓扑排序

    有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图. 一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林 ...

  2. JavaScript + SVG实现Web前端WorkFlow工作流DAG有向无环图

    一.效果图展示及说明 (图一) (图二) 附注说明: 1. 图例都是DAG有向无环图的展现效果.两张图的区别为第二张图包含了多个分段关系.放置展示图片效果主要是为了说明该例子支持多段关系的展现(当前也 ...

  3. 湖南省第十二届大学生计算机程序设计竞赛 B 有向无环图 拓扑DP

    1804: 有向无环图 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 187  Solved: 80[Submit][Status][Web Board ...

  4. javascript实现有向无环图中任意两点最短路径的dijistra算法

    有向无环图 一个无环的有向图称做有向无环图(directed acycline praph).简称DAG 图.DAG 图是一类较有向树更一般的特殊有向图, dijistra算法 摘自 http://w ...

  5. select 函数实现 三种拓扑结构 n个客户端的异步通信 (完全图+线性链表+无环图)

    一.这里只介绍简单的三个客户端异步通信(完全图拓扑结构) //建立管道 mkfifo open顺序: cl1 读 , cl2 cl3 向 cl1写 cl2 读 , cl1 cl3 向 cl2写 cl3 ...

  6. 【拓扑】【宽搜】CSU 1084 有向无环图 (2016湖南省第十二届大学生计算机程序设计竞赛)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1804 题目大意: 一个有向无环图(DAG),有N个点M条有向边(N,M<=105 ...

  7. 算法精解:DAG有向无环图

    DAG是公认的下一代区块链的标志.本文从算法基础去研究分析DAG算法,以及它是如何运用到区块链中,解决了当前区块链的哪些问题. 关键字:DAG,有向无环图,算法,背包,深度优先搜索,栈,BlockCh ...

  8. c/c++ 有向无环图 directed acycline graph

    c/c++ 有向无环图 directed acycline graph 概念: 图中点与点之间的线是有方向的,图中不存在环.用邻接表的方式,实现的图. 名词: 顶点的入度:到这个顶点的线的数量. 顶点 ...

  9. 第十二届湖南省赛 (B - 有向无环图 )(拓扑排序+思维)好题

    Bobo 有一个 n 个点,m 条边的有向无环图(即对于任意点 v,不存在从点 v 开始.点 v 结束的路径). 为了方便,点用 1,2,…,n 编号. 设 count(x,y) 表示点 x 到点 y ...

  10. 图->有向无环图->求关键路径

    文字描述 与AOV-网相对应的是AOE-网(Activity on Edge)即边表示活动的网.AOE-网是一个带权的有向无环图.其中,顶点表示事件Event,弧表示活动,权表示活动持续的时间.通常, ...

随机推荐

  1. 【前端】【H5 API】地理定位(获取经纬度)

    H5 API 地理定位 地理定位在日常生活中应用比较广泛,例如,互联网打车.在线地图等.在HTML 5的规范中,增加了获取用户地理位置信息的接口Geolocation,开发者可以通过经纬度来获取用户的 ...

  2. Nginx漏洞修复:SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱

    SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱[原理扫描]. 需编辑 nginx.conf 解决. 1.生成 dhparams.pem. cd /usr/local/nginx ...

  3. (已解决)Public Key Retrieval is not allowed异常

    Public Key Retrieval is not allowed解决方法Public Key Retrieval is not allowed解决方法项目场景:问题描述:原因分析:解决方案:Pu ...

  4. logback 中打印自定义参数 (ip 服务名)

    打印 application.properties 配置文件中的参数 首先需要引入文件 <property resource="application.properties" ...

  5. 龙哥量化:缠中说禅(缠论)K线包含处理

    声明:看到研究非常细致深入的文章,转载到我的博客园,以便学习和研究. (转载知乎的DennisWin) 缠中说禅技术理论包括两大部分:缠论形态学和缠论动力学.其中形态学是根本,动力学是辅助.缠论形态学 ...

  6. 绞尽脑汁终于搞定/天地图标注点marker旋转/任意角度旋转/无需引入其他框架

    一.前言说明 在其他地图组件中,标注点marker都是可以设置旋转角度的,这个功能其实非常实用,比如飞机移动轨迹,就是需要旋转飞机头飞行,轮船轨迹移动也是,百度地图和腾讯地图是通过调用setRotat ...

  7. Qt开发经验小技巧161-165

    经常有人说Qt垃圾,说用Qt在1毫秒绘制几千个数据点卡成屎.其实显示器最高刷新频率一般才60帧,1毫秒就绘制一次有意义吗?不仅显示器没刷新过来,人肉眼也看不过来(有人可能又要抬杠说这是老板要求的,显示 ...

  8. IM消息ID技术专题(七):网易严选分布式ID的技术选型、优化、落地实践

    1.引言 在<IM消息ID技术专题>系列文章的前几篇中,我们已经深切体会到消息ID在分布式IM聊天系统中的重要性以及技术实现难度,各种消息ID生成算法及实现虽然各有优势,但受制于具体的应用 ...

  9. 聊一聊 C#异步中的Overlapped是如何寻址的

    一:背景 1. 讲故事 前段时间训练营里的一位朋友提了一个问题,我用ReadAsync做文件异步读取时,我知道在Win32层面会传 lpOverlapped 到内核层,那在内核层回头时,它是如何通过这 ...

  10. WxPython跨平台开发框架之使用PyInstaller 进行打包处理

    使用PyInstaller 打包Python项目是一个常见的需求,它可以将Python程序及其所有依赖项打包成一个独立的可执行文件或者安装文件,方便在没有安装Python环境的机器上运行.本随笔介绍W ...