LLM应用于MPC

现有的基于学习的自动驾驶系统(AD)在理解高级信息和提供可解释性方面存在挑战。为了解决这些问题,这项工作采用LLM作为复杂AD场景的决策组件。作者设计了认知途径(cognitive pathway)来实现LLM的综合推理,并开发了将LLM决策转化为可操作的驾驶命令的算法。通过这种方法,LLM决策通过引导参数矩阵自适应与底层控制器无缝集成。大量的实验表明,由于LLM的常识推理能力,提出的方法不仅在单车辆任务中始终优于基线方法,而且还有助于处理复杂的驾驶行为,甚至多车辆协调。

来自:LANGUAGEMPC: LARGE LANGUAGE MODELS AS DECISION MAKERS FOR AUTONOMOUS DRIVING
工程地址:https://sites.google.com/view/llm-ad

目录

  • 引言
  • 方法
    • 背景
    • 思维链
    • 关注定位
    • 状态感知和动作指导
  • 实验

引言

想象一下,我们正在开车,驶近一个没有信号的十字路口,正准备左转,迎面有一辆车驶来。人类司机本能地知道,根据交通规则,他们应该减速和让行。然而,现有的先进的基于学习的自动驾驶系统通常需要复杂的规则或奖励功能设计来有效地处理这些场景。

现有基于学习的AD系统面临的另一个挑战是长尾问题。有限的数据集和采样效率都会给现有的基于学习的自动驾驶系统在罕见的真实驾驶场景中做出决策带来挑战。Chauffeurnet 证明了这样的限制,即使是3000万个状态动作样本也不足以学习将鸟瞰图像(状态states)映射到控制(动作action)的最佳策略。

此外,缺乏可解释性是现有基于学习的AD系统面临的一个紧迫问题。成熟的AD系统必须具有可解释性,以获得社会的认可,使其能够进行有针对性的优化和迭代改进。然而,现有的基于学习的AD系统几乎都是黑盒。

考虑到上述挑战,一个基本问题出现了:我们能否为自动驾驶系统配备像人类一样思考和驾驶的能力?作者提出的解决方案包括使用LLM作为AD系统的“大脑”。最近的ChatGPT等模型将LLM定位为通用智能的早期版本,该特性使LLM成为上述AD系统所面临问题的强大解决方案。

在该研究中,作者利用LLM来分析和推理各种场景,使其能够提供高级决策,并通过调整参数矩阵,将高级决策转换为数学表示来指导底层控制器,MPC。图1展示了该系统对罕见和复杂场景的强大推理能力,展示了其在理解高级信息、常识推理和可解释性方面的优势。通过定量实验,发现该系统明显优于现有的基于学习和基于优化的单车辆决策任务方法。

fig1

  • 图1:面对在环形交叉路口罕见的故障车辆停在路中间的情况,LLM通过常识推理和对高层信息的理解,做出符合交通规则的决策。

方法

作者开发了一个以LLM为高层决策核心的AD系统,如图2a所示。LLM根据提供的prompt启动对话,不断从环境中收集信息,进行推理并做出判断。如图2a中间所示,从左到右,LLM依次进行:1识别需要注意的车辆,2评估情况,3提供行动指导。然后,系统将这三个高级文本决策转换为数学表示,即观察矩阵、权重矩阵和action偏差。这些元素作为底层控制器MPC的指令,指示其要采取的具体驾驶动作。

以十字路口左转为例,在图2b中,展示了如何将上述三个高级文本决策转换为MPC所需的数学表示。LLM选择“vehicle_26”,我们使用MPC的观测算子创建相应的向量,并将观测矩阵中的其他元素归零,仅关注“vehicle_26”。根据LLM发出信号的交叉口等待情况,调整权值矩阵,使减速指令优先于轨迹跟随,从而促使MPC按照LLM的指令及时减速。通过预定义的规则将LLM的action指导直接转化为action偏差。在上述三个方面的数学形式的指导下,MPC完成了停止的action。
fig2

  • 图2a:以LLM为核心的决策管道。
  • 图2b:将LLM文本高级决策转换为指导MPC给出具体驾驶动作的数学表示,以十字路口左转为例。

