基于粒子注意力深度Q学习的部分观测路口自主并道方法

文档序号:26013103发布日期:2021-07-23 21:34阅读:72来源:国知局
基于粒子注意力深度Q学习的部分观测路口自主并道方法

本发明涉及一种基于粒子注意力深度q学习的部分观测路口自主并道方法,使用基于粒子的表示来处理行车过程中因视野被遮挡造成的部分观测情况,使用基于注意力机制优化状态表示的深度q学习算法优化驾驶行为,属于汽车自动驾驶技术领域。



背景技术:

自动驾驶需要解决三个问题:定位、路径规划和驾驶行为的选择。第一类定位的问题可以使用多种传感器融合技术以及日渐成熟的计算机视觉技术来处理;第二类路径规划规划的问题可以使用dijkstra、a*或者其他一些动态规划的方法来处理;本发明处理的是第三类问题,并且考虑了更加现实的因素,即在视野遮挡以及车流密度多变的情况下如何选择更好的驾驶行为。

我们把汽车的行驶过程建模成成一个部分可观测的马尔可夫决策过程(partiallyobservablemarkovdecisionprocess,pomdp)。那么在驾驶过程获得的关于周围环境的测量就视为一个观测,智能体(自车)将依据观测做成决策。至于这个观测是否能反应环境的真实状态,我们是不得而知的。这里面设计到了两个问题:一个是用什么作为观测,另一个是如何使真实的环境状态更好地从观测中还原出来或者说让自车意识到观测是不充分的,需要警惕可能存在的风险(视觉盲区)。

对于第一个观测表示的问题,我们希望它具备的性质有:输入大小可以变化;输入信息排列顺序不变性;尽可能减小仿真环境和真实环境下的输入差异;准确反映出自车和社会车辆当期时刻的行为同时又不会有很多冗余表达。使用计算机视觉技术处理观测表示问题,即使用图像作为观测输入模型,可以做到输入信息排列顺序不变性,但无法适应不同大小(尺寸)的输入数据。同时图像当中难免有很多冗余信息,即使能够做到精准的图像处理提取出想要的目标信息,对图像的清晰程度,地图的动态构建都有较高要求;并且在仿真环境中使用图像作为观测输入与现实环境中选择图像作为输入是存在差异的。

在强化学习算法中处理部分观测的问题往往有两种思路:一是帧堆叠,二是rnn及其变体。前者是将连续几帧的观测值同时输入网络,即扩增网络的输入,让网络不仅能够知道当前观测信息,同时还能结合历史信息,这样一定程度上弥补了由部分观测带来的信息丢失的问题。rnn因其对时序数据有强大的表达能力而闻名,这个结构能够把握数据在时间上的依赖关系,就像卷积网络能把握数据在空间上的依赖关系一样。那么将原来网络的部分隐藏层替换为rnn层,直觉上是解决部分观测的有效手段,因为通过其递归结构,可以编码多个历史帧的信息,为当前决策提供更丰富的特征。但这两种方法都有其固有缺陷。帧堆叠的方法由于只是简单地将过去几帧历史观测连接在一起,因此会丢失原有的时序信息,同时由于不知道到底要使用过去多少帧才能准确反映现在的真实状态,因此确定堆叠帧的数量也是一个问题。从实现角度考虑,过多的帧同时输入模型在存储上也是一个问题。基于rnn的方法的问题主要在其收敛性能的不稳定上,存在更多优化上的困难,并且隐状态的含义未知,缺乏解释性。



技术实现要素:

发明目的:针对现有技术中存在的问题与不足,本发明提供一种基于粒子注意力深度q学习的部分观测路口自主并道方法,本发明的自动驾驶算法使用低维物理量信息作为观测信息,使用深度q学习算法作为控制车辆驾驶行为的控制算法,在因遮挡造成的部分观测条件下,使用基于粒子的表达和注意力机制提升了自车对可能存在的风险的感知能力,实现了更加安全可靠的自主并道驾驶行为。

技术方案:一种基于粒子注意力深度q学习的部分观测路口自主并道方法,将使用该方法控制行驶的车辆称为自车,其余的车辆都被称为社会车,所有车辆在仿真环境下运行,运行机制由仿真环境预先设定,包括如下步骤:

s1、在时刻t收集来自周围未被遮挡的社会车的行驶信息和自车的行驶信息组成的低维物理量信息作为自车当前的实际观测数据ot,并做好归一化处理;

