具身人工智能目前是一个活跃的研究前沿,像ChatGPT这样的基础模型已经展示了惊人的编程能力、图像描述能力和知识综合能力。这些模型是否真的能够解决现实世界的问题仍然不确定,在之前的文章中,我们探讨了大型语言模型的推理能力,并提出了使用符号规划来帮助大型语言模型更好地规划。
快思慢想:LLM、PDDL和ChatGPT裝模作樣地進行深思熟慮,但就像我們的大腦一樣,可能也需要一些更好的工具來進行推理…towardsdatascience.com本文中,我们利用先进的基础模型GPT和OWLv2来完成通用机器人臂(UR5)上的简单堆叠作业。在观察了这个系统的运行后,使用GPT模型进行规划时出现了一些奇怪的现象。我们将不同GPT模型的规划性能与PDDL规划器进行比较。
GitHub - correlllab/FoundationModelBlockStacking通过在 GitHub 上创建一个账户,你可以为 correlllab/FoundationModelBlockStacking 项目的开发做贡献。
我们机器人要解决的问题很简单,例如给定一个如下所示的积木字符串列表。
["深蓝的方块","绿的方块","黄的方块", "红的方块"]
我们的机器人会把积木堆成一座塔,位置 i 的积木放在位置 i-1 的积木上,位置 0 的积木作为塔底。
我们的积木堆叠流程极其简单,首先,让机器人从侧面观察积木,这时我们能够看到所有的积木。在这个侧面视角,我们拍摄一张RGB图像并将其传递给LLM,以获取场景描述。这个场景描述是一个包含两个条目的字典:一个是“物体”,映射到场景中的物体列表;另一个是“物体间关系”,描述了积木是如何堆叠的。
{ "objects": ["桌子", "红块", "蓝块", "绿块", "黄块"], "object_relationships": [["红块", "桌子"], ["蓝块", "桌子"], ["黄块", "桌子"], ["绿块", "桌子"]] }
有了这个状态 json 和我们想要的最终状态,然后我们让 LLM 生成一个新的 json,描述我们下一步的动作。
{ "pick": "要拿的绿色方块", #注释:要拾起的方块 "place": "放到上面的蓝色方块" #注释:放置方块的上面 }
一旦我们有了描述下一个拾取和放置动作的JSON文件,我们就会切换到俯视视角并拍摄一张RGBD图像。RGBD图像的RGB部分并将其与JSON中的拾取和放置指令一起输入OWLv2,以便在俯视视角下检测我们接下来要操作的对象。
一旦我们有了这些物体的边界框,在这些RGBD图像中对抓取和放置这些物体进行处理就变得简单多了。
这里可以看到堆积木的装置
这种方法表现了一些奇怪的行为,特别是LLM并不总是生成好的pick & place json。有时生成的pick & place json会出现冗余,比如重复放置已经存在于桌面上的积木,就像视频中蓝色积木的例子。为了进一步研究这些行为,我们为此开发了一个针对LLM积木堆叠任务的基准测试。
GitHub - mconway2579/LLM_BlocksWorldPlanning_Benchmark: 一个针对区块世界任务的LLM规划基准。贡献给mconway2579/LLM_BlocksWorldPlanning_Benchmark项目。为了评估不同大型语言模型在堆叠积木任务上的性能,我们在实验中使用了一组积木。
["红色方块", "蓝色方块", "黄色方块"]
然后我们生成这些块可能出现的所有状态。每个块顶上只能有一个块或者没有块。可能的状态数量公式是
此公式通过累加所有可能的分组方式的贡献来计算 n 个块的有效状态数。对于每一种分组来说,贡献值是通过将 n! 除以各个分组大小出现次数的阶乘乘积计算得出的。对于不同的 n 值,可能的状态数如下。
1:1 2:3 3:13 4:73 5:501 6:4051
我们随后创建了一个大小为 (a_n)²的数据集,该数据集将每个可能的初始状态与每个可能的结束状态一一对应。对于这些每一对状态,我们使用PDDL求解器(如pyperplan,参见)获得关于应拾取和放置哪些对象的真实标签。
最后我们在这组数据集上评估了4个模型:gpt-3.5、gpt-4o-mini、gpt-4o和gpt-o1,其中n=3,意味着我们有(13)²=169个起始和结束状态的配对组合。我们计算准确率,即模型生成的抓取和放置指令与PDDL求解器(PDDL求解器)规划中的第一步相同的次数所占的百分比。每个模型的准确率如下:
gpt-3.5 的正确率为 0.51,也就是说 87/169 是正确的。
gpt-4o-mini 在 88/169 是正确的,准确度为 0.52
gpt-4o 的准确度为 148/169,即 0.87
gpt-o1 的正确率为 162/169,即 95%
在上述链接的仓库中,都可以找到这些代码。
这些结果确实令人印象深刻,一个在互联网规模数据上训练的语言模型能够成功地进行了一些叠块游戏任务的推理,并且其表现与PDDL求解器相当。
重要的是要指出,这些模型在这一任务上的表现越来越好,谁知道我们不久可能就会得到一个准确率达到100%的模型。但这样的模型能否解决更复杂的挑战?比如,用4、5或6个积木块进行排列,并且要符合其他约束条件。在这里,结合VLA的推理能力与符号规划的强大功能可能是一个有竞争力的解决方案,这正是我们在本文中所描述的。
上下文推理遇上结构化规划:用LLM和PDDL建模问题陈述(中)在未来,我们希望用超过三个块来运行相同的测试。虽然状态的数量随着块数的增加呈指数级增长,我们预计性能会随着块数的增加而下降。此外,我们还计划评估这些模型在更复杂的任务(如烹饪和打扫卫生)中的规划能力的表现。