大语言模型最近太火了,大家都在各个方向上应用它。自动驾驶也是当下一个热门领域,两个热门领域的结合自然非常令人期待。AIGCer在读了一些相关文献后,感觉在自动驾驶这个热点方向上应用大语言模型,也将是一个很有前途的方向。
这里AIGCer分享一个基于大语言模型的自动驾驶规划任务新框架LaMPilot。它重新思考规划任务为一个利用已有的行为原语的代码生成过程。这种方法旨在解决解释和执行用户指令(如“overtake the car ahead”)的难题,这些指令通常会给现有框架带来困难。LaMPilot基准,专门设计用于定量评估大语言模型(LLMs)在将人类指令转化为可执行驾驶策略方面的效力。然后,又评估了一系列最先进的代码生成语言模型在LaMPilot基准任务上的表现。实验结果显示,GPT-4在人类反馈的支持下,实现了令人印象深刻的92.7%的任务完成率和0.9%的最小碰撞率。
引言
在复杂的交通场景中做出明智的决策对于自动驾驶汽车至关重要。这需要有交通常识以及对周围环境理解的知识。因此,由于其对世界的全面了解和强大的推理能力,大语言模型(LLMs)在自动驾驶中的应用,特别是在决策和运动规划中,正在获得越来越多的关注。
为了为自动驾驶车辆生成特定的任务规划,现有的规划器依赖于明确的目标和约束来指导它们的决策。然而,当面临像“overtake the car in front of me,”这样的命令时,现有的规划器往往难以有效处理。这突显了LLMs解决此类挑战的潜力。
然而,在自动驾驶中使用LLMs存在一些限制:
-
缺乏专门用于在自动驾驶背景下评估和比较基于LLM的模型能力的数据集。
-
控制自动驾驶车辆需要谨慎考虑,因为它具有关键的安全性质。现有框架通常优先考虑LLMs预测的动作的成功执行,而未充分解决安全问题。
为了填补这些空白并在自动驾驶中有效地实施LLMs,本文提出了一个新颖的框架,称为LaMPilot。LaMPilot是第一个专为在驾驶环境中评估基于LLM的agents而设计的交互环境和数据集。该数据集包含4.9K个人工标注的指令-场景对,具有多种语言风格,包括完整的句子和简洁的命令。
受到《Code as Policy》的启发,该文利用编写代码的语言模型(LLMs)来编写机器人策略代码,LaMPilot采用了语言模型程序(LMPs)作为行动空间,而不是低级别的控制命令(如加速和转向)。这一决策的动机在于程序的固有能力,能够表示时间上延伸和组合的动作,这对于解决复杂的、长期的驾驶任务,如超车,至关重要。
具体而言,为基于LLM的agents配备了涵盖各种功能驾驶原语的API,包括与感知相关的功能,如目标检测和车辆控制功能,如车道保持。LaMPilot框架的关键思想是使LLMagents能够通过代码生成将自然语言指令连接到详细的战略行动。代码片段具有三个主要目的:
-
与感知API进行交互,收集相关环境信息。
-
规划未来的运动以完成人类命令(任务)。
-
参数化控制API以执行规划。
在LaMPilot框架中运行的agents的总体目标是以安全高效的方式完成分配的任务。此外,LaMPilot包含一个用于评估目的的交互式仿真器,具有程序化评分机制来评估策略性能。此外,该仿真器具有生成可以根据需要进行控制和调整的情景的灵活性。LaMPilot是在自动驾驶中执行和评估语言模型程序的首创性工作。
贡献总结如下:
-
「LaMPilot基准」:引入了在自动驾驶环境中评估基于LLMagents的第一个基准。
-
「交互式仿真环境」:该框架包括一个用于执行策略的公开仿真器,配备有评分机制。
-
「驾驶原语的综合API套件」:LaMPilot为LLMagents提供了一组API,涵盖了关键的驾驶功能,其中安全标准被加载到API中。
-
「将自然语言连接到策略行动」:LaMPilot通过代码生成实现了自然语言指令到可执行策略的翻译。
相关工作
用于机器人规划的大语言模型
在机器人学中,语言在规划任务中的应用有着悠久的历史,可以追溯到在人机交互的早期演示中使用自然语言的词法分析,并且已经在机器人领域广泛研究。关于这个主题存在着广泛的综述性工作。机器人系统通过基于语言的规划和控制来推广到新任务的能力已经在各种工作中得到了证明。对于实现特定的规划或控制任务或策略,包括基于模型、模仿学习和强化学习等方面进行了广泛的探讨。
最近,使用LLMs进行机器人规划中的代码生成引起了越来越多的关注。Voyager引入了终身学习,通过结合三个关键组件实现:最大化探索的自动课程表,用于存储和检索复杂行为的技能库,以及一种新的迭代提示机制,用于生成具有体现控制的可执行代码。Socratic Models则利用视觉语言模型来替代用于机器人动作代码生成的语言提示中的感知信息。提出了一种方法,使用LLMs直接生成机器人执行控制任务的策略代码,指定反馈循环,并编写低级别的控制原语。然而,LLMs在自动驾驶领域中用于代码生成的利用仍然相对未被充分探索。本文主要目标是开创这一领域并弥合现有的差距。
驾驶中的语言
最近的研究突出了语言交互在提升自动驾驶技术方面的重要作用。像Wayve这样的公司正在利用自然语言来改善驾驶模型的学习能力和可解释性,他们的LINGO-1系统整合了视觉、语言和行动。其他方法在自动驾驶的各个方面使用LLMs,从车辆控制和轨迹规划到整合详细图像和语言以进行更好的决策。在这些应用中,安全性和可解释性也是关键的考虑因素。例如,Talk2Car 展示了使用LLMs根据自然语言命令识别特定对象的能力。LanguageMPC 结合LLMs来解释规划中的行动或调整低级别的控制参数。然而,大多数现有模型要么提供高层次的、不可执行的指令,如转弯和变道,要么涉及非常详细的规划和控制任务,比如调整转向角。本工作独特之处在于利用LLMs生成控制自动驾驶操作的代码,充分发挥它们的推理能力,以实现更高效的驾驶体验。
用于代码生成的大语言模型
随着强大的大语言模型的出现,编程语言能够在许多领域执行各种任务,如代码生成、信息提取、机器人和视觉。此外,代码为逻辑规划提供了基础,当被大语言模型利用时,在许多纵向任务中取得了突破性的结果。LLMs和代码的这种结合揭示了一个可以应用于许多工程和科学领域的新范式。
LaMPilot基准
问题陈述
将基准B定义为元组〈S,A,T,I〉,包括:
• S:所有可能状态的全面集合。
• A:由自动驾驶车辆执行的动作集合。
• T:过渡模型,表示为T:S×A→S,封装了环境的动态性。
• I:指导自动驾驶车辆规划的高级指令。
对于基准B中的每个任务,从初始状态b开始,目标是在g∈G中达到目标状态。该基准为每个任务概述了一个策略展开。此展开由条件概率引导,并在到达目标状态g ∈ G时结束。请注意,agents无法直接访问目标状态g,而只有高级指令I。
考虑指令I =“Make a right lane change”。如果初始状态s包括当前车道l∈s中的自动驾驶车辆,则策略set_target_lane(get_right_lane(ego))将执行一系列状态-动作对。该过程将车辆从其当前状态l∈s转换到新状态l′∈s′,其中l′是l右侧的车道,假设这样的车道存在。在这种情况下,目标状态g∈G可以通过特定标准来定义,以确认自动驾驶车辆在右侧车道l′中的适当位置。这将表明动作序列成功地将车辆从∈s转换到′∈s',与指令I一致。
LaMPilot
基于问题陈述,本文提出LaMPilot,这是一个新的基准,旨在评估自动驾驶车辆中的指令遵循情况。LaMPilot由三个关键组成部分组成:仿真器、数据集和评估器。在LaMPilot中,驾驶策略通过Python语言模型程序(LMPs)来表达。主要方法涉及基于LaMPilot中的人工标注指令创建提示。这些提示由LLMs处理,生成相应的代码。然后在LaMPilot框架内执行此代码,并评估其性能,如下图1所示。
「仿真器」 仿真器是LaMPilot环境的一个关键组件,基于广泛用于自动驾驶和战术决策相关研究的HighwayEnv构建。它提供了各种驾驶模型,并模拟了多车辆之间的真实交互。HighwayEnv最初设计用于训练强化学习agents,本研究在LaMPilot中对其进行扩展,以包括适用于LLMagents的接口。此外,还实现了具有不同配置的自定义交叉口,以增加决策情景的多样性。这种扩展补充了现有的“高速公路”环境,并增强了仿真器的整体功能,使得能够评估更广泛的驾驶情景。仿真包括具有各种密度设置的随机生成的交通模式,涵盖了拥挤的交通高峰时段和较为宽松的道路条件。
「数据集」 LaMPilot数据集包含4,900个人工标注的交通场景,每个数据样本包括三个元素: • 一个指令I,即高级任务描述。
• 一个初始状态b,用于初始化仿真器。
• 一组用于确定目标状态G的标准,与I一致。
数据集分为三个集合:训练集(3,900个样本)、验证集(500个样本)和测试集(500个样本)。数据集包含各种指令,反映了真实世界需求的多样性和不可预测性。这些指令根据操作类型(如转弯、变道和超车)以及场景类型(包括高速公路和交叉口设置)进行分类。下图2显示了指令中前四个词的分布,突显了我们数据集中指令的多样性。详细的统计信息显示在下表1中。
功能原语
驾驶策略涉及对功能原语的API调用,这些功能原语是专门设计为支持LLMs生成基于指令的可操作规划的特殊API。主要目标是利用LLMs进行战略规划,同时有意避免它们直接参与低级别的控制任务。由于LLMs的自回归特性,生成较长的补全可能会引入显著的延迟。这一特性使它们不太适用于需要快速响应的对象避让等时间关键任务。为了解决这个问题,我们的API设计战略性地卸载安全关键任务,允许LLMs专注于基于常识的决策,这与它们的能力更好地契合。
功能原语套件是根据Responsibility-Sensitive Safety(RSS)的见解开发的。这些API有助于构建最小化由于不当策略而导致事故风险的驾驶策略。这种方法使我们的工作与许多现有的可能更加强调安全可行性的API功能有所区别。
API套件分为四个主要类型:
(1) 「Ego APIs」 这些API提供有关自动驾驶车辆状态的信息,如其速度和位置;
(2) 「Perception APIs」 这些API包括目标和车道检测等功能,可用于获取周围环境的信息;
(3) 「Planning APIs」 这些API在提供目的地时具备生成路径的能力;
(4 )「Control APIs」 这些API将LLM生成的代码转换为车辆的低级命令,实施适当的响应以避免碰撞。在执行生成的策略期间,如果出现异常情况,自动驾驶车辆将自动切换到预定义的autopilot模式,以防止未定义的行为。API的完整列表在附录中提供。
输入提示
除了主要的指令之外,我们还提供环境背景和API文档作为LLMs的输入提示的一部分。
「环境背景」:环境背景包括有关驾驶环境的相关信息。这些详细信息在仿真器中表示为数值向量。开发了一个接口,允许LLMs使用这些信息,将数值向量转换为自然语言描述。这些向量包含来自仿真的语义属性,如道路上其他车辆、自动驾驶车辆和地图的信息。这种方法使我们的工作与该领域中其他最近的进展有所区别,在那里数值向量直接输入LLMs而没有进行任何上下文翻译。具体而言,采用了一个结构化的语言生成器,如下所示:
此函数将状态向量的数值数据转换为叙述格式。这个叙述不需要额外的微调就能够被LLM解释。它提供了有关agents环境的全面信息,包括其他道路用户、自动驾驶车辆状态和相关地图信息。
「API文档」:考虑一个例子指令“向右变道”,LLM可能建议执行动作change_lane_right。然而,控制器可能不直接支持这个作为基本动作。为了弥合这个差距,我们在提示中包含API文档。这些文档为LLMs提供了有关可用API的基本信息,并指导它们的正确使用。这些文档不仅包括输入和输出规范,还提供了它们的用法描述和这些功能背后逻辑的说明。通过将API文档整合到提示中,确保LLM生成的策略代码与自动驾驶车辆的实际能力相符,从而促使可执行的行动规划。
完成和执行
如前面图1所示,LLM接收提示并负责生成一个完成。由LLMs生成的完成预计是有效的函数,使用提供的API编写。这些函数可以从简单的一次性函数到更复杂的生成器函数。下面演示了一个简单的例子,其中更改了自动驾驶车辆的目标速度:
此外,LaMPilot支持使用控制结构,如if-else和循环语句,使LLM能够创建动态反馈策略。一个示例是用于进行左变道的while循环:
在这个例子中,策略持续评估变道到左车道的可行性。当条件安全时,它执行车道变换;否则,它将默认为autopilot函数。
要在LaMPilot中执行LMP,使用Python的exec函数。此函数以LMP代码作为输入字符串,以及两个定义执行范围的字典:(i) apis,其中包括代码可能调用的所有APIs,和 (ii) policies,一个最初为空的字典,最终将包含合成的函数和一个策略变量。如果LMP设计为返回生成器,那么在exec函数执行后,这个生成器将从locals字典中提取出来。
评估
本文框架使用三个关键指标(安全性、舒适性和效率)从初始状态b评估驾驶性能到目标状态g∈G。
「安全性指标」:本文采用碰撞时间(TTC)作为主要安全性指标。它通过评估车辆维持安全距离和适当反应以避免碰撞的能力,来衡量车辆与交通规则和人类驾驶行为的相似性。在包括自动驾驶车辆在内的n+1车辆的场景中,使用标签i来具体指代每辆车,其中0是自动驾驶车辆。对于具有状态s的单个时间步长,使用其速度∈s和位置∈s,与具有速度∈s和位置∈s的另一辆车进行比较,计算与车辆i的碰撞时间(),其中1 ≤ i ≤ n。公式为:
为计算TTC分数,从所有n辆其他车辆和所有时间步中选择表示最近潜在碰撞的最短正碰撞时间值。使用t来索引每个时间步长,T表示实际任务完成时间。因此,对于所有,其中i范围从1到n,t范围从1到T,可以计算如下:
根据实证数据,TTC分数基于2秒的安全余地,超过2秒的分数被认为是安全的,并评为100。具体而言,TTC分数的计算如下:
「舒适性指标」:速度方差(SV)用于评估速度过渡的平稳性,反映了驾驶策略的舒适水平。
首先,需要计算自动驾驶车辆的速度标准差。对于每个时间步t,其中1 ≤ t ≤ T,计算如下:
其中,是自动驾驶车辆的平均速度:
然后,速度方差(SV)分数定义为:
其中,是最大舒适速度偏差。
效率指标:时间效率(TE)分数评估策略代码的时间效率,计算如下:
在这里,T表示实际任务完成时间,而是预定义的时间限制。
任务完成标准:当自动驾驶车辆成功地从初始状态b转换到目标状态g∈G时,任务被认为完成。具体来说,它需要满足具体的条件。例如,变道任务在车辆进入目标车道,并且其航向与车道方向对齐在一个定义的阈值内时被视为完成。所有标准的完整列表概述在附录中。
整体评分:最终分数是所有单个指标的综合:
每个指标对总体分数的贡献由其各自的权重W决定。
基准模型
启发式基线
在自动驾驶领域,基于规则的模型因其确定性和可解释性而备受青睐。在这个背景下,采用两种基于规则的基准策略:智能驾驶模型(IDM)和最小化变道引起的整体制动(MOBIL)原则。IDM描述了一种根据车辆与直接在前方的物体的接近程度和相对速度来避免碰撞的加速度更新规则。根据MOBIL,仅当新的车道提供更有利的驾驶场景且该操作可以安全进行时,才执行变道。这些基线可以被视为基于随机机会运行,因为策略独立于用户指令,而是遵循预定义的规则。
此外,还包括一个human performance基线,其中由有驾照的人类驾驶员使用键盘上的箭头键控制车辆,根据显示的命令和可视化信息进行仿真。这个基线为LaMPilot基准上的人类水平性能提供了一个参考。
零样本和少样本基线
使用广泛的最新大语言模型进行基准测试,其中包括开源和专有的解决方案。评估的模型包括:Llama 2,PaLM 2,ChatGPT,GPT-4和GPT-4 Turbo。零样本设置配置了从API描述(A),用户指令(I)和驾驶环境(C)到可执行程序代码(P)的映射,其中输入提示包括由公式(1)中的结构化语言生成器生成的(A),(I)和(C)的连接标记。输出旨在提供符合给定驾驶上下文中用户指令的可执行程序代码(P)。在少样本设置中,遵循标准范例,在测试实例之前包含k个人工编写的例子{} 这些上下文示例有助于模型适应LaMPilot基准中的任务。
人类反馈基线
大语言模型已经展示了在各种任务中生成一致解决方案的熟练能力,无需额外的微调。然而,在代码生成方面,特别是对于复杂场景,它们可能会产生次优结果。这些模型的自回归性质构成了一个重要挑战,因为在序列的早期生成的标记不能在同一迭代中修改。这种约束限制了模型在细化初始响应方面的能力,可能影响生成代码的有效性。
为了解决这些挑战并提高LLM在LaMPilot基准任务中的性能,引入了一种人机协同的方法。这种方法与大多数仅依赖经验学习的数据驱动自动驾驶系统不同。相反,它将实际经验与理论知识相结合,类似于人类驾驶员如何培养驾驶技能。在这种方法中,LLMs不仅充当规划者,还作为整合人类反馈的平台。如下图3所示,人类反馈融入到学习过程中,将其从一个静态的、开环系统转变为一个动态的、不断演化的反馈循环。在LLM生成策略程序(P)后,它可以集成人类反馈(F)以获得特定上下文的指导,使LLM能够细化其输出。
例如,人类可能建议在交叉路口车流量繁忙的情况下,在无信号灯的左转时采取更为果断的策略。这些建议帮助LLM调整其策略,使其更好地与人类喜好和情境需求保持一致。
这种方法不涉及计算梯度或修改模型权重,因为这些过程在计算上是昂贵的。相反,引入了一个代码存储库模块,它充当矢量数据库。该存储库允许存储和检索有效代码片段,以在类似情况下重复使用。遵循中的方法,LLM生成一个函数描述,然后将其转换为一个矢量,用作数据库键。此键与相应的函数代码配对,作为其值。一旦人类评论者对策略满意,代码就会提交到存储库以供将来重用。
实验和结果
实验设置旨在为提出的LaMPilot基准建立基线。主要目标是评估生成代码的LLMs在理解驾驶场景中的人类口头指令方面的性能。还旨在评估这些LLMs生成用于车辆控制的代码的能力,其中使用了预定义的行为原语。此外,调查了具有记忆增强的LLMs在整合人类反馈方面的效果。
设置
为每个场景设置了60秒的时间限制。如果在此时间范围内未完成任务,则将考虑测试用例失败,并终止仿真,导致驾驶得分为0。对于成功的案例,驾驶得分使用以下公式计算:
这里, 代表成功测试案例的数量,α 是成功率(从 0 到 1),β 是碰撞率(也在 0 到 1 之间), 是碰撞的惩罚因子(在我们的实验中设置为 500)。每个单独样本的 根据公式(9)计算,其中权重 分别设置为 0.5,0.3 和 0.2。TTC 得分,SV 得分和 TE 得分分别计算为所有成功测试案例的相应指标的平均值。
一个熟练使用 Python 的标注者创建了上下文示例。他们获得 API 描述,并有机会使用验证集编写和测试他们的代码。对于few-shot设置,使用了一组在所有测试案例中都相同的三个示例。API 文档在所有测试案例中也是相同的。
结果
在本节中,介绍了LaMPilot基准的实验结果,总结了各种方法的性能,包括启发式基线,零样本和少样本基线以及人类反馈基线。这些结果在下表2中详细说明。
基于规则的方法 首先评估基于规则的方法的性能,具体而言是IDM和MOBIL算法。这两种基于规则的方法在LaMPilot基准中都实现了零碰撞率。这个结果突显了它们作为成熟驾驶策略的可靠性和有效性。重要的是要注意,这些方法独立于提供的指令运行。具体而言,不考虑人类指令的情况下,这些方法的成功率在15%到20%之间。这为评估LLM-basedagents在遵循人类指令方面的有效性提供了重要的参考点。
「人类表现」 在各种评估指标方面,人类始终优于所有基线模型。他们保持了零碰撞率,并在完成率方面相对于表现最好的带有人类反馈的 LLM-based agents表现出明显优势。这种差距突显了未来研究的潜在领域。值得注意的是,即使是人类驾驶员也不能取得完美的分数,这强调了 LaMPilot 基准中特定场景的复杂性。例如,在规定的时间内在繁忙交通中进行不受保护的左转可能特别具有挑战性。
「大语言模型」 评估了大量预训练对LLMs具有使用常识进行推理以及遵循人类指令的能力的影响。
在零样本设置中,OpenAI 的 GPT 模型和 PaLM 2(没有任何微调,仅提供 API 文档、驾驶上下文和指令)与基于规则的方法相比取得了显著的性能优势。然而,这也导致了碰撞率的增加(1%-4%),表明它们生成的代码策略并没有完全捕捉到驾驶任务的复杂性。
当提供包含演示代码的训练示例时,所有评估的LLMs在完成率上都表现出显著的改善。将 GPT 模型与人在回路学习相结合进一步提高了它们在驾驶任务中的性能。值得注意的是,GPT-4 实现了一个最先进的结果,完成率为 92.7%,最小碰撞率为 0.9%,相比之下,人的成功率为 98%,突显了LLMs在驾驶背景下遵循指令的巨大潜力。
结论和限制
本文介绍了 LaMPilot,一个包含 4.9K 场景的新颖基准数据集,专门设计用于评估自动驾驶中的指令执行情况。这是第一个旨在评估LLMs在这个应用中能力的数据集。LaMPilot上测试了各种最先进的LLMs。主要关注点是探索使用LLMs生成符合驾驶指令的代码的可行性。实验表明,带有人类反馈的GPT-4实现了令人印象深刻的任务完成率,为92.7%,最小碰撞率为0.9%。
虽然框架代表了一个重大的进步,但也强调了LLMs在更好地支持驾驶任务中的指令跟随方面仍然需要重大改进。尽管完成率令人鼓舞,但仍然存在显著的碰撞率。值得注意的是,在我们的研究中,LLMs没有进行任何特定的微调或参数调整。然而,LaMPilot包含了一系列适合交互式学习的场景,为未来的探索提供了一个有希望的方向。
总的来说,研究为这一领域的进一步研究奠定了基础。预计我们的基准和框架将对那些有兴趣利用LLMs在自动驾驶中不断发展的能力的研究人员非常有价值。
参考文献
[1] LaMPilot: An Open Benchmark Dataset for Autonomous Driving with Language Model Programs
链接:https://arxiv.org/pdf/2312.04372
更多精彩内容,请关注公众号:AI生成未来