随着自动驾驶技术的快速发展,端到端(End-to-End, E2E)算法因其能够简化系统架构、提高决策效率而受到广泛关注。本文研究旨在全面梳理当前主流的端到端基础算法,分析其特点、优势与挑战,并探讨未来发展趋势。通过对现有文献和技术进展的研究,本文希望为相关领域的研究人员及从业者提供有价值的参考,后期将围绕这个主题从基础到应用开展系列的分享。
端到端自动驾驶指的是从传感器输入直接映射到车辆控制输出的过程,它试图用单一模型替代传统多模块架构中的感知、预测和规划等步骤。近年来,随着深度学习的发展,特别是卷积神经网络(CNN)、循环神经网络(RNN)及其变体如长短时记忆网络(LSTM),以及强化学习(RL)的进步,使得构建更加智能且高效的端到端系统成为可能。端到端目前形式也是有很多种,有“分段式”、“一段式”等,具体性能和训练的难度也存在一定的差异。
传统的系统架构是按照功能串联或并列构成的,通过实现各种模块的功能实现整体的功能,每一个模块的输入和输出具有清晰性和可解析性。
2. 端到端算法分类
根据应用场景和技术实现方式的不同,可以将现有的端到端算法大致分为以下几类:
一段式(完全端到端方案):这类方法试图建立一个从原始传感器数据(如摄像头图像或激光雷达点云)直接生成驾驶命令(如转向角、油门开度)的统一框架。典型代表包括特斯拉Autopilot所使用的基于视觉的全栈式解决方案。
专业功能型(感知):如纯视觉 vs 多模态融合,前者仅依赖摄像机获取环境信息;后者则结合了多种类型的传感器(如毫米波雷达、超声波传感器等),以增强系统的鲁棒性和准确性。UniAD采用了分阶段监督策略来训练一个完整的端到端模型,从而提高了可解释性。
专业功能型(规控):如专注于Planner的端到端方案,该类型侧重于改进路径规划部分,通常以感知模块提供的静态/动态障碍物信息作为先验条件,通过学习来优化后续的动作选择。例如小鹏汽车推出的XPlanner就是一个很好的例子。
3. 主流算法详解
DDPG (Deep Deterministic Policy Gradient)
DDPG是OpenAI spinning up下的第四个算法,翻译为“深度确定性策略梯度”。它是离轨策略(off-policy)算法,且只能在连续的动作空间中使用。DDPG是一种结合了Actor-Critic结构与深度神经网络的连续动作空间下的强化学习算法。在自动驾驶中,它可以用来解决复杂的控制问题,比如自动泊车或者高速公路跟车。由于DDPG能够在高维输入下工作良好,并且支持离线批量更新,因此非常适合处理真实世界中的非确定性任务。具体原理可以参考论文《Continuous Control With Deep Reinforcement Learning》,DDPG是基于DQN算法所作的改进。DDPG通过引入经验回放和目标网络等机制,不仅提高了训练过程的稳定性,还增强了模型的学习效率。
在传统的强化学习中,存在两类主要算法:一类基于值函数(如Q-learning),另一类基于策略搜索(如Policy Gradient)。对于离散动作空间的问题,DQN(Deep Q-Networks)已经证明了其有效性;但对于连续动作空间,直接应用这些方法往往效果不佳。因此,研究人员提出了DDPG来专门应对这一类问题。DDPG借鉴了DPG(Deterministic Policy Gradient)的思想,后者通过直接优化行动而不是概率分布来简化学习过程,并且避免了在高维动作空间内进行昂贵的积分运算。此外,DDPG还吸收了DQN中的经验回放和软更新目标网络的技术,以确保更稳定的性能。
DDPG的核心构成
(1)Actor-Critic 架构
DDPG采用了强化学习中经典的Actor-Critic结构,其中:
Actor:动作头,负责根据当前状态选择最佳动作。具体来说,它是一个神经网络,输入为环境的状态信息,输出则为执行的动作向量。
Critic:价值头,评估所选动作的好坏程度,即计算该动作的价值或预期回报。同样地,这也由一个独立的神经网络实现,接收状态及动作作为输入,输出预测的Q值。
a. Actor网络:确定性策略梯度定理(DPG)
总结下,DDPG使用Actor-Critic架构,其中Actor(策略网络)负责选择动作,Critic(价值网络)负责评估动作的好坏。为了提高样本利用率和训练稳定性,DDPG使用经验回放机制,从经验池中随机抽取样本进行训练。为了进一步稳定训练过程,DDPG引入了目标网络,即缓慢更新的网络,用于提供更稳定的梯度估计。
具体参考:
b. Critic网络:Q-learning更新
Q-Learning是一种无模型(model-free)、基于值的强化学习算法,旨在学习从状态-动作对到预期未来奖励的映射。经典的Q-Learning适用于离散动作空间,并通过迭代地更新Q值表来实现。然而,在连续动作空间下,直接应用Q-Learning变得不可行,因为无法为每个可能的动作存储和更新Q值。因此,我们转而采用函数逼近的方法,如神经网络,来表示Q函数。在DDPG(Deep Deterministic Policy Gradient)等算法中,Critic网络是一个深度神经网络,它接受当前的状态st和动作at作为输入,并输出一个标量值Q,这个值代表了执行动作at后从状态st开始可以获得的预期累积奖励。Critic网络的参数θ是通过最小化损失函数来进行更新的,最常用的损失函数是均方误差(MSE),定义如下:θQ
D是经验回放池,y是目标值,也称为TD目标(Temporal Difference Target),用于指导Critic网络的学习。对于非最终状态s‘,TD目标y计算公式为:
为了提高训练稳定性,DDPG引入了软更新机制,即目标Critic网络Q’,的参数并不是立即跟随主Critic网络的变化,而是按照以下方式缓慢更新:
这里的ττ 是一个小于1的正数,类似学习率,决定了更新的速度。Critic网络的Q-learning更新过程涉及到计算TD目标并与实际预测的Q值之间的差异,以此来调整网络权重,使其更好地反映真实的价值。同时,通过引入目标网络和软更新机制,可以进一步提升学习过程的稳定性和收敛性。这种方法不仅适用于DDPG,还广泛应用于其他结合了Actor-Critic结构的深度强化学习算法中。
(2) 经验回放(Experience Replay)
为了打破数据之间的相关性和提高样本利用率,DDPG利用了一个称为“经验回放”的技术。所有经历过的交互事件(包括状态、采取的动作、收到的奖励以及下一个状态)都会被存储在一个缓冲区内。当需要更新参数时,系统会从这个池子里随机抽取一批样本来训练,从而保证了每一轮迭代都能接触到足够多样化的数据点。通过这种方式,经验回放可以确保用于训练的数据集满足独立同分布的要求,从而有助于稳定和加速学习过程。其主要是解决两个关键问题:一是打破连续样本之间的相关性,二是提高数据的利用效率。
经验回放的基本思想很简单:智能体与环境交互产生的每一条经验(状态、动作、奖励和下一个状态)都会被存储在经验池数据结构中。当需要更新智能体的行为策略时,不是直接使用最近获得的经验,而是从这个经验池中随机抽取一批经验进行训练。经验回放还涉及到计算目标Q值的过程。
除了上述标准的经验回放机制外,还有基于优先级的经验回放(Prioritized Experience Replay, PER),它根据每条经验的重要程度赋予不同的权重。具体来说,PER通常依据TD误差大小来衡量经验的重要性,并据此调整抽样概率pi:
此外,为了保证公平性,还需要引入重要性采样权重wi来纠正由于非均匀采样带来的偏差:
(3)目标网络(Target Networks)
为了避免快速变化的目标导致学习不稳定,DDPG引入了两个额外的目标网络——分别对应于Actor和Critic。它们的作用是提供相对固定的基准,使得主网络可以更加平滑地调整自己的权重。值得注意的是,这些目标网络并不是完全静止不变的,而是按照一定比例缓慢地跟随主网络的变化,这就是所谓的“软更新”策略。
在标准的Q-learning框架下,智能体根据当前策略选择动作,并使用贝尔曼方程来更新其对状态-动作对价值的估计。然而,在深度Q网络中,由于神经网络参数不断变化,直接基于同一网络计算的目标Q值也会随之改变,这可能导致训练过程中出现不稳定的情况。为此,引入了目标网络的概念:即创建一个与在线网络(online Network)结构相同但参数不同的副本,用以生成相对稳定的目标Q值。这个目标网络仅每隔固定的时间间隔或经过一定数量的训练步骤后才从在线网络复制最新的参数,从而保持一段时间内的稳定性。
对于给定的经验其中stst表示当前状态,at是采取的动作,rt是即时奖励,而st+1代表下一时刻的状态,目标Q值yi可以按照如下方式定义:
其中,γ是折扣因子,θ−表示目标网络的参数。意味着目标Q值是由即时奖励rt加上根据目标网络预测的最大未来奖励构成的。这样做有助于防止目标值频繁变动,因为目标网络的参数并不是实时更新的。为了更新在线网络的参数θ,我们通常最小化预测Q值Q(st,at;θ)与上述定义的目标Q值yi之间的均方误差(Mean Squared Error, MSE),即损失函数L(θ):
期望E[⋅]是对经验回放缓冲区中的所有样本求平均的结果。通过反向传播算法调整在线网络的权重,使其输出的Q值尽可能接近目标Q值,进而优化策略。
目标网络的参数更新有两种常见的方式:硬更新(Hard Update)和软更新(Soft Update)。硬更新是指在特定的时间点完全复制在线网络的参数到目标网络;而软更新则是逐步将在线网络的部分信息转移到目标网络,公式如下:软更新方法允许目标网络平滑过渡,减少了突然变化带来的潜在不稳定因素。相比之下,硬更新可能会导致短暂的性能下降,但它能确保目标网络始终反映最新学到的知识。双重Q学习(Double Q-Learning):虽然目标网络能够有效缓解自举造成的偏差传播问题,但对于最大化操作引起的高估现象并无太大帮助。因此,研究人员提出了双重Q学习(Double DQN),该方法通过分离动作选择和价值评估来减轻这种高估的影响。具体而言,在计算TD目标时,首先利用在线网络选择最优动作a∗=argmaxaQ(st+1,a;θ),然后使用目标网络评估该动作的价值Q(st+1,a∗;θ−)。这样做的好处是可以避免单一网络同时负责动作选择和价值估计所带来的偏差。
(4) 噪声探索(Noise Exploration)
由于DDPG使用的是确定性的策略,这意味着给定相同状态下总是会产生相同的动作,这可能会限制探索能力。为此,在训练阶段,会在Actor网络输出的动作上添加一些噪声(例如Ornstein-Uhlenbeck过程产生的噪声),通过在决策过程中引入随机性以此鼓励智能体尝试不同的行为路径,来帮助智能体发现新的、可能更有利的行为,增加发现更好解决方案的机会。下面介绍几种主要的噪声探索方法及其背后的数学原理。
ε-贪婪策略(ε-Greedy)
虽然不是严格意义上的“噪声”,但ε-贪婪是一种广泛使用的简单探索策略,其中智能体以概率ε选择一个随机动作,以1-ε的概率选择当前估计的最佳动作。这提供了一种在探索和利用之间取得平衡的方式。
高斯噪声(Gaussian Noise)
对于连续动作空间,一种常见的做法是在智能体的动作输出上添加高斯噪声。这种噪声通常是从零均值正态分布中抽取的样本,可以确保动作有一定的随机性,同时保持动作的平滑变化。公式如下所示:
这里πθ(s)是由策略网络根据状态s输出的动作,N(0,σ^2)表示从均值为0、方差为σ^2的高斯分布中抽取的随机数。
Ornstein-Uhlenbeck (OU) 噪声
其过程产生的噪声具有时间上的相关性,适合模拟物理系统中的惯性效应。其离散形式如下:
这里θθ控制均值回归的速度,μ是长期平均值,σ决定了波动幅度,而ηt是标准正态分布的随机变量。在应用到动作空间时,可以将xt解释为加到原始动作上的噪声。
NoisyNet
NoisyNet 是一种直接在网络权重中引入参数化噪声的方法,旨在替代传统的探索机制如ε-贪婪。具体地,在每个线性层中,权重w被分解为两个部分:固定的参数μ_w和可训练的噪声比例σ_w,以及采样自特定分布的噪声向量ε_w。这样做的好处是可以使网络自动调整噪声强度,并且几乎不会增加计算成本。
这里的⊙表示逐元素乘法,ε_w,ε_b是独立同分布的噪声样本,比如因子化的高斯噪声或伯努利噪声。
元强化学习(meta-Reinforcement Learning)
在元强化学习中,有一种称为MAESN(meta-Agent with Exploration Strategies Network)的方法,它试图学习最优的探索策略,这些策略可以适应不同的任务和环境。这种方法允许智能体从过去的经验中学到如何更有效地探索,从而提高学习效率。
噪声探索方法论的选择取决于具体的任务需求和所使用的强化学习框架。例如,对于连续动作空间的任务,OU噪声可能是更好的选择;而对于离散动作空间,ε-贪婪策略更为常见。NoisyNet则提供了一种内在激励式的探索方式,尤其适用于深度强化学习场景。
4. 技术难点与挑战
尽管端到端算法展示了巨大的潜力,但实际应用过程中仍面临诸多困难:
数据获取难度大:高质量标注的数据集对于训练有效模型至关重要,然而收集足够量级且覆盖广泛工况的数据并非易事。以具有一定规模产品的大型企业来说获取高置信数据是比较有优势的,同时这类数据也存在很多的不良数据(脏数据),需要大量的工作区筛选数据、清洗数据。通过AI的仿真的数据也是一种思路和方法,但是训练的效果的底层的逻辑还存在时间验证,毕竟,从本质上讲,仿真数据训练模型还是属于不同功能AI之间的“教育”或者信息传递,依然受限于生成主体的能力上限。
模型解释性差:黑箱性质使得难以确切知道模型为何作出特定决定,这对于安全性要求极高的交通领域尤为关键。
实时性与计算资源消耗:为了保证响应速度,往往需要强大的硬件支持,增加了部署成本。
5. 总结
综上所述,端到端自动驾驶算法正处于快速发展阶段,虽然已经取得了一定成就,但仍有许多开放性问题等待解决。未来的研究方向可能包括但不限于:
来源:汽车未来科技Lab