Bootstrap

用LLMs驾驶: 融合目标级向量模态实现可解释自动驾驶

来自英国创业公司Wayve23年10月的自动驾驶论文“Driving with LLMs: Fusing Object-Level Vector Modality for Explainable Autonomous Driving“。

大语言模型(LLM)在自动驾驶领域显示出了前景,尤其是在泛化和可解释性方面。本文引入了一种独特的目标级多模态LLM架构,该架构将矢量化的数字模态与预训练的LLM相结合,提高对驾驶情况下上下文的理解。本文还提出了一个新的数据集,其中包括来自10k驾驶场景的160k个问答QA对,与强化学习(RL)智体收集的高质量控制命令和教师LLM(GPT-3.5)生成的问答配对。作者设计了一种独特的预训练策略,用矢量字幕语言数据将数字矢量模态与静态LLM表征对齐。作者还介绍了驾驶QA的评估指标,并展示了LLM驾驶员在解释驾驶场景、回答问题和决策方面的熟练程度。与传统的行为克隆相比,该文表现出基于LLM的驾驶动作生成的潜力。

为了生成基于语言的现实驾驶数据集,用一个定制的逼真2D模拟器,该模拟器具有驾驶场景的程序生成功能。用RL智体,其通过驾驶场景的目标级真值表示来解决模拟场景。该方法用基于注意的神经网络架构将环境的矢量表示映射到车辆动力学的动作。该模型用近策略优化(PPO)进行优化[40]。随后,在随机生成的交通条件下,从15个不同的虚拟环境中收集了连续的驾驶数据。此集合包括一个用于预训练的100k大小数据集,一个用于QA标注和微调的10k大小集,以及一个专门用于评估的1k大小集。

如图是LLM驾驶体系结构概述,演示如何使用来自驾驶模拟器的目标级矢量输入通过LLM预测动作。

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

在该框架中,目标是用结构化语言生成器将矢量表示转换为语言,以便于将矢量表示固定到LLM中。由于目标级矢量包含语义上重要的属性,如汽车和行人的数量、各自的位置、方向、速度、边界框和其他属性,故此使用结构化语言生成器(lanGen)函数来制作从矢量空间派生的伪语言标签,如下所示:

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

在该函数中,变量vcar、vped、vego和vroute分别表示与汽车、行人、自我车辆和路线相对应的矢量信息。可选术语orl对应于RL智体的输出,包括用于引导动作推理过程额外的注意和动作标签。注意标签是从类似于[41]的RL策略注意层中收集的。

该lanGen函数能够将矢量表示转换为人类可读的语言标题。它对当前驾驶场景进行了全面的叙述,包括智体的观察、当前状态及其规划行动。这种全面的上下文基础使LLM能够以人类可解释和理解的方式进行推理和构建适当的反应。

orl是否包含是可选的,要生成两个不同版本的伪标签来满足不同的要求:1)无注意/动作:在表征预训练阶段使用,其中不需要推断注意和动作。2) 注意/动作:在微调阶段用GPT进行VQA标记。这使GPT能够提出有关注意和动作的具体问题,使驾驶LLM智体能够推理注意和动作。

大量的数据是实现语言模型问答能力的关键。当LLM引入一种新的模态时,这一点变得尤为重要;在这种情况下,有一个与模态输入相关的高质量问答数据集是至关重要的。研究表明,用ChatGPT标注的数据在文本标注任务的性能方面超过了众包工作者[42]。受Self Instruction[43]和LLaVA[44]等研究的启发,用GPT生成驾驶QA数据集。该数据集以结构化语言输入为条件,作为矢量的代表。

具体来说,要求GPT模仿认证专业驾驶教练的角色,为学生提供问题和答案。要提供基本的驾驶规则作为预提示,涵盖交通信号灯变换和驾驶侧等方面,因为在在一个左撇子驾驶的国家。考虑到lanGen生成的语言描述提供当前驾驶场景,所以让GPT为每个场景创建16组随机问答。还包含了一些引导去生成与动作相关的问题说明,因此可以使用正则表达式轻松解析这些问题,评估动作预测任务。