s2、维护一组粒子集合标记时刻t道路上可能存在的社会车辆的位置和速度。其中,粒子表示在坐标上可能有一个速度的社会车;粒子权重表示该社会车真实存在的可能性大小。根据当前实际观测ot迭代式更新这组粒子集合;

s3、将实际观测数据和更新后的粒子集合整合到一起成为opt,输入到注意力模块,通过注意力机制计算得到对自车行驶影响更大的社会车辆(包括粒子代表的虚拟社会车辆)的特征信息φt;

s4、特征信息φt输入到q值网络,q值网络输出驾驶动作ai的q值q(φt,ai;θ),其中i={1,2,…,n},θ为网络参数,选择最大q值对应的动作输出;

s5、用跳帧技巧,将从q值网络得到的动作at输出到仿真环境中,自车的行驶状态将根据此动作连续改变k帧;

s6、然后自车接受来自最后一帧的观测数据ot+1和这k帧累积起来的奖励rt,将经验元组(ot,at,rt,ot+1)储存到经验回放池中;

s7、从经验回放池中通过以情景学习误差大小构建的概率,使用优先经验重放技术随机抽取多段来自不同情景的部分经验元组序列其中,m表示情景数,t0表示一个情景下序列开始的时间戳,t表示序列的长度,oi,t,ai,t,ri,t分别表示情景i下时刻t的观测、动作和奖励;其中,情景的学习误差大小为该情景内所有经验元组的时间差分误差的平均,即

其中,l代表的是该情景的完整轨迹(经验元组序列)长度,γ表示折扣因子,φi表示第i个经验元组对应的特征信息,a表示动作,q(·,·;θ-)表示的目标q值网络,θ-为其参数;

s8、针对每个情景下的经验元组序列随机初始化一组粒子集合,利用每个经验元组提供的实际观测数据使用迭代式更新的方式更新这些粒子,并和观测数据一起输入注意力模块和q值网络;

s9、计算每个经验元组对应的目标函数yi,即

使用均方误差(meansquareerror,mse)损失函数的形式计算得到损失loss;

其中,m是抽取的情景数,t是情景中的序列长度;

s10、使用损失li作为对应经验元组的新的情景学习误差大小,以此更新经验回放池当中对应的情景的学习误差大小;更新情景的学习误差大小实际就是更新被选出的经验元组序列的时间差分误差,然后重新计算均值;

s11、使用随机梯度下降算法更新q值网络;

其中,λ是学习率,需要人为根据实际情况调整,后面紧接着的项表示对损失loss求关于θ的导数;

s12、动态调整仿真环境中的车流密度:当仿真环境运行的一个情景结束,开启新的情景前,以均匀分布在一定范围内随机选择一个新的车流密度。之后由此车流密度得到的经验元组将无差别地加入到经验回放池当中;

s13、重复s1——s12,直至到达终止状态terimal。

本发明的核心控制算法是基于深度q学习的,其中涉及到的观测、动作和奖励如下定义。作为实际观测数据的自车信息包括自车速度、自车坐标和自车行驶方向,其中第一个物理量会输入模型,后两个物理量仅用作中心化处理使用;社会车信息包括社会车速度、社会车坐标和社会车行驶方向,这里所有的物理量的值都使用的是相对于自车对应物理量的大小,即相对于自车的速度,坐标和行驶方向,这一处理过程被称为中心化处理;动作集合包含离散的三个动作要素:加速、减速和维持原速。同时会对由q值网络选出的动作对应的实际加速度做截断处理,截断的上下限事先根据实际情况给定;奖励包括单步惩罚,碰撞惩罚和并道成功奖励。其中,碰撞惩罚非常大(例如设为-10),单步奖励较小(例如设为-0.01),从而激励自车又快又安全地通过路口。

粒子的迭代式更新有两种方式。一种是规则预先定义的粒子滤波,包含两个部分——粒子的转移和粒子权重的更新。粒子的转移分为坐标和速度的转移。用公式表达粒子的移动和权重的更新为:

其中f是一个代表粒子运动方程的函数。速度的转移是将速度直接设置为当前时刻该粒子到实际观测里最近的社会车的速度(即),再加上一个服从标准正态分布的扰动项vε。粒子权重表示该粒子存在的可能性大小,由该粒子到最近的观测到的社会车的欧式距离决定,距离越近表明存在的可能性越大(使用σ控制可能性大小对距离变化的敏感程度);粒子的更新分为粒子的生成和粒子的删除。当粒子超出合法范围时,直接在集合中对其删除;当需要引入新的粒子时,在可能的范围内,比如因社会车或楼宇遮挡造成的视线盲区,随机生成一个粒子。这里不仅包括以均匀分布随机生成的位置坐标,同时包括以均匀分布在一定范围内随机生成的速度。

