基于RNN的故障预测算法及在GIS上的应用

2021-01-07 04:55张子贤苗红霞
计算机测量与控制 2020年12期
关键词:神经网络预测信号

张子贤,李 敏,苗红霞,孙 宁

(1.河海大学 物联网工程学院,江苏 常州 213022;2.国家电网江苏省电力公司检修分公司,江苏 常州 211100)

0 引言

如今,为了满足设备运行的高效性与可靠性,针对设备定期维护和故障发生后才维修等传统方法的不足,故障预测在工程设备的维修与监测中的重要性逐渐增加。故障预测可以将各传感器测得的信息,通过一定的理论、算法处理后,推测出故障发展的趋势,它是比故障诊断更高级的维修手段,如果能在故障发生之前识别到故障发生的可能,从而对设备进行排查,对零件进行更换,可以大大减少故障风险,减少因故障造成的损失,节约资源,降低经济成本。

由于故障预测是在故障发生之前进行的,所以往往具有故障幅值微小、故障特性不明显、容易被噪声掩盖等特点,相对而言难以被检测出,因此,对于故障发生前的信号处理与分析是故障预测技术研究的重点。近年来,在该方面的研究很是火热,王姝等提出了一种结合多元统计技术(MPCA)与AR序列分析的缓变故障预测方法[1],该方法通过建立T2及Q 统计量的自回归模型,预测下一批次统计量值,将所求值与控制限对比,进而实现渐变故障的预测,但是该方法假设故障的趋势为线性的,并且每个统计量的预测过程、预测结果是独立的,对于非线性、多耦合的数据较难预测;东南大学陆宁云等提出一种多层预测型贝叶斯网络结构,根据工程系统自身固有的网络拓扑结构,构建了多层贝叶斯网络模型,利用定性趋势分析法将时间信息融入网络节点中,使得网络具有处理时序信息的能力,便于进行故障传播机理分析和故障预测[2],在该算法中需要构建隶属度函数,通过一定的先验知识去构造隶属度函数,这些先验知识的精确与否会直接影响该方法的准确性;文献[3]利用深层神经网络(DNN)与PCA相结合的方法实现了微小缓变故障早期诊断及寿命预测;文献[4]则提出了一种使用深度卷积神经网络(DCNN)预测方法,然而,上述两种神经网络结构由于没有对应状态变量的神经元,因此难以存储之前时间的信息。

近年来,随着计算机计算能力的提高,人工神经网络的层数越来越多,深度学习的研究与应用也日益增加。深度学习的本质是特征提取,即通过组合低层次的特征形成更加抽象的高层表示,以达到获得最佳特征的目的。具体应用可以抽象为将原始数据、信号作为低层次的特征送入神经网络,把人们想要得到的信息作为高层表示的过程。在深度学习的应用上,循环神经网络(RNN)主要用于与时间序列相关的数据,比如自然语言的处理、疾病预测等等,并体现出了良好的拟合能力[5-8]。故障预测与语言处理和疾病预测相似,各种设备的传感器信号大多为时间序列,当前时刻的信号值与之前的信号值有不可分割的联系,因此,在判断设备状态时仅仅关注当前信号是不够的,还要考虑传感器之前信号的状态,这样才能最大程度的挖掘出时间序列数据所蕴含的信息。

另一方面,对于大多数工程系统而言,从系统安装运行到出现异常的正常工作阶段,监测得到的数据一般比较平稳,没有明显的趋势出现,而一旦发生故障,所监测的数据则会发生剧烈变化,如发动机、气轮机、旋转机械等的振动幅值信号,都具有这样的特点,其故障剧烈程度近似于指数函数。出现异常的时间点一般被称为异常点,对于异常点的确定是故障预测中较为关键的一环,异常点确定过早,会导致误判发生,而过晚则失去了故障预测的意义。关于异常点的检测,文献[9]介绍了贝叶斯、广义贝叶斯、极大极小值等方法,然而这些方法没有自学习能力,并且假定数据的分布符合某种规律,比如高斯分布,而现实情况下的数据往往并不符合这些特殊的分布,因此这些方法在实际工程中难以应用,为了解决该问题,在此,应用了一种逐步逼近的神经网络训练方法。

1 基于RNN的故障预测算法

1.1 整体算法流程

基于RNN的故障预测算法整体流程如图1所示,该算法主要由数据处理模块与RNN网络识别模块构成。数据处理模块用于对传感器输出信号进行处理,而RNN网络识别模块用于对经过处理的输入信号进行故障预测的操作。

图1 整体算法流程图

在数据处理模块中,先对所采集的历史数据进行处理;再使用数学函数赋值的方法来构造待训练RNN模型的训练与测试样本。

在RNN网络识别模块中,首先确定RNN模型结构;然后使用RNN模型进行异常点检测,为训练样本数据贴上标签;再使用数据处理模块构建的训练样本对RNN模型进行训练,调整模型参数,确定故障预测模型;最后将数据输入RNN模型对设备进行故障预测。

1.2 数据处理模块