为了减少幻觉,制定了简单的护栏(guardrail)规则。指示GPT包含一个无法从观察输入中推断的驾驶相关问题。如果面临这样的问题,模型的回答应该类似于“我无法根据我的观测结果回答这个问题”,防止模型在提供的矢量观测中想象不存在的目标,参考开源代码:https://github.com/wayveai/Driving-with-LLMs。

此外,还包括了一个与驾驶无关的随机问题,指示模型回答“作为一名人工智能驾驶员,你问的问题超出了我的范围,但我可以尝试回答。”然后模型会正常回答问题,从而保持语言模型作为通用助手的通用性。

训练LLM驾驶员包括在语言模型的背景下将其表述为驾驶问答(DQA)问题。该公式的关键是将目标级向量模态与预训练的LLM相结合,创建一个能够解释语言和向量输入并与之交互的多模态系统。

用两阶段过程来训练模型,将目标级向量模态有效地融合到LLM驱动程序中。第一阶段,将向量表示固定为可以由LLM解码的嵌入。这是通过冻结语言模型并优化矢量编码器和矢量transformer的权重来实现的。第二阶段,根据DQA任务对模型进行微调,训练其回答与驾驶相关的问题,并根据其当前对环境的理解采取适当的行动。

如图所示,该驾驶模型建立在三个关键组件上:矢量编码器、Vector Former和带有一个低秩自适应(LoRA)[10]模块的冻结LLM(取LLaMA-7b)。

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

由于需要大量的数据和计算资源,将一种新模态集成到预训练的大型语言模型(LLM)中带来了重大挑战。这项工作提出了一种方法,用结构化语言将矢量空间与语言嵌入连接起来,特别关注数字token。

在预训练阶段,用冻结的语言模型,同时端到端地训练整个框架,优化矢量编码器和矢量transformer(V-former)的权重。这样的优化过程能够将矢量表示有效地嵌入到可以由LLM直接解码的嵌入中。需要注意的是,在这个预训练阶段,只使用感知结构化的语言标签,而避免训练涉及推理的任务,例如动作预测(车辆的控制命令)和智体的注意预测(专家在哪里关注空间注意)。这是因为现阶段的重点仅在于表征训练,其目标是避免过早地将任何推理组件集成到V-former中。

预训练过程用模拟器中收集的100k个问答对进行。此外,在每个epoch中,采样具有均匀分布随机值的200k个矢量,全面探索矢量空间及其相关语义,增强鲁棒表征的学习。采用lanGen方法,自动标注伪矢量字幕数据。在预训练阶段,优化矢量编码器和V-former权重,惩罚矢量字幕结果中的误差,将矢量空间转换为LLM可理解的语言嵌入。

通过这种方法,能够有效地将目标级向量模态合并到预训练的LLM中,这为微调阶段提供了一个良好的起点。

在预训练阶段之后,将可训练的LoRA模块引入LLM,并在收集的驾驶QA数据上以端到端的方式优化权重Vector Encoder、Vector Former和LoRA模块。

为了训练LLM驾驶员输出准确的驾驶动作,在VQA数据集中添加了某些动作触发问题。当被问及这些问题时,这些问题要求智体生成特定格式的操作。例如,像“在这种情况下,你将如何驾驶以及为什么?”这样的问题需要智体根据矢量输入推断动作。然后,用一种简单的语言-动作的落地策略和正则表达式匹配,提取在模拟器中控制汽车所需的动作。为了确保模型对这些重要问题给予足够的关注,用不同的表达方式对动作触发问题进行上采样,例如:

“在这种情况下,打算如何驾驶?”
“正在采取什么行动?”
“在这种情况下怎么开车?”
“针对这种情况,计划采取什么行动?”

在10000个场景中完善了预存在的模型,每个场景包含16个驾驶QA实体,以及额外的矢量字幕数据和动作预测QA对。结果是,在给定当前驾驶场景的目标级向量的情况下,驾驶LLM智体能够对其行为和任何与驾驶相关的问题进行推理。

附录:作者给出一个行为克隆的Perceiver-BC框架做比较如下。

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

;