专栏名称: 计算机视觉深度学习和自动驾驶
讨论计算机视觉、深度学习和自动驾驶的技术发展和挑战
目录
相关文章推荐
央广网  ·  取消强制参赛要求!WTT最新公布→ ·  昨天  
央广网  ·  取消强制参赛要求!WTT最新公布→ ·  昨天  
九章算法  ·  《系统设计2025》开课啦~FLAG面试官给 ... ·  4 天前  
九章算法  ·  “DeepSeek ... ·  5 天前  
算法与数学之美  ·  2025有望冲院士的国奖得主(名单) ·  2 天前  
51好读  ›  专栏  ›  计算机视觉深度学习和自动驾驶

探索决策策略的紧要测试场景:一个LLM方法

计算机视觉深度学习和自动驾驶  · 公众号  ·  · 2025-01-22 00:04

正文

24年12月来自清华大学的论文“Exploring Critical Testing Scenarios for Decision-Making Policies: An LLM Approach”。

决策策略的最新进展已在自动驾驶和机器人等领域取得重大进展。然而,由于存在可能威胁其可靠性的关键场景,测试这些策略仍然至关重要。尽管研究正在进行中,但由于决策策略及其环境的复杂性,测试效率低和多样性有限等挑战仍然存在。为了应对这些挑战,本文提出一个适应性强的大语言模型 (LLM) 驱动的在线测试框架,以探索决策策略的紧要和多样化测试场景。具体来说,设计一个具有模板化提示工程的“生成-测试-反馈”流水线,以利用 LLM 的世界知识和推理能力。此外,提出一种多尺度场景生成策略来解决 LLM 在进行细粒度调整方面的局限性,进一步提高测试效率。最后,在五个广泛认可的基准上评估所提出的 LLM 驱动方法,实验结果表明,该方法在发现紧要和多样化场景方面明显优于基线方法。

如图所示:LLM驱动的在线测试框架概述



决策策略测试

1)输入修改:测试决策策略涉及为要解决的策略生成测试用例,主要目标是识别导致失败的案例。最直接的方法是直接修改决策策略的输入。各种测试方法 [20]–[25] 侧重于设计用于查找特殊测试输入的算法,以评估基于 DNN 的策略的安全性和鲁棒性。 DeepXplore [20] 引入神经元覆盖的概念,并通过梯度上升生成测试输入,以发现实现高神经元覆盖率并在各种 DNN 中引发不同行为的测试用例。然而,它仅限于白盒设置,这限制它的应用范围。 DLFuzz [21] 采用模糊测试框架,通过优化专门设计的目标函数来改变输入,旨在达到更高的神经元覆盖率并暴露更多异常行为。 STARLA [23] 引入一种数据盒测试方法,并使用遗传算法修改强化学习 (RL) 智体的episodes,旨在检测更多故障。在自动驾驶任务中, DeepTest [24] 使用神经元覆盖率作为指导指标来修改决策策略的输入图像,从而生成新的测试用例。此外, DeepRoad [25] 利用在大型数据对上训练的生成对抗网络 (GAN),使 GAN 能够直接学习和生成转换后的图像。

2)场景生成:在某些受限环境中,神经网络随意生成的输入可能与真实场景不符,使得此类输入实际上无关紧要。此外,由于内部策略通常高度封装,许多方法 [26]–[37] 通过场景生成来测试决策策略。例如,[28]–[31] 采用基于 RL 和蒙特卡洛树搜索的方法对自动驾驶进行自适应压力测试,从而生成具有挑战性的测试场景。为了识别独特的交通违规行为, Autofuzz [32] 使用神经网络进行种子选择和变异,并实现基于语法的模糊测试框架。同时, scenoRITA [33] 引入进化算法来搜索关键场景。为了测试竞技游戏智体, AdvTest [34] 设计并添加约束来指导对抗智体训练,目的是揭示更多不同的故障场景。然而,这些方法的参数设置和训练需要额外的测试成本。与此同时,基于大量训练数据的数据驱动场景生成方法不断被提出。[35][36] 通过分析整个场景数据和对安全紧要场景进行采样来构建新场景数据集,而 NeuralNDE [37] 利用基于 Transformer 的模型从真实数据中学习,并高效地生成分布与真实分布非常相似的合成数据。

然而,上述方法要么对测试策略要求很高,例如需要白盒访问或大型数据集,要么针对特定任务进行量身定制。因此,迫切需要一个通用的决策策略测试框架。 MDPFuzz [38] 提出一个用于解决 MDP 模型的通用模糊测试框架。在 MDPFuzz 的基础上, SeqDivFuzz [39] 基于序列多样性推理,通过提前终止非多样性序列来提高测试效率。 GMT [40] 训练生成扩散模型,为决策策略生成多样化、触发故障的测试用例,并在测试过程中不断微调生成模型。对于多智体系统, MASTest [41] 计算状态的临界性(同时考虑开发和探索)并在临界状态下扰动动作。然而,这些方法追求通用性是有代价的:它们没有考虑到被测环境的具体特征,这限制了测试过程的效率。

