谷歌机器人团队的研究人员开源了代码即策略(CaP),这是一种机器人控制方法,它使用大型语言模型(LLM)生成实现用户指定目标的机器人控制代码。CaP 使用分层提示技术进行代码生成,在 HumanEval 代码生成基准测试中优于以前的方法。
该技术和实验在arXiv上发表的一篇论文中进行了描述。CaP与以前使用LLM控制机器人的尝试不同;CaP 不是生成一系列要由机器人调用的高级步骤或策略,而是直接为这些策略生成 Python 代码。Google 团队开发了一组改进代码生成的提示技术,包括一种新的分层提示方法。这项技术在HumanEval基准测试中取得了39.8%pass@1的新先进分数。根据谷歌团队的说法:
代码即策略是迈向机器人的一步,机器人可以修改其行为并相应地扩展其功能。这可以启用,但灵活性也会增加潜在风险,因为合成程序(除非每个运行时手动检查)可能会导致物理硬件出现意外行为。我们可以通过绑定系统可以访问的控制基元的内置安全检查来降低这些风险,但还需要做更多的工作来确保已知基元的新组合同样安全。我们欢迎就如何最大限度地降低这些风险,同时最大限度地发挥对更通用机器人的潜在积极影响进行广泛讨论。
LLM已被证明可以展示许多主题的一般知识,并且可以解决广泛的自然语言处理(NLP)任务。然而,它们也可以产生响应,虽然逻辑上合理,但对控制机器人没有帮助。例如,在回答“我洒了饮料,你能帮忙吗?”LLM可能会回答“你可以尝试使用真空吸尘器”。今年早些时候,InfoQ介绍了谷歌的SayCan方法,该方法使用大型语言模型(LLM)来规划一系列机器人动作;为了提高LLM的产出,SayCan引入了一个价值函数,该函数指示根据当前世界状况,该计划成功的可能性。
图片来源:https://code-as-policies.github.io/
CaP 的关键组件是生成语言模型程序 (LMP),该程序从用户的自然语言指令映射到在机器人上执行的程序,并从机器人的传感器获取感知输入并调用控制器 API。这些是由 LLM 在“少数镜头”模式下生成的,该模式会提示提示和示例 LMP。生成的 LMP 可以包含高级控制结构(如循环和条件)以及分层生成的函数。在后一种情况下,将生成包含对未定义函数的调用的高级 LMP。解析此 LMP 以查找这些未定义的引用,并调用对生成的函数进行微调的第二个 LLM 来创建函数定义。
谷歌在多个基准和任务上评估了CaP。除了HumanEval之外,该团队还开发了一个新的代码生成基准,RoboCodeGen,专门针对机器人问题。该团队还使用CaP来控制执行多项实际任务的物理机器人:厨房环境中的移动机器人导航和操作,以及绘制机器人手臂的形状,拾取和放置以及桌面操作。
谷歌研究员Jacky Liang在Twitter上讨论了这项工作。在回答有关从块构建复杂结构的CaPs问题的问题时,梁回答说:
当新 [命令] 和提示处于相似的抽象级别时,CaP 运行最佳。构建复杂的结构类似于在抽象级别上“提升几级”,贪婪的LLM解码正在努力解决。应该是可能的,但可能需要更好的方法来[提示]。
用于重现论文实验的代码可在GitHub上找到。代码生成技术的交互式演示可在HuggingFace上找到。