第二种方式是端到端可微分的粒子滤波。这种表示分为四个部分:分别是转移模型、观测似然模型、可微分重采样、新粒子生成。其中,(a)转移模型为

其中,ftrans是一个参数化的转移模型。

(b)观测似然模型为

其中,fobs是一个参数化的观测模型。

(c)可微分重采样:从由粒子权重构造出来的柔性提议分布(softenproposaldistribution)中采样得到新的一批粒子,每个粒子在这个分布中对应的概率为:

采样后得到的新粒子的权重重新设为:

其中,n是粒子总数,α是一个可人为设置的调节系数。

(d)新粒子生成:当有粒子超出合法范围时,直接在集合中将其删除;然后补充新的粒子:

其中,gβ是一个参数化的生成模型,δ是一个服从伯努利(bernoulli)分布的随机变量,代表模型中的随机因素。

实际观测到的真实社会车和由粒子表示的虚拟社会车整合过程中,二者被放入到一个大小为a×b的矩阵中,称为整合信息矩阵。行数表示车的数量(无论是真实的还是虚拟的),列数表示使用的物理量数量。第一行存放的是自车物理量信息,紧接着的连续几行存放观测到的社会车的信息,最后几行存放粒子的信息。列从左到右表示的信息依次是速度、横坐标、纵坐标、行驶角度的余弦、行驶角度的正弦、权重、是否被遮挡的标识。其中,真实社会车的权重均为1.0(最大),虚拟社会车的权重就是对应的粒子权重;真实社会车是否被遮挡的标识按实际情况给出,被遮挡为1,没被遮挡为0,所有粒子表达的虚拟社会车都置为0,表示没有被遮挡。

注意力模块的输入一个查询向量和一系列键值对向量,输出是加权以后的值向量,运算如下:

其中,函数softmax(z)的定义为这里z表示一个向量;u表示自车的嵌入向量经线性变换产生的查询向量,k表示所有车(自车加观测到的真实社会车加粒子表达的虚拟社会车)的嵌入向量经线性变换产生的键向量,v表示所有车(自车加观测到的真实社会车加粒子表达的虚拟社会车)的嵌入向量经线性变换产生的值向量,dk是键值向量的特征维度大小。上述所有的嵌入向量均由对应车原有的低维物理量信息经仿射变换得到。

注意力模块对遮挡问题有特殊的处理。之前的整合信息矩阵中的最后一列表示社会车的遮挡情况,其中所有置1的项对应的注意力机制里计算出来的权重直置零,那么被遮挡的车辆产生的值向量被强制变成零了,相当于在注意力机制下生成的特征空间里从来没有输入过模型。

最终由注意力模块得到的特征信息为φ。这个特征不仅完全包含了当前观测的所有信息,还融合了粒子表示对过去观测的编码信息,并且对自车行驶影响更大的车辆所产生的特征在其中占有更高的比重,这会更加有利于之后的决策过程。

有益效果:与现有技术相比,本发明提供的基于粒子注意力深度q学习的部分观测路口自主并道方法,有如下优势:(1)使用低维物理量更加有利于仿真环境中训练得到的算法应用于实际,因为相比于图像作为观测输入,物理量在仿真环境和真实环境之间的差异更小;(2)使用基于粒子的表示处理部分观测问题,有几个好处:通过粒子更新过程中的随机性捕获了因遮挡造成的观测不确定性,增强了自车对风险的抵抗能力,驾驶策略更加安全;由于粒子具有清晰的语义信息,所以提高了模型的解释能力;由于新粒子的引入是“免费”的,所以可以在不显著提高观测成本的前提下,通过加入更多的粒子来保留更加充分的通车历史信息;粒子迭代式更新过程方便引入人类的先验知识,例如道路布局对观测视野的影响、物体运动的物理规律等;(3)使用注意力机制优化状态表示有几个好处:可以方便地处理真实观测到的社会车与粒子代表的虚拟社会车的整合信息,具有直观地语义解释,即促模型关注对自车行驶影响更大地社会车(无论是真实的还是虚拟的),通过为这些车辆生成的特征赋予更高的权重;可以输入任意数量的车辆,同时对输入信息具有排列不变性;无作弊现象,即从仿真环境中获得的观测不会泄露是否有车被遮挡的信息,因为通过注意力机制的运算,车辆被遮挡与车辆不存在两种情况对于模型来说是一模一样、无法分辨的了。这使得仿真环境下训练出来的驾驶策略可以在真实环境中使用;(4)s12中的操作,通过在经验回放池中加入多种车流密度下的采样数据,可使自主并道行为有效适应真实环境下多变的车流密度。