用 LLM 进行测试

由于 LLM 已应用于各个领域,[42]–[46] 正在寻求利用 LLM 的功能来生成测试用例,以测试特定的算法或软件。例如, LIBRO [44] 建议使用 LLM 通过查询模型来重现给定的错误,以生成与错误报告一致的测试方法。 TitanFuzz [45] 将模糊测试应用于深度学习库,使用 LLM 的代码生成和完成功能来变异种子。结果,它成功地识别了 TensorFlow/PyTorch 中以前未知的错误。 InputBlaster [46] 首先利用 LLM 生成有效文本,然后应用变异规则生成触发应用程序崩溃的异常输入。

同样,LLM 已广泛应用于自动驾驶等领域的场景生成。 ChatScene [47] 使用 LLM 生成安全紧要场景的描述,并从预先构建的数据库中检索相应的 Scenic 代码片段,尽管 Scenic 代码的设计和获取仍然相对具有挑战性,限制其适用性和对其他任务的泛化。 ChatSim [48] 让多个 LLM 智体协作理解用户命令并生成相应的照片级逼真场景视频,但它的设计目的是根据用户请求生成视频,而不是生成关键场景。 SeGPT [49] 利用真实场景,允许 LLM 修改它们并生成用于轨迹预测测试的合成数据集,主要侧重于修改车辆轨迹,以适应用于评估和训练轨迹预测算法的数据集。 LLMScenario [50] 从数据库中提取自然的风险轨迹,并指导 LLM 生成不同具有挑战性的轨迹,包括自车的轨迹,但它不是一个专门的测试框架,因为它没有解决目标策略黑盒性质所带来的挑战。 OmniTester [51] 更进一步,采用多模态 LLM 来生成道路网络和车辆配置,了解用户测试需求,并在精心设计的框架内生成可控、逼真且具有挑战性的场景。它通过使用 SUMO 等工具构建道路布局和定位车辆来生成测试场景,这对场景格式和环境施加严格的约束。上述方法在场景生成过程中缺乏有效的在线优化框架,限制它们识别策略缺陷的能力——尤其是在预测智体行为比自动驾驶汽车应用更复杂的任务中。因此,这些方法生成的场景可能并不总是足够具有挑战性。

总而言之,这些方法主要针对特定领域,特别是自动驾驶和软件测试,并不解决通用场景。这种限制导致缺乏对更通用系统的测试能力。


本文提出一种通用的 LLM 驱动在线测试方法,通过探索紧要场景来有效地测试决策策略。

测试框架

如图显示LLM 驱动的测试框架的总体流程。整个框架可以分为四个模块:场景数据库、场景生成器、场景测试和场景评估。每个模块都具有灵活性,可以适应不同的策略和环境。


1)场景数据库:该框架的过程始于建立场景数据库,该数据库存储代表每个场景的关键参数(例如初始状态)以及相关的测试信息。数据库中的每个场景都是场景生成器进一步修改的种子。在测试过程中,不断选择种子场景并提供给生成器以创建新场景,而随附的测试信息有助于增强生成器的功能。这样,可以通过各种指导技术来改进场景数据库的生成和维护,以满足不同的测试目标。例如,可以更新数据库以仅包含紧要性更高、多样性更大的场景。此更新过程由测试策略的性能驱动,确保种子场景为策略提供动态和相关的信息。

在不失一般性的情况下,场景数据库可以通过在参数化环境中的元素后随机抽样来构建,也可以通过从预先存在的数据集中抽样来构建。例如,在自动驾驶中,可以通过随机抽样车辆的位置和偏航来初始化测试场景,或者通过从 KITTI [52] 等数据集中提取数据来初始化测试场景。

2)场景生成器:场景生成器在收到从数据库采样的种子场景后,根据种子生成新的测试场景。同时,它结合来自场景评估模块的测试反馈来改进生成过程。该模块的核心组件是 基于LLM的场景生成器 。基于LLM的生成器使用标准化模板将种子场景、测试反馈和专家知识转化为提示,从而指导LLM生成新的、更具挑战性的场景。本文场景生成器还能够通过随机变异来创建场景。具体而言,实施多尺度生成策略,结合了基于LLM生成器和随机变异的优点,提高探索紧要测试场景的效率。

3)场景测试:场景生成器生成的新场景将用于配置环境并对目标策略进行测试。随后,将评估被测策略的实际性能并将其用于在线测试。

