

编写可用的代码可能充满挑战。即使是像 HTML 这样相对简单的语言,也需要编码人员理解特定的语法和可用工具。编写控制机器人的代码则更加复杂,通常涉及多个步骤:有用于检测物体的代码,用于触发机器人肢体移动的致动器的代码,用于指定任务何时完成的代码,等等。如果不知道机器人运行的编程语言,像让机器人拿起黄色积木而不是红色积木这样简单的任务都无法实现。
但谷歌的机器人研究人员正在探索一种解决这个问题的方法。他们开发了一款机器人,可以根据自然语言指令编写自己的程序代码。您无需深入研究机器人的配置文件来将 block_target_color 从 #FF0000 更改为 #FFFF00,只需输入“拿起黄色积木”,机器人就会完成其余工作。
Code as Policies(简称 CaP)是一种特定于编码的语言模型,源自谷歌的Pathways Language Model (PaLM),用于解释自然语言指令并将其转换为可运行的代码。谷歌的研究人员通过提供指令示例(格式化为开发者编写的代码注释,用于解释代码功能)和相应的代码来训练该模型。他们解释道,通过这种方式,模型能够接收新的指令并“自主生成新的代码,重组API 调用,合成新功能,并表达反馈循环,从而在运行时组装新的行为”。换句话说,给定类似注释的提示,它就能生成一些可能的机器人代码。在此处阅读他们的工作预印本。

为了让 CaP 为特定任务编写新代码,团队为其提供了“提示”,例如它可用的 API 或工具,以及一些指令-代码配对示例。由此,它能够为新指令编写新代码。它通过“分层代码生成”来实现这一点,该技术促使它“递归地定义新函数,随着时间的推移积累自己的库,并自建动态代码库”。这意味着,一旦给定一组指令,它就能开发出一些代码,以后可以为类似的指令重新利用。
[相关:在谷歌 AI 创作出下一部伟大小说之前,还有很长的路要走]
CaP 还可以使用特定语言的算术运算和逻辑。例如,一个在 Python 上训练的模型在需要时可以使用适当的 if/else 和 for/while 循环,并使用第三方库来实现额外功能。它还可以将“更快”和“向左”等模糊的描述转换为执行任务所需的精确数值。由于 CaP 是建立在常规语言模型之上的,它还具备一些与代码无关的功能,例如理解表情符号和非英语语言。
目前,CaP 的能力仍然非常有限。它依赖于其基础语言模型来提供指令的上下文。如果指令没有意义或使用了它不支持的参数,它就无法编写代码。同样,它显然一次只能处理少量参数;需要数十个参数的更复杂的动作序列是不可能的。还存在安全问题:让机器人编写自己的代码有点像天网。如果它认为实现任务的最佳方法是手臂伸出并快速旋转,而附近有人,则可能会有人受伤。
尽管如此,这项研究仍然非常令人兴奋。对于机器人来说,最困难的任务之一是泛化其训练好的行为。训练机器人打乒乓球,并不能让它能够玩其他游戏,如棒球或网球。尽管 CaP 距离广泛的现实世界应用还有很长的路要走,但它确实允许机器人执行一系列复杂的机器人任务,而无需针对特定任务进行训练。这是朝着有一天能够教一个玩过一个游戏就能学会玩另一个游戏的机器人迈出的重要一步——而无需将一切分解为人类编写的新代码。