首页 > 其他分享 >快速入门:自动驾驶感知工程师的规划与决策核心技巧

快速入门:自动驾驶感知工程师的规划与决策核心技巧

时间:2024-07-15 21:01:31浏览次数:17  
标签:入门 工程师 优化 策略 决策 驾驶 感知 规划 MCTS

亚马逊云AWS 大模型训练自动驾驶技术

欢迎来到雲闪世界亚马逊AWS雲服务器。经典的模块化自动驾驶系统通常由感知、预测、规划和控制组成。直到 2023 年左右,AI(人工智能)或 ML(机器学习)主要在大多数量产自动驾驶系统中增强感知,其影响力在下游组件中逐渐减弱。与规划堆栈中 AI 的低集成度形成鲜明对比的是,端到端感知系统(例如 BEV或鸟瞰感知管道)已部署在量产车辆中。

2023年之前的自动驾驶堆栈经典设计

原因有很多。与机器学习驱动的功能(可能需要几天或几周)相比,基于人工框架的传统堆栈更易于解释,并且可以更快地迭代以修复现场测试问题(数小时内)。但是,让随时可用的人类驾驶数据闲置是没有意义的。此外,增加计算能力比扩大工程团队更具可扩展性。

幸运的是,学术界和工业界都有强烈的趋势来改变这种情况。首先,下游模块越来越多地由数据驱动,并且也可以通过不同的接口集成,例如CVPR 2023 的最佳论文 UniAD中提出的接口。此外,在不断增长的生成式人工智能浪潮的推动下,单一统一的视觉-语言-动作 (VLA) 模型显示出处理复杂机器人任务(学术界的RT-2,工业界的 TeslaBot 和 1X)和自动驾驶(学术界的GAIA-1DriveVLM和工业界的 Wayve AI 驱动程序、Tesla FSD)的巨大潜力。这将人工智能和数据驱动开发的工具集从感知堆栈带到了规划堆栈。

这篇博文旨在以速成课程的形式介绍规划堆栈的问题设置、现有方法和挑战,供感知工程师参考。作为一名感知工程师,我终于在过去几周有时间系统地学习经典规划堆栈,我想分享我学到的东西。我还将从 AI 从业者的角度分享我对 AI 如何提供帮助的看法。

本篇文章的目标读者是自动驾驶领域的人工智能从业者,特别是感知工程师。

文章有点长(11100 字),下面的目录很可能会帮助那些想要使用关键字进行快速 ctrl+F 搜索的人。

目录 (ToC) 为什么要学习规划?


什么是规划?

问题表述   规划词汇表  行为规划  弗雷内特系统与笛卡尔系统

经典工具——规划三驾马车

搜索 采样 优化 规划的行业实践 路径速度解耦规划 联合时空规划

决策是

什么以及为什么? MDP 和 POMDP 价值迭代和策略迭代 AlphaGo 和 MCTS——当网络遇到树 自动驾驶中的 MPDM(和后继者)

决策的行业实践 树 没有树

自我反思   

为什么在规划中使用 NN? 那么 e2e NN 规划器呢? 我们可以不用预测吗? 我们可以只用网络而不用树吗? 我们可以使用 LLM 进行决策吗?

进化趋势


为什么要学习规划

这就给我们带来了一个有趣的问题:在人工智能时代,为什么要学习规划,特别是经典的堆栈?

从解决问题的角度来看,更好地了解客户的挑战将使您作为感知工程师能够更有效地为下游客户提供服务,即使您的主要重点仍然放在感知工作上。

机器学习是一种工具,而不是解决方案。解决问题的最有效方法是将新工具与领域知识相结合,尤其是那些具有坚实数学公式的工具。受领域知识启发的学习方法可能更具有数据效率。随着规划从基于规则的系统过渡到基于机器学习的系统,即使早期的原型和端到端系统产品已经面世,仍然需要能够深入了解规划和机器学习基础知识的工程师。尽管发生了这些变化,但经典方法和学习方法可能会在相当长的一段时间内继续共存,也许会从 8:2 转变为 2:8 的比例。对于在这个领域工作的工程师来说,了解这两个世界几乎是必不可少的。

从价值驱动开发的角度来看,了解传统方法的局限性至关重要。这种洞察力使您能够有效地利用新的 ML 工具来设计一个解决当前问题并产生直接影响的系统。

此外,规划是所有自动驾驶代理的关键部分,而不仅仅是自动驾驶。了解规划是什么以及它如何工作将使更多的机器学习人才能够研究这个令人兴奋的主题,并为真正自主的代理的开发做出贡献,无论是汽车还是其他形式的自动化。

什么是规划

问题表述

作为自动驾驶汽车的“大脑”,规划系统对于车辆的安全高效行驶至关重要。规划器的目标是生成安全、舒适、高效的轨迹,以达到目标。换句话说,安全性、舒适性和效率是规划的三个关键目标。

作为规划系统的输入,所有感知输出都是必需的,包括静态道路结构、动态道路代理、占用网络产生的自由空间以及交通等待条件。规划系统还必须通过监测加速度和抖动来确保车辆舒适度,以实现平稳轨迹,同时考虑交互和交通礼仪。

规划系统以一系列航点的形式生成轨迹,供自主车辆的低级控制器跟踪。具体来说,这些航点代表自主车辆在一系列固定时间戳的未来位置。例如,每个点可能相隔 0.4 秒,覆盖 8 秒的规划范围,总共有 20 个航点。

经典的规划堆栈大致包括全局路线规划、局部行为规划和局部轨迹规划。全局路线规划在全球地图上提供从起点到终点的道路级路径。局部行为规划决定接下来几秒钟的语义驾驶行为类型(例如跟车、轻推、侧行、让行和超车)。根据行为规划模块确定的行为类型,局部轨迹规划生成短期轨迹。全局路线规划通常在设置导航后由地图服务提供,这超出了本文的讨论范围。从现在开始,我们将重点关注行为规划和轨迹规划。

行为规划和轨迹生成可以明确地协同工作,也可以组合成一个过程。在显式方法中,行为规划和轨迹生成是在分层框架内运行的不同过程,工作频率不同,行为规划为 1-5 Hz,轨迹规划为 10-20 Hz。尽管在大多数情况下效率很高,但适应不同的场景可能需要进行重大修改和微调。更先进的规划系统将两者组合成一个优化问题。这种方法确保了可行性和最优性,没有任何妥协。

规划设计方法分类(aws雲服务器、GCP谷歌云服务协助完成)

规划术语

您可能已经注意到,上一节中使用的术语与图片并不完全一致。没有每个人都使用的标准术语。无论是在学术界还是在工业界,工程师使用不同的名称来指代同一概念,使用相同的名称来指代不同的概念的情况并不少见。这表明自动驾驶中的规划仍处于积极发展阶段,尚未完全融合。

