基于Transformer的船舶故障预测研究
2023-03-14黄佳汲
黄佳汲
(上海船舶运输科学研究所有限公司,上海 200135)
0 引言
随着大数据、物联网、云计算等科学技术能力的迅猛提升,智能船舶已成为海事界的重点研究对象,是全球航运界的未来发展趋势。作为世界上的航运大国,我国对于船舶智能化的发展有着极大的重视。2015年,中国船级社发布了《智能船舶规范2015》;2020年,中国船级社在更新的《智能船舶规范2020》中增加了远程控制船舶和自主操作船舶在设备配备、状态监测与健康管理、设计原则与性能等方面的要求;工业与信息化部也于2017年成立了智能船舶专项,并联合多部委编制相应的智能船舶发展的行动计划[1]。
智能机舱是智能船舶的功能之一,依据《智能船舶规范2020》,智能机舱应具备基于状态监测数据对设备与系统的运行状态、健康状况进行分析和评估的能力[2]。智能设备故障诊断与健康管理是基于状态维修的升级发展,聚焦于复杂工程设备的健康状态监测和管理,可通过经验知识完成对监测设备的运行状态(包括设备结构、故障失效机理、运动学原理、设计制造、安装运行和后期维修等)识别预测,从而判断运行机制,分析故障原因,确定故障程度,达到降低成本、提高效率、使设备安全可靠运行的目的。智能船舶作为航运新领域,目前正处在发展初期,还存在设备故障预测能力较弱、数字化管理水平欠缺等不足[3]。
在现有的研究中,文献[4]提出了一种以麻雀搜索算法优化SVM作为故障分类器,以LSTM作为趋势预测器的故障预测方法;文献[5]提出了一种基于CNN-GRU组合神经网络的变压器短期故障预测方法,并在与SVM、LSTM、GRU、CNN-LSTM的对比中获得了更好的预测精度。目前在时间序列的问题上,普遍使用循环神经网络作为预测模型。
循环神经网络固有的顺序属性,使得训练样本间无法进行并行训练,因此这一类模型在时间性能上受到了限制。而Transformer架构的提出,很好地解决了这一问题,通过多头注意力机制的使用,突破了循环神经网络不能并行计算的限制。本文的目标是尝试将主要用于自然语言处理的Transformer架构应用在趋势预测上,并结合基于机器学习的故障诊断,提出一套比循环神经网络更高效的故障预测方法。
1 整体框架
本文的数据来自某液体散货轮最近一年的实船数据,在建立故障诊断基准值时所使用的为秒级数据,在使用Transformer进行趋势预测时所使用的为分钟级数据。本文数据分析所用的语言为Python,主要的第三方库为numpy、pandas、matplotlib、sklearn以及pytorch。
本文方法主要分为三步:首先是数据预处理,对历史数据进行筛选,选出平稳运行时间段的数据,减少异常值的影响;然后是通过历史数据对模型进行训练,使用多项式回归建立平稳运行状态下设备运行的基准值模型,使用Transformer建立设备运行趋势预测模型;最后通过预测数据与基准值的比较判断设备运行是否处于正常状态,总体框架如图1所示。
图1 总体框架
2 相关技术介绍
2.1 基于滑动窗口的平稳数据筛选
由于本文的数据集体量较大,因此对于常见的缺失值问题可以直接采用删除该条记录的方法进行处理。数据预处理的重点工作是筛选运行状态平稳的数据区间,实船在航行的过程中,运行状态并非总是保持较为平稳的状态(如图2所示),而在非平稳状态下记录的数据会存在大量异常点,影响模型的训练,因此需要对数据进行筛选。
图2 负荷概览
本研究通过实践探索了一种滑动窗口的方法,通过对按时间排列的历史数据分段拟合并求导,对导函数依据其输入范围按一定的间隔求解,并设定一个上界,若所有结果均小于上界,则认为该段数据为稳定工况;若任意一个求解结果超过了上界,则认为该段数据不是稳定工况,并将之前所有相邻的稳定工况分段连接,获得一个稳定工况时间段的起止时间,完成判断后将窗口前推,继续判断下一段数据(如图3所示)。
图3 滑动窗口演示
关键代码示例:
2.2 基于皮尔逊相关系数的相关性分析
故障诊断基准值方法建立在船舶设备运行时的关联性上,如柴油机在运行时,负荷越高,往往转速越快,排气温度越高,使用时一般使用负荷作为输入。建立故障诊断基准值模型前首先要对测点进行相关性分析,相关性分析采用皮尔逊相关系数,该系数广泛用于度量两个变量之间的相关程度,其值介于-1与1之间。两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商,如式(1)所示。
2.3 基于多项式回归的故障诊断
在确定了两个测点之间的相关性之后,需要通过机器学习的方法建立测点之间的回归模型,本文选择多项式回归作为故障诊断的基准值模型。
多项式回归的公式如式(2)所示,回归的目的是找到一组w0,w1,…,wd,使得拟合方程尽可能与实际样本数据相符合,一般使用最小二乘法实现梯度下降,本文选择最高次为3次的多项式回归。
2.4 基于Transformer的趋势预测
本文采用Transformer实现设备运行状态趋势预测,Transformer[6]是一种模型架构,它的提出改变了以往序列问题建模和循环神经网络之间划等号的思路。目前,Transformer已被广泛应用于自然语言处理、计算机视觉、音频处理等许多人工智能领域,并取得了巨大的成功。
文献[7]中BERT模型取得了NLP领域11项任务的最佳成绩,而在BERT中发挥重要作用的结构就是Transformer,之后相继出现的XLNET、roBERT等模型击败了BERT,但是这些模型的核心没有变,仍然是Transformer。
相比之前占领市场的LSTM和GRU模型,Transformer有两个显著的优势:
(1)Transformer能够利用分布式GPU进行并行训练,提升模型训练效率。
(2)在分析预测更长的文本时,捕捉间隔较长的语义关联效果更好。
Transformer模型采用的是编码器-解码器架构,在该模型中,编码器和解码器不再使用循环神经网络,而是使用连续N个具有相同结构的编码器和解码器所连接的网络结构。Transformer总体架构图如图4所示。
图4 Transformer总体架构图
每一个编码器中又包含两个串联的子层连接结构,其中一个为多头注意力层,另一个为前馈全连接层。多头注意力层的作用是分割输出的张量,分别进行注意力计算,前馈全连接层则是考虑注意力机制可能对复杂过程的拟合程度不够,通过增加两层网络来增强模型的能力,每个子网络都具有残差连接。在每个解码器中,除了包含与解码器类似的多头注意力层和前馈全连接层外,还在两个子网络之间添加了另外一个注意力模块。与编码器类似,解码器中的三个子网络也均具有残差连接,并且在每个残差合成后都进行归一化操作[8]。
3 故障预测方法验证
3.1 数据预处理
首先使用前文提到的滑动窗口方法对时间段进行筛选,经过检验,这一方法可以很好地筛选出平稳时间段的数据,见表1。
表1 平稳运行时间段
3.2 相关性分析
本文以主机负荷、主机转速、扫气压力、增压器转速四个测点为例,选取历史数据,使用pandas自带的corr函数计算相关性矩阵,并使用seaborn库提供的heatmap展示测点之间的相关性,结果如图5所示。
图5 相关性分析
3.3 故障诊断基准值建立
选取主机负荷与增压器转速这两个测点,将平稳运行时间段数据合并,在其中随机选取10000个作为测试集,其余作为训练集,使用多项式回归的方式建立以主机负荷作为输入,增压器转速作为输出的回归模型。通过对筛选出的数据进行训练,模型在测试集上的结果如图6所示。
图6 主机负荷与增压器转速拟合
可以看出,主机负荷与增压器转速之间的关系较好地符合连续函数的特点,多项式回归的r2得分在0.9以上,拟合程度较高。在模型的保存和使用上,多项式回归模型只需要存储一组系数即可做到随时取用,即使跨语言使用也非常便捷。
3.4 趋势预测
完成故障诊断基准值的建立后,需要再建立测点的趋势预测模型,预测模型采用Transformer架构来建立。本文使用主机转速作为样例,通过pytorch搭建Transformer模型,尝试通过前8个历史数据预测后1个数据。
首先创建一个Transformer架构的模型,考虑到本文研究的并不是机器翻译问题,而是一个短序列预测的问题,因此在构建模型时舍弃了文本嵌入层和位置编码器。同时为了验证此模型对于循环神经网络的性能优势,额外引入一个GRU模型作为对照。
代码示例:
在参数选择上,设置Transformer模型的词嵌入维度为8,多头注意力层的头数为4,置零比率为0,编码器和解码器的层数都为1,并通过一个全连接层将输出张量的特征维度转换为1。设置GRU模型输入张量的特征维度为2,隐层张量特征维度为4,隐含层的数量为1,同样通过一个全连接层将输出张量的特征维度转换为1。
完成模型建立后,在实船数据上开始测试,随机取某一平稳运行时间段的31个连续数据,选择前30个作为训练集,从头开始每次取9个数据,前8个作为输入,最后一个为真值,反向传播后将起始位置前推一位,重复训练过程,当起始位置大于21后将起始位置重新设为0。选择均方误差作为损失函数,选择Adam优化器并设置学习率为0.01,设置训练退出条件为最近22次损失函数结果均值小于0.5。
代码示例:
根据测试结果,GRU模型和Transformer模型均可以使损失函数收敛在0.5以内,在时间消耗上,Transformer模型平均在1秒左右,而实现同样的均方误差GRU模型所需的时间平均在6秒以上,Transformer的性能优势非常显著。
完成训练后,以第23到第30个数据为输入,第31个数据作为真值,测试结果如图7所示。
图7 预测效果
可以看到,数据在测试集上的预测结果和真值基本重合,预测效果较好。至此,故障预测的全部步骤验证完成。
4 结语
本文围绕Transformer建立一套相比循环神经网络更高效的故障预测方法。在数据预处理上,使用一种滑动窗口的方法筛选平稳数据,取得了良好的结果;在故障诊断上,使用多项式回归,通过对历史数据的训练,模型的r2得分达到0.9以上,证明模型的准确度较高;在趋势预测上,将Transformer架构应用于船舶运行状态的趋势预测,并与GRU网络进行了比较,证明Transformer的时间性能相对循环神经网络有显著优势,并可以做出较为精准的预测。综上所述,本文提出的方法有一定的实践意义。本方法的主要缺陷在于缺少故障环境,由于故障的发生属于小概率事件,随机性很强,因此故障数据的收集较为困难,本文的测试数据为正常运行状态下的数据,缺少真实故障数据的验证,在未来的研究中,如何有效收集真实故障数据是需要关注的重点。