虽然ChatGPT已经被调教为符合人类的偏好,但在各种反向操作下,还是能够逼问出一些「不道德的内容」,比如ChatGPT可以给你列一份详细的毁灭世界计划列表,具体到每一步。
不过,现在的ChatGPT只会动动嘴皮子,并没有任何接触现实物理世界的能力,顶多也就是当个科幻小说看看。
但要是ChatGPT真的可以操控机器人呢?
最近,微软发表了一篇论文,公布了他们正在把ChatGPT应用于机器人上的研究成果。
论文链接:
https://www.microsoft.com/en-us/research/uploads/prod/2023/02/ChatGPT___Robotics.pdf
不过微软的目标并非是「毁灭世界」,而是加快机器人的开发速度。
实际上在现代的生活和生产流程中,处处都离不开机器人,从工厂里制造产品的机械臂,到家庭里用的吸尘器,都可以算作是机器人(robot)。
每次想开发一个新产品,或者让现有的机器执行一个新功能,都需要一个高级工程师编写代码,同时尽可能编写测试覆盖所有场景。
微软在论文中提出了一套新的设计原则,通过ChatGPT这样的大型语言模型来给机器人提供指令。
ChatGPT:机器人控制器
ChatGPT之所以爆火,其根本原因就在于:AI终于在一定程度上能「听懂人话」了,而非只是按照语法胡乱生成内容;而且它的功能也很强大,问答、写论文、写诗、写代码,只要prompt写得够好,ChatGPT的表现也会更惊人。
要是把这种能力迁移到机器人身上,假设几十年以后,各家各户都有机器人,只要说一声「给我热一下午餐」,它就能自己找到微波炉,再把菜端回来,人机交互直接迈入新时代。
虽然「自然语言」很简洁,但现有的机器人开发还是依赖于「编程语言」。
ChatGPT 是一个基于大量文本和人类反馈训练得到的语言模型,能够针对各种各样的提示和问题产生连贯且语法正确的回应。
这项研究的目的是观察 ChatGPT 是否能够在文本之外的领域进行思考,并推理出物理世界来帮助机器人完成任务。
研究人员预期ChatGPT能够帮助用户更容易地与机器人交互,而不需要学习复杂的编程语言或机器人系统的细节,其中的关键难题就是教 ChatGPT 如何使用物理定律、操作环境的背景以及了解机器人的物理行为如何改变世界状态,并以此来解决指定的任务。
实验证明,ChatGPT 可以独立完成很多工作,但是它仍然需要一些辅助,论文中描述了一系列的设计原则,可以用来指导语言模型解决机器人任务,包括但不限于特殊的提示结构、高级 API 和基于文本的人类反馈等,一场机器人系统的开发革命即将到来。
全新的代码设计流程
给大型语言模型写prompt是一门高度经验主义的科学,通过反复试验,研究人员建立了一套方法论和设计原则,专门用于为机器人任务撰写提示:
1. 定义了一组高级机器人 API 或函数库。
这个库可根据特定的机器人类型进行设计,并且应该从机器人的控制栈或感知库映射到现有的低层次具体实现。
对高级 API 使用的描述性名称非常重要,可以帮助 ChatGPT推断函数的功能。
2. 为 ChatGPT 编写一个文本提示,用来描述任务目标,同时显式说明高级库中的哪些函数是可用的。
提示中还可以包含有关任务约束的信息, 或者 ChatGPT 应该如何组织它的答案,包括使用特定的编程语言,使用辅助解析组件等 ;
3. 用户在循环中评估 ChatGPT 的代码输出,可以直接执行代码以检查正确性,也可以使用模拟器。
如果有需要的话,用户可以使用自然语言向 ChatGPT 提供有关答案质量和安全性的反馈。
当用户对解决方案感到满意时,就可以将最终的代码部署到机器人上。
ChatGPT+机器人能做什么?
下面是几个例子,更完整的ChatGPT能力列表参见代码仓库。
代码链接:https://github.com/microsoft/PromptCraft-Robotics
Zero-shot任务规划
当ChatGPT遇上无人机,研究人员首先让 ChatGPT 能够控制一台真正的无人机的全部功能,然后按照下面视频中进行的对话,实验结果证明,一个完全不懂技术的用户,只需要通过对话就能实现控制无人机,「自然语言」是一个非常直观、高效的用户接口。
当用户的指令含糊不清时,ChatGPT 会要求用户进一步说明问题,并为无人机编写复杂的代码结构,例如飞行之字(zig-zag)图案,以便可视化地检查货架;甚至还能给用户来一张自拍。
研究人员还在 MicrosoftAirSim 模拟器中对工业检查场景中使用ChatGPT进行模拟,结果显示该模型能够有效地解析用户的高级意图和几何线索,以准确地控制无人机。
复杂的任务需要用户参与反馈
当把ChatGPT用于机械臂的操作场景时,研究人员使用「会话反馈」(conversational feedback)来教模型如何将最初提供的 API 组合成更复杂的高级函数,即ChatGPT自己内部编码的函数。
使用以课程为基础(curriculum-based)的策略,ChatGPT能够将这些学到的技能有逻辑地链接在一起,以执行诸如堆叠块之类的操作。
此外,还有一个例子能展现出ChatGPT的强大能力,研究人员要求模型用木块构建微软标志,即需要将文本域和物理域连接起来。
ChatGPT不仅能够从内部知识库中回忆出微软的logo,还能够用SVG的代码「绘制」出这个标志 ,然后利用上面学到的技能来确定现有的机器人动作可以组成它的物理形式。
还有一个例子,研究人员让 ChatGPT 编写一个算法,让无人机在不撞上障碍物的情况下,在空中达到目标。
只需要告诉模型,它操控的这架无人机有一个前向距离传感器,ChatGPT 立即能够为算法编码了大部分关键构件,这个任务需要与人类进行一些对话,ChatGPT 仅通过自然语言反馈就能进行局部代码修改。
在行动之前感知世界
在算法决定做某事(action)之前能够感知世界(perception)是打造一个机器人系统的基础。
为了测试 ChatGPT 对指定概念的理解,研究人员设计了一个框架,要求ChatGPT不断探索环境,让模型访问诸如目标检测和目标距离 API 之类的函数,直到找到用户指定的对象,整个过程称为感知-行动循环(Perception-action loops)。
在实验环节,研究人员进行了额外的实验来评估 ChatGPT 是否能够根据传感器的实时反馈来决定机器人应该去哪里,而不是让 ChatGPT 生成一个代码循环来做出这些决定。
实验结果验证了用户可以在聊天的每一步输入一个相机图像的文本描述,并且模型能够找出如何控制机器人,并驱使机器人到达一个特定的对象。
开源PromptCraft:收集有价值的prompt
「良好的prompting工程」对于ChatGPT等大型语言模型成功执行机器人任务来说至关重要。
但prompting完全是一门经验主义的科学、缺乏全面的总结,并且相关资源也很少,没有数据集来帮助该领域的研究人员和爱好者判断什么是一个好的prompt
为了弥补这一劣势,研究人员开源了一个平台 PromptCraft,任何用户都可以在其上分享不同机器人类别的提示策略示例。
这次研究项目的所有提示和对话都已经放在了仓库中,感兴趣的读者可以继续参与贡献!
除了快速设计之外,研究人员还计划未来开发多个机器人模拟器和接口,以允许用户测试ChatGPT生成的算法性能,目前已经发布了一个集成ChatGPT的AirSim环境。
把机器人带出实验室,走向世界
微软发布这些技术的目的是将机器人技术推广到更广泛的受众,研究人员认为,基于语言的机器人控制系统是把机器人从科学实验室带到日常用户手中的基础。
也就是说,ChatGPT 的输出不应该在没有仔细分析的情况下直接部署在机器人上。
通过在模拟环境中获得实验结果,能够在未来现实部署之前对算法进行评估,并采取必要的安全预防措施。
参考资料:
https://www.microsoft.com/en-us/research/group/autonomous-systems-group-robotics/articles/chatgpt-for-robotics/