在这里,我列出了这篇文章中使用的符号并简要解释了文献中出现的其他概念。

  • 规划:与控制并行的顶级概念,用于生成轨迹航点。规划和控制统称为 PnC(规划和控制)。

  • 控制:一个顶级概念,它接收轨迹航点并生成高频转向、油门和制动命令以供执行器执行。与其他领域相比,控制相对成熟,超出了本文的讨论范围,尽管 PnC 的概念很常见。

  • 预测:一个顶级概念,用于预测除自车以外的交通代理的未来轨迹。预测可以被视为其他代理的轻量级规划器,也称为运动预测。

  • 行为规划:产生高级语义动作(例如变道、超车)并通常生成粗略轨迹的模块。它也被称为任务规划或决策,特别是在交互环境中。

  • 运动规划:一个模块,它采用语义动作并在规划范围的持续时间内产生平滑、可行的轨迹航点,以便控制执行。它也被称为轨迹规划。

  • 轨迹规划:运动规划的另一个术语。

  • 决策:以交互为重点的行为规划。如果没有自我代理交互,则简称为行为规划。它也被称为战术决策。

  • 路线规划:寻找道路网络中的首选路线,也称为任务规划。

  • 基于模型的方法:在规划中,这指的是传统规划堆栈中使用的手工制作的框架,而不是神经网络模型。基于模型的方法与基于学习的方法形成对比。

  • 多模态性:在规划的背景下,这通常指多个意图。这与感知的多模态传感器输入或多模态大型语言模型(如 VLM 或 VLA)背景下的多模态性形成对比。

  • 参考线:基于全局路线信息和本车辆的当前状态的局部(几百米)粗略路径。

  • Frenet 坐标:基于参考线的坐标系。Frenet 将笛卡尔坐标中的曲线路径简化为直线隧道模型。有关更详细的介绍,请参阅下文。

  • 轨迹:三维时空曲线,在笛卡尔坐标中为 (x, y, t),在弗雷内特坐标中为 (s, l, t)。轨迹由路径和速度组成。

  • 路径:二维空间曲线,在笛卡尔坐标中为(x,y),在弗雷内坐标中为(s,l)。

  • 语义动作:具有明确人类意图的动作(例如跟车、轻推、侧行、让行、超车)的高级抽象。也称为意图、策略、操作或原始动作。

  • 动作:没有固定含义的术语。它可以指控制的输出(执行器执行的高频转向、油门和刹车命令),也可以指规划的输出(轨迹航点)。语义动作是指行为预测的输出。

不同的文献可能使用不同的符号和概念。以下是一些示例:

这些变化说明了术语的多样性和该领域的不断发展的性质。

行为规划

作为一名机器学习工程师,你可能会注意到行为规划模块是一个大量手工制作的中间模块。其输出的具体形式和内容尚无共识。具体来说,行为规划的输出可以是自我操作的参考路径或对象标签(例如从左侧或右侧通过,通过或让行)。“语义动作”一词没有严格的定义,也没有固定的方法。

行为规划和运动规划的分离提高了解决自动驾驶汽车极高维动作空间的效率。自动驾驶汽车的动作通常需要以 10 Hz 或更高的频率进行推理(以航路点为时间分辨率),并且大多数这些动作都相对简单,例如直行。分离后,行为规划层只需要以相对粗略的分辨率推理未来场景,而运动规划层则根据行为规划做出的决策在局部解空间中运行。行为规划的另一个好处是将非凸优化转化为凸优化,我们将在下文进一步讨论。

弗雷奈特系统与笛卡尔系统

Frenet 坐标系是一种广泛采用的系统,值得专门介绍一下。Frenet 框架通过独立管理相对于参考路径的横向和纵向运动来简化轨迹规划。sss 坐标表示纵向位移(沿道路的距离),而 lll(或 ddd)坐标表示横向位移(相对于参考路径的侧面位置)。

Frenet 将笛卡尔坐标系中的弯曲路径简化为直线隧道模型。这种转换将弯曲道路上的非线性道路边界约束转换为线性约束,大大简化了后续的优化问题。此外,人类对纵向和横向运动的感知不同,Frenet 框架允许对这些运动进行单​​独且更灵活的优化。

笛卡尔框架到 Frenet 框架的转换示意图(来源:Cartesian Planner)

Frenet 坐标系要求道路图形整洁、结构化且曲率低。实际上,它更适用于曲率较小的结构化道路,例如高速公路或城市快速路。然而,Frenet 坐标系的问题会随着参考线曲率的增加而加剧,因此在曲率较大的结构化道路上应谨慎使用,例如带有引导线的城市交叉路口。

对于非结构化道路,例如港口、矿区、停车场或没有引导线的路口,建议使用更灵活的笛卡尔坐标系。笛卡尔系统更适合这些环境,因为它可以更有效地处理曲率较大和结构性较差的场景。

经典工具——规划三驾马车

自动驾驶中的规划涉及计算从初始高维状态(包括位置、时间、速度、加速度和加速度)到目标子空间的轨迹,确保满足所有约束。搜索、采样和优化是规划中最常用的三种工具。

搜索

经典的图搜索方法在规划中很流行,用于结构化道路上的路线/任务规划或直接用于运动规划,以在非结构化环境中(例如停车场或城市交叉路口,尤其是无地图场景)找到最佳路径。从 Dijkstra 算法到 A*(A-star),再到混合 A*,有一条清晰的演进路径。

Dijkstra 算法会探索所有可能的路径以找到最短的路径,因此它是一种盲目(无信息)搜索算法。这是一种保证最佳路径的系统方法,但部署起来效率低下。如下图所示,它几乎探索了所有方向。本质上,Dijkstra 算法是一种按移动成本加权的广度优先搜索 (BFS)。为了提高效率,我们可以使用有关目标位置的信息来缩小搜索空间。

Dijkstra 算法和 A-star 搜索的可视化(来源:PathFinding.js ,受RedBlobGames启发的示例)

A* 算法使用启发式算法优先考虑那些似乎更接近目标的路径,从而使其更加高效。它将目前的成本(Dijkstra)与要走的成本(启发式算法,本质上是贪婪的最佳优先)相结合。只有当启发式算法可行且一致时,A* 才能保证最短路径。如果启发式算法很差,A* 的表现可能比 Dijkstra 基线更差,并且可能退化为贪婪的最佳优先搜索。

在自动驾驶的具体应用中,混合 A* 算法通过考虑车辆运动学进一步改进了 A*。A* 可能不满足运动学约束,无法准确跟踪(例如,转向角度通常在 40 度以内)。虽然 A* 在网格空间中针对状态和动作进行操作,但混合 A* 将它们分开,将状态保持在网格中,但允许根据运动学进行连续动作。

分析扩展(射门)是混合 A* 提出的另一项关键创新。A* 的自然增强是使用非碰撞直线将最近探索的节点连接到目标。如果这是可能的,我们就找到了解决方案。在混合 A* 中,这条直线被符合车辆运动学的 Dubins 和 Reeds-Shepp (RS) 曲线取代。这种早期停止方法通过更多地关注更远侧的可行性,在最优性和可行性之间取得了平衡。

混合 A* 在停车场景和无地图城市交叉路口中被广泛使用。这里有一个非常精彩的视频,展示了它在停车场景中的工作原理。

具有解析扩展的混合 A-star 算法(来源:2010 年 IJRR 混合 A-star 论文和2012 年 Udacity 课程)

采样

另一种流行的规划方法是抽样。众所周知的蒙特卡罗方法是一种随机抽样方法。本质上,抽样涉及随机或根据先验选择许多候选方案,然后根据定义的成本选择最佳方案。对于基于抽样的方法,快速评估许多选项至关重要,因为它直接影响自动驾驶系统的实时性能。

大型语言模型 (LLM) 本质上提供样本,并且需要有一个具有定义成本且符合人类偏好的评估器。此评估过程可确保所选输出符合所需的标准和质量标准。此过程基本上就是所谓的对齐。

如果我们已经知道给定问题或子问题的解析解,则可以在参数化解空间中进行采样。例如,通常我们希望最小化急动度平方的时间积分(位置 p(t) 的三阶导数,由 p 上的三个点表示,其中一个点代表相对于时间的一阶导数),以及其他标准。

最小化平方加速度以提高驾驶舒适度(来源:Werling 等,ICRA 2010)

数学上可以证明,五次(5 阶)多项式在位置-速度-加速度空间中提供两个状态之间的最优加加速度连接,即使考虑额外的成本项也是如此。通过在这个五次多项式的参数空间中采样,我们可以找到成本最低的方案来获得近似解。成本考虑了速度、加速度、加加速度限制和碰撞检查等因素。这种方法本质上是通过采样来解决优化问题的。