4)场景评估:场景评估模块从紧要性和多样性两个主要维度评估种子场景和新生成的场景。这些评估指导三个关键过程:选择种子场景、更新场景数据库和生成新场景。紧要性和多样性的测量利用与被测试策略性能相一致的特定指标。根据评估结果,该模块确定每个场景的重要性,并决定是否应对其进行采样或包含在数据库中。此外,这些测试数据可以反馈给场景生成器以支持在线测试。

评估模块可以根据目标环境灵活设计,只要评估分数与场景的重要性相关即可。在这里,推荐 MDPFuzz [38] 中提出的评估方法。在选择种子场景时,通过随机变异种子场景的初始状态将敏感度计算为采样权重,计算公式为:ρ = |r/seed − r/δ|/||∆||^2,其中 r/seed 和 r/δ 分别是决策策略在种子场景和变异场景下获得的累积奖励。∆ 表示随机排列。敏感度较高的种子场景更有可能对小扰动做出显著变化,从而增加从中生成新场景时失败的可能性。在更新数据库时,使用 MDPFuzz 中定义的新鲜度和累积奖励来确定是否应添加新场景。此外,场景生成将采用专门的在线测试评估机制。

基于 LLM 的场景生成器

基于 LLM 的场景生成器使用特定于环境的提示进行操作,并整合专家知识以及来自先前测试的反馈。它修改种子场景以创建更有可能导致失败的新场景。该过程概述如下:s/new =G/env(s/seed, F, E),其中 G/env 表示基于 LLM 的场景生成器适应特定环境。特定于环境的提示,有助于 LLM 理解其任务和目标环境,从而指导新场景的生成。在测试过程中,种子场景 s/seed、专家经验 E 和历史测试反馈 F 会自动融入到提示中。s/seed 是场景生成的参考,而 E 则利用人类的专业知识增强 LLM 的推理能力。历史反馈 F 至关重要,因为它使LLM能够通过在线优化生成场景,从而识别出与被测策略更相关的关键场景。

为了最大限度地减少提示工程所需的工作量,分析决策任务的特点,并提出一种能够高效提示 LLM 的工作流程,如图所示。为了有效的在线测试,提示必须包括特定环境的背景知识、测试过程中可用的数据以及LLM需要遵循的响应格式。此外,提炼并确定提示中要包含的几个关键元素,将它们分为四个方面的 tokens:指令、场景信息、输入消息和场景生成。


1)指令:为了帮助LLM快速专注于特定任务,通常的做法是在提示开始时为LLM分配一个角色并明确定义其任务。因此,指令tokens由两个关键元素组成:角色分配和任务介绍。这些tokens使 LLM 能够清楚地了解其角色和任务,从而使其能够在整个问答过程中生成更有针对性的响应。

2)场景信息:应向 LLM 提供详细的场景信息,以帮助其更好地理解目标环境的关键方面。在测试一般决策策略时,场景信息包括以下组成部分:概述、实体信息、状态描述和约束。i)概述提供目标环境的简明准确描述,概述智体的任务、崩溃或故障的定义以及其他基本细节。ii)实体信息涵盖环境内实体的共同特征(例如数量、类型、物理属性和交互)。这些实体不仅包括目标策略控制的智体,还包括可能与智体交互的任何元素,例如障碍物。 iii)状态描述解释后续输入消息中提供的场景参数含义。iv)约束列出场景生成过程中必须遵循的原则。这些约束tokens有助于标准化LLM的输出,确保新生成的场景有效且可解。场景信息tokens提供有关目标环境的一般详细信息,这些信息在整个测试过程中保持不变。因此,测试人员只需设计一次场景信息。

3)输入消息:输入消息 tokens 包含随场景变化而变化的可用数据,对应于s/seed,F 和 E。这些 tokens 作为种子场景,测试反馈和专家经验的输入接口。

4)场景生成:基于背景信息和可用数据,LLM的任务是彻底理解场景并最终生成满足测试要求的场景。为实现这一点,场景生成的提示可以指导 LLM 完成以下工作流程:i)场景分析:描述和分析给定种子场景的初始状态,包括智体的状态和实体之间的关系;ii)演化预测:预测场景的未来演变,如实体之间的轨迹和相互作用;iii)挑战分析:确定如何使决策任务失败并提供相应的想法;iv)规划生成:生成修改种子场景的规划;v)规划执行:正确执行规划并以与输入相同的格式输出新场景。

通过整合上图中概述的关键元素,可以高效地设计提示,而不会引入过多的工作量。可以组合各种提示技术和样式来创建提示,下图展示本文使用的提示模板。


首先为 LLM 分配“测试场景生成器”的角色,并指定其任务是以某种方式改变给定场景的状态,使目标策略失败。接下来,介绍有关环境的基本信息、初始状态的含义以及控制场景生成的约束。对于输入消息,种子场景的初始状态被转换为场景信息中描述的格式。







请到「今天看啥」查看全文