基于深度确定性梯度算法的端到端自动驾驶策略

2023-02-27 07:26赖晨光杨小青庞玉涵
关键词:状态函数动作

赖晨光,杨小青,胡 博, 庞玉涵, 邹 宏

(1.重庆理工大学 汽车零部件制造及检测技术教育部重点实验室, 重庆 400054; 2.重庆理工大学 车辆工程学院, 重庆 400054)

0 引言

近年来,汽车领域迎来了重大变革,由原始的机械制造朝着智能化方向发展,全球许多知名汽车生产制造企业大量投资到智能驾驶技术领域。而大多数的智能驾驶系统采用高度模块化的设计方法,其优点是拥有很强的可解释性,不过,对于复杂的城市道路,控制器的参数数目庞大,即使采取自适应的参数调节,通常也受限于模型的表达能力,鲁棒性难以得到保证。

2016年,Nvidia团队通过监督学习首次实现了智能驾驶的端到端控制输出,该算法以RGB视频图像作为输入,省略了中间感知、决策、控制等环节,直接输出方向、油门、制动等动作[1]。虽然使用监督学习训练的模型在大部分的环境下有良好的行驶表现,但需要体量庞大的人工标注的数据。

本文同样针对智能驾驶提出了一个端到端的控制方法,不同的是,采取深度强化学习算法,避免了大量的人工标注数据的工作。除此之外,鉴于强化学习算法在训练的过程中会采取大量的随机动作来探索环境,从而导致小车时常处于比较危险的状态[2]。因此,本文在深度强化学习算法的基础上添加了一个干预智能体危险动作的监督器,从而减少强化学习危险的试错行为,同时提升训练效率。

1 深度强化学习理论及算法

1.1 强化学习

基本的强化学习过程如图1所示,不同于监督学习,它通过试错的机制,使智能体与外界环境进行交互获得奖励来指导每一步行为动作,从而最大化累积奖励[3]。

图1 强化学习过程示意图

根据优化的目标分类,强化学习可以分为基于值函数的优化算法和基于策略的优化算法[4]。基于值函数的算法以最大化状态值函数或动作值函数为优化目标,最终找到最优策略;基于策略搜索的强化学习算法直接将策略参数化,并对策略函数求导,利用梯度法最大化累积回报[5]。基于值函数的强化学习难以处理输出为连续值的问题,而优点是能找到全局最优;基于策略搜索的强化学习尽管可以解决连续动作输出问题,但容易陷入局部最优[6]。

1.1.1马尔可夫决策过程概述

马尔可夫性是指在知道过去和现在一切状态的条件下,对将来的状况仅仅决定于当前的状态。若存在一个状态序列,该序列中的每个状态都满足了马尔可夫性质,则该状态序列被称为马尔可夫过程[7]。综上所述,马尔科夫决策过程(markov decision process,MDP)便可以用元组(S,A,P,R,γ)来描述,其中:S代表有限状态序列集;A代表有限动作序列集;P为状态转移概率;R为奖励函数;γ为折扣系数。

在与环境交互的过程中,智能体从时刻t开始到未来执行的所有动作之后,能获得的累积奖励Gt为:

(1)

1.1.2基于值函数的优化算法

值函数分为状态值函数vπ(s)和动作值函数

Qπ(s),在遵循策略π,状态值函数的定义为:

vπ(s)=Επ[Gt|St=s]

(2)

动作值函数的定义为:

Qπ(s,a)=Επ[Gt|St=s,At=a]

(3)

根据状态的马尔可夫性,最优状态值函数和最优动作值函数分别为:

(4)

(5)

在已知最优状态值函数或者最优动作值函数之后,可以通过最大化最优状态值函数或最优动作值函数获得最优策略。

1.1.3基于策略的优化算法

基于策略的优化算法广泛应用于连续空间的强化学习问题中。其主要思想是将策略π参数化,计算出关于动作的策略梯度,然后沿着梯度的方向,反复以小幅度调整动作,经过多次训练,最终得到最优策略[8]。