横向移动时间曲线的采样(来源:Werling 等人,ICRA 2010)

基于采样的方法启发了许多 ML 论文,包括 CoverNet、Lift-Splat-Shoot、NMP 和 MP3。这些方法利用大型数据库,用人类驾驶行为取代数学上合理的五次多项式。轨迹评估可以轻松并行化,这进一步支持了基于采样的方法的使用。这种方法有效地利用了大量专家演示来模仿类似人类的驾驶行为,同时避免了对加速度和转向曲线进行随机采样。

从人类驾驶数据中抽样用于数据驱动规划方法(来源:NMP、CoverNet和Lift-splat-shoot)

优化

优化通过在给定约束条件下最大化或最小化特定目标函数来找到问题的最佳解决方案。在神经网络训练中,遵循类似的原理,使用梯度下降和反向传播来调整网络的权重。然而,在神经网络之外的优化任务中,模型通常不太复杂,而且通常采用比梯度下降更有效的方法。例如,虽然梯度下降可以应用于二次规划,但它通常不是最有效的方法。

在自动驾驶中,优化的规划成本通常会考虑用于避障的动态物体、用于跟随车道的静态道路结构、用于确保正确路线的导航信息以及用于评估平稳性的自我状态。

优化可分为凸优化和非凸优化。关键区别在于,在凸优化场景中,只有一个全局最优解,同时也是局部最优解。这一特性使其不受优化问题初始解的影响。对于非凸优化,初始解非常重要,如下图所示。

凸优化与非凸优化(来源:aws斯坦福课程材料)

由于规划涉及高度非凸优化,具有许多局部最优解,因此它在很大程度上取决于初始解决方案。此外,凸优化通常运行速度更快,因此更适合自动驾驶等车载实时应用。一种典型的方法是先将凸优化与其他方法结合使用,勾勒出一个凸解空间。这是区分行为规划和运动规划的数学基础,其中找到一个好的初始解决方案是行为规划的作用。

以避障为例,它通常会引入非凸问题。如果我们知道轻推方向,那么它就变成了一个凸优化问题,障碍物位置充当优化问题的下限或上限约束。如果我们不知道轻推方向,我们需要先决定轻推哪个方向,使问题成为运动规划要解决的凸问题。这个轻推方向决定属于行为规划。

当然,我们可以使用投影梯度下降、交替最小化、粒子群优化 (PSO) 和遗传算法等工具直接优化非凸优化问题。不过,这超出了本文的讨论范围。

凸路径规划问题与非凸路径规划问题(AWS海外服务器协助)

凸与非凸路径规划问题的解决过程(AWS海外服务器协助)

我们如何做出这样的决定?我们可以使用上述搜索或采样方法来解决非凸问题。基于采样的方法将许多选项分散在参数空间中,有效地处理非凸问题,类似于搜索。

您可能还会问,为什么决定从哪个方向推动就足以保证问题空间是凸的。要解释这一点,我们需要讨论拓扑。在路径空间中,相似的可行路径可以连续地相互转换,而不会受到障碍物的干扰。这些相似的路径在拓扑的形式语言中被归类为“同伦类”,都可以使用与它们同伦的单个初始解决方案进行探索。所有这些路径形成一条驾驶走廊,如上图中的红色或绿色阴影区域所示。对于 3D 时空案例,请参阅QCraft 技术博客

我们可以利用广义 Voronoi 图枚举所有同伦类,这大致对应于我们可用的不同决策路径。但是,这个主题深入探讨了超出本博文范围的高级数学概念。

高效解决优化问题的关键在于优化求解器的能力。通常,求解器需要大约 10 毫秒来规划轨迹。如果我们可以将这种效率提高十倍,它将对算法设计产生重大影响。这一改进在 2022 年特斯拉人工智能日期间得到了重点介绍。感知系统也发生了类似的增强,随着可用计算能力扩大十倍,感知系统从 2D 感知过渡到鸟瞰图 (BEV)。使用更高效的优化器,可以计算和评估更多选项,从而降低决策过程的重要性。然而,设计一个高效的优化求解器需要大量的工程资源。

每当计算规模扩大 10 倍,算法就会进化到下一代。—— 算法进化的未验证规律

规划的行业实践

各种规划系统之间的一个关键区别在于它们是否在时空上解耦。具体来说,时空解耦方法首先在空间维度上规划以生成路径,然后规划沿此路径的速度曲线。这种方法也称为路径-速度解耦。

路径-速度解耦通常被称为横向-纵向(纬度-经度)解耦,其中横向(纬度)规划对应于路径规划,纵向(经度)规划对应于速度规划。这个术语似乎源自前面解释过的弗雷内特坐标系。

解耦解决方案更容易实现,可以解决大约 95% 的问题。相比之下,耦合解决方案的理论性能上限更高,但实现起来更具挑战性。它们涉及更多参数进行调整,并且需要更原则性的参数调整方法。

解耦规划与联合规划的比较(AWS海外服务器协助)

分离式时空规划与联合时空规划的优缺点(AWS海外服务器协助)

路径速度解耦规划

我们可以以百度 Apollo EM 规划器作为使用路径速度解耦规划的系统的示例。

EM 规划器通过将三维站点横向速度问题转换为两个二维问题(站点横向和站点速度),显著降低了计算复杂度。Apollo 的 EM 规划器的核心是迭代期望最大化 (EM) 步骤,包括路径优化和速度优化。每个步骤分为 E 步骤(二维状态空间中的投影和公式化)和 M 步骤(二维状态空间中的优化)。E 步骤涉及将 3D 问题投影到 Frenet SL 框架或 ST 速度跟踪框架中。

Apollo EM 规划器中的 EM 迭代(来源:百度 Apollo EM 规划器)

路径和速度优化中的 M 步(最大化步骤)涉及解决非凸优化问题。对于路径优化,这意味着决定是否轻推左侧或右侧的物体,而对于速度优化,则涉及决定是否超车或让路给穿过路径的动态物体。Apollo EM 规划器使用两步流程解决这些非凸优化挑战:动态规划 (DP),然后是二次规划 (QP)。

DP 使用采样或搜索算法来生成粗略的初始解决方案,从而有效地将非凸空间修剪为凸空间。然后,QP 将粗略的 DP 结果作为输入,并在 DP 提供的凸空间内对其进行优化。本质上,DP 注重可行性,而 QP 则细化解决方案以在凸约束内实现最优。

在我们定义的术语中,路径 DP 对应于横向 BP,路径 QP 对应于横向 MP,速度 DP 对应于纵向 BP,速度 QP 对应于纵向 MP。因此,该流程涉及在路径和速度步骤中进行 BP(基本规划),然后进行 MP(主规划)。

具有路径速度解耦规划的全自动驾驶堆栈(雲闪世界aws海外服务器协助)

联合时空规划

虽然解耦规划可以解决自动驾驶中 95% 的情况,但剩余 5% 的情况涉及具有挑战性的动态交互,而解耦解决方案通常会导致次优轨迹。在这些复杂场景中,展示智能至关重要,这使其成为该领域的热门话题。

例如,在狭窄空间超车时,最佳行为可能是减速让行或加速超车。此类行为无法在解耦解决方案空间内实现,需要联合优化。联合优化允许采用更集成的方法,同时考虑路径和速度,以有效处理复杂的动态相互作用。

具有联合时空规划的全自动驾驶堆栈具有联合时空规划的全自动驾驶堆栈

然而,联合时空规划存在重大挑战。首先,在高维状态空间中直接解决非凸问题比使用解耦解决方案更具挑战性且耗时。其次,在时空联合规划中考虑相互作用更加复杂。我们稍后在讨论决策时将更详细地讨论这个主题。