背景

MPC基于获得的当前测量信息,在每一时刻在线求解一个有限时间开环优化问题,并将得到的控制序列中代价最低的第一个元素应用于被控车辆。在这项工作中,作者在马尔可夫决策过程(MDP)的背景下定义MPC的代价函数,MDP通常用于形式化车辆控制问题: ( S , A , C , P , p 0 ) (S,A,C,P,p_{0}) (S,A,C,P,p0),其中 S S S是状态空间, A A A是action空间, C : S × A → R C:S\times A→\mathbb{R} C:S×AR是代价函数, P : S × A → S P:S\times A→S P:S×AS是动态方程, p 0 p_{0} p0是初始状态分布。给定一个代价函数 C C C,MPC找到action序列 a 1 : H = a 1 , . . . , a H a_{1:H}=a_{1},...,a_{H} a1:H=a1,...,aH以最小化预期的累积代价 J ( a 1 : H ) = ∑ t = 1 H C ( s t , a t ) J(a_{1:H})=\sum_{t=1}^{H}C(s_{t},a_{t}) J(a1:H)=t=1HC(st,at)。代价函数形式如下: C ( s , a ) = ∑ i = 0 M w i ⋅ n i ( r i ( s , a , ψ i ) ) C(s,a)=\sum_{i=0}^{M}w_{i}\cdot n_{i}(r_{i}(s,a,\psi_{i})) C(s,a)=i=0Mwini(ri(s,a,ψi))其中 w ∈ R + w\in\mathbb{R}+ wR+为非负权重, n ( ⋅ ) : R → R + n(\cdot):\mathbb{R}→\mathbb{R}+ n():RR+为二次可微范数,其最小值为0, r ∈ R r\in\mathbb{R} rR是当 r = 0 r=0 r=0时达到最优性能的残差项, ψ i \psi_{i} ψi为残差项的参数。例如,如果我们希望车辆采用所需的加速度,我们可以设计一个残差项 r a c c ( a c c , ψ ) = a c c − ψ r_{acc}(acc,\psi)=acc-\psi racc(acc,ψ)=accψ,其中 ψ \psi ψ表示所需的加速度,并用 l 2 l_{2} l2范数构造最终的奖励: C a c c = w ∣ r a c c ∣ 2 C_{acc}=w\vert r_{acc}\vert_{2} Cacc=wracc2。由于驾驶场景的复杂性,设计一组适用于所有驾驶场景的权重和残差项几乎是不可能的。在这项工作中,作者使用一组通用的简单残差项来调整控制行为,其中包括action偏差,并基于MPC应该执行动作偏差的确定性设计了多组权重矩阵。使用LLM来给出动作偏差,并选择权重矩阵来驱动不复杂场景。

思维链

我们采用LangChain作为管理LLM的框架,并为LLM建立一个结构和流程。首先,我们在对话开始时立即介绍这些指定的工具。随后,在对话过程中,LLM积极调用这些工具,为其正在进行的决策过程获取相关信息和指导。LLM遵循这些指导方针来确定其下一步行动,直到成功解决整个问题。

作为一个示例,考虑图3中所示的三个核心工具。这些工具中的每一个都有双重目的,即为LLM提供相关信息和完成推理所需的指导。
fig3

  • 图3:定义的三个用于提示的核心工具。每个工具的提示都包含信息和指导原则,以帮助LLM完成推理和判断并开始下一步。

此外,这些工具使我们能够改进提供场景信息的方式。关键在于只提供LLM思维过程中每个决策步骤所需的相关信息,如图3所示。这种方法代表了一种解决方案的转变,解决了LLM在处理复杂而广泛的数据时面临的重大挑战。它确保了信息的组织简洁性和必要性,从而大大提高了LLM推理和判断的能力。

关注定位

