朱 坚,宋晓茹,高 嵩,高泽鹏
(西安工业大学 电子信息工程学院,西安710021)
车辆的普及带来了很多的交通安全问题。根据国家统计局的统计数据,平均每年发生交通事故近20000 起。随着科技的发展,无人驾驶[1-3]作为汽车新的研究热点,新的智能算法[4]在无人的控制方面有了更加广泛的应用。
在无人驾驶汽车的各个部分中,行为决策是最关键的一部分。文献[5-6]使用A* 算法实现机器人的控制,A*算法虽然从理论上来说,可以得到最优时间路径,但是如果是在情况比较复杂的情况下,计算量是非常庞大的,A*算法是无法处理的。文献[7]采用Dijkstra 算法实现最短路径的求解, 该算法简单明了,能够得到最优解,但是效率比较低,特别是在实际情况下,并不需要求得最优的解,并且运算占用空间大。文献[8-9]使用的是粒子群算法,该算法虽然搜索速度快,但是对离散的问题处理效果不佳。
上述文献中基本使用建立栅格地图的方式来进行算法仿真,并不能看出算法在实际道路下的情况,因此本文使用TORCS[10]无人车模拟器实现对算法的仿真。TORCS 无人车仿真平台,内部集成了各种各样的精确的车辆动力学模型和赛道,与建立栅格地图的方法相比,一方面环境更加复杂,由二维平面变为三维地图, 并且算法处理的数据更加庞大,计算量也大大提高,所以使用TORCS 模拟器更能体现出算法在实际情况下的表现,并且还不用考虑安全性问题。
由于传统的路径规划算法,如A* 算法,Dijkstra算法等,其决策方式是一个典型的有限状态机,只能采取保守的驾驶策略,需要人为设计精确的规则来应对复杂多状态的各种情况,如果其算法模型的参数设置精度不够,那么在实际情况下将无法达到较好的效果,也就无法实验无人车的快速控制。基于此。本文使用DDPG 算法实现无人车的控制,文献[11]提出了一种新的多目标车辆跟随决策算法,解决了已有算法泛化性和舒适性差的问题。文献[12]将模仿学习(IL)和DDPG 相结合,加快了强化学习的训练过程。
仿真结果表明,改进后的DDPG 算法,可以解决传统算法解决不了的计算量大、占用运算空间多、对离散问题处理效果不佳等问题,与未改进前的算法相比,在无人车的自动控制方面有更好的表现。
DDPG(Deep Deterministic Policy Gradient)算法,其算法原理在本质上是Actor-Critic 算法和DQN(Deep Q-Learning Network)算法的结合体。
DDPG 算法一方面使用了和DQN 算法中相同的经验池和双网络结构来促进神经网络的学习;而算法中的“Deterministic”表示Actor 网络不再输出两个动作的概率,而是一个具体的值。
如图1 所示, 算法原理的另一部分和Actor-Critic 算法相同,DDPG 算法有一个Actor 网络和Critic 网络,Actor 网络和Critic 网络都有目标值网络(Target-net)和估计值网络(Eval-net)。只需要训练两个Eval-net 的网络参数,而Target-net 网络的参数是由前面两个网络每隔一定的时间复制过去得到。
图1 DDPG 算法原理结构Fig.1 DDPG algorithm principle structure
Critic 网络的更新公式为
Actor 网络的更新公式
Actor 网络和Critic 的网络参数,是通过网络的梯度进行更新的。Actor 网络的梯度用Grand(μ)表示,Critic 网络的梯度由Grand(Q)表示。关于Actor网络的更新, 其参数的更新一方面是从Critic 网络得到的,通过Grand(Q)该梯度的正负和大小,得到Actor 网络的更新方向;而Grand(μ)来自Actor 网络本身,这两个参数相结合,表示Actor 网络要朝着获得最大Q 值的方向来修正网络的参数。
为了使模型可以快速学习和更新为网络参数,提高算法的探索能力,求取到最优解,因此采用不断衰减噪声信号的方法来改进OU 过程。
Ornstein-Uhlenbeck 过程 (也称为OU 过程)是一种序贯相关的过程, 在DDPG 中用于实现RL 的探索,OU 过程满足如下的随机微分方程:
式中:θ>0;μ,σ>0 为参数;Wt为维纳过程。
在代码实现中:
式中:W 为满足正态分布的一个随机数。
改进后的计算方法为在训练一开始,给noise设定一个较大的值, 然后随着训练步骤衰减noise,可以使得模型快速学习网络的参数,快速找到算法的最优解。
TORCS 无人车仿真平台,内部集成了各种各样的精确的车辆动力学模型和赛道,并且可以获得仿真环境下所有车辆的真实数据。
Actor 网络结构如图2 所示,Critic 网络结构如图3 所示。
图2 Actor 网络结构设计Fig.2 Design of Actor network structure
图3 Critic 网络结构设计Fig.3 Design of Critic network structure
TORCS 模拟器中主要监测无人车的三部分:方向,油门,刹车,在网络结构中将此三部分做为网络结构中平行的三个部分,然后将这三部分的输出进行连接,作为整个神经网络的输出,从而形成Actor网络的网络结构模型(Actor-model)。
而Critic 网络,将状态值和动作值分别输入到网络层中,将输出连接后输入另一个网络层中,形成Critic 网络的网络结构模型(Output_Critic-model)。
网络的参数是通过梯度下降的方式进行训练调整的。学习率的设置会大大影响网络的学习速度。
梯度下降公式为
当α 设置过大, 梯度可能会在最小值附近震荡,甚至可能无法收敛;当α 设置过小时,收敛速度会非常缓慢。通过同时调整Actor 网络和Critic 网络的学习率,使的无人车能更快的自主学习调整网络参数。
2.1.1 仿真平台
TORCS 是一个开源的赛车仿真模器,通过UDP协议进行通信。客户端(Client)可以向服务器(Server)发送数据请求,并根据得到的传感数据进行车辆的控制,控制效果由TORCS 进行3D 可视化。这一框架可以灵活地控制 TORCS 平台仿真的开始和终止,并可方便地获取车辆的状态(图像和其他传感)信息,根据所获信息实现车辆控制,基本满足了深度强化学习策略训练需要的所有条件。TORCS 模拟器框架如图4 所示,模拟器道路如图5 所示。
图4 TORCS 模拟器框架Fig.4 TORCS simulator framework
图5 TORCS 模拟器道路Fig.5 TORCS simulator road
2.1.2 软件版本
本文使用python 版本是3.5.2,tensorflow 版本是1.4.0,keras 版本是2.2.5,另外还有一些常见的python 包。
基于以上论述, 本文将首先调整网络参数,然后在网络参数相同的情况下,对改进前后的算法进行仿真,观察算法的收敛速度。
为了提高网络的学习速度,本文中对主要的参数进行测试,观察参数的变化情况对实验结果的影响, 从而选择最合适的参数进行网络的训练。表1中ALR(Actor network learning rate)表示Actor 网络的学习率,CLR(Critic network learning rate)表示Critic 网络的学习率,TAU(Target Network HyperParameters)表示目标网络的超参数,GAMMA 为衰减因子。经过测试,本文网络主要参数设置如表1 所示。
表1 主要参数表Tab.1 List of main parameters
未改进算法的误差曲线如图6 所示,奖励曲线如图7 所示。由测试结果来看,未改进的DDPG 算法在TORCS 模拟器上表现并没有较好的表现,而经过改进算法之后, 代价曲线可以实现快速的收敛,快速实现赛车的控制。
图6 DDPG 误差曲线图Fig.6 DDPG error graph
图7 DDPG 奖励曲线Fig.7 DDPG reward graph
由以上仿真结果看出,控制效果并不理想。图8和图9 为改进后算法的仿真结果,改进后的算法可以实现快速的收敛,达到较好的训练效果。算法与改进前的情况相比,代价曲线在较短的时间内快速收敛, 同时奖励函数曲线达到一个较为稳定的值;而在改进前, 在相同的参数设置和实验环境下,由仿真的代价曲线和奖励曲线来看,无法达到较为理想的实验效果。由仿真结果可以看出,改进后的算法在无人车控制的快速性上有了显著提高。
图8 改进后DDPG 代价曲线图Fig.8 Improved DDPG cost curve
图9 改进DDPG 奖励曲线Fig.9 Improved DDPG reward curve
实验仿真的对比结果如表2 所示。
表2 改进前后收敛步数的对比Tab.2 Comparison of the number of convergent steps before and after improvement
基于深度强化学习的无人车控制方法,避免了传统无人车控制方法手动调参, 耗时费力的弊端。同时在OU 噪声和网络结构两个方面的调整, 并将其与该进前的算法进行比较,通过实验对算法模型进行仿真。在TORCS 模拟器上实验结果表明,在实验环境、网络参数、训练步骤完全相同的情况下,与未改进的算法相比,改进后的算法在控制的快速性上有了明显的提高。