这里我们介绍两种解决方法:强力搜索和构建时空走廊进行优化。

强力搜索直接发生在 3D 时空空间中(空间中为 2D,时间中为 1D),可以在 XYT(笛卡尔)或 SLT(弗雷内特)坐标中执行。我们将以 SLT 为例。SLT 空间又长又平,类似于能量棒。它在 L 维度上拉长,在 ST 面上平坦。对于强力搜索,我们可以使用混合 A-star,其成本是进度成本和前进成本的组合。在优化过程中,我们必须遵守防止在 s 和 t 维度上反转的搜索约束。

在时空格子中通过变道超车(来源:使用 A* 进行时空优化)

另一种方法是构建时空走廊,本质上是一条曲线,其中汽车的足迹蜿蜒穿过 3D 时空状态空间(例如 SLT)。SSC (时空语义走廊,RAL 2019)将语义元素给出的要求编码到语义走廊中,从而生成安全轨迹。语义走廊由一系列相互连接的无碰撞立方体组成,这些立方体具有时空域中语义元素提出的动态约束。在每个立方体中,它变成一个凸优化问题,可以使用二次规划 (QP) 来解决。

SSC 仍然需要 BP(行为规划)模块来提供粗略的驾驶轨迹。环境的复杂语义元素被投射到与参考车道有关的时空域中。EPSILON (TRO 2021)展示了一个系统,其中 SSC 充当运动规划器与行为规划器协同工作。在下一节中,我们将讨论行为规划,特别是关注交互。在这种情况下,行为规划通常被称为决策。

时空走廊示意图(来源:SSC)

决策

是什么以及为什么?

自动驾驶中的决策本质上是行为规划,但重点是与其他交通代理的互动。假设其他代理大多是理性的,会以可预测的方式对我们的行为做出反应,我们可以将其描述为“嘈杂理性”。

当有先进的规划工具可用时,人们可能会质疑决策的必要性。然而,两个关键方面——不确定性和交互——为环境带来了概率性,这主要是由于动态物体的存在。交互是自动驾驶中最具挑战性的部分,它与一般机器人技术不同。自动驾驶汽车不仅必须导航,还必须预测和响应其他代理的行为,因此稳健的决策对于安全和效率至关重要。

在没有交互的确定性(纯几何)世界中,决策是不必要的,通过搜索、采样和优化进行规划就足够了。在 3D XYT 空间中进行强力搜索可以作为一种通用解决方案。

在大多数传统的自动驾驶堆栈中,采用先预测后规划的方法,假设自车与其他车辆之间存在零阶交互。这种方法将预测输出视为确定性的,要求自车做出相应的反应。这会导致行为过于保守,例如“冻结机器人”问题。在这种情况下,预测会填满整个时空空间,从而阻止在拥挤条件下变道等行为——这是人类更有效地管理的事情。

为了处理随机策略,马尔可夫决策过程 (MDP) 或部分可观察马尔可夫决策过程 (POMDP) 框架必不可少。这些方法将重点从几何转移到概率,解决了混乱的不确定性。通过假设交通代理的行为是理性的,或者至少是嘈杂理性的,决策可以帮助在混乱的时空空间中创建一条安全的驾驶走廊。

在规划的三大目标(安全性、舒适性和效率)中,决策主要是为了提高效率。保守的行动可以最大限度地提高安全性和舒适性,但通过决策与其他道路代理进行有效的谈判对于实现最佳效率至关重要。有效的决策也体现了智慧。

MDP 和 POMDP

我们将首先介绍马尔可夫决策过程(MDP)和部分可观马尔可夫决策过程(POMDP),然后介绍它们的系统解决方案,例如价值迭代和策略迭代。

马尔可夫过程 (MP) 是一种随机过程,它处理动态随机现象,与静态概率不同。在马尔可夫过程中,未来状态仅取决于当前状态,因此足以进行预测。对于自动驾驶,相关状态可能仅包括最后一秒的数据,从而扩大了状态空间以允许更短的历史窗口。

马尔可夫决策过程 (MDP) 通过引入行动将马尔可夫过程扩展为包括决策。MDP 模拟决策,其中结果部分是随机的,部分由决策者或代理控制。MDP 可以用五个因素建模:

  1. 状态(S):环境的状态。

  2. 动作(A):代理可以采取的动作来影响环境。

  3. 奖励(R):环境因采取动作而为代理提供的奖励。

  4. 转换概率(P):代理采取行动后从旧状态转换到新状态的概率。

  5. Gamma(γ):未来奖励的折扣因子。

这也是强化学习 (RL) 使用的常见框架,本质上是一种 MDP。MDP 或 RL 的目标是最大化长期获得的累积奖励。这要求代理根据策略,在给定环境状态的情况下做出正确的决策。

策略 π 是从每个状态 s ∈ S 和动作 a ∈ A(s) 到在状态 s 下采取行动 a 的概率 π(a|s) 的映射。MDP 或 RL 研究如何得出最优策略的问题。

MDP 和 RL 中的代理-环境接口(雲闪世界aws海外服务器协助)

部分可观察马尔可夫决策过程 (POMDP) 增加了一层复杂性,因为它认识到状态无法直接观察到,而是通过观察推断出来。在 POMDP 中,代理保持一种信念(可能状态的概率分布)来估计环境状态。由于自动驾驶场景固有的不确定性和环境的部分可观察性,POMDP 更适合用于自动驾驶场景。MDP 可以被视为 POMDP 的一个特例,其中观察结果完美地揭示了状态。

MDP 与 POMDP(来源:POMDP 作为随机应急计划)

POMDP 可以主动收集信息,从而采取收集必要数据的操作,展示这些模型的智能行为。此功能在十字路口等候等场景中尤其有价值,在这些场景中,收集有关其他车辆意图和交通信号灯状态的信息对于做出安全有效的决策至关重要。

价值迭代和策略迭代

值迭代和策略迭代是解决 MDP 或 POMDP 问题的系统方法。虽然这些方法由于其复杂性而在实际应用中并不常用,但了解它们可以深入了解确切的解决方案以及如何在实践中简化它们,例如在 AlphaGo 中使用 MCTS 或在自动驾驶中使用 MPDM。

为了在 MDP 中找到最佳策略,我们必须评估某个状态的潜在或预期奖励,或者更具体地说,评估在该状态下采取的行动的潜在或预期奖励。此预期奖励不仅包括即时奖励,还包括所有未来奖励,正式称为回报或累积折扣奖励。(如需更深入的了解,请参阅“强化学习:简介”,通常被认为是该主题的权威指南。)