附图说明

图1为本发明方法的算法流程图;

图2为本发明可应用的一个仿真场景示意图;

图3为本发明中粒子合法运动范围示意图;

图4为本发明中注意力机制运算流程图。

具体实施方式

下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

基于粒子注意力深度q学习的部分观测路口自主并道方法,可应用于如图2所示的仿真场景中。这是一个t型路口,自车的任务是从竖直道的右车道出发,向左转,经过路口,穿过水平道的1,2号车道,到达0号车道的左半部分,只要车身完全进入,即算并道成功。其中,0号车道行驶方向从右至左,1,2号车道行驶方向从左至右,3号车道不通车,用于放置遮挡物,例如楼房等。

本发明的方法包含以下步骤:

s1、在时刻t收集来自周围未被遮挡的社会车的行驶信息和自车的行驶信息组成的低维物理量信息作为自车当前的实际观测数据ot,包括自车信息和社会车信息。自车信息包括自车速度、自车坐标和自车行驶方向,其中第一个物理量会输入模型,后两个物理量仅用作中心化处理使用;社会车信息包括社会车速度、社会车坐标和社会车行驶方向,这里所有的物理量的值都使用的是相对与自车对应物理量的大小,即相对于自车的速度,坐标和行驶方向,这一处理过程被称为中心化处理并做好归一化处理,最后做归一化处理;

s2、维护一组粒子集合标记时刻t道路上可能存在的社会车辆的位置和速度。其中,粒子表示在坐标上可能有一个速度的社会车;粒子权重表示该社会车真实存在的可能性大小。根据当前实际观测ot迭代式更新这组粒子集合。更新有两种方式。

一种是规则预先定义的粒子滤波方式。包含两个部分——粒子的转移和粒子权重的更新。粒子的转移分为坐标和速度的转移。用公式表达粒子的转移和权重的更新为:

由于t型路口上的社会车只有东西方向的行驶方向,所以横纵坐标可以直接表达成这样简单的形式。速度的转移是将速度直接设置为当前时刻该粒子到实际观测里最近的社会车的速度,vε是一个服从标准正态分布的扰动项。粒子权重表示该粒子存在的可能性大小,由该粒子到最近的观测到的社会车的欧式距离决定,距离越近表明存在的可能性越大;粒子的更新分为粒子的生成和粒子的删除。当粒子超出合法范围时,直接在集合中删除之;当需要引入新的粒子时,在可能的范围内,比如因社会车或楼宇遮挡造成的视线盲区,随机生成一个粒子。这里不仅包括以均匀分布随机生成位置坐标同时包括以均匀分布在一定范围内随机生成速度,在图3中,蓝色框表示粒子存在的合法范围,超出的粒子将直接删除;新的粒子将在被观测到的社会车辆对应的黄色三角形区域随机生成,表示可能存在的被遮挡车辆;

第二种方式是端到端可微分的粒子滤波方式。这种表示分为四个部分:分别是转移模型、观测似然模型、可微分重采样、新粒子生成。其中,(a)转移模型为

其中,ftrans是一个参数化的转移模型,由rnn表达。具体来说,可以使用lstm或gru。这些rnn的变体将另外维护一个隐状态,与粒子无关。接受的输入不仅包含上一时刻的粒子,还包含本时刻的观测。

(b)观测似然模型为

其中,fobs是一个参数化的观测模型。可以使用一层全连接网络。

(c)可微分重采样:从由粒子权重构造出来的softenproposaldistribution中采样得到新的一批粒子,每个粒子在这个分布中对应的概率为:

采样后得到的新粒子的权重重新设为:

其中,n是粒子总数,α是一个可人为设置的调节系数。

(d)新粒子生成:当有粒子超出合法范围时,直接在集合中将其删除之;然后补充新的粒子:

其中,gβ是一个参数化的生成模型,由多层全连接网络表示,其中会插入一层dropout层,δ就是该层的参数,表示神经元被保留的概率。这个参数服从伯努利(bernoulli)分布。

