基于CNN和Bi-LSTM的船舶航迹预测
2021-01-21刘姗姗马社祥张启超
刘姗姗,马社祥,孟 鑫,张启超
(天津理工大学 电气电子工程学院,天津 300384)
随着海运和客运业的不断发展,加强船舶安全管理和重点目标监测更加迫切。在交通密集、状况复杂的很多沿海和港口的水域,海上交通事故预警的精确性和有效性也尤为重要。提前掌握船舶的走向信息能有效地减少船舶触礁和碰撞等海上交通事故的发生。船舶航行轨迹分析可以获得海上航道的有用信息和船舶的行为模式。该技术还可为海上交通管制、目标监测和海上安全预警提供新的理论依据。文献[1]根据建立的系统方程和测量方程,运用卡尔曼滤波算法估计船舶的未来航行轨迹。文献[2]针对欠驱动水面舰艇,利用无味卡尔曼滤波器(UKF)预测动态目标轨迹位置。文献[3]将扩展卡尔曼滤波算法和竞争神经网络相结合,利用EKF估计船舶航行的状态,再运用NN预测船舶的航行状态。文献[4]在交互式多模型算法的解算过程中,引用期望最大值算法来估计船舶分别在匀速运动和匀转弯运动时的位置。文献[5]根据船舶的位置信息,利用多项式卡尔曼算法预测船舶的未来走向。文献[6]运用贝叶斯网络通过概率推理来预测船舶行为。文献[7]利用高斯过程(gaussian process regression,GPR)对船舶航行轨迹进行回归预测。上述预测方法均为需要构建船舶运动数学方程的线性预测方法。因为有很多外界环境(例如天气、风速等因素)对船舶运动有较大的影响,随机和多样的干扰使得实时准确的运动数学方程很难构建,大多只适用于理想状态。并且船舶自动识别系统提供的船舶轨迹信息一般是非线性的。文献[8]利用BP(back propagation)神经网络对船舶航迹进行预测,根据船舶的方向和行驶速度特征来预测船舶的经度差和纬度差,进而预测船舶航迹。文献[9]设计基于AIS信息和三层BP神经网络模型来预测船舶航迹,根据船舶过去和当前的航行状态特征来预测船舶未来的航行状态。上述均使用BP神经网络预测船舶航迹。虽然BP神经网络可以解决复杂的非线性问题,但是其学习采用梯度下降算法,存在梯度消失、收敛速度慢等问题。文献[10]利用长短期记忆(long short term memory,LSTM)预测模型,输入船舶的过去轨迹特征和当前轨迹特征,输出船舶的未来轨迹特征来训练网络达到期望的输入输出拟合关系,实现船舶轨迹预测。对比BP神经网络,LSTM网络具有对过去信息保存记忆的能力,其船舶航行轨迹预测效果更好。
为了更加准确有效地预测船舶的航行轨迹,本文提出了一种基于卷积神经网络(CNN)和双向长短期记忆网络(Bi-LSTM)的船舶航迹预测模型。模型的高性能表现在CNN能捕获短期特征关系和LSTM能捕获长期时间特征关系。首先利用CNN有效地提取数据之间的潜在关系并形成特征向量,以时序序列方式构造特征向量作为输入数据,再利用Bi-LSTM网络进行船舶航迹预测。与仅使用LSTM网络相比,因为CNN-Bi-LSTM网络中使用了CNN模型提取时序数据潜在特征,所以Bi-LSTM网络输入数据的有效性得到很大提高,并且前向和反向的2个长短时记忆网络综合考虑了过去信息和未来信息的影响,提高了网络预测的准确性。
1 基于AIS信息的船舶航行行为分析
船舶的航行状态特征主要包括船舶的经度、纬度、速度、航首向和对地航向等[11]。其中经度和纬度体现了船舶的位置信息,速度体现了船舶航行的快慢程度,航首向和对地航向体现了船舶航行行为的方向特征。要区分目标船舶和其他船舶,为保证预测数据的准确性,因为每条船舶都有专属的海上移动业务识别码(maritime mobile service identity,MMSI),所以可以用MMSI来区分不同船舶[12]。因此,船舶的航行行为模型可以表示为:
式中:λ和φ分别代表船舶的经度、纬度;V代表船舶的航行速度;C1和C2分别代表船舶的航首向、对地航向。
本文采用的MMSI为414228000的船舶,表1是船舶AIS信息的部分数据。
2 CNN-Bi-LSTM模型
2.1 CNN模型
卷积神经网络(CNN)是前馈神经网络的一种变体,具备精准有效的识别能力,CNN主要包括特征提取和分类2个部分。一个或多个卷积层和池化层组成特征提取部分,通过卷积层中卷积核的卷积计算和池化层的降采样处理来提取数据的潜在特征。CNN还具有权值共享和局部连接的特征,可以通过卷积层和池化层的交替使用从原始数据中得到有效表征,自动提取数据的局部特征[13]。本文利用CNN的特点来提取时序数据的潜在特征,提高输入数据的有效性。
2.1.1 卷积层
卷积层通过卷积核(convolutional kernel,CK)卷积处理输入数据,输出卷积后提取的数据特征。因为同一卷积核操作中的局部连接、空间安排和参数共享特性,在参数较少情况下卷积层可以提取较丰富的特征[14]。
卷积操作的公式为:
式中:i表示第i个卷积核;g(i)表示第i个特征图;a表示输入数据;b表示卷积核的偏置;x、y、z表示输入数据的维度。
卷积操作后的非线性变换通过激活函数来实现,本文采用修正线性单元(rectified linear unit,ReLU)作为激活函数。
本文使用一维卷积神经网络(1-D CNN)来提取数据特征。1-D CNN是一种特殊的CNN,常应用于处理一维数据[15]。其卷积计算公式为:
因为卷积层的隐藏单元仅与输入层的一部分连接,图1显示了一维卷积处理的示例,其中c1~c4是特征向量,x1~x6是输入。一维卷积的单个隐藏单元仅连接到输入层的3个输入。这种连接大大减少了参数的数量,并加速了神经网络的训练过程。
在图1中,c1~c4是通过卷积计算的,其中c1是通过与x1、x2和x3卷积计算的,并且c1与x1、x2、x3之间的连接都具有不同的权重。在计算c2时,这3个权重分别对应于x2、x3和x4。
卷积层的参数主要包括卷积核的大小、步幅和填充,它们确定输出特征向量的大小。卷积核的大小是用于卷积计算的变量数。在图1中,c1是通过x1、x2和x3进行卷积计算得到的,因此在上述一维卷积中卷积核的大小为3。步幅是卷积核在进行卷积计算时需要移动的距离。在图1中,c1由x1、x2和x3计算。当卷积核移动一步时,将通过x2、x3和x4计算c2。填充用于抵消由卷积计算导致的特征向量大小的减小。如图1所示,输入层有6个变量,因此计算出的特征向量的大小为4。如果将输入添加到输入层的每一侧,则特征向量的大小将为6。输出特征向量的计算公式为:
式中:wout是输出特征向量的大小;win是输入特征向量的大小;padding是输入两端填充的元素数;F是卷积核的大小。
1-D CNN卷积输出为一维向量,当与全连接层连接时将各个卷积核的输出拼接成一个完整的一维向量,直接与全连接层连接。
2.1.2 池化层
虽然卷积层缩小了数据矩阵的规模,但在从输入层提取附加空间信息时,卷积层的输出矩阵大小没有明显下降。为了进一步减小数据矩阵大小,CNN网络在卷积层之后添加池化层,以优化网络结构。池化层利用池化核对输入的特征向量进行降采样(down sampling),同时也更加突出了提取的特征。最大池化处理方式、平均池化处理方式分别表示为:
式中:al(i,t)表示第l层中第i个特征图的第t个神经元;w表示卷积核的宽度;j表示第j个池化核。
参数共享可以大大减少参数数量。在同一过滤器中,所有特征向量的计算,共享相同的权重集合,n个过滤器有n组权重。参数共享和稀疏连接大大减少了自由变量的数量,从而使卷积神经网络能够以较少的计算资源提取特征。由一维卷积层计算出的特征向量在一维池化层中被下采样。池化层选择并过滤卷积层输出的特征图。广泛采用的池化方法是“最大池化”和“平均池化”,池化方法的参数是池大小、步幅和填充。池大小是用于池计算的数据数量,池层中的步幅和填充与卷积层相同。图2显示了一维池化过程的示例。在该图中,特征向量由包括c1~c4和2个pd共6个元素组成,并且一维合并p1、p2和p3的元素是由这6个元素计算的。
在图2中,c1、c2、c3和c4是上层计算的特征向量,pd是填充元素,p1、p2和p3是池化层的输出,其中步幅为2。在图2中,p1由池化pd和c1计算得出。最大池或平均池可以用作池化方法。最大池化方法是从pd和c1中选择最大的一个作为p1的值。平均池化方法是将pd和c1的平均值作为p1的值,并且p2和p3值的计算方法相同。通过池化方法,池化层获得其输出p1、p2、p3,经过一维卷积层和一维池化层后,要素将输入到双向LSTM神经网络中以进一步提取。
2.2 Bi-LSTM模型
循环神经网络(recurrent neural network,RNN)是一种输入为序列数据,在序列传播方向进行递归且所有节点按链式连接的递归神经网络(recursive neural network)。RNN具有记忆性和参数共享的特点,因此能以很高的效率对序列的非线性特征进行学习。
虽然RNN能有效地处理非线性时间序列问题,但是它也存在一些问题[16]:对于延迟过长的时间序列,RNN存在梯度爆炸和消失的问题;需提前明确延时窗口的长度进而实现RNN模型训练,但是获取此参数的最优值在实际应用中很难实现。LSTM是一种传统循环神经网络的进化网络,可以改善因回归神经网络学习过程中反向船舶误差导致的长时间滞后引起的梯度爆炸和消失问题,捕获长距离依赖性并从不同长度的序列中有效地学习。LSTM模型中LSTM存储器单元是传统RNN中隐藏层的循环神经元的进化,单元可以指示网络何时忘记历史信息以及何时通过新的输入信息更新存储单元[17]。每个LSTM单元都配有3个控制信息流的门,每个门均包含一个Sigmoid层和一个逐点乘法运算,并可以控制LSTM信息流以避免梯度爆炸和消失,控制信息流的门为:遗忘门决定应该记住或遗忘哪些信息;输入门决定哪些信息比较重要以便记忆;输出门决定将要传递的信息。3个门的值设置在0和1之间。LSTM模型的细胞结构如图3所示,其中z为输入模块。前向计算公式为:
式中:i、f、c、o分别表示输入门、遗忘门、细胞状态、输出门;b表示对应的偏置项;W表示层与各个门之间的权值矩阵;σ为sigmoid激活函数;tanh为双曲正切激活函数。
因为单向LSTM下一刻预测输出是根据前面多个时刻的输入来共同影响的,并且在提取数据特征时可能导致丢失有用信息。而很多情况下预测同时受前面和后面多个时刻输入的共同影响,这样会获得更加精确的预测结果。本文研究使用Bi-LSTM捕获2个方向之间的数据特征[18]。因为需要能关联未来的数据,而单向循环神经网络属于关联历史数据,所以对未来数据提出了反向循环神经网络,2个方向的网络结合到一起就能关联历史和未来。2个网络,前向网络正向计算隐向量,后向网络反向计算隐向量[19],本文将2个隐向量按式(12)进行结合。图3描述了一个展开的双向LSTM,图4为Bi-LSTM模型。在前向网络层中随顺序时刻从前往后计算一遍,得到向前隐藏层在每个时刻的输出值。在后向网络层中随倒序时刻从后往前计算一遍,得到向后隐藏层在每个时刻的输出值。最后输出前向网络层和后向网络层在每个时刻的综合输出。
2.3 船舶航迹预测
CNN有助于学习如何从数据中提取特征。但是它需要多卷积层来捕获长期依赖关系,随着神经网络中长度输入序列的增加,捕获依赖关系会变差。而Bi-LSTM模型能够捕获序列之间的长期依赖性,因此CNN与Bi-LSTM模型可以互补,使预测效果更好。CNN-Bi-LSTM的船舶航迹预测方法是由CNN和Bi-LSTM的串联连接组成。CNNBi-LSTM可以提取用于船舶航迹预测的多个船舶航行的复杂特征,并可以存储复杂的不规则趋势。首先CNN-Bi-LSTM的底层是由CNN组成,CNN层可以接收表征船舶航行轨迹的各种变量,例如经度、纬度、速度、航向。CNN包含一个接受变量作为输入的输入层,一个将特征提取到Bi-LSTM的输出层以及卷积层,ReLU层和池化功能。卷积层将卷积运算应用于传入的序列,并将结果传递给下一层。卷积操作模拟单个神经元对视觉刺激的响应。每个卷积神经元仅处理感受野(receptive field)的数据,卷积运算可以减少参数数量。Bi-LSTM是CNN-Bi-LSTM的顶层,存储有关通过CNN提取的表征船舶航行状态的重要特征信息。Bi-LSTM通过合并可更新先前隐藏状态的内存单元来保留数据间的长期依赖关系。
CNN-Bi-LSTM回归问题是船舶航迹预测的实质。因为一般船舶在一段时间内的航行状态是规律的,过去时刻和当前时刻的航行状态对下一时刻的航行状态有很大的影响,所以输入船舶的过去时刻和当前时刻的船舶航行信息,输出未来轨迹数据中的经度和纬度,通过船舶的真实航行轨迹样本训练网络,以此使预测模型的输入输出形成相应的映射关系,进而实现对船舶未来轨迹的预测。对于单艘船舶,其在t时刻的行为G(t)可表示为:
式中,λt、φt、vt、c1t、c2t分别表示船舶的经度,纬度,速度,航首向和对地航向等5个行为特征。
本文输入G(t-2),G(t-1)和G(t),输出G(t+1)中的经度和纬度来训练混合网络。由此,船舶航迹预测模型的表达式为:
式中,函数f为激活函数。
在CNN-Bi-LSTM网络中,采用修正线性单元(rectified linear unit,ReLU)作为神经元的激活函数。函数表达式为:
从式(16)中可以看出,Relu函数抑制了非正区域那一侧,这一特征会使预测模型具备稀疏激活能力,使训练样本的拟合度更高。对于非线性函数,因为Relu在非负区域的斜率是固定不变的,所以避免了出现梯度消失问题,也使得模型具有较为稳定的收敛速度。
未经任何处理的原始数据之间的数量级一般是不相同的,而数量级相差太大的数据会导致网络预测误差,因此归一化处理输入数据,处理后的数据均限制在0到1之间[20]。本文采用离差标准化方法(minmax normalization)归一化训练数据,即:
式中:max代表训练样本中的最大值;min代表训练样本中的最小值;X代表原始数据;X′代表归一化后的数据。
船舶航迹预测的主要步骤如下:
步骤1归一化处理初始数据,得到相同数量级的输入数据;
步骤2将输入数据输入一维卷积神经网络,经过卷积层中卷积核的卷积计算获得数据特征;
步骤3将卷积层输出的特征数据输入池化层并进行平均池化处理,缩小数据矩阵大小。
步骤4卷积神经网络的输出作为Bi-LSTM的有效输入数据,通过的前向网络和后向网络训练有效样本数据,有效地拟合输入输出数据,获得在目标误差内的预测输出值。
步骤5依次经过3个全连接层,综合前面提取到的预测值特征作为最终输出。
船舶航迹预测模型如图5所示。
本文采用均方误差(mean squared error,MSE)和平均绝对误差(mean absolute error,MAE)来评估船舶航迹预测模型。均方误差是指预测值(test)与真实值(real)之差的平方和的平均值,MSE的数学表达式如式(18)所示。平均绝对误差是指预测值与真实值的绝对误差的平均值,MAE的数学表达式如式(19)所示。2个误差指标本质都是说明预测值与真实值的相差程度,所以它们的值越小,说明预测值越接近真实值,即预测效果就越好[21]。
式中,N表示样本的数量。
3 实验结果及分析
实验所采用的编程语言为Python3.5,实验平台配备双路TITAN Xp GPU,Intel(R)Core(TM)i7-7800X CPU,3.5 GHz×12,32 GB内存,Ubuntu16.04操作系统。本文实验选取海上移动业务识别码(MMSI)为414 228 000的船舶AIS信息作为样本数据,构建CNN-Bi-LSTM模型,进行船舶航迹预测。随机选取了该船舶连续的4 356组航行数据,其中前2 955组数据用作网络训练,后797组数据用作网络测试。因为每条数据都有一个真实的标签,会得到相应的预测结果,所以使用MAE和MSE进行性能评估。
归一化处理训练数据,输入连续3个时刻的船舶数据G(t-2),G(t-1),G(t),输出下一时刻的船舶数据中的经度和纬度,以此来训练CNN-Bi-LSTM模型。其中1D CNN的卷积核设为2;卷积在数据每一维的步长设为1;采用相同填充的方法进行卷积,即超出边界的部分使用补充0的方法来使得输入输出的尺寸相同;并且将矩阵区域的均值作为结果。Bi-LSTM中2个LSTM层的神经元个数均为80;全连接层的神经元个数分别设为100、50、10;采用relu激活函数。得到的预测轨迹和真实轨迹对比如图6所示。
通过对比CNN-Bi-LSTM,LSTM和BP预测模型,来验证所提混合模型的有效性。其中,LSTM模型中,输入G(t-2),G(t-1),G(t),输出G(t+1)中的经度和纬度;LSTM层神经元个数为80;全连接层神经元个数分别设为100,50和10;采用Relu函数为激活函数。其中BP神经网络也是同理。为了对比效果,3个预测模型设置相同的超参数,如表2所示。
表2 超参数
CNN-Bi-LSTM模型与LSTM模型轨迹预测如图7所示;CNN-Bi-LSTM与LSTM经度误差曲线如图8所示;CNN-Bi-LSTM与LSTM纬度误差曲线如图9所示;CNN-Bi-LSTM模型与BP轨迹预测曲线如图10所示;CNN-Bi-LSTM与BP经度预测误差曲线如图11所示;CNN-Bi-LSTM与BP纬度误差曲线如图12所示。均方误差对比如表3所示。
表3 预测模型误差分析结果
采用十折交叉验证的方法对3种模型的性能进行评估。十折交叉验证方法将数据集分为10份,并依次将其中的9份作为训练集、1份作为测试集进行10次实验。各模型的十折交叉验证准确性平均值如表4所示。
表4 预测模型十折交叉验证准确性值
通过CNN-Bi-LSTM预测模型与LSTM模型和BP模型的船舶轨迹,经纬度误差曲线以及均方误差平均绝对误差曲线和预测模型十折交叉验证准确值均值曲线,可以看出CNN-Bi-LSTM模型的船舶航迹预测效果比LSTM和BP预测模型好。
4 结论
通过深入研究船舶AIS数据反映出的船舶航行状态特征,进而构建船舶航行轨迹预测模型。结合CNN的局部特征学习能力和Bi-LSTM学习历史和未来的上下文功能能力,提出利用CNN-Bi-LSTM网络根据船舶AIS数据预测船舶航迹的方法。将目标船舶的上千条航行数据作为训练样本训练所提出的混合神经网络,利用训练好的CNNBi-LSTM预测模型预测后面时刻的船舶轨迹。通过对比分析预测值与真实航行数据的误差,可以证明CNN-Bi-LSTM模型对船舶轨迹的预测精度高于传统的LSTM和BP预测模型。
在未来研究中应该考虑在充足数据前提下不同时间间隔对船舶航行轨迹的影响。所提出的混合深度学习网络的预测精确性还有待提高,接下来将利用一些优化算法进一步优化Bi-LSTM模型的参数,以提高船舶航迹预测值的预测精度。