基于输出层具有噪声的DQN的无人车路径规划*
2023-05-15闫冬梅
李 杨, 闫冬梅, 刘 磊
(1. 河海大学 理学院, 南京 211100;2. 南京邮电大学 现代邮政学院, 南京 211100)
0 引 言
无人车是电子计算机等最新科技成果与现代汽车工业相结合的产物,是集环境感知、规划决策、自主行驶等功能于一体的综合系统,它集中运用计算机、现代传感、信息融合、通讯、人工智能与自动控制等技术,是典型的高新技术综合体.路径规划是无人车自主导航的重要前提,也是无人车完成其他各项任务的基础.路径规划常采用A*算法[1]、遗传算法[2]、蚁群算法[3]、人工势场法[4]等,这些算法在无人车路径规划过程中都需要环境信息.强化学习方法[5-7]的出现以其独特的运行过程和泛化性能解决了众多问题,使得无人车进行路径规划时完全不需要环境信息,通过在训练过程中不断试错,与环境进行交互,采用延迟回报的方式寻找最优动作以获得最优决策能力[8],最终得到规划路径.
针对状态数较少的离散状态下的无人车路径规划,训练一般选取Q-learning算法[9-12],主要通过改进Q-learning算法或修改奖励函数提高算法训练效率.但当状态数较多时,使用此算法进行训练会出现维度爆炸问题,训练和收敛时间较长,成功率也较低.针对连续状态下的无人车路径规划,Q-learning等表格型强化学习(reinforcement learning,RL)算法无法胜任,鉴于神经网络有极强的表达能力[13-14],众多学者使用神经网络代替Q表格,采用DQN(deepQ-network)[15]等深度强化学习(deep reinforcement learning,DRL)算法进行训练研究.为提高算法的性能,一些新颖的训练技巧被应用到DQN中,例如董永峰等[16]通过动态融合DDQN(double deepQ-network)与averaged-DQN的先验知识进行训练,有效降低了过估计的影响,但算法总体迭代次数较多,对算力要求较高.姜兰[17]提出了基于启发式知识的DQN算法,有助于加速神经网络的训练,但该算法在运用启发式知识时只考虑了避障而忽略了路径规划,致使规划路径过于冗余.丁志强[18]以DQN为基础,编程实现了one-hot编码状态映射、缩减浮点数位数、调用SIMD指令集等,最终在路径规划仿真中提高了算法的运行速度.总体来说,上述的多数改进算法都是基于贪婪策略进行探索,为增强DQN算法的探索性能,Fortunato等[19]提出了noisynet-DQN算法,该算法将DQN网络中的线性层替换成噪声层取代传统的贪婪策略, 通过增加较少的计算成本实现探索性能的极大提升, 但是这样将导致算法的不稳定与计算能力的消耗.故本文借鉴noisynet-DQN的思想,在解决探索不足问题的前提下,保证算法的稳定与节省计算成本,并没有在全部全连接层添加噪声,只在输出层中加入Gauss噪声用于无人车避障.
此外,为了提升探索效率,本文将处理连续状态的DQN算法加以变化地应用到离散状态,并选择在输出层添加噪声的三层全连接层作为Q网络,避免了端对端处理模式对算力的依赖.考虑到有限的计算资源和算法落地的需求,本文选择具有可迁移性的Gazebo仿真平台对ROS无人车进行实验仿真.仿真结果显示此算法收敛速度、成功率与平均奖励明显高于Q-learning算法、DQN算法与noisynet_DQN算法, 证明了在此环境下加入单层噪声的轻量级网络的有效性, 并通过测试证明了算法在起始点、 目标点与障碍物方面具有泛化性能.
1 强 化 学 习
1.1 强化学习理论基础
强化学习最初是受到心理学领域关于人类和动物学习方面的影响而形成的.在强化学习中,智能体从外部环境感知状态(st),随后智能体执行某动作(at),该动作改变环境中原来的状态使智能体获得一个新的状态(st+1).在新的状态下,环境产生对智能体当前动作的奖励(rt),此奖励是对动作好坏的评价,随后智能体根据获得的状态和奖励修正动作策略并采取下一个动作,如此反复迭代,与环境通过反馈信息进行交互以获得最大的累积奖励(G=r1+r2+…+rn+…).
1.2 DQN算法
深度强化学习是在强化学习的基础上使用了神经网络,使得原始感官输入映射到原始电机输出成为可能(图1).神经网络具有良好的拟合能力,能够通过简单函数的组成逼近任意的非线性函数.在DQN中,Q网络取代了Q-learning的Q表,将环境状态利用非线性逼近映射成智能体的动作值.
图1 强化学习框架Fig. 1 The reinforcement learning framework
网络架构、网络超参数的选择与学习都在训练阶段(Q网络权重的学习)中完成.在训练过程中,DQN通过经验回放池来获取训练样本,网络的输入是智能体接收到的从环境中传来的状态,输出为智能体所有可能动作的Q值,随后,采用ε-greedy贪婪策略来选择动作并执行以平衡探索与利用之间的关系,环境根据所选动作反馈相应的奖励,定义损失函数为目标Q值与Q值之间的差:
δloss=[r(st,at)+γmaxQ_(st+1,at+1)-Q(st,at)],
(1)
其中,maxQ_(st+1,at+1)表示当状态为st+1时,在动作空间中选取恰当的动作得到的最大的行为值函数,Q_表示目标Q网络.
对误差进行反向传播来更新Q网络的参数,如此不断进行训练,直到误差满足特定条件或者到达迭代次数时学习结束.具体运行流程见文献[15].
2 算法模型设计
2.1 状态空间与动作空间设计
将图片作为输入的端对端算法需要强大的算力支持,将连续状态作为输入的算法计算时间相对较长,考虑到探索效率和算法性能,本实验采用离散化的思想,将连续状态适度离散化为离散状态,并作为算法的输入.状态的各分量划分成确定数量的非重叠区域,不同区域代表着无人车面临的不同环境信息.状态为五维向量,分别为无人车前进方向与目标点的夹角、雷达传感器在4个区域d1,d2,d3,d4中所感知到的障碍物的最近距离,即s=(θ,d1,d2,d3,d4),状态示意图如图2所示.
(a) 状态向量各分量示意图(b) d1~d4区域划分图(a) Schematic diagram of each component of the state vector(b) The zoning plan of d1~d4图2 状态示意图Fig. 2 The state diagram
状态分量具体划分如下所示,共有3×4×4×4×4=768个状态.
本实验的动作空间为A,A中共包含4个动作: 前进、 后退、 右转、 左转, 具体为(0.5 m/s,0.0 rad/s),(-0.5 m/s,0.0 rad/s),(0.1 m/s,0.6 rad/s),(0.1 m/s,-0.6 rad/s),其中第一个分量表示线速度,第二个分量为角速度.
2.2 奖励函数的设置
在强化学习中,奖励函数是任务能否完美解决的重要因素,是无人车在某状态下所采取动作的评价.本实验的目的是使小车从初始点无碰撞且能够快速地到达目标点,故奖励函数的设置考虑到靠近目标点与远离障碍物这两个方面.
本文在文献[16]奖励函数的基础上,加入渐进式的奖励,这样可使小车能够更快地完成任务.具体为:当无人车碰到障碍物时,给予惩罚,奖励为负值;当无人车到达目标点时,给予奖励,奖励为正值.为了促使小车一直向目标点移动,当小车运行一步后与目标点的距离比上一步离目标点的距离更近时,以及当小车进入目标点的某一范围区域内时,给予正值奖励;其余情况给予-2,是为了防止小车出现循环运动获取值为1的奖励.具体如下所示:
(2)
其中,dr_t(t)表示在t时刻无人车与目标点的距离,dr_o(t)表示在t时刻无人车距离障碍物的最近距离,do表示无人车撞到障碍物的阈值,dt表示实验所设定的无人车到达目标点的阈值,dn表示所设定的无人车靠近目标点的阈值.
2.3 输出层具有噪声的DQN算法
对无人车进行路径规划时,当所有可达状态处于可控(能够迭代)并且能存储在计算机RAM中时,Q-learning算法能够很好地完成任务.然而,当环境中的状态数超过计算机容量时,Q-learning算法中的Q表由于状态数过多,容易出现维度爆炸的问题.这时,一般会选取DRL算法来完成任务.
对于本文所设计的仅有768个状态的环境中,若使用Q-learning算法进行路径规划,虽不会出现维度爆炸问题,但状态数过大易导致实验效果较差;若使用复杂的深度强化学习算法,例如DDPG、 PPO等会导致计算机算力成本增加.通过实验发现, 使用网络结构简单的DQN算法能够更快更好地完成本文的路径规划任务.
因状态数仅为768个,算法网络层数过多会出现训练时间长、收敛慢、浪费计算资源等问题.考虑到环境的复杂程度与计算效率,本文的算法网络只有3层全连接层.为提高探索性能,本文受到文献[19]的启发,在网络结构中加入Gauss噪声;为保证算法的稳定性和节省计算成本,仅在输出层添加分解Gauss噪声.所添加的噪声通过梯度下降法自动调整噪声强度,减轻了对任何超参数调优的需要,并且噪声所引发的探索程度是前后相关的,能够根据每个权重方差在不同的状态之间进行变化,此探索方法比DQN原本的ε-greedy贪婪策略随机选择动作的探索性能更好,既保证了探索动作多样化,又提高了探索效率.具有p个输入,q个输出的全连接层添加噪声后的具体表达式如下:
y=(μw+σw⊙εw)x+μb+(σb⊙εb),
(3)
其中,x∈Rp,y∈Rq,μw∈Rq×p,σw∈Rq×p,εw∈Rq×p,μb∈Rq,σb∈Rq,εb∈Rq,⊙表示逐元素乘法,εw,εb为随机噪声参数.
综上所述,本文选择在输出层添加分解Gauss噪声的三层全连接层的DQN算法.具体的算法流程如图3所示.
图3 在输出层添加噪声的DQN算法框架Fig. 3 The DQN algorithm framework for adding noise in the output layer
算法伪代码如下所示.
算法1 输出层添加分解Gauss噪声的DQN算法
初始化经验回放池D
随机初始化Q网络的参数θ、目标Q网络的参数θ-与随机噪音参数ε
for episode=1 to maxepisode do
观测得到状态s1
fort=1 toTdo
从Gauss分布中采样得到噪声ξ~ε
通过贪婪策略选择动作at=maxQ(st,at,ξ;θ)
在环境中执行动作at
获得奖励rt并到达下一个状态st+1
将经验(st,at,rt,st+1)存储到经验回放池D中
令st=st+1
从经验回放池中随机采样minibatch个经验
forj=1 to minibatch do
从Gauss分布中采样得到噪声ξ′~ε
对(yj-Q(sj,aj,ξ″;θ))2执行梯度下降策略更新Q网络的参数(ξ″~ε)
end for
每隔固定步数对目标网络参数进行更新θ-=θ
end for
end for.
2.4 仿真环境
为计算方便起见,大多数文献(例如文献[12,16-18,20-21])选择在栅格地图等可视化环境中进行算法仿真,但这些仿真环境与现实环境有着较大的差别,致使实验结果难以令人信服.近年来,越来越多的学者采用Gazebo等逼真的仿真环境进行实验,例如文献[22-25].在栅格环境中进行实验与Gazebo环境进行仿真相比,环境由二维平面转换为三维空间,小车模型由一个点变为拥有动力学仿真和传感器仿真的真实模型,环境和模型的变化可使Gazebo平台的实验结果更加真实可信.
故本算法选择在Gazebo仿真环境下,使用基于机器人操作系统(ROS)搭建的差速式无人车进行实验.本实验中,在车体的前端安装了一个雷达传感器,可以检测到车体周围(-3 rad,3 rad)范围内的环境信息,雷达传感器的检测有效范围为0.10~30 m,精确到0.01 m,雷达旋转一周发射360条射线,每一条射线进行一次测距,通过区域划分,将传感器感知到的范围划分成4个互不相交的区域,使用d1,d2,d3,d4表示无人车在4个区域内与障碍物的最短距离.计算无人车前进方向与目标点的夹角的绝对值的公式如下:
θ=|ψ-φ|,
(4)
其中,φ表示无人车前进方向与地图坐标系x轴正方向的夹角,ψ表示目标点相对于无人车质心处地图坐标系x轴正方向的夹角.
在Gazebo中建立了13×8单位距离的仿真环境,环境四周由墙围住,中间设置6个障碍物,初始点为(0,0),目标点为(-6,1),Gazebo仿真环境如图4所示,Rviz仿真环境如图5所示.
图4 Gazebo仿真环境 图5 Rviz仿真环境 Fig. 4 The Gazebo simulation environment Fig. 5 The Rviz simulation environment
注为了解释图中的颜色,读者可以参考本文的电子网页版本,后同.
本实验在UBUNTU操作系统上运行,处理器为Intel(R) Core(TM) i7-9700 CPU @ 3.00 GHz.无人车仿真使用PYTHON编程,Adam优化器进行网络训练优化.算法的网络训练参数设置如表1所示.
表1 算法训练参数
本实验的任务是利用在输出层添加噪声的DQN算法,使无人车在未知的环境中规划出从初始点到目标点的无碰撞路径.实验共训练1 000个回合,智能体执行一次动作的时间为1 s,无人车到达目标点或碰到障碍物则本回合结束.
3 实验结果分析
为了验证在输出层添加噪声的DQN算法在无人车路径规划中的有效性,采用PYTHON语言在Gazebo仿真环境中对Q-learning算法、DQN算法、3层全连接层都添加Gauss噪声的DQN算法与仅在输出层添加Gauss噪声的DQN算法进行1 000回合的实验.为区分算法的名称,用changed_DQN表示在输出层添加噪声的DQN算法,noisynet_DQN表示Q网络中的3层全连接层都添加噪声的DQN算法.
图6为采用Q-learning算法、DQN算法、changed_DQN算法与noisynet_DQN算法训练1 000回合的成功率对比图.从图中看出,changed_DQN算法训练效果最好,在100回合内成功率就开始快速提升,在200回合左右开始收敛,1 000回合时成功率为94.2%;Q-learning算法在训练期间因状态空间略大,训练结果不稳定,成功率十分低,相比之下,3个DQN算法的成功率都远高于Q-learning算法.依靠ε-greedy贪婪策略进行探索的DQN算法,成功率提升速度缓慢,1 000回合时成功率才71.6%,明显低于另外两种DQN算法,这表明在网络结构中添加噪声的DQN算法的探索效率高于使用ε-greedy贪婪策略的DQN算法;noisynet_DQN算法在前期探索阶段成功率和changed_DQN相当,但后期因噪声添加过多导致算法不好收敛,成功率明显低于changed_DQN.
图6 成功率对比图Fig. 6 Comparison of success rates
训练过程中每回合的平均奖励对比如表2与图7所示.从图7(a)中可以看出,运用changed_DQN算法的小车所获得的平均奖励基本全部高于运用Q-learning算法的小车,且收敛在较高水平.从图7(b)可看出,在前期100回合左右时,运用changed_DQN算法的小车的平均奖励已经开始收敛,而运用DQN算法的小车的平均奖励到400回合左右才开始收敛,且后期波动较大.从表2可看出,训练过程中,changed_DQN算法的平均奖励均值最大,方差最小,这说明此算法稳定并且奖励收敛在较高的水平.
(a) Q-learning与changed_DQN (b) DQN与changed_DQN (c) Noisynet_DQN与changed_DQN 平均奖励对比 平均奖励对比 平均奖励对比 (a) Mean reward comparison between (b) Mean reward comparison between (c) Mean reward comparison between Q-learning and changed_DQN DQN and changed_DQN noisynet_DQN and changed_DQN图7 平均奖励对比图Fig. 7 Comparison of mean rewards
本实验的目的为无人车能够无碰撞地到达目标点,故选择无人车结束本回合训练时的位置与目标点的距离作为误差,误差越小表明越接近目标点.图8(a)表明选择changed_DQN算法的小车在50回合后可较好地完成任务,收敛后还有波动是由于动作策略的探索导致的,选择Q-learning算法的无人车在训练中的大多数回合都未完成任务.从图8(b)的对比可知, changed_DQN算法比DQN算法收敛更快,且收敛后波动较小.从表3中可知,changed_DQN算法误差的均值最小,方差最小,说明此算法稳定并且能更加精确地完成任务.
表3 误差的均值与方差
(a) Q-learning算法与changed_DQN(b) DQN算法与changed_DQN (c) Noisynet_DQN算法与changed_DQN 算法误差对比 算法误差对比 算法误差对比 (a) Error comparison between Q-learning (b) Error comparison between DQN (c) Error comparison between noisynet_DQN and changed_DQN and changed_DQN and changed_DQN图8 误差对比图Fig. 8 Error comparison diagrams
对训练好的算法进行50次测试实验,Q-learning、DQN、changed_DQN与noisynet_DQN算法的成功率分别为46%,98%,96%,94%,从实验结果可以看出训练好的changed_DQN算法成功率略低于DQN算法,但相差不大(图9).从完成任务的规划时间来看,changed_DQN算法所需时间稳定且总体低于其他算法(图10).这表明changed_DQN算法具有高效性.
图9 测试实验成功率 图10 测试实验规划时间 Fig. 9 Success rates of testingFig. 10 Programming time of testing
图11、12分别为Q-learning算法和changed_DQN算法在1 000回合左右的路径图.路径图以初始点为原点,运用Q-learning算法的小车在1 000回合左右未能规划出从初始点到目标点的无碰撞路径,运用changed_DQN算法的小车能规划出较为完美的无碰撞路径.
图11 Q-learning算法路径规划效果图图12 Changed_DQN算法路径规划效果图Fig. 11 Path programming effects based on Fig. 12 Path programming effects based on Q-learning changed_DQN
为了验证在输出层添加噪声的DQN算法的有效性和鲁棒性,分别在改变起始点、改变目标点和改变障碍物的环境中进行仿真实验.仿真结果表明,运用changed_DQN算法的无人车均能快速地找到从起始点到目标点的相对较优的无碰撞路径.图13、14、15分别为改变起始点、目标点和障碍物的路径规划图.图16为障碍物改变后的Gazebo仿真环境.
图13 目标点改变时changed_DQN算法路径规划效果图 图14 起始点改变时changed_DQN算法路径规划效果图 Fig. 13 Path programming effects based on changed_DQN Fig. 14 Path programming effects based on changed_DQN with changing target point with changing starting point
图15 障碍物改变后的changed_DQN算法路径规划效果图 图16 障碍物改变后的Gazebo仿真环境Fig. 15 Path programming effects of changed_DQN after Fig. 16 The Gazebo simulation environment after the obstacle change the obstacle change
4 结 束 语
本文针对离散状态空间中状态数量较多的无人车路径规划问题,提出了在输出层添加分解Gauss噪声的DQN算法进行路径规划,该算法节省了计算成本,平衡了探索与利用.仿真实验表明,算法的收敛速度和规划路线的优越性都高于处理状态离散问题常用的Q-learning算法,且误差收敛到0的速度更快,误差更小,通过与DQN、noisynet_DQN算法实验对比发现,本文所采用的算法成功率更高,效果更好.在初始点、目标点和障碍物方面对本文的算法进行了泛化性能的测试,验证了该策略的有效性和鲁棒性.