策略分为随机性策略和确定性策略。随机性策略是指:在状态s下,动作a是一个概率分布函数。因此,即使是在相同的状态下,也可能会有不同的动作;而确定性策略则是每个状态只对应唯一的动作[9]。

同样地,策略梯度也分为随机性策略梯度和确定性策略梯度。Sutton等[10]推导出了随机性策略梯度的公式:

▽θL(πθ)=Εs~ρπ,a~πθ[▽θlogπθ(a|s)Qπ(s,a)]

(6)

而后,Silver等[11]提出并证明了确定性策略梯度的公式:

▽θL(μθ)=Εs~ρμ[▽θμθ(s)▽aQμ(s,a)|a=μθ(s)]

(7)

此后,确定性策略梯度方法得以流行。

1.1.4深度确定性策略梯度算法

深度确定性策略梯度算法(deep deterministic policy gradient,DDPG)结合了强化学习中基于值函数和基于策略的求解方法,是深度Q网络(deep Q network,DQN)的延伸[12],其包含了actor网络和critic网络,两者都是深度神经网络,actor网络的作用是生成动作,将状态s映射为动作a[13];critic网络的作用是评价动作的好坏,其输入有状态s和动作a,输出的是动作值函数Q,其功能类似于DQN网络[14]。与DQN一样,DDPG同样采用了经验回放打破样本之间的相关性,也复制了一个目标网络作为原网络的逼近对象[15],其算法伪代码如下:

Algorithm DDPG

1 初始化actor网络参数θμ和critic网络θQ;

2 初始化目标网络θμ′、θQ′;

3 初始化经验回放池R,初始化状态s0;

4 For episode=1,…,Mdo:

5 Fort=0,…,T:

6 Fort=0,…,Tdo:

(1) 选择动作at,执行动作at,获取rt、at+1;

(2) 将经验〈st,at,rt,st+1〉存到经验池R;

(3) 从R中采样大小为N的经验数据transition:〈st,at,rt,st+1〉;

(4) 根据transition计算TD target:

yi=ri+γQ′(si+1,μ′(si+1|θμ′)|θQ′)

(6) 计算策略梯度:

▽θμμ(s|θμ)|s=si)

(7) 更新actor网络;

(8) 更新目标网络;

7 End for

8 End for

2 基于DDPG的自动驾驶控制策略

2.1 研究对象和研究方案

本文以Carla模拟器作为实验的仿真环境,并通过DDPG算法对虚拟无人车的控制策略展开了研究,不同于传统感知-决策-控制的方案,本文提供了一种端到端的无人车控制方法[16]。

2.1.1仿真环境介绍

Carla是一款城市环境的无人驾驶仿真器,由Intel Labs、Toyota Research Institute和UBA Computer Vision Center联合开发,支持无人驾驶系统的开发、训练和验证[17]。

Carla添加了各种天气特征到仿真环境中,并且考虑了真实的光照情况,最大限度还原真实驾驶过程。另外,开发者还能够按照自己的实际需要灵活选择地图、汽车、行人、交通标志等。除此之外,Carla还提供了许多常见的传感器,如广角摄像机、激光雷达、GPS等,且开放了Python接口供开发者完成各项配置。

Carla系统为评价算法提供了一个标准的评估框架,便于开发者对各种算法进行统一评测。评估标准(driving benchmark)包括算法(Agent)和实验包(experiment suite)组成。该算法由研究者自我封装,然后在实验包的环境上进行测试实验,测试过程中可以根据需要记录待评估选项的分数(recording)以及进行性能计算(metrics)。

性能计算包括任务完成的分数、任务平均完成度以及违反驾驶行为的分数。成功完成任务的分数根据指定了任务回合的数量计算;任务平均完成度根据每一个回合已经行驶的距离计算;违规驾驶考虑了偏离道路(offroad)、偏离车道(otherlane)、碰撞(collision)等情况。

2.1.2研究方案设计

本文通过DDPG算法在Carla仿真器中完成虚拟无人车自动驾驶的车道保持决策控制任务,车道保持是指虚拟无人车沿着一条车道驾驶,在交叉路口时,随机选择行驶方向。该任务的要求是:保证无人车在本车道内行驶,并最低限度地发生违规驾驶。仿真训练的地图Town01如图2。