开车时有效分散注意力的能力反映了一种类似人类的思维过程。在这种情况下,我们要求LLM系统地评估与周围车辆有关的信息。目标是辨别这些车辆的意图,并最终确定它们是否与AD车辆的运动产生冲突。特别的,在时刻 t t t,对于周围车辆的每个元素 V t = { V 1 t , V 2 t , . . . } V^{t}=\left\{V_{1}^{t},V_{2}^{t},...\right\} Vt={V1t,V2t,...},我们有: I i t = L L M ( S i t , S i t − 1 , . . . , S i t − 10 , e n v t ) M i t = L L M ( S i t , I i t , e n v t ) I_{i}^{t}=LLM(S_{i}^{t},S_{i}^{t-1},...,S_{i}^{t-10},env^{t})\\M_{i}^{t}=LLM(S_{i}^{t},I_{i}^{t},env^{t}) Iit=LLM(Sit,Sit1,...,Sit10,envt)Mit=LLM(Sit,Iit,envt)其中, e n v t env^{t} envt为场景道路信息, S i t S_{i}^{t} Sit为环境中 V i t V_{i}^{t} Vit的状态, I i t I_{i}^{t} Iit V i t V_{i}^{t} Vit的意图, M i t M_{i}^{t} Mit为0或1,表示 V i t V_{i}^{t} Vit被LLM认为是否需要关注,随后,根据LLM识别的车辆为MPC创建了一个观察矩阵: o b s i t = M P C o b s ( S i t , I i t , e n v t ) ∗ M i t obs_{i}^{t}=MPC_{obs}(S_{i}^{t},I_{i}^{t},env^{t})*M_{i}^{t} obsit=MPCobs(Sit,Iit,envt)Mit其中, o b s i t obs_{i}^{t} obsit为MPC观测矩阵的第 i i i行, M P C o b s MPC_{obs} MPCobs是MPC计算观测矩阵的算子。这确保了MPC只关注这些选定的车辆。

状态感知和动作指导

在驾驶过程中,状态感知是一个关键的高层决策过程,包括对当前场景的深刻理解,以及常识推理。在这个框架内,作者让LLM负责从几个选项中选择一个特定的情况,利用在关注定位section中概述的关注分配过程中收集的信息,以及LLM判断的结果。定义特征 F i t = { S i t , I i t , M i t } F_{i}^{t}=\left\{S_{i}^{t},I_{i}^{t},M_{i}^{t}\right\} Fit={Sit,Iit,Mit}描述 V i t V_{i}^{t} Vit相关的信息,此时有: X t = L L M ( F 1 t , . . . , F k t , e n v t ) X^{t}=LLM(F_{1}^{t},...,F_{k}^{t},env^{t}) Xt=LLM(F1t,...,Fkt,envt)其中, k k k为LLM选择的周围车辆数量, X t X^{t} Xt为选择的情况。对 X t X^{t} Xt的判断作为MPC权重矩阵的调整机制。对于每个预定义的情况,都建立了相应的权重矩阵 W t W^t Wt。随后,LLM根据其选择的情况提供关于加速和转向的指导: A t = L L M ( F 1 t , . . . , F k t , e n v t , X t ) A^{t}=LLM(F_{1}^{t},...,F_{k}^{t},env^{t},X^{t}) At=LLM(F1t,...,Fkt,envt,Xt)其中, A t A^{t} At为动作指导。 A t A^{t} At会影响MPC动作偏差的调整,随着车辆的动作与提供的指导相互接近,代价会降低: r b i a s ( b i a s , ψ ) = b i a s − ψ C b i a s = w b i a s ∣ r b i a s ∣ 2 r_{bias}(bias,\psi)=bias-\psi\\C_{bias}=w_{bias}\vert r_{bias}\vert_{2} rbias(bias,ψ)=biasψCbias=wbiasrbias2其中, b i a s bias bias表示加速或者转向,值得注意的是,预定义场景集虽然数量有限,但足够抽象和广泛,可以涵盖广泛的驾驶场景,因为它们不代表特定的场景,但具备MPC应该执行动作偏差的确定性。

