自动机器人中集成大语言模型和认知架构

169 篇文章 0 订阅
164 篇文章 1 订阅

23年9月来自西班牙University of Leo ́n的论文“Integration of Large Language Models within Cognitive Architectures for Autonomous Robots“。

最近,大型语言模型(LLM)的准确性有了显著提高,而且使用了量化,可以在没有强烈硬件要求的情况下运行这些模型。为此LLM激增,这意味着要创建各种具有不同功能的LLM。通过这种方式,本文提出在自主机器人认知架构中集成LLM。具体而言,介绍了llama_ros工具【20】的设计、开发和部署,该工具允许在基于ros 2的环境中轻松使用和集成LLM,然后与最先进的认知架构MERLIN2[19]集成,更新基于PDDL(Planning Domain Definition Language)【45】的规划器系统。

自主机器人的行为生成仍然是一个与人工智能系统相关的问题。已经有了几种被称为控制架构的范式[14]。可以找到用规划方法的审议(deliberative)架构[15]、包容(subsumption)架构[16]和反应(reactive)架构[17]。架构的组合,即混合架构[18],对机器人社区产生了重大影响。该方法侧重于推理,在MERLIN2[19]中引入LLM,这是一种公开的混合认知架构。该方法旨在将基于PDDL【45】的审议架构系统更新为LLM支持的。

llama.cpp[21]是一个在低硬件需求机器上用整数量化运行llama模型的项目。它基于一个没有依赖关系的普通C/C++实现,允许在多个平台上运行这些模型,并有GPU加速的可能性。

用llama.cpp需要一些提示工程。遵循微软的方法[51],用LLM模型时,巧妙地制作提示对于获得预期结果至关重要。这个过程需要创造性和严谨性,包括仔细选择文本指南,引导模型产生与拟议目标相关的文本。此文本与token链接。token是LLM AI用于语言处理和生成时文本或代码的基本组成部分。根据所选的token化(tokenization)方法或方案,这些单元可以包含字符、单词、子单词或其他文本或代码段。这些token被分配数值或标识符,并被组织成序列或向量,作为模型的输入和输出。token构成了模型语言的基本元素。

嵌入(embedding)是指token的表示或编码,如句子、段落或整个文档。嵌入是在提示交互过程中生成的过去事件表示。这些表示位于高维向量空间内,其中每个维度对应于学习的语言特征或属性。嵌入在模型如何捕捉、保存和理解语言中的含义和相互关系方面发挥着关键作用。它们还充当了模型识别和区分各种token或语言组件的机制。

LLAMA_ros[20]工具是一组ros2包,用于将LLAMA.cpp[21]集成到ros2中。因此,它提供了ROS2消息去采用LLM生成文本、token化文本、并从文本中创建嵌入。

所提供的工具提供了一个ROS2,其允许使用ROS 2动作(action)服务器生成文本。此外,还创建了两个服务来token化文本并从文本中生成嵌入。当需要应用更复杂的提示工程方法[52-53]时,它们可能会有所帮助。例如,嵌入服务可以用于将文本转换为矢量并填充矢量数据库。然后,可以使用检索功能,搜索类似于文本的向量。因此,可以制作更加准确的提示。

使用一种旨在执行一系列复杂行为的认知架构的想法,至今仍为许多研究人员所认同。在这种情况下,作者不会从人类思维的角度来面对认知架构设计,而是从知识的角度来看待它。这项工作中使用的认知架构是MERLIN2[19],[54]。它是一种混合认知架构,旨在产生自主机器人的行为。

MERLIN2如图所示。正如文献[44]、[46]、[47]、[48]中介绍的先前方法一样,MERLIN2由一个审议(deliberative)系统和一个行为(behavior)系统组成。审议系统由任务层和规划层组成。任务层为机器人生成高级目标。规划层使用基于PDDL的机器人知识和经典规划器如POPF[55]生成规划。规划是实现机器人目标的一系列动作。该层还有一个知识库,用于存储有关机器人环境的知识。在内部,它包括三个组件:规划器、规划调度器和执行器。行为系统由执行层和反应层组成。执行层包含机器人的动作,这些动作可以作为状态机或行为树来实现。反应层收集机器人的技能,如导航、文本-到-语音(TTS)和语音-到-文本(STT)技能。

添加图片注释,不超过 140 字(可选)

为了将LLM集成到MERLIN2中,作者对规划层进行了修改,使用llama_ros和langchain[56]将其三个组件替换为一个组件,该框架旨在简化用LLM创建应用程序的过程。通过这种方式,LLM和llama_ros取代了体系结构的规划器。此外,PDDL知识库也被知识图所取代,后者遵循了先前文献[47]、[48]、[49]中发现的趋势。新产生的层由YASMIN库[57]实现的有限状态机(FSM)进行控制。如图显示该FSM,它由两个嵌套FSM(规划FSM和检查目标FSM)和一个状态(执行规划的状态)组成。

添加图片注释,不超过 140 字(可选)

规划器FSM负责制定规划。第一种状态生成机器人的世界状态,该状态被馈送到规划器的LLM,这对应于下图所示的情况,从原始规划层FSM生成PDDL状态。

之后,LLM通过llama_ros提示生成一个规划,其解决了对应的给定目标。用于生成规划的提示,包括机器人的动作、世界状态和机器人的目标。一个BNF[58]在JSON中强制LLM响应,这更容易解析。有一种状态可以通过检查响应格式是否正确来检查规划是否正确。

世界状态,是将图形数据转换为知识项后从机器人的知识图中获得的中间知识表示。这些知识项的结构如下:对于节点,它们采取“节点-类型(属性)”的形式,而对于边,它们遵循“节点-关系-节点(属性)”的模式;“(属性)”组件包括KEY- VALUE对,包含与节点或边相关的所有相关数据。例如,它可能包括诸如航路点坐标之类的数据。

矢量数据库可以包括在生成的世界状态中。知识项被存储为向量。然后,可以应用检索方法只获取与机器人目标相关的知识项。这项工作采用了ChromaDB[59],一个内存中的矢量数据库。

生成规划后,与原始调度规划状态相对应的“执行规划状态”将用指定的参数运行规划操作。之后,检查目标FSM,再次生成世界状态并提示LLM,利用其推理能力来检查目标是否实现。检查目标是否实现的提示包括世界状态和机器人的目标。添加一个新状态来检查是否用LLM功能完成了目标。该状态还解释了为什么目标没有实现。如果LLM决定了目标未完成,FSM将再次尝试生成规划,但基于对目标未实现原因的解释,从而改进规划生成。

如图是实验初始知识形成的知识图:

添加图片注释,不超过 140 字(可选)
实验的任务层如图所示:采用FSM,负责为每个场景执行五个测试;将机器人移动到初始位置,使每次执行都在相同的条件下开始;然后,生成机器人的目标列表。在这种情况下,一个目标是问候一个人,并且一半的目标在开始执行10秒后被标记为取消,如[54]评估中所解释的。之后,规划层用于执行该测试的目标并取消掩码的那些。最后,将结果、时间和行驶距离存储在一个文件中。
添加图片注释,不超过 140 字(可选)

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值