图2 Carla环境Town01地图

训练过程中,每一个新回合,小车都被放置在Town01中的一个随机的开始位置,其他车辆和行人也位于新的随机位置。环境中的车辆数目为20,行人数量为40,天气为晴朗(weather TD=1)。

DDPG算法中一共包含4个神经网络,与DQN一样,分为在线网络和目标网络,且2种网络结构一致;同时,DDPG采用的是actor-critic架构,因此,在线网络包含actor在线网络和critic在线网络,目标网络同样如此。其中,actor在线网络和critic在线网络模型如图3、4所示。

图3 actor在线网络示意图

图4 critic在线网络示意图

Actor在线网络的输入状态包含图像信息和测量信息,图像信息来自无人车正前方的广角摄像机,测量信息包括转向值steer∈[-1,1]、加速值/制动值throttle/brake∈[-1,1]、当前车速、偏离车道线值otherlane∈[0,1]、偏离道路值offroad∈[0,1];输出为二维动作控制向量[action_0, action_1],action∈[-1,1],其中,action_0时,表示转向;action_1>0时,表示油门;action_1<0时,表示刹车。

Critic在线网络除了输入状态外,还包含由actor网络输出的动作;输出为该状态下采取某一动作的Q值,即动作值函数。

由于强化学习通过试错机制探索环境,因此,智能体在前期的训练中,时常会在已经偏离车道线或道路的情况下,依然采取与上一时刻相同的转向值,这样的无效训练使智能体在训练前期花更多时间去探索。为了提高智能体前期的训练效率,尽可能减少强化学习的试错成本,在原DDPG算法的基础上,对其进行改进,其中,仿真环境、网络结构与原DDPG算法保持一致,如图5所示。

图5 监督式DDPG示意图

智能体的actor网络输出控制动作,监督器会根据前一时刻的状态来判断是否对智能体输出的动作进行强制干预,其具体规则为:

1) 若上一时刻状态测量信息中的偏离车道线值或偏离道路值大于0,则转向值将变为:

action_0′=action_0-0.5×prev_action[′steer′]

(8)

其中,pre_action[′steer′]为上一时刻的转向值。

2) 若上一时刻状态测量信息中的速度小于0,则加速值和制动值分别为:

throttle′=throttle+0.5

(9)

brake′=0

(10)

2.2 仿真过程

2.2.1超参数设置

实验中的超参数设置如表1所示。

表1 超参数设置

MAX_EPISODES为训练的总回合数;MAX_STEPS_EPISODE 为一回合训练的最大步数;WARMUP_STEPS为热身的步数,即在这之前为数据收集阶段,热身步数之后开始训练网络的参数;GAMMA为计算累积回报值时的折扣系数;TAU为target 网络更新时的参数;BUFFER_SIZE为回放经验池的尺寸大小;OU_THETA、OU_MU、OU_SIGMA为OU噪声的参数;MINI_BATCH_SIZE为批训练的数据量;EVAL_PERIODS为算法评估的频率,即每隔100个回合评估一次算法;EVAL_EPISODES为评估持续的时间,即每次评估持续10个回合。EXPLORATION_EPISODES为探索阶段,即在这之前会在actor网络输出的动作上加入OU噪声,以增加动作输出的多样性。

2.2.2图像预处理

图像来自于安装在车辆正前方的广角摄像机,本文选择的图像类型是Carla中的Scene Final图像。本小节首先将图像剪裁为800×280,去掉了图像中的无关要素,然后进行像素重采样,重采样后的大小为88×200。

2.2.3奖励函数的设计

在强化学习中,奖励函数的作用不言而喻,不仅影响着算法的收敛速度,也是该算法能否成功的关键一环。奖励函数引导着智能体做出正确的决定,直接决定了智能体能否学习到正确策略。自动驾驶中的奖励函数应该根据各种驾驶状况的优劣来定义奖励函数,从而使智能体能更快更好地学习到好的驾驶策略。针对本次驾驶任务,本文奖励函数设置如下:

1) 碰撞项Rc。包括碰撞车、行人、建筑物等其他物体,都会给予一个大的负向奖励:

Rc=-100Ct

(11)

式中:Ct=0代表没有碰撞情况发生,Ct=1代表有碰撞情况发生。

2) 车速项Rv。该项因素是为了奖励能在限制速度以内向前行驶,同时对负向速度和超速的行为给予一个负向奖励:

(12)

式中:Vt代表无人车的当前速度;此实验中设置了一个限速的变量Vlimit,当无人车的行驶速度小于当前道路的限速时,会得到一个正向的奖励值,该奖励值与当前的速度一致;当然,若该速度值为负时,则奖励值相应也会变成负向的奖励值;当无人车的行驶速度大于当前道路的限制速度时,则会给予一个负向值的奖励,该值等于行驶速度与限速之差。

3) 偏离当前道路项Rs。该项因素是为了对超出道路这一状况给予负向的奖励值,同时,对于完全行驶出道路之外的情况,会强制终止这一回合的训练:

(13)

式中:St代表无人车偏离道路的量,St∈[0,1],当该值小于1时,会给予一个负向的奖励,该奖励值与偏移的量成正比;当该值等于1时,即无人车已经完全开出道路以外,会给予一个大的负向奖励,并且强制结束这一回合的训练。

4) 偏离车道线Ro。该项因素是考虑到无人车行驶过程中偏离车道线的情况:

Ro=-5Ot

(14)

式中:Ot代表无人车偏离车道线的量,Ot∈[0,1],其奖励值与偏移车道线的量成正比。

5) 当前时刻与上一时刻行驶距离差项Rd。该项因素是为了防止无人车停滞不前,鼓励小车向前行驶:

Rd=-5dt

(15)

式中:dt=1代表距离当前时刻与上一时刻之间行驶的距离差小于0.1 m,dt=0代表距离差大于 0.1 m。

6) 转向项Rsteer。此向奖励函数则是出于舒适性的考量:

Rsteer=-10abs(steer)2

(16)

式中:steer代表无人车的转向值,steer∈[-1,1],由于大的转向值会造成较低的舒适性,因此该项奖励值为一个负向奖励,其值与转向值的平方成正比。

综上所述,实验中的奖励函数一共包含6项,具体为:

R=Rc+Rt+Rs+Ro+Rd+Rsteer

(17)

2.2.4回合终止的条件设置

回合终止的条件设置主要考虑2种情况:① 发生了实际行车中难以承受的错误和完成了指定任务。如无人车撞上了建筑物而停滞不前,使得智能体一直存储一些无用的状态转移(transition)数据,且难以探索新的环境,导致后续的训练难以进行。② 达到了训练的回合数也会停止训练。具体终止条件设置如下:

1) 车辆发生碰撞情况。

2) 整个车处于非行驶区域(道路以外)。

3) 当reward_time≥100。每一次新的回合会初始化reward_time=0,当前进速度小于0时,会增加值为5的reward_time,当上一时间步与当前时间步距离之差小于0.1 m时,会增加值为1的reward_time。当该值大于等于100时,会终止该回合的训练,这样的设置是为了防止小车长时间无明显的位移变化。

4) 达到一回合训练的最大步数MAX_STEPS_EPISODE=5 000。

2.3 仿真结果与分析

DDPG智能体以及监督式DDPG智能体在地图Town01中分别训练了70 000个回合,其实验条件与实验设置均保持一致,最终训练结果如图6、7所示。

图6 平均奖励变化曲线

图6中的2条曲线分别表示2种算法每一回合平均回报的变化。从图中可以看出,在训练的初始阶段,监督式DDPG算法的平均回报明显高于原始DDPG算法,而随着训练次数的增加,两者逐渐靠近,最后均收敛于同一平均值。图7的2条曲线为2种算法每一回合的累积回报的变化,其中,监督式DDPG算法在30 000回合以前,累积回报值均在0以下,表明这时的奖励值以负向奖励居多, 而原DDPG算法的负向奖励持续到了 38 000回合。在训练初期,小车还处于环境摸索中,时常发生碰撞、越线、原地不动等情况,这些不好的状态都会使小车得到比较大的负向奖励。不过,一旦小车开始得到正向奖励,其训练效果便会发生质的提升。