实验

实验使用IdSim生成场景地图和交通流。在单车辆决策的背景下,对三种不同的方法进行了评估:基于强化学习的规划,模型预测控制,以及该研究提出的系统LLM+MPC。其中,RL在大范围复杂交通场景中进行了训练和验证,MPC在实车实验中进行了微调和验证。每一种方法都在不同的场景下进行了测试,包括有信号的十字路口、无信号的十字路口、车道、紧急规避和环形交叉路口。作者为每个场景类型选择了25个复杂且具有挑战性的案例,以全面评估系统性能。

单车辆决策的定量结果如表1所示。LLM+MPC在四种场景类型中实现了总体代价的降低。在非紧急情况下,观察到最小的故障发生概率。在紧急情况下,LLM+MPC显著降低了事故率,表明了它在避障方面的有效性。
tab1

  • 表1:单车辆决策的评估。SI指有信号交叉口,USI指无信号交叉口,EOA指紧急避障。对于所有的参数,越低越好。

具体来说,在十字路口,主要关注的是左转弯的情况,在这种情况下,AD车辆固有地拥有较低的路权地位,需要根据既定的交通规则选择减速和让步。在十字路口和环形交叉路口的左转弯情况下,虽然LLM+MPC可能会导致运行时间的轻微增加,但它在提高交通流量效率和减少安全处罚方面产生了实质性的好处。在车道上(Lane),LLM+MPC在所有指标上都表现出色,表明了超车和变道的效率。最后,在紧急情况下,LLM+MPC通过降低事故率和提高整体性能来证明其有效性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/272371.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件接口测试是什么?怎么测?

软件测试是一条超级长的跑道,最好分阶段来跑:先入行,后精通。网上能看到很多软件测试的帖子,但能够准确分类详细介绍的并不多。正好最近有时间,就把我所了解的软件测试做一个小小总结,对你有帮助的话&#…

【100个Cocos实例】环形ScrollView的实现方法

引言 Cocos中环形ScrollView的实现 大家好,今天是圣诞节,又是寒冷的一天。 在游戏开发中经常需要用到ScrollView去实现滚动的列表。 他通常包括垂直方向和水平方向两个选择。 本文将介绍一下ScrollView环形方向的实现。 本文源工程可在文末阅读原文…

ServletContext对象和ServletConfig对象

Servlet几个重要的类的关系图 ServletContext对象 问题: Request解决了一次请求内的数据共享问题,session解决了用户不同请求的数据共享问题,那么不同的用户的数据共享该怎么办呢? 解决:使用ServletContext对象 作…

关键字:extends关键字

在 Java 中,extends 是一个关键字,用于表示继承关系。当一个类使用 extends 关键字时,它表示该类是一个子类,并且继承了父类的属性和方法。 以下是 extends 关键字的解析: 语法: 描述: ChildC…

二分查找——OJ题(二)

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、点名1、题目讲解2、算法原理3、代码实现 二、搜索旋转排序数组中的最⼩值1、题目讲解2、算…

Unity向Web服务器上传和下载图片

