24年6月来自UMass Amherst,、MIT CSAIL和MIT LIDS的论文“Text-to-Drive: Diverse Driving Behavior Synthesis via Large Language Models”。
通过模拟生成各种场景对于训练和评估安全-关键系统(例如自动驾驶汽车)至关重要。然而,对其他车辆的轨迹进行建模以模拟各种有意义的密切互动仍然成本高昂。采用语言描述来生成驾驶行为,是一种很有前途的策略,为人类操作员提供了一种可扩展且直观的方法来模拟各种驾驶互动。然而,大规模注释语言-轨迹数据的稀缺使得这种方法具有挑战性。为了解决这一差距,Text-to-Drive (T2D),通过大语言模型 (LLM) 合成各种驾驶行为。其引入一种分两个阶段运行的知识驱动方法。在第一阶段,用 LLM 的嵌入式知识为场景生成驾驶行为的各种语言描述。然后,用 LLM 的推理能力在模拟中合成这些行为。T2D 的核心是使用 LLM 构建状态图,将低级状态映射到高级抽象。该策略有助于完成下游任务,例如总结低层观测、评估策略与行为描述的一致性以及塑造辅助奖励,所有这些都无需人工监督。
如图所示:给定一个场景描述,T2D 利用大语言模型生成驾驶行为的多样化描述,然后在模拟中合成它们。
当前的模拟器在控制周围车辆的行为和扩展这些互动方面面临着重大挑战。在模拟中添加不同的驾驶行为可以促进对不同驾驶行为概况进行全面测试。这解决了数据驱动模拟器使用的驾驶数据集中固有的偏见,这些数据集往往范围有限,并且来自狭窄的地理区域。
克服这些限制的一个有希望的方向是将基础模型的功能扩展到模拟器中。知识驱动的方法利用大语言模型 (LLM) 的嵌入式知识来策划全面而多样的驾驶场景,从而无需对潜在的交互进行详尽的手动脚本编写。此外,利用自然语言来控制这些场景的生成,提供了一种直观的方法来指定所需的行为轨迹。该技术允许基于语言描述生成驾驶场景,使人类操作员更容易策划有意义的测试用例。该策略的一个显著应用是将文本数据(例如事故报告)连接到现实世界中的地面模拟。本文工作采用这种知识驱动的方法,利用丰富的知识源来生成多样化的驾驶场景。这种方法可以补充仅依赖于人类驾驶数据的数据驱动模拟器。
如图所示T2D概述。左图:首先,LLM 生成驾驶行为的各种描述,这些描述可以通过自然语言界面融入人类偏好。中间图:接下来,LLM 根据驾驶行为描述生成低级状态翻译器 (LLST)、主函数和辅助函数。LLST 将低级状态转换为抽象状态(参见中间下方块中的示例),然后记录其状态访问历史记录(参见右下方块中的示例)。主函数仅在车辆表现出目标行为时才给予奖励,使用有限状态机对行为出现进行形式验证(参见左下方块中的示例)。辅助函数为达到中间状态提供奖励,并且可以迭代更新。右图:最后,采用标准多智体 RL 框架,以主函数和辅助函数为指导,训练驾驶策略。
生成行为描述
在知识驱动方法中,用 GPT-4 的零样本生成功能,从场景的简明描述中生成各种驾驶行为的描述 L ∼ πL (.|scene)。对于每种场景类型(交叉路口、合并路口、高速公路),生成 50 种驾驶行为描述。然后,为每个场景选择一个较小的、具有代表性的六种行为子集进行模拟,以提供对所有生成行为的详细分析。
从环境检索
通过检索增强生成 (RAG) 增强代码生成模型 πC,以提供有关模拟环境充分的上下文。这涉及使用抽象语法树 (AST) 对源代码进行分段,使用文本嵌入模型 (text-embedding-ada-002) 嵌入代码,并将嵌入存储在数据库中。为了保留代码段之间的依赖关系,用 ctags 生成存储库映射。这里用 LangChain 来实现 RAG 框架。
在检索过程中,用行为描述 L 来查询嵌入数据库并检索相关代码段。用此代码和存储库映射作为 π 的上下文。使源代码可访问,用有关低级状态的 API 丰富代码生成模型。例如,在处理行为“加速合并入口匝道”时,模型可以利用属性 car.speed 并访问函数 car.on ramp()。此检索可确保在代码空间中可以获取驾驶策略的低级观察结果。
底层状态翻译器
给定行为描述 L,代码生成模型 πC 生成一个低级状态翻译器 M ∼ πC (.|L)。状态翻译器 M 有三个主要职责:(1)分解行为,(2)将低级状态映射到抽象状态,(3)记录抽象状态访问。首先,M 将行为分解为抽象状态 Q。每个抽象状态 q ∈ Q 捕获驾驶行为的一个基本方面。例如,在“在入口匝道上晚点合并”的情况下,q 可以是“在入口匝道上”、“合并”和“在入口匝道末端附近”中的任何一个。这种分解有四个优点:首先,它将行为离散化为关键阶段以捕捉行为的不同方面;其次,它将 Q 限制为与目标行为相关;第三,通过合并初始的益处,它提供清晰、客观的指导,使 M 的生成更加一致和可靠;最后,它允许状态名称位于语言域中。
此外,M 由 LLM 构建为状态图。将 M 定义为多元组 M = (Q,T,E,U,G),其中 T 是由事件 E 触发的转换集,以 G 的一个保护(guard)为条件,并导致来自 U 的更新操作。E 的事件表示驾驶环境内的低层变化,例如速度、位置和航向。G 的保护是布尔函数,在低级状态下在某些条件下返回 true。用 LLM 的代码生成功能来实现保护的条件和抽象状态名称之间的语义对齐。此步骤利用代码生成模型 πC 和 RAG 框架。具体来说,用 gpt-4-1106-preview 变型 [26] 并将温度设置为 0.2。由于任务的客观性,此决定旨在获得更确定的输出。
翻译器从 U 执行的更新操作,会导致状态历史字典 HQ 更新,该字典保留所有抽象状态访问的历史记录。在每个时间步长上,它都会附加一个布尔值,指示是否已访问过某个状态。在 T 个时间步长内,状态历史字典 HQ 可以表示为 H : Q → {true, false} 。然后 HQ(q) = Hq 是与 q 相关的访问历史。这既可以识别当前状态占用情况,也可以跟踪状态访问和转换。这些特性非常有效地总结驱动策略的低层观测,提供回代码和语言空间。
主要奖励函数
LLM 生成的主要函数 RP,它将 HQ 作为输入并返回奖励 RP : HQ → {0,5}。此函数有两个目的:首先,它评估驾驶策略 πP 与目标行为 L 的行为一致性;其次,当车辆表现出目标行为时,它会给予大额奖励。为了生成 RP ∼ πC (.|(Q, L)),将抽象状态名称 Q 和行为描述 L 组合作为 πC 的输入。LLM 将 RP 构建为对目标行为 L 进行建模的有限状态机 (FSM)。该 FSM 可以描述为一个多元组,RP = (Q, Σ, δ, q0, F );其中 Σ = {q|q∈Q} 是输入字母表,δ: Q×Σ → Q 是转换函数,q0 是初始状态,F 是接受状态,表示已实现目标行为。
RP 的抽象状态利用状态翻译器 M 中的 Q。将 M 中的每个 q ∈ Q 视为表示行为快照的代码抽象。例如,状态“入口匝道末端”是条件 0 < car.headway () < 30 和 car.on ramp() 的抽象。然后,行为转换函数 δ 在抽象状态之间添加转换,以捕捉目标行为的时间动态。这对于“晚时合并”等驾驶行为特别有用,这需要在转换到“合并”状态之前访问“入口匝道末端”。由 LLM 生成的 FSM 形式结构,提供一个框架用于验证由 H 给出的抽象行为序列。该策略将 LLM 的推理封装到一个紧凑的 FSM 中,可以在 LLM 推理后访问。这种结构化格式使离线应用程序能够利用 LLM 的推理来评估驾驶策略训练期间的行为一致性。在实现中,将环境最小速度设置为 0,这样车辆无法倒车,从而避免复杂的 RP 生成。
然后,用 FSM 在车辆达到可接受状态 F 时给予奖励。方法的一个重要细微差别是状态翻译器和主函数之间的双功能关系。状态翻译器将驾驶策略的低级观察抽象到代码域中,而 RP 在代码域中评估这些抽象并提供奖励以指导驾驶策略 π。这种互惠关系鼓励跨不同空间的行为一致性。
辅助奖励函数
尽管主要函数 RP 用于指导驾驶策略 πP ,但 RP 提供的奖励过于稀疏。为了提高探索效率,用辅助函数 Raux : S, A, HQ → [−1, 1],该函数以低层状态 S、动作 A 和抽象状态历史 HQ 作为输入并返回奖励。为辅助函数提供更多输入的目的是为低级和抽象状态提供奖励指导。辅助函数是使用代码生成模型 πC 生成的,以 RP 和 L 作为输入,Raux ∼ πC (.|(RP, L))。用相同的 RAG 框架和 LLM 模型,温度为 0.7,可以更有创意地塑造奖励。
辅助函数的目的是为达到中间状态提供更密集的奖励,同时将行为上下文注入驾驶策略。这对于以众多的转换为特征的复杂行为特别有用,其中主要奖励函数提供的指导有限。例如,“从一个完全停止状态进行合并”的行为需要车辆完成一系列操作:进入匝道、停止、再次移动,然后合并。使用辅助奖励,成功训练 18 种驾驶行为。
Raux 奖励被标准化为 [-1, 1] 范围。从经验上讲,当一个驾驶策略学习这个行为,辅助功能的影响力自然会减弱,因为主要功能的较大奖励变得更具主导性。这使得方法对不同代辅助功能更具鲁棒性。
辅助函数迭代器
奖励塑造的一个常见挑战是它会产生非预期的行为。为了解决这个问题,用代码生成模型 R′aux ∼ πC(.|(Raux, Hq, L)) 生成辅助函数的新迭代;其中 R′aux 是新的辅助函数,(Raux , Hq , L) 是 LLM 的输入。抽象状态历史 Hq 作为 πC 的输入,提供了低层轨迹的丰富抽象摘要。此摘要为 LLM 提供了一个轨迹展开的高级见解,使其能够相应地调整奖励激励结构。这个迭代过程引入了探索新状态的新激励和对不良行为的惩罚,从而使策略更接近期望的行为。通过将高级观测纳入迭代过程,可以主动降低与不安全的奖励塑造实践相关的风险 [16]。
学习一个驾驶决策
采用多智体实现的 Advantage Actor-Critic 算法 (MAA2C) [24] 来学习驾驶策略 πP。在这种设置下,每个智体在部分观察条件下的合作环境中使用并发训练策略独立地学习。
最后,如图所示:左图是辅助迭代器 LLM 在训练后分析策略,根据抽象状态访问的历史来决定是否以及如何调整辅助函数。右图说明 LLM 的推理过程,它读取高级行为序列,对其进行分析,然后提供低级轨迹的精确摘要。
实验结果略。