价值函数 (V) 通过对预期回报求和来描述状态的质量。动作价值函数 (Q) 评估给定状态下动作的质量。这两个函数都是根据给定策略定义的。贝尔曼最优方程指出,最优策略将选择最大化即时奖励以及由此产生的新状态的预期未来奖励的动作。简而言之,贝尔曼最优方程建议同时考虑动作的即时奖励和未来后果。例如,在换工作时,不仅要考虑即时加薪 (R),还要考虑新职位提供的未来价值 (S')。

贝尔曼最优化方程(雲闪世界aws海外服务器协助)

一旦有了最优值函数,从贝尔曼最优方程中提取最优策略就相对简单了。但我们如何找到这个最优值函数呢?这就是价值迭代发挥作用的地方。

从最优值中提取最佳策略(雲闪世界aws海外服务器协助)

值迭代通过反复更新每个状态的值直到稳定下来来找到最佳策略。这个过程是通过将贝尔曼最优方程转化为更新规则而得出的。本质上,我们使用最优未来图景来引导迭代朝着它前进。用通俗的话说就是“假装直到你做到!”

在贝尔曼方程的指导下更新价值函数(雲闪世界aws海外服务器协助)

无论状态的初始值是什么,值迭代对于有限状态空间都能保证收敛(详细证明请参考强化学习圣经。如果将折扣因子 gamma 设置为 0,即只考虑即时奖励,则值迭代只需一次迭代即可收敛。较小的 gamma 会导致更快的收敛,因为考虑范围较短,尽管这可能并不总是解决具体问题的最佳选择。平衡折扣因子是工程实践的一个关键方面。

有人可能会问,如果所有状态都初始化为零,这如何运作。贝尔曼方程中的即时奖励对于引入更多信息和打破初始对称性至关重要。想想那些直接导致目标状态的状态;它们的值像病毒一样在状态空间中传播。用通俗的话说,就是经常取得小胜利。

价值函数和策略函数相互作用,直到它们一起收敛到最优值(来源:强化学习:导论)

然而,价值迭代也有效率低下的问题。它需要在每次迭代中考虑所有可能的操作,从而采取最佳操作,类似于 Dijkstra 算法。虽然它作为一种基本方法表现出可行性,但对于实际应用来说通常并不实用。

贝尔曼方程与贝尔曼最优方程的对比(雲闪世界aws海外服务器协助)

策略迭代通过根据当前策略采取行动并根据贝尔曼方程(而非贝尔曼最优方程)进行更新来改进这一点。策略迭代将策略评估与策略改进分离开来,使其成为一种更快的解决方案。每一步都是基于给定的策略进行的,而不是探索所有可能的行动来找到最大化目标的行动。尽管由于策略评估步骤,策略迭代的每次迭代可能在计算上更加密集,但总体而言,它通常会导致更快的收敛速度。

简单来说,如果你只能完全评估一个动作的后果,那么最好运用自己的判断力,并利用当前可用的信息尽力而为。

AlphaGo 与 MCTS — 当网络遇上树木

我们都听说过 AlphaGo 在 2016 年击败人类最强选手的不可思议的故事。AlphaGo 将围棋的玩法公式化为 MDP,并使用蒙特卡洛树搜索 (MCTS) 解决它。但为什么不使用值迭代或策略迭代呢?

值迭代和策略迭代是解决 MDP 问题的系统性迭代方法。然而,即使改进了策略迭代,仍然需要执行耗时的操作来更新每个状态的值。标准的 19x19 围棋棋盘大约有2e170 个可能的状态。如此庞大的状态数量使得使用传统的值迭代或策略迭代技术很难解决。

AlphaGo 及其后继者使用蒙特卡洛树搜索(MCTS) 算法来寻找自己的走法,该算法由价值网络和策略网络引导,并根据人类和计算机的下法进行训练。我们先来看看 vanilla MCTS。

AlphaGo 的 MCTS 的四个步骤,结合了价值网络和策略网络(来源:AlphaGo,Nature 2016)

蒙特卡洛树搜索(MCTS)是一种基于当前状态进行决策的策略估计方法,一次迭代包括选择、扩展、模拟(或评估)和备份四个步骤。

  1. 选择:该算法根据先前的模拟遵循最有希望的路径,直到到达叶节点(尚未完全探索的位置)。

  2. 扩展:添加一个或多个子节点来表示从叶节点可能的下一步移动。

  3. 模拟(评估):算法从新节点开始直到结束进行随机游戏,称为“推出”。通过模拟随机移动直到达到终止状态,评估扩展节点的潜在结果。

  4. 备份:算法根据游戏结果更新路径上节点的值。如果结果是赢,节点的值就会增加;如果结果是输,节点的值就会减少。此过程将推出的结果传播回树,根据模拟结果优化策略。

在给定的迭代次数之后,MCTS 会提供在模拟过程中从根中选择立即操作的百分比频率。在推理过程中,将选择访问次数最多的操作。为简单起见,下面是 MTCS 与井字游戏的交互式图示。

AlphaGo 中的 MCTS 由两个神经网络增强。价值网络评估给定状态(棋盘配置)的获胜率。策略网络评估所有可能动作的动作分布。这些神经网络通过减少搜索树的有效深度和广度来改进 MCTS。策略网络有助于采样动作,将搜索重点放在有希望的动作上,而价值网络则提供更准确的位置评估,从而减少大量部署的需要。这种组合使 AlphaGo 能够在围棋的广阔状态空间中执行高效且有效的搜索。

AlphaGo的策略网络与价值网络(来源:AlphaGo,Nature 2016)

在扩展步骤中,策略网络对最有可能的位置进行采样,从而有效地缩减搜索空间的宽度。在评估步骤中,价值网络对位置进行本能评分,而速度更快、更轻量的策略网络则执行滚动,直到游戏结束以收集奖励。然后,MCTS 使用来自两个网络的评估的加权和来进行最终评估。

请注意,价值网络的单次评估接近使用强化学习策略网络的蒙特卡洛部署的准确度,但计算量减少了 15,000 倍。这反映了快慢系统设计,类似于诺贝尔奖获得者丹尼尔·卡尼曼所描述的直觉与推理,或系统 1 与系统 2。在最近的作品中可以看到类似的设计,例如DriveVLM。 具体来说,AlphaGo 在不同层面上采用了两个慢快系统。在宏观层面上,策略网络负责选择落子,而更快的推出策略网络负责评估落子。在微观层面上,更快推出策略网络可以用直接预测棋盘胜率的价值网络来近似。

我们可以从 AlphaGo 中学到什么,用于自动驾驶?AlphaGo 证明了使用强大的世界模型(模拟)提取出色策略的重要性。同样,自动驾驶需要高度准确的模拟才能有效利用与 AlphaGo 使用的算法类似的算法。这种方法强调了将强大的策略网络与详细、精确的模拟相结合的价值,以增强决策能力并优化复杂动态环境中的性能。

自动驾驶中的 MPDM(及后续产品)

在围棋游戏中,所有状态对双方玩家都是即时可见的,因此围棋游戏是一个完全信息游戏,其中观察等于状态。这使得围棋游戏可以用 MDP 过程来描述。相比之下,自动驾驶是一个 POMDP 过程,因为只能通过观察来估计状态。

POMDP 以原则性的方式将感知和规划联系起来。POMDP 的典型解决方案与 MDP 类似,但前瞻能力有限。然而,主要挑战在于维数灾难(状态空间爆炸)和与其他代理的复杂交互。为了使实时进展易于处理,通常会做出特定领域的假设来简化 POMDP 问题。

MPDM(以及两篇 后续研究白皮书)是该方向的一项开创性研究。MPDM 将 POMDP 简化为有限、离散的语义级策略集的闭环前向模拟,而不是评估每辆车的所有可能的控制输入。这种方法通过关注可管理的有意义的策略数量来解决维数灾难问题,从而允许在自动驾驶场景中做出有效的实时决策。

语义动作有助于控制维数灾难(来源:EPSILON

MPDM 的假设有两点。首先,人类驾驶员的大部分决策都涉及离散的高级语义动作(例如减速、加速、变道、停车)。在这种情况下,这些动作被称为策略。第二个隐含的假设涉及其他代理:其他车辆将做出合理安全的决策。一旦车辆的策略确定,其动作(轨迹)就确定了。

MPDM 的框架(雲闪世界aws海外服务器协助)

MPDM 首先从众多选项中为自身车辆选择一个策略(因此其名称中带有“多策略”一词),然后根据各自的预测为每个附近的代理选择一个策略。然后,它执行前向模拟(类似于 MCTS 中的快速推出)。评估后的最佳交互场景随后被传递到运动规划,例如联合时空规划会话中提到的时空语义走廊 (SCC)。

MPDM 可实现智能且类似人类的行为,例如,即使没有足够的间隙,也能主动插入密集的车流。这是预测然后规划流程无法实现的,因为该流程没有明确考虑交互。MPDM 中的预测模块通过正向模拟与行为规划模型紧密集成。

MPDM 假设在整个决策范围(10 秒)内采用单一策略。本质上,MPDM 采用 MCTS 方法,深度为一层,宽度超宽,考虑所有可能的代理预测。这为改进留下了空间,激发了许多后续工作,例如 EUDM、EPSILON 和 MARC。例如,EUDM 考虑更灵活的自我策略并分配深度为 4 的策略树,每个策略在 8 秒的决策范围内覆盖 2 秒的时间。为了补偿增加树深度引起的额外计算,EUDM 通过引导分支执行更有效的宽度修剪,识别关键场景和关键车辆。这种方法探索了更平衡的策略树。

MPDM 和 EUDM 中的前向模拟使用非常简单的驾驶员模型(纵向模拟使用智能驾驶员模型或 IDM,横向模拟使用纯追踪或 PP)。MPDM 指出,只要策略级决策不受低级动作执行不准确性的影响,高保真真实性就比闭环特性本身更重要。

决策的概念图,其中预测、BP 和 MP 紧密结合(雲闪世界aws海外服务器协助)

在自动驾驶中,应急计划涉及生成多条潜在轨迹,以应对各种可能的未来情景。一个关键的激励例子是,经验丰富的驾驶员会预测多种未来情景,并始终制定安全的备用计划。这种预期方法可以带来更顺畅的驾驶体验,即使汽车突然切入车道也是如此。

应急计划的一个关键方面是推迟决策分叉点。这意味着推迟不同潜在轨迹分叉的点,让自车有更多时间收集信息并应对不同的结果。通过这样做,车辆可以做出更明智的决定,从而实现更平稳、更自信的驾驶行为,类似于经验丰富的驾驶员。

风险意识应急计划(来源:MARC、RAL 2023)

MARC 还将行为规划和运动规划结合在一起。这扩展了前向模拟的概念和实用性。换句话说,MPDM 和 EUDM 仍然使用策略树进行高级行为规划,并依赖于其他运动规划管道,如语义时空走廊 (SSC),因为策略树中的自我运动仍然以高度量化的行为桶为特征。MARC 通过保留自我之外的代理的量化行为来扩展这一点,但在前向推出时直接使用更精细的运动规划。在某种程度上,它是一种混合方法,其中混合的含义与混合 A* 中的含义类似,即离散和连续的混合。

MPDM 及其所有后续工作的一个可能缺点是它们依赖于为类似高速公路的结构化环境设计的简单策略,例如车道保持和车道变换。这种依赖可能会限制前向模拟处理复杂交互的能力。为了解决这个问题,以 MPDM 为例,使 POMDP 更有效的关键是通过高级策略树的增长来简化动作和状态空间。可能可以创建更灵活的策略树,例如,通过枚举所有相关对象的时空相对位置标签,然后执行引导分支。

决策的行业实践

决策仍然是当前研究的热门话题。即使是经典的优化方法也尚未得到充分探索。机器学习方法可能会大放异彩并产生颠覆性影响,尤其是随着大型语言模型 (LLM) 的出现,这种模型由思想链 (CoT) 或蒙特卡洛树搜索 (MCTS) 等技术提供支持。

树木

树是执行决策的系统方法。2021 年和 2022 年特斯拉人工智能日展示了他们的决策能力,这些能力深受 AlphaGo 和随后的 MuZero 的影响,可以解决高度复杂的交互。

从高层次来看,特斯拉的方法遵循行为规划(决策),然后是运动规划。它首先搜索凸走廊,然后使用时空联合规划将其输入到连续优化中。这种方法有效地解决了诸如狭窄通过之类的场景,这是路径速度分离规划的典型瓶颈。

神经网络启发式引导的 MCTS(来源:Tesla AI Day 2021)

特斯拉还采用了一种混合系统,该系统结合了数据驱动和基于物理的检查。从定义的目标开始,特斯拉的系统生成种子轨迹并评估关键场景。然后,它分支出来创建更多的场景变体,例如断言或让路给交通代理。这种对策略树的交互搜索在2021 年2022 年的演示中得到了展示。

特斯拉使用机器学习的一大亮点是通过轨迹优化加速树搜索。对于每个节点,特斯拉使用基于物理的优化和神经规划器,实现了 10 毫秒与 100 微秒的时间框架,从而实现了 10 倍到 100 倍的改进。神经网络通过专家演示和离线优化器进行训练。

轨迹评分是通过将经典的基于物理的检查(例如碰撞检查和舒适度分析)与预测干预可能性和评估人类相似度的神经网络评估器相结合来执行的。这种评分有助于精简搜索空间,将计算重点放在最有希望的结果上。

尽管许多人认为机器学习应该应用于高层决策,但特斯拉从根本上利用机器学习来加速优化,从而实现树搜索。

蒙特卡洛树搜索 (MCTS) 方法似乎是决策的终极工具。有趣的是,那些研究大型语言模型 (LLM) 的人正试图将 MCTS 纳入 LLM,而那些从事自动驾驶的人正试图用 LLM 取代 MCTS。

大约两年前,特斯拉的技术就采用了这种方法。然而,自 2024 年 3 月起,特斯拉的全自动驾驶 (FSD) 已转向更端到端的方法,与之前的方法有很大不同。

没有树木

我们仍然可以考虑不隐式生长树的交互。可以实施临时逻辑来执行预测和规划之间的一阶交互。即使是一阶交互也已经可以产生良好的行为,正如 TuSimple 所展示的那样。MPDM 的原始形式本质上是一阶交互,但以更原则和可扩展的方式执行。

预测与规划之间的多阶交互(来源:TuSImple AI day,(雲闪世界aws海外服务器协助))

TuSimple 还展示了执行应急计划的能力,类似于MARC中提出的方法(尽管 MARC 也可以适应定制的风险偏好)。

应急计划(来源:TuSImple AI day,(雲闪世界aws海外服务器协助)

自我反思

在学习了经典规划系统的基本构建模块(包括行为规划、运动规划以及通过决策处理交互的原则性方法)之后,我一直在思考系统中的潜在瓶颈以及机器学习 (ML) 和神经网络 (NN) 如何提供帮助。我在这里记录我的思考过程,以供将来参考,也供其他可能有类似问题的人参考。请注意,本节中的信息可能包含个人偏见和推测。

为什么在规划中使用 NN?

让我们从三个不同的角度来看待这个问题:在现有的模块化管道中,作为端到端 (e2e) NN 规划器,或作为 e2e 自动驾驶系统。

回到绘图板,让我们回顾一下自动驾驶规划系统的问题表述。目标是在高度不确定和交互的环境中获得一条确保安全、舒适和高效的轨迹,同时遵守车载实时工程约束。下表将这些因素总结为目标、环境和约束。

NN 在规划中的潜力(雲闪世界aws海外服务器协助)

自动驾驶中的不确定性可以指感知(观察)和预测未来长期代理行为的不确定性。规划系统还必须处理其他代理未来轨迹预测的不确定性。如前所述,原则性决策系统是管理此问题的有效方法。

此外,一个通常被忽视的方面是,规划必须容忍不确定、不完美、有时不完整的感知结果,尤其是在当今以视觉为中心、无高清地图的驾驶时代。在车上配备标准清晰度 (SD) 地图作为先验有助于缓解这种不确定性,但它仍然对大量手工制作的规划系统构成了重大挑战。这种感知不确定性被认为是 4 级 (L4) 自动驾驶公司通过大量使用激光雷达和高清地图已经解决的问题。然而,随着行业转向没有这两个拐杖的大规模生产自动驾驶解决方案,它再次浮出水面。NN 规划器更加强大,可以处理很大程度上不完美和不完整的感知结果,这是大规模生产以视觉为中心、无高清地图的高级驾驶辅助系统 (ADAS) 的关键。

交互应采用原则性决策系统(如蒙特卡洛树搜索 (MCTS) 或 MPDM 的简化版本)来处理。主要挑战是通过自动驾驶领域知识通过智能修剪来构建平衡的策略树,从而应对维数灾难(组合爆炸)。MPDM 及其变体(无论是在学术界还是在行业内,例如特斯拉)都为如何以平衡的方式构建这棵树提供了很好的例子。

NN 还可以通过加快运动规划优化来提高规划器的实时性能。这可以将计算负载从 CPU 转移到 GPU,从而实现数量级的加速。优化速度提高十倍可以从根本上影响高级算法设计,例如 MCTS。

轨迹也需要更加人性化。人类相似性和接管预测器可以利用大量可用的人类驾驶数据进行训练。增加计算池比维持不断增长的工程人才队伍更具可扩展性。

基于 NN 的规划堆栈可以更有效地利用人类驾驶数据(雲闪世界aws海外服务器协助)

那么 e2e NN 规划器怎么样?

端到端 (e2e) 神经网络 (NN) 规划器仍然构成模块化自动驾驶 (AD) 设计,接受结构化感知结果(以及潜在的潜在特征)作为其输入。这种方法将预测、决策和规划结合到一个网络中。DeepRoute (2022) 和华为 (2024)等公司声称采用这种方法。请注意,这里省略了相关的原始传感器输入,例如导航和自车信息。

带有 e2e 规划器的完整自动驾驶堆栈(雲闪世界aws海外服务器协助)

这种 e2e 规划器可以进一步发展成为融合感知和规划的端到端自动驾驶系统。这正是Wayve 的 LINGO-2(2024 年)和特斯拉的 FSDv12(2024 年)声称要实现的目标。

这种方法有两方面的好处。首先,它解决了感知问题。驾驶的许多方面我们无法用常用的感知接口轻松地明确建模。例如,手动设计一个驾驶系统来绕过水坑在凹陷处减速是相当具有挑战性的。虽然传递中间感知特征可能会有所帮助,但它可能无法从根本上解决问题。

此外,涌现行为可能有助于更系统地解决极端情况。对极端情况(如上述示例)的智能处理可能源自大型模型的涌现行为。

具有单一模型 e2e 驱动程序的完整自动驾驶堆栈(雲闪世界aws海外服务器协助)

我的猜测是,在其最终形式中,端到端 (e2e) 驱动程序将是一个由蒙特卡洛树搜索 (MCTS) 增强的大型视觉和行动原生多模式模型,假设没有计算限制。

根据 2024 年的共识,自动驾驶中的世界模型通常是一种多模态模型,至少涵盖视觉和动作模式(或 VA 模型)。虽然语言有助于加速训练、增加可控性和提供可解释性,但它并非必不可少。在其完全开发的形式中,世界模型将是 VLA(视觉-语言-动作)模型。

开发世界模型至少有两种方法:

  1. 视频原生模型:训练模型来预测未来的视频帧,以伴随动作为条件或输出伴随动作,如 GAIA-1 等模型所展示的那样。

  2. 多模态适配器:从预训练的大型语言模型 (LLM) 开始,然后添加多模态适配器,如 Lingo-2、RT2 或 ApolloFM 等模型中所示。这些多模态 LLM 并非视觉或动作的原生模型,但所需的训练资源要少得多。

世界模型可以通过动作输出自行生成策略,从而直接驱动车辆。或者,MCTS 可以查询世界模型并使用其策略输出来指导搜索。这种世界模型-MCTS 方法虽然计算量更大,但由于其明确的推理逻辑,在处理极端情况方面可能会有更高的上限。

我们能不用预测吗?

目前大多数运动预测模块将除自身车辆之外的代理的未来轨迹表示为一个或多个离散轨迹。这种预测规划界面是否充分或必要仍是一个问题。

在经典的模块化流水线中,预测仍然是必要的。然而,正如决策环节所讨论的那样,预测然后规划的流水线无疑限制了自动驾驶系统的上限。一个更关键的问题是如何将这个预测模块更有效地集成到整个自动驾驶堆栈中。预测应该有助于决策,并且最好在整体决策框架内使用可查询的预测模块,例如 MPDM 及其变体。只要正确集成,例如通过策略树推出,具体轨迹预测就不会出现严重问题。

预测的另一个问题是,开环关键绩效指标 (KPI),例如平均位移误差 (ADE) 和最终位移误差 (FDE),并不是有效的指标,因为它们无法反映对规划的影响。相反,应该考虑意图级别的召回率和准确率等指标。

在端到端系统中,显式预测模块可能不是必需的,但隐式监督(以及来自经典堆栈的其他领域知识)肯定可以帮助或至少提高学习系统的数据效率。评估预测行为(无论是显式的还是隐式的)也将有助于调试这样的端到端系统。

我们可以只用网而不用树吗?

首先是结论。对于助手来说,神经网络 (nets) 可以实现非常高甚至超人的性能。对于代理,我认为使用树形结构仍然是有益的(尽管不一定是必须的)。

首先,树可以增强网络。无论是否基于 NN,树都可以增强给定网络的性能。在 AlphaGo 中,即使使用通过监督学习和强化学习训练的策略网络,其整体性能仍然不如基于 MCTS 的 AlphaGo,后者将策略网络作为一个组件进行集成。

其次,网络可以提炼树。在 AlphaGo 中,MCTS 同时使用了价值网络和快速推出策略网络的奖励来评估树中的节点(状态或棋盘位置)。AlphaGo 论文还提到,虽然可以单独使用价值函数,但将两者的结果结合起来会产生最佳效果。价值网络本质上是通过直接学习状态-价值对来提炼策略推出中的知识。这类似于人类如何将缓慢系统 2 的逻辑思维提炼为系统 1 的快速直观反应。丹尼尔·卡尼曼 (Daniel Kahneman) 在他的《思考,快与慢》一书中描述了国际象棋大师如何经过多年的练习后快速识别模式并做出快速决策,而新手则需要付出巨大努力才能取得类似的结果。同样,AlphaGo 中的价值网络经过训练可以快速评估给定的棋盘位置。

无需搜索的大师级国际象棋(来源:DeepMind,2024 年)(雲闪世界aws海外服务器协助)

最近的论文探索了这种使用神经网络的快速系统的上限。“无需搜索的国际象棋”论文表明,只要有足够的数据(通过使用传统算法的树搜索准备),就有可能达到大师级的熟练程度。数据大小和模型大小之间存在明显的“缩放定律”,表明随着数据量和模型复杂性的增加,系统的熟练程度也会增加。

因此,我们有了强大的二重奏:树促进网络,网络提炼树。这种正反馈循环本质上就是 AlphaZero 用来引导自己在多款游戏中达到超人表现的手段。

同样的原则也适用于大型语言模型 (LLM) 的开发。对于游戏,由于我们已经明确将奖励定义为胜利或失败,因此我们可以使用前向滚动来确定某个动作或状态的价值。对于 LLM,奖励并不像围棋游戏那样明确,因此我们依靠人类偏好通过带有人类反馈的强化学习 (RLHF) 对模型进行评分。但是,对于已经训练过的 ChatGPT 等模型,我们可以使用监督微调 (SFT)(本质上是模仿学习)来提炼较小但仍然强大的模型,而无需 RLHF。

回到最初的问题,网络可以通过大量高质量数据实现极高的性能。这对于助手来说可能已经足够好了,具体取决于对错误的容忍度,但对于自主代理来说可能还不够。对于以驾驶辅助 (ADAS) 为目标的系统,通过模仿学习的网络可能就足够了。

树可以显著提升具有显式推理循环的网络的性能,使其可能更适合完全自主的代理。树或推理循环的范围取决于工程资源的投资回报。例如,即使是一个交互顺序也可以带来巨大的好处,正如TuSimple AI Day所展示的那样。

我们可以使用法学硕士学位来做决策吗?

从下面对最热门的 AI 系统代表的总结中,我们可以看出 LLM 并非为执行决策而设计的。本质上,LLM 被训练来完成文档,甚至与 SFT 对齐的 LLM 助手也将对话视为一种特殊类型的文档(完成对话记录)。

截至 2024 年的代表性 AI 产品(雲闪世界aws海外服务器协助)

我不完全同意最近关于 LLM 是慢速系统(系统 2)的说法。由于硬件限制,它们的推理速度不必要地慢,但 LLM 的原始形式是快速系统,因为它们无法执行反事实检查。诸如思路链 (CoT) 或思路树 (ToT) 之类的提示技术实际上是 MCTS 的简化形式,使 LLM 的功能更像较慢的系统。

有大量研究试图将成熟的 MCTS 与 LLM 结合起来。具体来说,LLM-MCTS(NeurIPS 2023)将 LLM 视为常识性的“世界模型”,并使用 LLM 诱导的策略行动作为启发式方法来指导搜索。对于复杂、新颖的任务,LLM-MCTS 的表现远远优于单独的 MCTS 和 LLM 诱导的策略。正如其名称所暗示的那样,OpenAI 备受期待的 Q-star似乎采用了用 MCTS 提升 LLM 的相同方法。

进化趋势

以下是自动驾驶规划堆栈的粗略演变。之所以粗略,是因为列出的解决方案不一定比上面的解决方案更先进,而且它们的首次亮相可能不遵循确切的时间顺序。尽管如此,我们可以观察到总体趋势。请注意,列出的行业代表性解决方案是基于我对各种新闻稿的解读,可能会有错误。

一个趋势是朝着更加端到端的设计发展,将更多模块整合为一个。我们看到堆栈从路径速度解耦规划发展到联合时空规划,从预测然后规划系统发展到联合预测和规划系统。另一个趋势是基于机器学习的组件越来越多地被纳入,特别是在最后三个阶段。这两个趋势趋向于端到端 NN 规划器(无感知)甚至端到端 NN 驱动程序(有感知)。

规划演变简史(雲闪世界aws海外服务器协助)

总结

  • 机器学习作为一种工具:机器学习是一种工具,而不是一个独立的解决方案。即使在当前的模块化设计中,它也可以协助规划。

  • 全面制定:从全面制定问题开始,然后做出合理的假设以平衡性能和资源。这有助于为面向未来的系统设计创建明确的方向,并允许随着资源的增加而进行改进。回想一下从 POMDP 的制定到 AlphaGo 的 MCTS 和 MPDM 等工程解决方案的过渡。

  • 调整算法:理论上很漂亮的算法(例如,Dijkstra 和值迭代)对于理解概念非常有用,但需要适应实际工程(值迭代对于 MCTS 就像 Dijkstra 算法对于混合 A-star)。

  • 确定性与随机性:规划擅长解决确定性(不一定是静态)场景。在随机场景中做出决策是实现完全自主的最具挑战性的任务。

  • 应急计划:这可以帮助将多个未来合并为一个共同行动。积极主动是有益的,因为您总是可以求助于备用计划。

  • 端到端模型:端到端模型是否能解决完全自主问题仍不清楚。它可能仍然需要像 MCTS 这样的经典方法。神经网络可以处理助手,而树可以管理代理。

感谢关注:雲闪世界(亚马逊云AWS、谷歌GCP云服务协助完成)

标签:入门,工程师,优化,策略,决策,驾驶,感知,规划,MCTS
From: https://blog.csdn.net/2401_85233349/article/details/140330398

相关文章

  • 【数据库】Redis入门
    Redis官网【Redis-TheReal-timeDataPlatform】在Linux上使用,不推荐使用Windows版本。键-值存储,非关系型数据库,存储在内存(关系型数据库存储在硬盘介质)开启redis服务:./redis-server开启redis客户端:./redis-cli-p6379关机命令:shutdown关闭客户端:quit/exit默认......
  • LangChain 快速入门:构建你的第一个智能应用
    引言随着大型语言模型(LLM)的崛起,开发人员现在可以利用这些强大的工具来创建一系列创新的应用程序,从自动文档摘要到聊天机器人,再到智能客服系统。LangChain是一个开源框架,旨在简化与LLM的交互,帮助开发者轻松地构建和部署基于LLM的应用程序。本文将带你快速入门LangChain,通......
  • 【CTF入门】BUUCTF N1BOOK闯关(持续更新)
    【CTF入门】BUUCTFN1BOOK闯关(持续更新)[第一章web入门]常见的搜集点击启动靶机,为我们生成了一个链接,这就是我们要攻击的地址。点击链接进入,发现这个页面:可以看出这道题目的考点是信息搜集敏感文件,在这里简单介绍下常见的敏感文件(来源于《从0到1CTFer成长之路》)敏感目录泄露......
  • 解锁网络无限可能:揭秘微软工程师力作——付费代理IP池深度改造与实战部署指南
    基于付费代理的代理IP池项目来源此项目为微软某个工程师构建的代理IP池,我对此进行了改造。可以用于生产环境中的爬虫项目阅读前建议阅读我之前发布的爬虫基础的文章,了解代理如何获取、使用等。分为四大模块代理生成基于购买的付费代理接口获取代理IP,利用redis数据库的有......
  • Spring MVC入门5
    你能学到什么获取header的两种方式学习SpringMVC的第三部分“响应”返回静态页面返回HTML代码返回JSON设置状态码正文获取header获取Header也是从HttpServletRequest中获取再举个例子获取header的简洁方法(@RequestHeader)@RequestHeader注解的参数值为HT......
  • Python基础入门(一)
    Python基础入门(一)一、python语言介绍​ python是一种解释型、面向对象、动态数据类型的高级程序设计语言。​ Python由GuidvanRossum于1989年底发明,​ 第一个公开发行版发行于1991年。​ Python源代码遵循GPL(GNUGeneralPublicLicense)协议二、python特点​ ......
  • Python基础入门(二)
    Python基础入门(二)一、学习目标:掌握各种分支结构的使用方法掌握各种循环结构的使用方式掌握分支结构与循环结构的嵌套使用方式二、分支结构介绍根据指定条件是否成立确定是否执行相应的代码块:单分支结构二分支结构多分支结构分支结构嵌套三、单分支结......
  • 如何与 LLMs 有效沟通?6位数提示词工程师经验(LLMs 提示词小白必学)
    除非你活在太空里,完全脱离了现代社交媒体和新闻的关注,否则你不太可能错过大型语言模型    欢迎来到云闪世界。除非你活在太空里,完全脱离了现代社交媒体和新闻的关注,否则你不太可能错过大型语言模型(LLM)的突飞猛进带给我们生活中的革命性进步。LLM的演变。......
  • AI绘画Stable Diffusion 零基础入门 —AI 绘画原理与工具介绍,万字解析AI绘画的使用教
    大家好,我是设计师阿威想要入门AI绘画,首先需要了解它的原理是什么样的。其实很早就已经有人基于深度学习模型展开了对图像生成的研究了,但在那时,生成的图像分辨率和内容都非常抽象。直到近两年,AI产出的图像内容的质量变高、而且有一定的艺术价值,这时它才算正式拥有了理......
  • 简单的小波分析入门教程(第一部分,Python)
    importnumpyasnpimportmatplotlib.pyplotaspltimportpywtSimpleSignalAnalysisusingDWT#Generatethesignalt=np.linspace(0,1,1000,endpoint=False)signal=np.cos(2.0*np.pi*7*t)+np.sin(2.0*np.pi*13*t)#ApplyDWTcoeffs=p......