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还是比较重要的。

引用[1]中提到的问题是在使用命令行操作MySQL时遇到了"-bash: mysql: command not found"的错误。这个错误通常是由于系统环境变量配置不正确导致的。解决这个问题的方法有以下几种: 1. 检查MySQL是否正确安装:首先确认MySQL已经正确安装并且可用。可以通过在命令行中输入"mysql"来检查是否能够正常启动MySQL。 2. 检查环境变量配置:使用命令"echo $PATH"来查看当前的环境变量配置。确保MySQL的安装路径已经正确添加到环境变量中。如果没有添加,可以通过编辑.bash_profile文件来添加。具体操作如下: - 打开终端并输入"vi ~/.bash_profile"来编辑.bash_profile文件。 - 在文件中添加以下内容(假设MySQL的安装路径为/usr/local/mysql): ``` export PATH="/usr/local/mysql/bin:$PATH" ``` - 保存并退出文件,然后执行"source ~/.bash_profile"来使配置生效。 - 再次尝试使用"mysql"命令来检查问题是否解决。 3. 重新安装MySQL:如果以上方法都没有解决问题,可以尝试重新安装MySQL。确保在安装过程中正确配置环境变量。 4. 检查权限:如果使用的是非root用户,可能会出现权限不足的问题。可以尝试使用sudo命令来执行命令,例如"sudo mysql"。 5. 检查软链接:有时候MySQL的可执行文件可能被创建为软链接。可以使用"ls -l /usr/local/mysql/bin/mysql"命令来检查软链接是否存在,如果不存在可以尝试重新创建软链接。 6. 检查其他配置:如果以上方法都没有解决问题,可以检查其他可能的配置错误,例如MySQL的配置文件是否正确,是否有其他软件冲突等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Ming_Chens

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

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

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

打赏作者

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

抵扣说明:

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

余额充值