s3、将实际观测数据和更新后的粒子集合整合到一起成为opt。实际观测到的真实社会车和由粒子表示的虚拟社会车整合过程中,二者被放入到一个大小为a×b的矩阵中,称为整合信息矩阵。行数表示车的数量(无论是真实的还是虚拟的),列数表示使用的物理量数量。第一行存放的是自车物理量信息,紧接着的连续几行存放观测到的社会车的信息,最后几行存放粒子的信息。列从左到右表示的信息依次是速度、横坐标、纵坐标、行驶角度的余弦,行驶角度的正弦、权重、是否被遮挡的标识。其中,真实社会车的权重均为1.0(最大),虚拟社会车的权重就是对应的粒子权重;真实社会车是否被遮挡的标识按实际情况给出,被遮挡为1,没被遮挡为0,所有粒子表达的虚拟社会车都置为0,表示没有被遮挡。

整合信息矩阵输入到注意力模块,通过注意力机制计算得到对自车行驶影响更大的社会车辆(包括粒子代表的虚拟社会车辆)的特征信息φt。具体来说,注意力模块的输入一个查询向量和一系列键值对向量,输出是加权以后的值向量,运算如下:

其中,函数softmax(z)的定义为这里z表示一个向量;u表示自车的嵌入向量经线性变换产生的查询向量,k表示所有车(自车加观测到的真实社会车加粒子表达的虚拟社会车)的嵌入向量经线性变换产生的键向量,v表示所有车(自车加观测到的真实社会车加粒子表达的虚拟社会车)的嵌入向量经线性变换产生的值向量,dk是键值向量的特征维度大小。上述所有的嵌入向量均由对应车原有的低维物理量信息经仿射变换得到。

注意力模块对遮挡问题有特殊的处理。之前的整合信息矩阵中的最后一列表示社会车的遮挡情况,其中所有置1的项对应的注意力机制里计算出来的权重直置零,那么被遮挡的车辆产生的值向量被强制变成零了,相当于在注意力机制下生成的特征空间里从来没有输入过模型。

s4、特征信息φt输入到q值网络。q值网络多层全连接网络构成,每层输出会加一个relu激活函数,最后的输出所有驾驶动作ai的q值q(φt,ai;θ),其中i={1,2,…,n},选择最大q值对应的动作输出。这里,动作集合包含的离散的三个动作要素,加速,减速和维持原速。同时会对由q值网络选出的动作对应的实际加速度做截断处理,截断的上下限事先根据实际情况给定;

s5、用跳帧技巧,将从q值网络得到的动作at输出到仿真环境中,自车的行驶状态将根据此动作连续改变k帧;

s6、然后自车接受来自最后一帧的观测数据ot+1和这k帧累积起来的奖励rt,将经验元组(ot,at,rt,ot+1)储存到经验回放池中。奖励包括单步惩罚(负数),碰撞惩罚(负数)和并道成功奖励(正数)。其中,碰撞惩罚非常大,单步奖励较小,并道成功奖励较大,从而激励自车又快又安全地通过路口。

s7、从经验回放池中通过以情景学习误差大小构建的概率,使用优先经验重放技术随机抽取多段来自不同情景的部分经验元组序列其中,m表示情景数,t0表示一个情景下序列开始的时间戳,t表示序列的长度。其中,情景的学习误差大小为该情景内所有经验元组的td误差的平均,即

其中,l代表的是该情景的完整轨迹(经验元组序列)长度,q(·,·;θ-)表示的是目标q值网络;

s8、针对每个情景下的经验元组序列随机初始化一组粒子集合,利用每个经验元组提供的实际观测数据使用迭代式更新的方式更新这些粒子,并和观测数据一些输入注意力模块和q值网络;

s9、计算每个经验元组对应的目标函数yi,即

使用均方误差损失函数的形式计算得到损失l,即

其中,m是抽取的情景数,t是情景中的序列长度;

s10、使用损失li作为对应经验元组的新的情景学习误差大小,以此更新经验回放池当中对应的情景的学习误差大小。更新情景的学习误差大小实际就是更新被选出的经验元组序列的时间差分误差,然后重新计算均值;

s11、使用随机梯度下降算法更新q值网络,即

其中,λ是学习率,需要人为根据实际情况调整;

s12、动态调整仿真环境中的车流密度:当仿真环境运行的一个情景结束,开启新的情景前,以均匀分布在一定范围内随机选择一个新的车流密度。之后由此车流密度得到的经验元组将无差别地加入到经验回放池当中。这里的车流密度指的就是一个情景内水平道路上的平均通车量;

s13、重复s1——s12,直至算法收敛。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1