通常,使用循环神经网络进行预测前,对于传感器采集的数据都需要先进行特征提取。若构建特征提取模型进行特征提取,不仅费时费力,而且会延缓识别速度,给识别带来困难,因此,这里采用数学函数赋值的方法来构建输入矩阵,对输入数据进行处理。

首先采集设备多种传感器上较长时间内的各种信号数据,作为历史数据,并对这些历史数据进行采样。接着通过数学函数赋值的方法构造待训练RNN模型的训练样本数据,并使用相同的方法构造测试数据。

数学函数赋值的方法为:

对于装置中的信号,设置k个传感器采集不同的信号,并将采集到的k个信号波形函数a(1,t)到a(k,t)中的若干采样点提取到一个多维矩阵b中,该矩阵的每一列代表一个样本,假设总共有n个样本。矩阵为:

其中:b是输入矩阵。函数a(1,t)到a(k,t)分别是k个传感器波形函数,t是历史数据的时间。X是历史数据的起点。该方法可以根据设备的故障特征确定输入矩阵形式。

1.3 RNN网络识别模块

1.3.1 循环神经网络

由于各种原因,传感器采集到的数据会夹杂噪声信号,而数学方法如贝叶斯和极大极小原理等需要精确的数据才能得出较为可靠的预测结果,因此需要一种不易被噪声信号影响的算法。循环神经网络能够通过学习历史数据来区分噪声信号与故障信号,RNN可以在迭代的训练过程中,不断调整参数,直到满足精度要求。因此它在解决时间序列问题的实际使用过程中有更高的预测精度。

在传统的前馈神经网络(FNN)中,神经元的信息传递是通过网络层与网络层之间的单向传递完成的,此模式使得FNN变得更容易学习,但在一定程度上也削弱了FNN模型的能力。在实际情况中,输出不仅和当前输入相关,也有可能和上一个时刻的输出相关。循环神经网络(RNN)是FNN的一种改进体,是一类具有短期记忆能力的神经网络。RNN形成的环路的网络结构,使得神经元既可以接收到其他神经元的信息,也能接收到本身的信息。所以,相比之下,RNN在处理与时序数据相关的预测问题时有着比FNN更明显的优势。在实际应用中,需要根据故障模型构建合适的RNN网络结构,并需要兼顾快速性、鲁棒性与准确性。

FNN的训练过程通过后向传播算法(BP)来实现,而RNN可以被看作是一个展开的多层FNN,这样就需要依次在时间维上叠加对后向传递的结果。

假设输入RNN的是长度为T的序列X,并且RNN的输入层、隐含层与输出层的神经元个数分别是为I、H与K。

那么RNN前向传播算法公式如(1)~(3)所示:

(1)

(2)

(3)

对于RNN的时间后向传播算法,首先要定义损失函数对神经元j在时刻t输入值的偏导数,如式(4)~(6)所示:

(4)

(5)

(6)

从RNN的训练过程可以看出,RNN能够对输入数据的序列特性进行“记忆”,因此更适合于解决时间序列问题[10]。

1.3.2 异常点检测

通常,神经网络训练时需要使用大量的带标签样本,而获取大量有标签样本不仅耗费人力物力,难度也较大。因此,这里使用一种逐步逼近的神经网络训练算法——异常点检测算法来对故障数据样本给定标签。使用该算法能够在短时间内获得样本的标签,能够提高效率。

图2 故障信号变化过程

大部分故障信号变化通常不是突然的,而是渐进的、缓慢的过程,如图2所示,A点称为故障趋势起始点,在此之前,设备状态是健康的,A点表示故障趋势开始的时间,此时故障信号会有微小的变化,但设备仍能正常运行。到B点时,故障信号已经达到故障阈值,并且故障信号的变化开始由平缓趋于剧烈,设备将受到损坏。因此在建立故障模型时,可以使用指数函数来近似表达故障严重程度。基于RNN的故障预测算法针对这一故障变化趋势建立了指数型故障预测模型,并利用异常点检测算法对样本数据进行反复迭代,从而逐次逼近得出故障发生前信号微小变化的时间,进而达到对设备故障进行预测的目的。

实际应用中,在故障信号有微小的变化的时候检测出故障趋势起始点A,接着检测故障真正发生的点B,在T=B-A时间段对应的样本贴上[0.1-1]的标签。异常点检测流程如图3所示,具体做法为:

1)确定输入输出向量,建立RNN,确定神经元数目和隐藏层层数。

2)确定第一次训练的假想异常点v1。

首先根据经验选取异常点时刻v,且v点在时间上要偏晚,以确保有故障趋势发生,v点与故障趋势起始点A之间的一段时间称为时间裕量M,将数据输入RNN模型进行训练。第一次训练时,时间裕量M内的数据不放入RNN模型进行训练。

图3 异常点检测流程图

3)用函数P(t)对数据进行赋值。

从异常点v1到故障发生时刻B,按照式(7)利用函数P(t)对其进行赋值,故障模型时域为T=B-v1。

(7)

假定选定从v1时刻开始,将异常时刻v1的输出值用P赋值,并令P值的变化与实际故障的变化趋势相同,都是由平缓趋于剧烈的指数函数形式。留出时间裕量M的原因是真实的异常点A处于该时间段M内,此时并不能给出该段时间内的恰当的P值,因为不管P值超前或者滞后,都意味着在v-A这段时间中的数据会得到错误的P值。

