Agent应用
近年来,联网与自动驾驶技术突飞猛进。但现行自动驾驶系统,主要依赖数据驱动,却在可解释性、泛化和持续学习方面略显不足。更关键的是,它们缺少与其他车辆协同合作的能力,这对自动驾驶的安全高效至关重要。为此,我们借助大型语言模型(LLMs)打造了创新框架 AgentsCoDriver,实现车辆间的协同驾驶。AgentsCoDriver 涵盖观察、推理、记忆、反思及通信五大模块,通过与环境的持续互动,不断积累知识与经验,实现终身学习。各代理通过通信模块信息互换,在复杂交通中协作谈判。大量实验验证了 AgentsCoDriver 的卓越性能。
AI的飞速发展,也帮助自动驾驶技术取得显著的进步,但是自动驾驶现在主要是依赖数据驱动的方法,仍然存在很多局限性:
- • 首先,信息的可解释性对于确保自动驾驶系统的安全性和赢得公众信任极为关键。但遗憾的是,传统方法在这方面的表现不尽人意。这些方法通常基于难以捉摸的深度神经网络,我们很难洞悉其决策背后的逻辑和推理过程。
- • 此外,这些系统还缺乏持续学习的能力,它们只能在训练阶段从数据中学习,而学到的知识是静态的,无法根据新数据进行更新和适应,这限制了它们学习新知识和适应新环境的能力。
- • 更甚者,传统的自动驾驶系统通常基于单车决策,这种方法存在诸多局限,难以满足安全和可靠自动驾驶的需求。例如,单车系统难以解决遮挡问题,这可能导致严重的交通事故。
- • 此外,这些系统的感知范围受限于传感器的性能,可能会遗漏重要信息。
- • 而且,单车系统缺乏与其他车辆进行协作和协商的能力,这对于未来自动驾驶系统的安全性和效率至关重要。这就催生了连接和自动驾驶(Connected and Autonomous Driving, CAD)的概念,它基于多车交互的设置,使得车辆在进行超车、变道和转弯等操作时能够相互协作和协商。例如,在下图中展示的场景中,车辆1和车辆2正朝路口驶来,车辆1计划右转,而车辆2则要直行。这时,车辆1需要与车辆2进行协商,以确定谁先通过路口。
为了突破这些局限,我们需要一个强大的框架,而单靠数据驱动的方法来设计这样的框架是非常困难的。
大语言模型作为一种AI领域的革新技术,正逐渐崭露头角,它们可以看作是人工通用智能(AGI)的雏形。利用自身的常识知识来适应新场景,从经验中积累知识,并尝试解释其决策过程。这些特性使得大语言模型Agent成为克服现有局限、构建高效协作驾驶框架的有力候选者。
AgentsCoDrivers是借助大语言模型,赋予车辆驾驶决策和与其他车辆沟通的能力,从而实现协同驾驶并具备持续学习的特性。该框架包含五大核心组件:
- • 观测模块:观测模块捕捉实时交通状况
- • 记忆库:认知记忆模块存取各类记忆
- • 推理核心:推理引擎依据信息做出决策
- • 强化反思模块:强化反思模块回顾决策过程
- • 通讯模块:通信模块与其他车辆协商合作
上图展示了AgentsCoDriver框架的全貌,它由五个核心组件构成:观测器、推理核心、记忆库、强化反思器和通讯器。这三个模块——推理核心、通讯器和强化反思器——通过大语言模型Agent应用的力量来制定消息和决策。
在每一决策步骤中,观测器首先捕捉周围环境并提炼关键信息,这些信息随后转化为标准化描述,进一步编码为嵌入向量,用以从记忆库中提取最相关的Top-K记忆片段。
接着,将这些描述、记忆和来自其他代理的消息(如果有)融合为一个提示,送入推理核心进行处理。推理核心会进行多轮推理过程,并输出最终决策。
然后做出的决策被转化为具体的行动指令,在自动驾驶车辆(CAV)上实施,以保障行车安全。
决策生成后,通信器会决定是否与其他车辆进行交流以及交流的内容。
若需交流,通信器便与其他车辆交换信息。
最终,评估器和反思器将分别为这一决策提供奖励评分和语言强化分析,这些结果将被存入记忆库中,以供未来参考。
观测模块
自动驾驶车辆(CAV)要实现协同合作,关键在于准确感知周边环境并提炼出对后续复杂推理至关重要的信息。为此,我们专门设计了一个观测模块,使代理能够捕捉周围场景并获取关键信息,例如车道数目、邻近车辆的定位和速度等。这些观察数据将传输至代理的推理核心,以便进行深入分析和决策制定。同时,这些信息也用于唤醒记忆模块中的相关内容。
推理引擎
人类的核心能力是推理能力,这在我们日常决策、解决复杂问题过程中非常重要。传统的数据驱动方法通常直接利用感知数据(如物体识别结果、语义分割结果等)来做出驾驶决策(如转弯、加速或减速等),但这种方法缺乏可解释性,难以应对复杂多变的驾驶场景。受人类推理能力的启发,我们为自动驾驶车辆(CAV)的代理开发了一个推理引擎,它包含三个环节:1)生成提示词,2)进行推理,3)规划行动。
生成提示词
这个阶段中,如上图所示,将提示词划分为多个部分:1)指令前缀,2)场景描述,3)少量经验,4)目标阐述,5)行动选项列表,以及6)来自其他代理的消息(如果有的话)。在生成提示之前,代理首先使用第3.2节提到的观测模块来监测周围环境,明确道路的静态特征和车辆的动态信息。获取环境描述后,这些信息将被编码为嵌入向量,用于从记忆模块中提取相关的Top-K记忆,例如作为少量经验的经验记忆。接着,这些元素将结合成一个预定义的结构化模板,并送入推理引擎。
推理过程
在推理过程中,Agent需要综合当前状态、其他代理的消息、场景、过往经验、目标以及常识知识,从而做出下一步决策。为此,我们特别需要一个强大的推理引擎,让代理能够有效地做出正确的决策。为了增强推理能力,我们直接使用大语言模型Agent应用作为推理引擎的核心,并通过上述精心设计的提示来处理所有信息,得出最终决策。采用了思维链提示技术,使大语言模型Agent能够将复杂问题拆解为一系列子问题,并通过生成一系列中间输出逐步解决它们,最终做出决策。这种策略适用于协作驾驶场景的内在复杂性和多变性,避免了如果语言模型直接生成决策结果可能产生的不准确或错误输出。
运动规划环节
运动规划环节在推理过程结束后展开,代理根据最终决策生成具体的行动指令,这些指令将被执行并引起环境状态的相应变化。然后,代理再次开始环境观测,循环执行上述流程。
记忆模块
记忆在人类行为中扮演着至关重要的角色。比如驾驶时,人们会依靠常识,比如遵守交通规则,或是借鉴过往经验来做出决策。为了赋予代理类似的能力,作者设计了一个由三个部分组成的记忆模块:常识记忆、经验记忆和反思记忆,这些记忆均以结构化文本的形式保存。常识记忆涵盖了驾驶必备的基本知识,例如交通法规。经验记忆则记录了过往的驾驶情境及相应的决策。反思记忆则收录了反思模块提供的反馈信息,帮助代理从过往的错误中吸取教训,优化未来的行为。
强化反思模块
想要在某一领域精进,就必须能从过往经历中吸取教训,这意味着要有能力审视并分析自己的过失。对于自动驾驶代理而言,具备这种自我反思的能力同样重要,以确保操作的正确性和行车的安全性。因此,我们提出了一种增强式自我反思机制(如下图),它包括两个部分:评估器和反思器 。评估器就像一个评委,对代理的表现进行评分;而反思器则能够对代理的行为进行深入反思,并生成有助于代理从错误中学习的语言反馈。与常规的强化学习不同,这种增强式反思模块是由评估器来提供奖励信号的。
评估器 在增强式反思模块中扮演着关键角色,负责评价代理决策的质量。它根据环境的观察结果和代理的输出(包括决策和推理过程)来生成奖励分数,以此来判断输出的好坏。我们特别为评估器这一角色实例化了一个大语言模型,负责为决策任务打分。
反思器 的建立也依赖于大语言模型的另一个实例。反思器是增强式反思机制的核心,它能够针对代理的行为提供详细的语言反馈,帮助代理吸取历史错误的教训。具体来说,反思器会根据评估器提供的奖励信号、推理代理的决策及推理过程,以及场景描述来生成反馈。这些反馈详尽地指出了代理行为错误的缘由,包括代理应吸取的教训、对其未来行为改进的建议,以及代理应做出的正确决策。所有这些详细的反馈都会被存入代理的记忆库中,供未来参考。
通信模块
在协作代理间,有效的沟通是不可或缺的。通过相互交流,代理能够拓宽各自的观察视野。例如,假设两个代理分别有观察结果 O1 和 O2 ,若他们能够交换这些信息,那么他们的观察范围将合并为 O1∪O2。
此外,沟通对于代理之间的协商和更明智的决策制定也至关重要。以超车为例,若后车能与前车进行沟通,前车便能了解后车的意图,从而做出更合理的决策以避免可能的碰撞。实现有效沟通的关键在于确定沟通的时机和内容。
何时进行沟通
设想多辆车在同一道路上行驶的场景,自动驾驶车辆在执行某些动作(如超车、转弯等)时,并不需要一直与其他车辆沟通,特别是当其他车辆距离较远时。这时,自动驾驶车辆的行为不会对其他车辆产生影响,也不会出现轨迹上的冲突。因此,我们需要让代理自身来判断何时需要进行沟通。
沟通的内容
为解决这一问题,我们使用大语言模型Agent应用作为消息生成器。代理可以将其作为工具来使用。当代理认为需要与其他代理沟通时,它会使用这个工具,输入当前的环境编码、其他代理的消息(如果有的话)以及之前的行动,然后生成要沟通的消息。为使沟通更加高效,我们设计了一个包含前缀指令、行动历史、对话历史和场景描述的结构化提示模板。
AgentsCoDriver框架在多车辆协同驾驶方面表现出色,适应多种实验环境。尽管如此,它仍有待改进之处。
- • 首先,与其他依托大语言模型Agent的应用相似,AgentsCoDriver无法实现实时响应 ,生成结果需耗时数秒,这在实际的联网自动驾驶领域中是一个明显的局限。
- • 其次,AgentsCoDriver主要处理文本信息,尚无法直接解析视觉数据 。
鉴于这些限制,未来我们打算将AgentsCoDriver拓展至真实环境中的多模态协同驾驶,并致力于解决大语言模型Agent在协同驾驶应用中的延迟问题,以提升其实用性和响应速度。
更多Prompt建议大家直接阅读原文。
https://arxiv.org/abs/2404.06345
if like_this_article():
do_action('点赞')
do_action('再看')
add_wx_friend('iamxxn886')
if like_all_arxiv_articles():
go_to_link('https://github.com/HuggingAGI/HuggingArxiv') star_github_repo(''https://github.com/HuggingAGI/HuggingArxiv')