SayCan:Do As I Can, Not As I Say: Grounding Language in Robotic Affordances

发表时间:16 Aug 2022

作者单位:Robotics at Google

Motivation:motivation是LLM有长程规划的知识,但是很难把它应用到物理世界,机器人自带的抓取、感知等低级任务又很难做任务的自动规划。

解决方法

这篇论文聚焦于如何解决LLM与物理交互之间如何连接的问题,也就是grounding问题,具体来说有这几个方面:

  1. LLM给出的方案不是合法的planning,即使是合理的。如:可乐撒了,你能帮帮我吗?回复:你可以用扫地机器人。

  2. LLM给出的方案可以作为planning,理论上可以通过这些步骤的组合去解决问题,但是现实中无法完成。如:帮我把苹果拿过来。回复:我要捡起苹果。但是此时robot看到的画面中没有苹果,那这件事就是无法完成的,也许首要目标是先找到苹果在哪里。

针对这两点,算法的大致思路就有了。当决定下一步的决策时,首先让 LLM 根据task给出一些可能的步骤(只有文本,无环境交互)和他们的概率,然后使用另一个模型给出当前状况下每个动作可以完成的概率(文中叫affordance,有文本,有环境交互),两个概率乘起来就是下一步planning最优的选择。后者的模型是一个RL模型。

具体来说,他们有一个预先定义的决策空间,也就是每步可执行的task都是定义好的(比如,寻找苹果,寻找相交,抓取苹果,走到桌前),也就是说LLM每次只是对于特定的一些类别给出概率,RL也是只训练了特定task。

大概就是这个样子,每一步估俩概率,乘一下

实现方式

总体流程:The LLM (Say) provides a task-grounding to determine useful actions for a high-level goal and the learned affordance functions (Can) provide a world-grounding to determine what is possible to execute upon the plan. We use reinforcement learning (RL) as a way to learn language conditioned value functions that provide affordances of what is possible in the world.(Say是LLM,Can是强化学习

每一步决策,遍历所有task,计算他们的概率=LLM认为的概率*RL认为可执行的概率,最后取max,然后执行。

LLM部分很简单,他的任务就是对于n条自然语言描述给出概率,这里他的方法是直接把一句话对应的token概率累乘。按道理来说这个对于task序列长度比较敏感,毕竟auto regressive模型会有误差累计。但是他skill的language描述都不长,所以问题不是很大。LLM是不做finetune的

文章的重点我认为还是第二部分的训练。这里采用的Q-learning去学习这个affordance概率

affordance概率模块的训练:

首先训练的目标,有一个skill库(skill一共551个,是由动作+obj组合来的),要对每一个skill都拿到一个概率,那就必须构建一个RL训练框架,那就必须要有每一个skill的policy、value function、language description

作者发现训练一个BC policy的成功率更高,所以在执行的时候用BC的policy,但是估计概率还是用RL的概率(这里感觉有点奇怪……RL训崩了?)

不是用一个skill训练一个模型,而是所有skill都在一个模型上train,并且把它的language embedding当做condition送进去。这样可以让policy和value function知道当前在执行啥任务。

对每个任务做训练时,如果它完成了,那reward是1,否则是0。判断是否成功用的是人类投票(震惊……)

训练环境是Google自己家的建的仿真环境。

实验

Mock kitchen和kitchen比较:模拟环境和真实环境对于LLM来说掉点不多,只有3%,但是对于RL影响比较大,说明RL的迁移性可能是个问题。

No Affordance:可以看出来这里的 task 还是比较简单的,不需要物理世界反馈居然还能有如此高的成功率。

No LLM:基本上不行,NL single几乎和skill language是一致的,只有这时候才会有点成功率。

结论

  1. 作者的总结

skill和value function可以作为LLM的“手和眼”,可以跟真实世界做grounding,并且简单替换更大的LLM就能提点,而且自然支持多次询问等LLM对话的功能。

但是还是有局限性:系统继承了语言模型的bias;skill是固定的,限制用户与agent的交互;系统在技能执行失败时无法做出反应例如更正,尽管可以通过prompt engineering去矫正。

future work可以考虑如何根据自然世界的交互去修正LLM模型,如何用value function以外的方式去score affordance,如何用自然语言编程robot(因为能交互了)。

  1. 我的看法

作为22年的工作确实很不错了,那时候gpt3.5都没有。LLM侧可以很naive的替换成gpt4v,相信会给出更好的planning。

但是LLM如此naive的原因是,LLM的scale up已经无需证明了,随着时间推移一定会越来越强,个人认为这里已经没有什么值得research的东西了。问题在于后面的grounding:与真实世界的交互于反馈如何参与planning步骤?

本文采用非常不scale up的方法,即使新的skill也很容易集成进来(依然得益于语言模型的scale能力)。测试的样例特别简单,并且看样子加入新任务需要重新train和设置policy、reward function等东西,eval还需要人看,这显然是不行。

数据集方面,他的数据集只有kitchen,目测距离真实世界的gap还比较大,而且看起来也是经过认真design的训练环境,如果进行拓展也会比较困难。

RL这部分能scale还是比较重要的。

### SayCan 大模型概述 SayCan 是一种结合自然语言处理 (NLP) 和机器人控制的技术框架,旨在通过语言指令驱动物理机器人的行为。它利用预训练的语言模型来解析人类输入的任务描述,并将其转化为具体的动作计划[^1]。这种架构特别适合于零样本学习场景,在这些场景下,机器人可以执行未曾见过的新任务。 #### 技术背景 SayCan 的核心理念来源于 Socratic 模型的思想,即通过多模态数据流促进不同模型间的协作。具体而言,SayCan 将语言理解模块与运动规划模块相结合,从而实现从抽象任务到实际操作的无缝转换。这种方法不仅提高了系统的灵活性,还增强了其适应复杂环境的能力。 #### 关键组件分析 ##### 1. **语言理解模块** 此部分基于强大的 Transformer 架构构建而成,能够高效捕捉语义信息并生成相应的策略建议。当接收到用户提出的请求时,例如“把杯子放到桌子上”,该模块会迅速识别关键词及其潜在含义,进而指导后续的动作序列设计过程。 ```python def parse_language_input(input_text): """ 解析用户的自然语言命令。 参数: input_text (str): 用户提供的文本输入 返回: dict: 包含解析后的意图和其他元数据 """ # 假设这里有一个复杂的 NLP 流程 parsed_data = { 'action': 'move', 'object': 'cup', 'destination': 'table' } return parsed_data ``` ##### 2. **动作规划器** 一旦明确了目标对象以及期望位置之后,下一步便是制定详细的移动路径方案。这一环节涉及到碰撞检测算法的应用,确保机械臂能够在避开障碍物的同时顺利完成指定工作项。 ```python import numpy as np def plan_robot_motion(start_pos, end_pos, obstacles): """ 计算机器人手臂的最佳行动路线。 参数: start_pos (tuple): 起始坐标 end_pos (tuple): 终点坐标 obstacles (list of tuples): 障碍物的位置列表 返回: list of tuples: 表示轨迹的一系列中间节点 """ path = [] # 实际计算逻辑省略... return path ``` ##### 3. **反馈机制** 为了进一步提升整体表现水平,SayCan 还引入了一个闭环控制系统用于实时监控当前进展状况并与预期效果对比调整参数设置直至达到满意程度为止。 --- ### 总结 综上所述,SayCan 不仅继承了传统自动化解决方案的优点同时还融入了许多创新性的设计理念使得即便是在缺乏先验知识的情况下也依然具备相当可观的实际应用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ming_Chs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值