由于猜想的异常点v是偏晚的,所以实际的P值要比公式(7)中的结果大一些。按式(8)对式(7)进行修正:

(8)

其中:自变量t表示从出现故障趋势开始后的时间,B表示故障发生的时刻,v表示最终更新的异常点时刻。

5)将训练数据放入网络进行训练,测试并观察输出值,调整网络权值。

第一次训练完成后,RNN网络已经具有初步的故障预测能力,再放入数据,测试并观察输出值。

8)停止更新v值,此时的v值已经无限接近于故障趋势起始点A的时刻,再根据最终的v值训练神经网络。可见,此过程是一个逐次逼近的过程。

检验是否为故障趋势起始点可依据式(9)进行,待定时间点的输出值Pd若大于设备健康状态时的输出平均值相,则为故障趋势起始点。

(9)

其中:Pd为待定点输出值,Pk为k时刻健康状态输出值,s为比例系数。为防止将健康状态误判为具有故障趋势的点,通常将s设定为略大于1,n为数据数目。

1.3.3 故障预测输出

对于不同的设备,故障类型的数目不同,因此预测输出的矩阵维数也不同。假设用于故障预测的设备有k种不同的故障类型,即a,b,c,,k,那么最终的预测输出为:

其中:矩阵a,b,c到k的行表示预测的当前设备故障类型的概率。a,b,c,,k的值越接近1,故障发生的可能性就越大,i代表在不同时刻的状态及当时故障预测的结果。

2 基于RNN的故障预测算法在GIS上的应用

本次气体绝缘开关(GIS)信号取自某电厂,取其在190天内传感器采集的振动信号与局部放电信号作为历史数据。在数据处理模块中,使用数学函数赋值方法建立的样本矩阵为:

将振动信号与局部放电信号数据录入Matlab,并绘制波形,如图4和图5所示。当t=120天时,故障未发生,但开始有微小的信号变化;当t=140天时,故障发生。可以看出,故障发生后,t>140天时,信号变化较为明显;当120天

图4 振动传感器信号

图5 电流传感器信号

在RNN识别模块中,首先要建立故障预测模型。在最终确定RNN网络结构之前,分别尝试过使用不同层数的RNN网络、改变每层的神经元数量等来进行训练。训练结果显示,网络最终输出的准确性以及响应速度与RNN网络的结构关系很大。当每层神经元数量增加到20个时,训练耗时会增加,然而精度的提高却不甚明显。而当把RNN网络层数增加到8层时,网络训练时间上升到13 s,训练进行了27次重复训练,训练精度虽有所提高,但耗时大大增加。因此,确定RNN网络结构时需要综合考虑快速性与准确性。

因为振动与电流信号并不非常复杂,信号类型不多,因此选用的RNN结构相对简单。选用的RNN由一个输入层、四个隐含层和一个输出层构成。

将时间在40~135天内的数据作为异常点可能存在的区间,此区间的数据不放入网络训练。对故障发生前5个天的数据进行赋值,将赋值后的数据放入网络训练后,重新将所有数据放入网络测试,训练效果如图6所示。

图6 数据重新标签前训练效果

由图6可见,整个RNN网络的训练过程一共耗时1 s,训练期间重复了29次。在第23次训练时,得到了最好的训练效果。训练后得到的结果如表1所示。

表1 时间裕度 M1=5时的输出

由表1可知,健康状态的输出均值为0.029 4,取比例系数s=1.3,可以看出时间在131~135的5个数据中,有3个满足式(9),于是将时间在131~140的数据重新标签,并用于网络训练。重新将所有数据进行测试,训练结果如图7所示。

图7 数据重新标签后训练效果

由图7可见,此次训练的最小均方误差比第一次小,并且在训练过程中不断收敛,取得了较好的效果。训练结果如表2所示。

表2 时间裕度M2=10时的输出

图8 最终预测结果

此时126~130天的输出均满足式(9)。将数据重新标签后,再次训练并测试网络,直到找出真正的异常点时刻T=120。最终的预测结果见图8,横坐标是时间,纵坐标是P值。可以看出,在t<120时,可以认为P为0;当t>120时(故障趋势开始),P值开始变大,直到t=140(故障发生时),P值到达1,网络能很好地分辨出t=120前后的健康状态和之后的异常状态。

3 结束语

针对设备极其微小的故障趋势,设计了基于RNN的故障预测算法。通过在GIS上应用,验证了该算法对时间序列数据具有强大的拟合能力,训练后的系统能在故障发生前给出故障发生的概率,准确地预测故障类型,实现了故障预测功能。

猜你喜欢
神经网络预测信号
无可预测
基于神经网络的船舶电力系统故障诊断方法
选修2-2期中考试预测卷(A卷)
选修2-2期中考试预测卷(B卷)
选修2—2期中考试预测卷(A卷)
MIV-PSO-BP神经网络用户热负荷预测
基于改进Hopfield神经网络的对地攻击型无人机自主能力评价
完形填空二则
基于神经网络的中小学生情感分析
信号