李 永,成梦雅
(北京工业大学 信息学部,北京 100124)
互联网时代的飞速发展,海洋中的船舶越来越多,但是在某些港口或者海域,部分航道面临着堵塞困难。船舶在海上航行,精准的定位不仅决定了船舶航行的工作效率,还关乎船舶行驶的安全。为了解决此问题,对船舶航迹进行预测是十分必要的。航迹预测,简单来说,就是推算将来时刻的船舶所在的位置。船舶行驶的距离与所花费的实际时间在船舶速度一定的情况下是成正比的,因此位置预测可分为长距离预测与短距离预测,或者称为长时预测与短时预测[1]。船舶在远洋时,它需要很长的时间才能达到目的地并保持稳定的运动,所以比较适合于长时预测。短时船舶预测更容易达到实际应用所需的精度,因为预测时间短,并且可以始终根据目标位置报文和雷达监视数据校正预测结果[2]。
航迹预测是人们给出的一种预测概念,用于判断未来的交通流量。轨迹预测可根据基本功能分为时间预测和位置预测。时间预测顾名思义就是在能确保船舶稳定运动并且知道轨迹点的情况下,可以根据行驶时间长度预测出到达的位置数据。该算法的基本原理可以利用动能定理解决,例如飞机、火车和轮船的预计到达时间等。位置预测是指经过一定距离或一定时间后,求出抵达点的位置数据。不需要通过实物参与就能通过纯理论推算达到预测的目的,因此实验成本大大节约了。
同时预测还是一种防范行为,当预测结果不在意料中时,放弃该结果,防止预测结果的发生。例如车辆拥堵的预测等[3]。但是在预测的过程中也会出现许多问题,船舶数据量越来越大,对数据管理和应用提出了新的挑战[4-6]。同时具有时空性的数据,为了实现更为准确的分析在数据查询和正确处理方面增加了难度。数据的稀疏性,航迹数据具有一定的规模,数据的稀疏性仍不可避免,一些船舶在其他海域的数据较少,在某个海域比较多,对于船舶轨迹来说,如果采样率较低,相距较远的两个轨迹点也会增加轨迹数据的不确定性[7]。船舶的航行势必会受风向、气流、海浪等外界不可控因素的影响。除了船舶本身,外力在船舶的作用力的大小以及怎么作用,第三方很难知晓[8]。总之,航迹预测是难点也是热点。
根据对船舶领域当前轨迹的预测,文献[9]使用卡尔曼滤波算法,通过最小二乘方法估计自动检测网络系统的观测数据。获得船舶的平滑运动路径。文献[10]将改进的卡尔曼滤波算法应用于船舶的运动轨迹中。2015年,徐婷婷等人提出了一个基于三层BP神经网络的航迹预测模型,实现了船舶航迹预测[11]。除了BP神经网络和卡尔曼滤波之类的算法外,还有使用机器学习的轨迹预测方法,例如聚类方法、函数回归方法和径向基的神经网络等[12-14]。研究者高阳在其硕士论文中给出利用聚类的方法做飞机的航迹预测[15]。
文献[16]运用支持向量机模型对桥区河流失控的船的航迹展开预测。通过建立运动目标的数学模型[17],考虑运动目标的方向和速度,然后调整运动目标的运动方程来实现对船舶位置的预测。文献[18]针对历史轨迹数量有限时导致传统轨迹预测方法精度较低的问题,提出了一种改进的贝叶斯推理(MBI)方法。MBI为了获得更准确的马尔可夫模型结合对历史轨迹进行分解而构造了一个马尔可夫模型来量化相邻位置。然后提出了TPMO轨迹算法。由于该算法的训练过程为了对轨迹进行聚类,不仅需要使用热点区域挖掘算法,而且需要建立具有连续轨迹时间的贝叶斯网络,这是非常消耗时间成本的[19]。
近些年来,在很多领域深度学习被广泛应用,神经网络的特征是使用一组已知的训练样本集来构建从输入到输出的映射。它主要是根据时间序列数据将历史行驶轨迹坐标数据进行转换,映射出历史轨迹点与预测轨迹点之间的关系,然后通过神经网络学习船舶运动规律。
深度学习中的BP神经网络也被称为误差逆向传播算法,是至今神经网络学习算法中较为成功的。它几乎可以逼近任意非线性模型[11-12]。但是BP神经网络的问题就是信息内容传递是单向的即从输入到输出这个方向。这样的网络模型具有便于训练和简单的优点,但是它的缺点是不能考虑时间前后的输入或输出对结果造成的影响。所以考虑到BP神经网络不能记忆的问题,于是科学家提出了循环神经网络,此时的输入和上一时刻的输出信息都要考虑作为输入,从而形成一个环路神经网络。循环神经网络对于传统的神经网络来说,它们的每一个隐藏层的神经元中不但包括上一个时刻残留的信息,同时也包括当前的输入信息的内容,对于时间序列数据的预测具备较大的优势,然而循环神经网络对间隔太远的历史信息很不容易记忆,一般在训练过程中超过几步就有可能产生梯度消失的现象。
为解决此问题,LSTM被提出,它的记忆方式很特殊,不会只是将以前梯度较大的记忆抹除,因而解决了梯度消失的问题。LSTM的隐藏层除记忆单元也多了三个控制门:输入门、遗忘门、输出门。分别完成对时间序列数据的载入、读取以及重置操作。遗忘门负责从细胞单元状态中忘记信息,这可以优化长短期神经网络的性能。输入门负责添加信息到单元状态,它可以控制重要而不冗余的输入信息。负责单元状态的输出则由输出门控制。通过这些“门”的结构,LSTM可以解决长期记忆的问题,有效地增加记忆的长度,并适合于处理长序列问题[20-21]。文中研究将船舶特有的轨迹特征与时间序列相结合,使用基于深度学习的LSTM模型,观察LSTM模型学习时间序列数据带来的隐含船舶运动规律。
随着深度学习的发展,循环神经网络在处理时间序列问题方面已显示出良好的性能。而轨迹是具有时空信息的序列,并且可以通过使用循环神经网络学习轨迹的特性来预测下一轨迹位置。长短期记忆(long short term memory,LSTM)是一种经过改进的循环神经网络,它解决了由于神经网络层数增加而导致的梯度消失或爆炸的问题。
详细说明如下。
文中使用LSTM模型作为主体,通过学习输入轨迹训练的特征与下一个位置的关系,从而预测将来可能到达的位置。LSTM模型具有独特的记忆模块,该模块的作用是减缓信息丢失速度,比较适合深度神经网络计算。LSTM是一种适合时间序列数据的循环神经网络,它的下一个时间周期的输入是上一个时间周期的输出,LSTM单元除了包括输入门和输出门还有遗忘门、输入节点等。根据时间展开的循环神经网络模型如图1所示。LSTM的神经网络结构如图2所示。
图1 LSTM网络缩略图
图2 LSTM神经网络结构
本模型中记忆模块的工作原理大致如下:
图2中,在RNN中随时间传递的只有单元状态C,LSTM有状态链h(隐藏层状态)和C(单元状态)是随时间传递的,ht-1是传入到当前时刻的上一时刻隐藏层的值,xt是当前时刻的输入值,ct-1是上一时刻LSTM记忆单元的状态值,ct是当前时刻的LSTM记忆单元的状态值。ht-1和xt在经过遗忘门时,通过计算得出需要丢弃的信息。由计算得到输出到单元状态的值在0和1之间。0表示全部忘记,1表示全部保留。见公式(1):
ft=σ(wf·[ht-1,xt]+bf)
(1)
其中,ft是遗忘门的输出,遗忘门里的权重矩阵和偏置向量分别是wf和bf,激活函数Sigmoid是一种将变量映射到[0,1]之间的S型生长的函数,由σ表示。具体公式为:
(2)
更新到单元的新信息中,先是经过有Sigmoid函数的输入门计算出需要更新的信息(见公式(3)),再由tanh层创建一个新的值kt加入到单元状态中(见公式(4)):
it=σ(wi·[ht-1,xt]+bi)
(3)
kt=tanh(wk·[ht-1,xt]+bk)
(4)
公式(3)中,it是输入门的输出,wi是输入门的权重矩阵,bi是偏置,[ht-1,xt]表示将两个向量拼成一个向量。式(3)和式(4)得出的结果相乘再与上一时刻单元状态值经遗忘门得出的结果累加得到了当前时刻单元状态值,如下:
ct=ft*ct-1+it*kt
(5)
当前时刻的单元状态ct由公式(5)表示,它是由两个乘积累加产生的,包括遗忘门层的输出按照位乘以上一时刻的单元状态和输入门输出按位乘以输入的单元状态。单元状态决定最终输出结果。由Sigmoid对输出结果进行分类选择需要输出的数据,再用tanh函数处理单元状态,得到经隐藏层传递给下一时刻的状态值ht,ht经过Sigmoid处理后可得到当前时刻预输出值y,见式(6)~式(8),最终的输出是由输出门和细胞状态共同决定的。
ot=σ(wo·[ht-1,xt]+bo)
(6)
ht=ot*tanh(ct)
(7)
y=σ(wtht)
(8)
如今,各种海上交通管理系统获取的船舶导航数据的重要来源是AIS数据,其中包括如MMSI(maritime mobile service identity)、经度、纬度、速度和航向等基本信息。为了深入探索船舶的历史航迹数据,建立实时轨迹预测模型,船舶位置最相关的航行信息也要充分使用,将船舶的经度、纬度、航速和航向作为输入,具体模型的结构如图3所示。
图3 航迹预测模型结构示意图
船舶轨迹预测实质上是运用LSTM循环神经网络的回归问题将船舶的历史轨迹特征以及当前的轨迹特征作为模型输入,将未来某个时间的船舶轨迹特征数据作为输出,然后与实际值进行比较,以建立船舶历史轨迹与船舶未来轨迹特征数据之间的映射关系。进行船舶未来航向特性的计算和预测。对于一艘船舶来说,其在t时刻的轨迹特征Y(t)表示为:
Y(t)={lat,lon,v,c}
(9)
其中,lat,lon,v,c分别为船舶在t时刻的4项特性:纬度、经度、速度、航向。
为了建立船舶轨迹的预测模型,将连续n个时刻的船舶航行轨迹特征数据Y(t-n+1),…,Y(t-1)和Y(t)作为模型的输入,将t+1时刻的航行轨迹数据Y(t+1)作为输出,其中n对应着输入层的step大小。那么,船舶航迹预测模型的表达式为:
Y(t+1)=f({Y(t-n+1),…,Y(t-1),Y(t)})
(10)
深度学习训练目的就是找到神经网络的最小损失函数点,往往引入优化算法帮助更新与计算影响模型训练和模型输出的网络参数,逼近或达到最优值,寻找最小损失函数点,提高模型精确度。文中采用了Adam算法优化了LSTM网络,Adam既可以对学习率进行自适应调节,又可以利用历史动量加快收敛速度。Adam算法在计算时,需要的内存更少,收敛速度快。Adam方法的更新规则[22]如下:
Et(g)=βtEt-1(g)+(1-β1)g(ωt)
(11)
Et(g2)=β2Et-1(g2)+(1-β2)g(ωt)⊙g(ωt)
(12)
(13)
更新后的权值:
ωt+1=ωt+△ωt=
(14)
其中,β1,β2是[0,1]之间的可变参数,梯度向量g的一阶矩为Et(g),二阶矩为Et(g2)。
本次仿真实验使用的是公开AIS数据下载,The Marinecadastre website(https://marinecadastre.gov/ais/)。该数据集包含了从2009年到2019年10年时间里的历史轨迹信息。这些数据含有轨迹量大,时间跨度大,适合作为文中轨迹预测的数据集。每条轨迹由一系列轨迹点组成,每个轨迹点数据包含经度(LON)、纬度(LAT)、时间(BaseDateTime)、SOG对地航速(speed over ground)、COG对地航向(course over ground)、Heading航艏向等信息,同时将船舶的海上移动业务识别码(maritime mobile service identity,MMSI)也放入船舶基本数据中,作为唯一标识,去区分不同船舶的航行行为。轨迹部分数据示例如表1所示。
表1 数据集基本信息
在实验中将数据集划分为训练集、测试集和验证集,所占比重分别为80%、10%、10%。其中,验证集主要是用来调整超参数,在测试集上对模型进行均方误差的检验。
首先创建模型,通过拟合训练集去找模型的初始参数值。之后再利用验证集对模型的超参数进行调整,查看模型的性能。再通过测试集数据评估最终模型的泛化能力。将最后的预测结果记录下来。由LSTM该模型的训练效果(参见图4)显示,随着训练次数的增加,误差曲线逐渐趋于稳定,训练效果较好。
图4 航迹预测模型训练验证误差图
在此次实验中,均方误差MSE作为评估船舶轨迹预测模型的方法。均方误差是用来衡量预测结果的误差情况,MSE的数学表达如式(15)所示,该值越小则表示模型的性能越好。
(15)
为了验证模型的有效性,分析LSTM方法和BP神经网络的预测效果。网络输入同样使用经度、纬度、船舶速度和船舶方向,输出使用经纬度,图5为LSTM和BP神经网络预测的均方误差。
图5 在相同数据集下不同模型的结果对比(MSE)
从图5可以看出LSTM预测模型有着更高的预测精度,原因是LSTM具有较好的预测能力,并且能推断航迹变化趋势,它拥有较强的记忆能力来记忆历史时刻航迹位置。长短期记忆神经网络对于存在依赖关系的历史信息采用一个特定的记忆细胞存储信息。LSTM通过引入输入门,输出门和遗忘门,使得长期依赖性的时间序列数据的学习和分析能力显著提高。适合处理长序列问题。
为了验证模型预测值与真实值之间的误差,在模型训练、预测过程中输入相应的参数,发现不同的参数对模型的训练和预测结果产生了不同的影响。文中通过仿真实验对模型的性能进行了评估,利用测试集数据进行验证,来检验所选模型的最终的预测能力。图6、图7为LSTM模型的预测结果,从图中可以看到,预测的纬度和经度非常接近纬度和经度的实际变化。这非常接近预期结果。这也表明基于长短期记忆神经网络的船舶预测模型达到了实验目的。为了更直观地看到预测值和真实值的差别,在地图上进行可视化展示,如图8所示。由图可以看出,预测值与真实值相对吻合,具有一定的研究意义。
图6 纬度预测结果
图7 经度预测结果
图8 预测值与真实值可视化展示
文中提出了基于神经网络的船舶航迹预测方法,充分探索船舶时间序列数据背后的运动规律,进而实现航迹预测。结合AIS信息和LSTM模型对船舶航迹进行了预测。通过训练好的LSTM模型对预测目标海域中的船舶进行实验。通过比较和分析预测值与实际数据之间的偏差,发现随时间的变化,LSTM可以有效地学习和识别船舶轨迹的特征值,例如经度、纬度、速度和航行方向,然后准确地预测船舶未来时刻的位置。文中基于预测船舶轨迹的目标,作为初步探索,仍然存在许多不足之处,例如,在理想的仿真环境中的大多数算法的噪声是人为确定并保持不变的,而系统状态下的噪声是不确定和未知的,不管是适用性方面还是在通用性方面都不是很强。在今后的工作中将考虑船舶在航行时,受到风、流、浪等外界环境的影响,以及船舶航行时遇到障碍物等等,进而对预测准确性进行提升。