Unity向Web服务器上传和下载图片 如果本片有看不懂的请查看我上篇文章:[Unity与Web服务器Post,Get](https://blog.csdn.net/qq_42194657/article/details/103031573)一、上传和下载图片1.在Unity中创建一个RawImage并在WebManager.cs脚本中添加一个Textu…

石油石化应急三维电子沙盘系统研究分析与业务应用

一、概述 易图讯科技(www.3dgis.top)以大数据、云计算、虚拟现实、物联网、AI等先进技术为支撑,支持高清卫星影像、DEM高程数据、矢量数据、无人机倾斜摄像、BIM模型、点云、城市白模、等高线、标高点等数据融合和切换,集成油田原…

Unity-Shader-渲染队列

Unity-Shader-渲染队列 渲染简介Unity中的几种渲染队列Background (1000)最早被渲染的物体的队列。Geometry (2000) 不透明物体的渲染队列。大多数物体都应该使用该队列进行渲染,也就是Unity Shader中默认的渲染队列。AlphaTest (2450) 有透明通道,需要进…

巅峰画师Midjourney:新时代的独角兽

介绍 AI绘画领域中,Midjourney处于绝对地位,并且一年时间就登顶。 Midjourney是一家独立的AI研究实验室,探索新的思维媒介,拓展人类的想象力。 它由一个小型的自筹资金团队组成,专注于设计、人类基础设施和AI。 在AI绘画领域,Midjourney取得了非常突出…

SaaS医院信息化云his系统源码带电子病历+LIS系统

一、系统概述 •采用主流成熟技术,软件结构简洁、代码规范易阅读,SaaS 应用,全浏览器访问前后端分离,多服务协同,服务可拆分,功能易扩展; •支持多样化灵活配置,提取大量公共参数&am…

P7 RV1126推流项目 —— 写代码前的思路草图

目录 前言 01 项目介绍: 02 项目框图: 03 模块设计思路 3.1.rv1126_ffmpeg_main.cpp(主模块代码): 3.2.rkmedia_assignment_manage.cpp(RKMEDIA 任务管理模块) 3.3. rkmedia_data_process.cpp(RV1126 数据处理模块): 3.4. rkmedia_…

详解IDEA git 版本回滚

作者简介 目录 1.git分区 2.未commit,进行回滚 3.commit未push,进行回滚 3.1.undo commit 3.2.reset 4.已commit&push,进行回滚 1.git分区 git的版本回滚其实就是回滚不同的分区,所以在聊git回滚之前我们有必要简单了解…

linux(centos)相关

文件架构: 用户组 查看用户组中的用户! 用户 切换用户:su 提高用户权限命令:sudo 进程状态命令:top 杀死进程:kill 关机命令:shutdown 重启命令:reboot 时间同步 目录命令 ls pwd rm mv …

git中的smart checkout和force checkout

切换分支时出现了这个问题: 这是因为shiyan01分支修改了代码,但是没有commit, 所以在切换到test分支的时候弹出这个窗口 一、smart checkout(智能签出) 会把shiyan01分支的改动内容带到test分支。合并处理后的内容就变成了test分支的内容,而shiyan01分支的改动会被…

EternalBlue【永恒之蓝】漏洞详解(复现、演示、远程、后门、入侵、防御)内容丰富-深入剖析漏洞原理-漏洞成因-以及报错解决方法-值得收藏!

漏洞背景: 1.何为永恒之蓝? 永恒之蓝(Eternal Blue)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日, 不法分子…

yolov7添加FPPI评价指标

学术上目标检测大多用mAP去评价一个模型的好坏,mAP用来作为比较模型的指标是挺好的,不过有个问题就是不够直观,比如mAP0.9到底代表什么呢?平均一个图会误检几个呢?该取什么阈值呢?mAP说明不了,所…

获取android签名

1、安装安卓模拟器,比如MuMu模拟器; 2、打包需要签名的apk,记住包名,比如org.ungleyou.uy,后面签名用得着; 3、下载签名工具,Gen_Signature_Android.apk: http://dlied5.qq.com/msdk/Gen_Sig…

【力扣题解】P101-对称二叉树-Java题解

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P101-对称二叉树-Java题解🌏题目描述💡题解🌏总结…

揭秘Pod状态与生命周期管理的秘密(上)

写在前面 前几篇文章中主要分享了k8s的几种控制器,本文将着重分享一下k8s最小的创建和部署单位pod的状态与生命周期管理。 点击 这里 可以查看所有相关文章。 Pod 概览 Pod 是 kubernetes 中你可以创建和部署的最小也是最简的单位。Pod 代表着集群中运行的进程。…

C# LINQ

一、前言 学习心得&#xff1a;C# 入门经典第8版书中的第22章《LINQ》 二、LINQ to XML 我们可以通过LINQ to XML来创造xml文件 如下示例&#xff0c;我们用LINQ to XML来创造。 <Books><CSharp Time"2019"><book>C# 入门经典</book><…