李广宁,史宪铭,陈 磊,赵 美
(陆军工程大学石家庄校区,石家庄 050000)
弹药保障是装备作战的基础,弹药消耗量预计可为弹药筹措、储备和补给的决策工作提供科学依据,弹药消耗量预计结果的正确性和快捷性,是做好弹药保障工作的关键。但在当前的弹药消耗量预计过程中,考虑弹药、目标和毁伤程度方面的研究较多,而考虑作战环境影响的研究存在不足,造成在不同作战环境条件下的弹药消耗量预计结果往往一致性较强,甚至不作考虑。
弹药消耗预测一直以来是后勤保障领域的重难点。目前,通过神经网络进行各因素预测弹药消耗的方法有很多,比如齐浩淳等利用神经网络方法,建立了高寒山区弹药消耗预测模型,描述了模型的预测过程和步骤,结合高寒山区的实际情况,分析了高寒山区弹药供应保障的消费需求;史宪铭等针对高原寒区特殊复杂的作战背景,提出了一种基于模糊(back propagation,BP)神经网络的弹药换算系数优化模型。该模型借助模糊隶属度,对难以量化的弹药消耗影响因素进行量化,从而提高弹药换算系数的准确性,进而构建了弹药换算系数的计算模型。对影响高原寒冷地区弹药消耗的主要因素进行了模糊分析和量化,在此基础上建立了模糊BP 神经网络模型;田德红等利用(deep neural networks,DNN)确定网络各层的最优激活函数,基于(modified particle swarm optimization,MPSO)参数优化得到网络各层的最优权重和阈值,进而构建基于MPSO 和DNN 融合的航空弹药训练消耗预测模型;杨侃等主要结合武警部队非致命武器(催泪弹)的一些性能指标,根据不同的事件规模,利用BP 神经网络对预测其反恐态势的武器使用量基数的最小量进行分析和评估。这些文章通过分析神经网络的原理特性,分析各因素对于弹药消耗的影响,训练数据得到学习率,进而进行弹药预测。
深度学习作为一种有着非常良好效果的人工智能算法,不同于传统的预测方法,尤其是在处理非线性问题时。近年来,深度学习在弹药预测中的热度非常高。在我国专家学者的研究成果中,最常用的深度学习算法是简单神经网络,特别是BP 神经网络。然而,BP 神经网络有着效率较低、网络训练失败的可能性较大等缺点,对于长时间序列数据的训练和预测难以使用。弹药各阶段消耗数据本质上是时间序列,每一阶段的弹药消耗不仅仅受当前的因素影响,还受到上一阶段的各因素如作战决心、消耗限额、气候环境等因素的影响,而LSTM 长短期记忆神经网络作为一种深度学习算法,特别适合对大数据时间序列进行预测分析,能够获得较好的预测效果。
因此,利用深度学习方法预测弹药消耗,有助于提高装备保障的快速度和准确度。本文基于模拟弹药消耗数据,利用LSTM 网络对长时间的弹药消耗进行预测,并与RNN 神经网络和BP 神经网络的预测结果进行对比,同时讨论了影响LSTM 预测结果的因素。经过预测检验,拟合效果非常好。
神经网络的结构包含输入层、输出层和隐含层。BP 神经网络具有任意复杂的模式分类能力和优良的多维函数映射能力。本质上来说,BP 算法就是以网络误差平方为目标函数、采用梯度下降法来计算目标函数的最小值。
RNN(recurrent neural network,RNN)循环神经网络是一种可以处理关于时间序列数据的神经网络。与一般的神经网络相比,它可以处理时间序列变化的数据,因为循环神经网络隐含层的值不只是取决于当前这次的输入,还取决于上一次隐藏层的值。
长短期记忆神经网络(long short-term memory,LSTM)是一种特殊的循环神经网络,主要是为了解决长时间序列训练过程中的梯度消失和梯度爆炸问题。和普通的循环神经网络相比,长短期记忆神经网络能够在更长的时间序列数据中,实现更好的预测功能。
资料数据来源于某旅示例战役144 个时间节点弹药消耗示例数据,经数据调研,选取4 个影响弹药消耗因子。这些因子在弹药消耗上有着明确的含义,装备实力为各种轻型和重型武器装备的转换指数。
表1 示例弹药消耗数据
本文提出的LSTM 神经网络方法使用Python语言实现。实验的关键步骤实现如下所述。
2.2.1 调用Python 库和函数
表2 调用Python 库和函数
2.2.2 构建LSTM 模型
2.2.3 拟合与预测
表3 模型的拟合与预测
为了减少服务器的计算量,防止神经网络趋向于较大特征,影响模型的精度,采用Min-Max Normalization 的方法将所有数据缩放到区间[0,1],具体公式如下:
上述是特征归一化后的值,是当前特征的最小值和最大值。而后进行数据划分,划分为训练集和测试集,进行LSTM 的训练和预测。
参数调整的最终目的是提高预测精度。在实践中,预测精度反映在训练预测结果和观测值之间的RMSE 和MAE 上。
Batch:深度学习的优化算法,就是如何针对梯度下降的问题。有两种方式来解决参数更新的问题。一种是将所有数据集计算做一次损失函数,然后计算函数各参数的梯度,更新梯度。但是这样计算量巨大,速度慢。这种计算方法称为batch gradient descent,即批梯度下降。还有一种是每计算一个数据就要统计损失函数,然后通过损失函数计算梯度,更新参数。这种方法叫作随机梯度函数,速度快,但是收敛性能不好。为了克服这两种方法的缺点,本文采用的是mini-batch gradient decent,小幅度的梯度下降,减少了随机性,计算量也大幅下降。最终选择batch_size 值为20。
Epoch:为了能够构建预测速度精度符合标准的神经网络,需要对网络训练过程中使用的设置(超参数)作出许多决定。epoch 是指前向和后向传播中所有批次的单一训练迭代。如果epoch 数过小,网络可能拟合不足;如果epoch 数过大,可能会有过拟合。经过计算调试,选择epoch=300。
特征选择过程是对输入数据进行降维的过程。通过去除冗余特征、降低输入向量空间维数和优化学习样本,提高训练效率。影响弹药消耗预测的因素很多。不同时间、不同地点根据不同的地理条件有自己的主要控制因素。但本次的弹药消耗数据量大,容易出现冗余数据,影响模型的训练效率,必须去除。
本文通过测试多个阈值从特征的重要性中选择特征。具体来说,每个输入变量的特征重要性本质上允许通过重要性来测试每个特征子集。
特征重要性分数可用于scikit-learn 中的特征选择。由select from model 类实现,该类采用模型并将数据集转换为具有选定特征的子集,阈值可用于决定选择哪些特征。
通过XGBoost 模型,在训练集上进行训练,评估测试。利用从训练数据集计算出的特征重要性,将模型封装在一个select from model 实例中。本文使用这个模型来选择特征,用选择的特征子集去训练选择的模型,进而在同样的特征方案进行评估测试集。运行,得到输出,如表4 所示。
表4 选择特征值结果
因此,选择3 个特征向量。输入层节点为3。
本文从弹药消耗数据的特点出发,选取变化较大的4 个特征,剔除不变的无用特征。然后,利用XGBoost 算法对这4 个特征进行进一步的分析和筛选。这种算法有3 种计算特征重要性的方式:
“cover”:覆盖率指标是指与此功能相关的观察值的相对数量;
“gain”:说明特征分割的平均增益;
“frequency”:表示树中特定特征出现的百分比。
本文中采用“gain”这种方式来计算特征重要性得分。python 中已经有了打包好的XGBoost 算法库,本文只需要调用这个库就可以实现特征重要性分析。使用XGBoost 算法获取每个特征的重要度得分,并按照从大到小的顺序进行排序,如图1 所示。
图1 特征向量重要度分析
从图3 可以得出f1(持续时间)、f3(参战兵力)、f2(装备实力),这3 个特征得分较高。因此,上述3个得分较高的特征更适合构成实验的样本数据。
图3 步长为5 时的测试结果
原始数据需要转换成适合LSTM 神经网络输入的三维形状数据。在对模型进行检验时,采用了弹药消耗的时间序列进行检验。结合模型及实际弹药消耗情况,本文决定采用步长为1、5、10、20 四种情况来进行对比试验。结合表5 和图2~图5 可以得出步长为10 时为最佳参数,MAE 的值最小,预测契合度很高。
表5 各步长对于MAE 值的对比
图2 步长为1 时的测试结果
图4 步长为10 时的测试结果
图5 步长为20 时的测试结果
在确定好特性向量后,就可以进行神经网络训练和预测,因为将窗口步长设定为10,所以144 个时间数据点被设定为134 组数据。
为了让模型更加真实,将前120 组设置为训练集,后14 组设置为测试集。将原数据训练集命名为X_train,训练后的对比数据为Y_train,后14 组测试集命名为X_test,训练后的预测数据为Y_test。而后得出训练对比和测试对比结果。
从图6 中可以看出随着训练集的增加,拟合的效果虽然存在反复,但总体是效果越来越好。利用训练集的拟合数据来进行测试集的拟合测试。从图7 中可以看到,在消耗数量未达到400 时,还存在些微小的波动,但弹药消耗量超过400 时,预测精度很高。
为了更好地验证LSTM 模型的准确性,利用原始数据对本文提出的LSTM 模型、RNN 模型和BP模型进行了比较。LSTM 模型和RNN 模型用Python实现,BP 模型用Matlab 实现。同样,根据所述方法,将数据分为训练集和测试集。用训练集训练RNN神经网络模型和BP 神经网络模型,用模型在测试集上的精度来评价模型。RNN 神经网络和BP 神经网络的训练效果和测试效果如图6~图9 所示。BP神经网络模型和RNN 神经网络模型实验准确性对比如表6 所示。
表6 各模型效果对比
图6 LSTM 训练对比
图7 LSTM 测试对比
图8 BP 测试对比
图9 RNN 测试对比
如表所示,LSTM 模型在测试集上的RMSE、MAE 均小于BP 模型和RNN 模型,所以LSTM 模型的预测能力有非常好的正确率和稳定性。而且可以看出,RNN 神经网络在前期虽然预测效果不好,但是后期的预测效果还是不错的。
由于LSTM 模型对于时间序列数据的强大处理能力,在学习大量时间序列样本数据之后,可以总结出一系列弹药消耗因素的变化规律,这是BP 等前馈网络模型无法完成的功能。
在以往的研究中,弹药预测的方法有很多,如BP 神经网络和最小二乘法。本文将LSTM 神经网络应用于弹药消耗预测,并对其可行性进行了探讨,发现LSTM 网络在预测时间序列弹药消耗量方面优于传统方法。扩展LSTM 方法的应用范围,可以用LSTM 神经网络来构建弹药消耗换算体系,为弹药消耗预测提供全新思路。