图7 累积奖励变化曲线

根据训练得到的网络模型,分别在地图Town01和地图Town02中制定了不同驾驶任务的测试实验来对该模型进行测评,如图8所示。

图8 任务位置点示意图

测试场景包含地图Town01和地图Town02,从地图上的A点行驶到B点,驾驶任务的变量有天气和环境中的汽车和行人数量。2个地图测试路线均包含了2个直角拐弯。由于第1个地图也是训练场景,因此,测试实验中的行驶路线比第2个地图的行驶路线更为苛刻一些,根据图8(a)所示,除了两者都包含的2个直角拐弯之外,中间还包括了3个岔路口。考虑到未在Town02中进行训练,因此,其行驶路线只有2个直角拐弯。

在地图Town01中,天气为晴朗(weather ID=1)和雨后(weather ID=3),DDPG和监督式 DDPG的测试结果如表2、3所示。

表2 DDPG Town01测试结果

表3 监督式 DDPG Town01测试结果

根据表2、3,监督式 DDPG与DDPG在地图Town01中的总体表现相差不大,均能在静态的环境中出色地完成驾驶任务。即使天气有所改变,驾驶效果也没有明显变化;然而,当环境中出现行人和车辆这样的动态因素时,两者的表现均有明显下降,尤其在增加车辆行人且改变天气之后,2种算法的驾驶表现均出现了显著下滑,可以看出,相比于天气,智能体对环境中的动态因素变化更敏感。

而在地图Town02中,天气为晴朗(weather ID=1)和雨后(weather ID=3),DDPG和监督式 DDPG的测试结果如表4、5所示。

表4 DDPG Town02测试结果

表5 监督式DDPG Town02测试结果

根据表4、5所示,同样地,监督式 DDPG和DDPG算法在Town02中总体表现无明显优劣。不过,在面对新的环境时,2种算法的智能体均未能得到适应,在新环境中几乎无法正常驾驶,驾驶违规频频发生,危险的碰撞行为也层出不穷。其原因可归结为神经网络表征能力不够,算法泛化能力不足,导致无法有效地迁移到陌生的驾驶环境中。

3 结论

采用深度强化学习算法,以端到端的方式实现了对虚拟无人车的控制。训练结果表明,原始DDPG算法以及监督式DDPG算法最终均能达到一致的效果,能够有效避开障碍,在没有违规驾驶的条件下保持在车道内行驶。并且监督式DDPG算法能有效提升前期训练效果,降低初期试错风险,能更早地收敛。测评结果表明,环境中动态因素对无人车驾驶效果的影响远远大于天气因素。其次,当将该模型迁移到新的环境中进行驾驶仿真时,小车几乎不能正常行驶,因此,模型的迁移能力不足。

本文改进的基于监督式的DDPG算法只提供了粗略的动作矫正,意在改善提升其前期的训练效率,而并非最终的效果。

由于强化学习是通过不断试错寻找最优解,所以在游戏等虚拟场景中能大放异彩,然而,在实际环境中,让车采取随机策略、通过试错得到正确的控制策略显然不可能。因此,智能驾驶中使用强化学习技术一般情况下会事先在仿真环境下进行模拟训练。本文完成了在仿真环境下的自动驾驶实验, 而通过加入监督器干预智能体的危险动作这一方法,可为端到端的智能驾驶控制提供一些参考价值,以及对强化学习从虚拟到现实提供一定的借鉴意义。

同时,本文的研究还存在一些不足之处:首先,小车感知力不足,模糊了障碍物和阴影的区别,会出现将阴影错当成障碍物规避的现象;其次,控制效果比较生硬,导致舒适性一般。最后,模型迁移到新环境中时难以正常行驶。因此,进一步提高小车的感知能力与舒适性,以及提高算法的泛化能力将是以后的研究方向。

猜你喜欢
状态函数动作
二次函数
第3讲 “函数”复习精讲
二次函数
函数备考精讲
状态联想
动作描写要具体
生命的另一种状态
坚持是成功前的状态
非同一般的吃饭动作