一种基于深度学习和卡尔曼滤波修正的轨迹恢复方法与流程

文档序号:17009391发布日期:2019-03-02 02:10阅读:477来源:国知局
一种基于深度学习和卡尔曼滤波修正的轨迹恢复方法与流程
本发明涉及轨迹数据挖掘领域,更具体的说是涉及一种基于深度学习和卡尔曼滤波修正的轨迹恢复方法。
背景技术
:目前的轨迹恢复问题的解决方案相比于过去的轨迹恢复方案最大的区别就在于现有方案都是数据驱动的。通过从大量历史数据中进行挖掘,分析,就可以非常准确地还原将轨迹从低采样率还原成高采样率。然而,现有的方案对于数据的利用还很不充分,大多数解决方案都停留在对数据进行简单地统计,然后通过复杂的启发式搜索地方案搜索出最优的轨迹,这些方案都不能捕捉到轨迹点之间复杂的转移规律。另一方面,随着深度学习的兴起,尽管深度学习模型可以捕捉到数据内部复杂的规律,并且可以融合进多元的信息进行帮助,但是深度学习模型的行为很难解释,它也不能显示建模时空信息,这也会导致其在建模轨迹的时候出现问题。因此,如何提供一个可以捕捉到轨迹数据深层信息并且具有较好可解释性的基于卡尔曼滤波修正的轨迹恢复方法是本领域技术人员亟待解决的问题。技术实现要素:有鉴于此,本发明提供了一种基于深度学习和卡尔曼滤波修正的轨迹恢复方法,通过循环神经网络来建模轨迹点之间的转移规律,利用深度学习中的注意力机制来帮助进行轨迹恢复,最后引入了卡尔曼滤波来建模对象在时间和空间上的移动,从而降低了深度学习模型的不可解释性和误差,具有更强的可解释性,并且降低了轨迹恢复的误差。为了实现上述目的,本发明提供如下技术方案:一种基于深度学习和卡尔曼滤波修正的轨迹恢复方法,具体步骤包括:s1轨迹点的离散化:将一个地理区域划分为长度是la的不相交的网格;所述网格的集合记为j,j按行存储着所有网格的中心点坐标,所述中心坐标记为网格id;s2循环神经网络与轨迹建模:利用循环神经网络对所述离散化的轨迹点进行建模,得到不完整轨迹点序列,所述不完整轨迹点序列不包括缺失的轨迹点;s3轨迹恢复:利用序列到序列的轨迹恢复模型将所述不完整轨迹点序列编码为上下文向量,然后解码器通过上下文向量来预测缺失的轨迹点;s4时空注意力机制:所述序列到序列的轨迹恢复模型利用时空信息将注意力集中到所述不完整轨迹点序列上,不完整轨迹点序列中的点都会被用到,但是被算法认为比较重要的点权重比较大,不重要的点权重很小。通过将模型的注意力集中到不完整轨迹点序列中的部分关键点,可以得到基于序列到序列模型的注意力模型;s5引入卡尔曼滤波来对注意力模型进行修正:将卡尔曼滤波和循环神经网络结合,引入卡尔曼滤波优化均方误差,协同训练卡尔曼滤波与所述注意力模型,得到最终模型。通过上述的技术方案,本发明的技术效果是:在轨迹恢复任务中引进注意力机制通过注意力机制,序列到序列模型可以学会将注意力集中到不完整轨迹中的特定部分而不是依赖于编码器的混合输出。更进一步地,基于序列到序列模型中初始的注意力机制,我们提出了时空注意力机制来捕获长期轨迹中时空的变化;将卡尔曼滤波和循环神经网络结合起来更好地建模轨迹,引入先验知识来帮助评估轨迹点的真实状态;除此之外,卡尔曼滤波简洁的形式可以被矩阵操作实现,这使得它可以很方便地跟神经网络结合,由于卡尔曼滤波可以被写成矩阵的形式,从而可以得到一个高效并且支持批处理的神经网络版卡尔曼滤波。优选的,在上述的一种基于深度学习和卡尔曼滤波修正的轨迹恢复方法中,所述s1中所述轨迹点映射到网格上,用网格id来表示轨迹点;循环神经网络的输入即为网格id,同时所述循环神经网络的输出为预测的位置所属网格id;轨迹点pi来自于一个移动的物体并以一个元组的形式被记录(x,y,s,id);pi·x是经度,pi·y是纬度,pi·s是这个点的时间戳,pi·id是这个点所属位置的id。通过上述的技术方案,本发明的技术效果是:把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。优选的,在上述的一种基于深度学习和卡尔曼滤波修正的轨迹恢复方法中,所述s2中所述循环神经网络包括但不限于:长短时记忆模型和门限制单元模型。通过上述的技术方案,本发明的技术效果是:上述两个模型通过门机制解决了普通循环神经网络存在的梯度消失问题,从而可以用来建模较长的轨迹序列同时可以捕获一个较长期的依赖关系。优选的,在上述的一种基于深度学习和卡尔曼滤波修正的轨迹恢复方法中,在所述s3中,不完整轨迹点序列tinc作为输入,基于输入恢复出对应的完整轨迹tcom,具体的步骤如下:编码器从输入的序列中计算出一个表征s,解码器每一个时刻生成一个词,基于序列到序列的轨迹恢复模型将不完整的轨迹点序列编码为上下文向量,解码器通过上下文向量的帮助来预测缺失的点,条件概率分布为:其中,tcom是按时间排序并保持着不变采样间隔ε而且长度为n的轨迹;tcom=b1→b2→...→bn;tinc是大小为m的完整轨迹tcom的子集;tinc=aj1→aj2→...→ajm;s31建模已知序列的编码器:所述网格id做为编码器的输入,所述输入被嵌入层转换为低维向量,送入到双向长短时记忆模型中;所述双向长短时记忆模型包括前向lstm和后向lstm;前向lstm按顺序读入输入的向量序列,从而计算出一个前向隐状态序列后向lstm按照相反的顺序读入输入的向量序列,并计算一个后向隐状态序列在第jk时刻的输出为与之和,记为s32重构缺失轨迹的解码器:当解码器生成下一个点的时,若为已知轨迹点,选择将已知轨迹点拷贝作为神经网络的输出,拷贝机制形式化地写成:假设jk≤i<jk+1,加入了端点限制到预测阶段来建模局部轨迹信息,解码缺失点重写为:隐状态hi为:hi=lstm(bi-1,ei,hi-1);(4)ei是端点限制向量,引入了包含有局部轨迹起点和终点的端点限制向量;第i时刻的端点限制向量被记为ei,ge是以前向限制和后向限制作为输入来捕捉端点限制信息的函数;所述函数由一个嵌入层和一个多层感知机组成;所有的嵌入层的参数均是被共享的;对于所述序列到序列的恢复模型的训练,写成如下形式:其中,d表示训练集。通过上述的技术方案,本发明的技术效果是:优选的,在上述的一种基于深度学习和卡尔曼滤波修正的轨迹恢复方法中,所述s4中,注意力机制的引入,公式(4)写为:hj=lstm(bi-1,ei,hi-1,ci)(7);上下文信息ci的表达式:其中,ci由编码器i时刻输出的隐状态的加权得到;si包含编码器在i时刻的状态;每个隐状态的权重经softmax计算:其中,uij=vttanh(whhi+wssj)(10);其中,v是计算内积使用的降维向量;wh是解码器输出向量变换矩阵;ws是编码器输出向量变换矩阵;uik=vttanh(whhi+wssk),k=1,2,…,m;由于考虑的是固定时间间隔,时间距离能够通过序列的相对位置来获得;另外,位置相近的点,相似程度越高;第i个要被预测的点和第k个输入的轨迹点d的时间距离被定义为:空间距离被定义为利用时间距离嵌入矩阵t和空间距离嵌入矩阵g将时间距离和空间距离转换成向量,分别记为和最后,时空注意力权重计算为:其中,wtd是时间距离向量变换矩阵;wsd是空间距离向量变换矩阵。通过上述的技术方案,本发明的技术效果是:通过向量相加的方式,融合了时空信息,位置的表征信息,或者说是高层次的语义信息到注意力机制的权重中,从而大大改进了原始注意力机制在轨迹恢复任务上的效果。从另一个角度来说,注意力权重添加了时间和空间上的正则项,通过正则项的帮助,可以减轻注意力机制导致的过拟合问题。优选的,在上述的一种基于深度学习和卡尔曼滤波修正的轨迹恢复方法中,所述s5引入卡尔曼滤波来对轨迹恢复模型进行修正具体步骤包括:s51卡尔曼滤波的一般描述:卡尔曼滤波将带有噪音的测量坐标zi和对应的协方差矩阵ri作为收入来计算后验状态估计这里和是被估计的i时刻的x和y方向的速度;卡尔曼滤波在i时刻的输出记为:oi=hix(i,i)(15);其中,hi是测量矩阵,描述后验状态和测量状态的关系,下标(i,i)代表i时刻的后验状态;卡尔曼滤波在i时刻的隐状态{x(i,i),c(i,i)}由x(i,i)和对应的协方差矩阵c(i,i)组成;s52通过公式(3)和公式(4)计算出的softmax向量,在i时刻被估计的测量协方差和被估计的位置写成如下形式:其中,mi=jtii,特别地,当是由拷贝机制生成的时候,将会被设置成一个接近于0的常量矩阵;j是一个形状为n×2的矩阵,n是网格的数量;jk是第k个网格的坐标;ik为第i时刻神经网络计算出的softmax向量的第k维;s53卡尔曼滤波上基于时间的反向传播,卡尔曼滤波的损失函数:其中,oi是卡尔曼滤波在i时刻的输出,bi是i时刻实际的位置;对于t时刻的过程协方差,第t+n时刻的梯度推导为:s54最终的损失函数表达式:l=l1+l2(21);其中,l1表示序列到序列的恢复模型的训练;l2表示用来优化卡尔曼滤波的均方误差。通过上述的技术方案,本发明的技术效果是:将卡尔曼滤波和循环神经网络结合,引入卡尔曼滤波优化均方误差,协同训练卡尔曼滤波与所述注意力模型,得到最终模型。优选的,在上述的一种基于深度学习和卡尔曼滤波修正的轨迹恢复方法中,所述s51卡尔曼滤波计算后验状态估计具体步骤包括:s511预测:预测过程利用前一时刻的后验状态估计{x(i-1,i-1),c(i-1,i-1)}来产生一个i时刻的先验状态估计{x(i,i-1),c(i,i-1)};其中,x(i,i-1)=φi-1x(i-1,i-1)(22);c(i,i-1)=φi-1x(i-1,i-1)φi-1t+qi-1;下标(i,i-1)用来表示i时刻基于i-1时刻后验状态的先验状态;φ是卡尔曼滤波的状态转移矩阵;s512更新:更新过程结合先验状态估计{x(i,i-1),c(i,i-1)}和测量状态{zi,ri}来得到后验状态估计{x(i,i),c(i,i)};x(i,i)=x(i,i-1)+ki(zi-hix(i,i-1))(24);c(i,i)=(i-kihi)c(i,i-1)(25);ri为常量矩阵;qi是i时刻的过程协方差矩阵。通过上述的技术方案,本发明的技术效果是:协方差描述了对于卡尔曼滤波内部运动模型的把握,协方差越低,预测结果就会更加偏向于卡尔曼滤波的先验状态估计。经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种基于深度学习和卡尔曼滤波修正的轨迹恢复方法,通过循环神经网络来建模轨迹点之间的转移规律,利用深度学习中的注意力机制来帮助进行轨迹恢复,最后引入了卡尔曼滤波来建模对象在时间和空间上的移动,从而降低了深度学习模型的不可解释性和误差,具有更强的可解释性,并且降低了轨迹恢复的误差。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1附图为本发明的整体模型的框架图;图2附图为本发明的序列到序列模型的结构图;图3附图为本发明的注意力模型;图4附图为本发明的卡尔曼滤波与循环神经网络结合模型;图5附图为本发明的embedding向量大小的影响折线图;图6附图为本发明的网格长度的影响折线图;图7附图为本发明的轨迹恢复缩略图;图8附图为本发明的注意力权重可视化图;图9附图为本发明的卡尔曼滤波内部状态在被划分的网格空间上的可视化图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例公开了一种基于深度学习和卡尔曼滤波修正的轨迹恢复方法,通过循环神经网络来建模轨迹点之间的转移规律,利用深度学习中的注意力机制来帮助进行轨迹恢复,最后引入了卡尔曼滤波来建模对象在时间和空间上的移动,从而降低了深度学习模型的不可解释性和误差,具有更强的可解释性,并且降低了轨迹恢复的误差。数据集的构建:为了衡量我们模型的轨迹恢复性能,使用了三个真实的轨迹数据集来进行评价,分别来自北京,深圳和波尔图(西班牙第二大城市)。来自北京的出租车数据集是每分钟采样一次,但是深圳的数据集采样频率并不均匀。由于深圳数据集的采样间隔低于五分钟,将轨迹预处理成了五分钟的时间间隔。来自波尔图的公开轨迹数据集是由kaggle(知名数据挖掘竞赛平台)上一个轨迹预测比赛提供。原始数据的采样间隔是15秒,我们将其预处理成了一分钟的间隔。这三个城市有着完全不一样的路网结构以及交通状况,表1中详细总结了数据集的详细统计特征。在预处理过程中,首先我们需要将目标区域划分成不相交的网格,把坐标映射到网格编号。除此之外,需要确保一个数据集中的时间间隔是一致的。对于不同的数据集,选择不同的网格长度。北京和波尔图数据集的格子长度都是100m,而深圳数据集的格子长度为200m;首先是网格的划分,然后是轨迹的离散化,接下来是不动点的去除,超长轨迹的裁剪,最后是训练数据,验证数据以及测试数据的划分。为了完成好这些步骤,大量的数据可视化机制需要被使用进来,使用leaflet来进行地图的构建,并使用在线的地图api接入地图数据,然后对部分轨迹数据进行可视化。同时,对于数据集所对应的区域进行选择,一些区域轨迹点非常稀疏的区域被我们删去了,这样减少神经网络的计算量;探究网格长度对模型效果的影响,最后为每一个数据集都选择了一个合适的网格长度。网格长度过小,会导致神经网络需要处理的词表过大,过大的词表会导致神经网络的运行速度减慢,占用显存大大提高并且非常难以在一个合适的时间内收敛。而网格长度过大,就会导致模型的预测不够精确,过大的网格会先天带来一个很高的误差,尽管卡尔曼滤波可以做出修正。表1数据集北京深圳波尔图数据覆盖时长一个月两周一年出租车数量1829817998442轨迹数量313560149230284100轨迹点数量3135600014923008523000位置数量15870193066351采样间隔一分钟五分钟一分钟任务设定:对于每一个数据集,划分为三部分,训练集,验证集,测试集。训练集用来训练模型,而超参数比如说embedding的大小,或者格子长度是由验证集合来选择。最终的结果在测试集上进行评估。在我们的所有实验中,百分之七十的轨迹用作训练集,百分之十的轨迹用作验证集,而剩下百分之二十的轨迹用作测试集。对于每一个不完整的轨迹,它是由对应的完整轨迹进行随机采样生成。采样率被定义为不完整轨迹和完整轨迹长度之比。为了研究drkf模型在不同环境下的比变化,测试了drkf在采样率为百分之三十,百分之五十和百分之七十的时候模型效果的变化。不变的采样策略会导致结果的偏差,因此我们在训练,验证,测试的过程中每一个批次都会重新进行一次采样。所有在测试集合上做的评价都被重复了三次。需要比较的方法:在三个数据集上比较我们的模型和两个传统的模型以及两个深度学习模型。这些方法都将会以四个评价指标被评估。普通的序列到序列模型和基于序列到序列模型的注意力模型被选作基线模型。基线模型对于相关模型有着一个很好的覆盖。rick:为不确定轨迹构建了一个路由表,用来通过搜索图上的top-k轨迹来回应用户的在线查询。mpr:可以从一个转移网络中基于宽度优先搜索发现最流行的轨迹。seq2seq:它利用编码器来将不完整轨迹压缩成一个向量,它的解码器通过这个向量恢复一条完整的轨迹。bahdanauattention:在序列到序列模型的基础上,它会将注意力集中到不完整轨迹中重要的点上。参数设定:所有的模型都有一些参数要调,根据已被报告过的最优参数或者通过验证集来分别优化每一个模型。本发明使用一个两层的lstm,embedding大小为512维。结果和分析:所有方法的性能都已经在表2中被写出了,可以观察到如下现象:(1)首先,我们提出的drkf模型在三个数据集和四个评价指标上都强于其它模型。本发明的神经网络结构由序列到序列模型和注意力机制演变而来。实验结果显示了传统的序列到序列模型和注意力机制在轨迹恢复任务上并不是这么有效,而我们的drkf非常适合这个任务。(2)第二,rick,一个传统的基于a*算法的模型在实验中表现的结果很不错,然而a*算法需要很长的时间来搜索一个最优的轨迹,并且它要被并行化是非常困难的。而且,mpr对于任何情况的效果都不好,因为它对于有上千个位置的情况很难适应。过高的计算量会导致mpr在适当的时间内无法给出合适的结果。数据集包括了上百平方公里的区域,包含上万个位置。mpr的时间复杂度实在是太高了,以至于它必须减少格子的数量,增大格子的面积才能在一个可能容忍的时间内获得结果,导致性能下降得非常快。(3)最后,当数据集和采样率一样的时候,欧几里得距离总是会大于ndtw距离,因为在被预测的轨迹和实际的轨迹之间,时间偏移的现象是非常常见的。欧几里距离与ndtw距离的比值应证了在这两个深度学习模型中,时间偏移的现象很明显。当采样率是百分之七十的时候,drkf的欧式距离与ndtw距离之比要小于序列到序列模型以及bahdanau注意力机制,这个意味着drkf可以在卡尔曼滤波的帮助下部分地减轻这一现象。除此之外,当采样率上升的时候,drkf错误率下降得要比mpr和rick快,这说明了drkf可以更好地利用不完整轨迹中提供的信息。表2深度轨迹恢复模型的分析:时空信息在轨迹恢复任务中是非常重要的上下文信息,这里比较了时空注意力机制,bahdanau注意力机制,没有注意力机制的区别;也比较了双向循环神经网络以及单向循环神经网络作为编码器的性能差别。考虑不同的采样率下的情况,30%,40%,50%,60%,70%五种采样率下各种模型效果的变化。正如表3所示,bahdanau注意力机制可以对子序列到序列模型有一定的帮助,但是这个帮助其实非常有限,并且发现时间信息和空间信息都可以改善性能。本申请提出的时空注意力机制取得了最好的表现,意味着本发明确实找到了一个有效的方法来将时空信息引入到注意力机制中。使用双向lstm确实可以提高性能;除此之外,观察到随着采样率的上升,模型的效果也产生了大大提高,而同时考虑了时空信息以及双向lstm的模型在采样率上升的时候误差下降最快,因此可以更为有效地从输入序列中提取特征,完成轨迹恢复任务,最终模型的深度学习部分采用sta+bilstm项。表3卡尔曼滤波的分析:将误差减少地百分比作为衡量指标。在表4中,比较静态方法和动态方法性能地差别,动态协方差的效果更好,因为可以通过改变协方差大小的方法来评估每一个预测位置的置信度。如果被估计的协方差非常大的话,那么神经网络预测的可信度就并不高了,因此,一些被预测的低置信度的点会被卡尔曼滤波修正。明显地,当采样率上升,卡尔曼滤波也会变得更加有效,因为更多地采样点可以帮助卡尔曼滤波给出一个更加精确的先验状态估计,从而有效地减小来自神经网络的噪音。。表4:不同协方差评估方法的影响参数调优:在北京的数据集上研究了超参数对性能的影响。在所有的基线模型中,bahdanau注意力机制表现得非常好并且和drkf有着相似的超参数。因此,将bahdanau注意力机制作为唯一的参考基线模型。embedding维度是循环神经网络一个非常重要的超参数,直接地影响了模型地容量。在图5中,隐状态大小被设置为128,256,384,512,640。通过验证集上的实验,发现512的embedding维度可以给两个模型提供最好的性能。在调优了embedding维度之后,将embedding维度固定为512,然后比较不同网格长度的影响。在图6中,网格长度被设为80m,100m,120m,140m,160m。其中100m长度的网格给出了最好的效果。而当网格长度下降到80m的时候,位置的数量实在是太多了,模型的训练比较困难,所以预测的误差会开始上升。如图1所示,从左到右依次是时空信息的抽取,双向lstm组成的编码器,时空注意力机制的计算,子序列到序列模型的解码器。右上的图例指明了几种神经网络单元的名称,包括双向lstm,卡尔曼滤波以及单向lstm。如图2所示,序列到序列模型的结构图,它展示了如何通过端点限制以及拷贝机制进行的序列恢复。如图3所示,通过注意力机制利用时间和空间信息进行轨迹恢复。如图4所示,使用神经网络的输出替代卡尔曼滤波的输出,并提出了协同训练算法。如图5所示,展示了一条完整的轨迹是怎样被恢复出来的,以及注意力权重在恢复过程中的变化,图7为采用leaflet绘制的轨迹恢复缩略图,展示了轨迹恢复的大致效果。如图8所示,采用matplotlib画图,绘制出的注意力权重矩阵。颜色越深,就代表权重越大,也就是说输入和输出的关系也就越大,横轴是恢复的点,竖轴是输入的点。展示了一个轨迹恢复的实例,三十个被采样的点被用来恢复原始的一百个点。在图7中,紫色的图标是被采样的点而红色的线是对应的被恢复的轨迹。图8展示了被恢复点和不完整的轨迹点之间注意力权重在恢复过程中的变化。图8上部的矩阵说明了传统的注意力机制很难评估所有被采样点的权重,图8下部的矩阵显示了我们的时空注意力机制可以在时空信息的帮助下计算一个更为合理的注意力权重。如图9所示,演示了卡尔曼滤波的修正过程,二维的高斯分布代表了卡尔曼滤波的先验,后验,以及测量状态。图中紫色的点是需要被恢复的真实点。在预测阶段,卡尔曼滤波做出了一个先验状态估计,这个估计的结果非常接近目标位置,而神经网络的预测偏离了目标很多。然而,在更新阶段之后,修正的结果就非常接近目标了。图中还可以看出来卡尔曼滤波基本上是一个线性的预测,根据i-2和i-1时刻估计的内部状态,卡尔曼滤波做出了一个线性的外推,这个预测是考虑到时间和车速的,因此是具有相当大参考价值的,而神经网络对自身预测的不确定性最终导致了模型决定更多地去以卡尔曼滤波内部地预测为准。从图里就能看出来,卡尔曼滤波预测的高斯分布明显要比神经网络预测地高斯分布要亮,也说明了卡尔曼滤波的先验状态估计更加可靠。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1