汪晓臣,段鹏宇,李 樊,孙同庆
1(中国铁道科学研究院集团有限公司 电子计算技术研究所,北京100081) 2(北京理工大学 计算机学院,北京100081)
物联网是将各种传感器接入互联网而组成的一个网络,能够实现人、物的互联互通.物联网技术广泛地应用于智能交通、智能楼宇、智慧城市[1]等领域.其中摄像头作为重要的图像采集设备,为监控、分析、识别等功能提供了大量的数据.
摄像头的故障预测与健康管理(Prognostics Health Management,PHM)是其重要的支撑技术,如果能够预测系统发生故障的时间,就能提前进行相应的准备以避免故障或减少故障带来的损失,具有很大的实用价值.
目前已有的故障预测方法有基于机理模型的预测方法和基于数据模型的预测方法.基于机理模型的预测方法是根据设备的内部结构,使用数学或物理的公式、定理,对设备建立模型,从而对故障进行预测.在工业系统中,很多设备本身内部结构非常复杂,这使得针对整个系统或者某些单个部件建立数学或物理模型都十分困难,或者建立的机理模型参数非常复杂,使用机理模型进行预测难以实现.
基于数据模型的预测方法是根据设备的数据,如环境数据、设备状态数据、历史故障数据等,使用预测算法对故障进行预测.随着信息技术的发展,获取设备数据越来越方便,所以基于数据模型的预测方法就成为了目前的研究热点.
时间序列是指按事件的发生时间先后顺序排列成的序列,通常使用时间序列进行预测.
目前常用的序列预测算法传统方法和深度学习方法,常用传统方法有自回归移动平均(Autoregressive Integrated Moving Average,ARIMA)、支持向量回归(Support Vector Regression,SVR)等.深度学习是指模型具有较深的层次,常用的深度学习方法有循环神经网络[2](Recurrent Neural Network,RNN)等.ARIMA算法模型简单,但只能处理稳定数据或差分后稳定的数据,而且只能捕捉线性关系;SVR算法泛化能力强,但困难在于核函数的选择;LSTM是RNN的一种,增强了其处理历史数据的能力,适合处理时间序列,但仍难以处理长序列,而且时间复杂度高.
本文针对故障发生时间序列数据,提出了一种基于LSTM神经网络[3]的故障预测方法,并使用网格搜索的方法对参数进行选择,使得预测结果的均方根误差最小.使用轨道交通通信集中告警系统日志数据进行实验,并与ARIMA和SVR模型进行对比.实验结果表明LSTM算法在故障预测中性能明显高于ARIMA和SVR算法.
关于故障预测的研究主要集中于两个方面:基于机理模型预测和基于数据模型预测.
国内外已经有了很多对故障预测的研究,大多是通过对设备建立数学或物理学模型进行预测的,比如机械设备或电池等.K.Xu[4]等人对汽车发动机和柴油机涡轮增压器建立了故障模型.Pecht[5]等人对电子系统的PHM进行了研究.Lee[6]等人研究了锂离子电池的PHM.Fausto P.Garciaa[7]等人使用向量自回归模型对铁路重点机械装置故障进行预测.
很多复杂系统由于内部结构复杂,无法使用数学或物理方法构建机理模型,或者机理模型参数非常复杂,无法基于机理模型进行预测,就出现了基于数据模型的预测方法.近年来随着机器学习技术的不断发展,越来越多的机器学习方法被运用到了基于数据模型的预测方法中,特别是机器学习领域中的深度学习,LSTM就是深度学习的一种模型.
图1 模型总体架构Fig.1 Model architecture
Rui Zhao[8]等人使用SVM对风力发电机进行故障预测.Yuan Di[9]等人对电力电子系统进行故障预测.Xue Lige[10]等人使用神经网络对道路机械故障进行预测.夏筱筠[11]等人研究了数控机床滚动轴承的故障预警系统.Li Rui[12]等人对民航飞机进行故障预测.王锐光[13]等人使用卷积神经网络和随机森林等方法对飞机故障进行建模.徐丙凤[14]等人对飞机雷达控制系统和喷淋防火系统的故障进行事件特性分析.王博[15]等人对卫星定位系统软件进行了建模.Hu Liqiang[16]等人使用专家系统对轨道电路进行故障预测.王焘等人针对云计算系统建立了故障预测系统[17],并对分布式软件系统建立了故障模型[18].
本节主要介绍故障预测模型.其中3.1节介绍故障预测的系统架构;3.2节介绍参数选择方法.表1是本文出现的参数表.
预测模型的总体架构如图1所示.
输入模块将原始的故障时间序列划分训练集和测试集,将训练集进行处理后作为LSTM的输入;
LSTM训练后根据测试集进行预测;
将预测的结果和实际的结果输入到Adam优化器中,对LSTM的参数进行优化;
同时将每一步预测的结果组合起来,得到预测的序列,与实际的序列进行对比,评估模型的效果.
输入模块需要将原始序列进行标准化和分割,标准化采用z-score公式进行,原始故障时间序列为T={t1,t2,…,tm},标准化后的时间序列为F={F1,F2,…,Fm},其中
(1)
将标准化之后的序列进行分割,使其能够作为LSTM的输入
(X,Y)={(X1,Y1),(X2,Y2),…,(Xm-1,Ym-1)}
={(F1,0),(F2,F1),…,(Fm-1,Fm)}
将分割后的序列前n项作为训练集,第n+1项作为测试集进行训练和优化
(Xtrain,Ytrain)={(X1,Y1),(X2,Y2),…,(Xn,Yn)}
(Xtest,Ytest)={(Xn+1,Yn+1)}
再将序列前n+1项作为新的训练集,第n+2项作为新的测试集,再对模型进行训练和优化
(Xtrain,Ytrain)={(X1,Y1),(X2,X2),…,(Xn+1,Yn+1)}
(Xtest,Ytest)={(Xn+2,Yn+2)}
将每一步的输出组合成标准化的预测序列
P={Pn,Pn+1,…,Pm-1}
Pi=LSTM(Xtrain,Ytrain,Xtest),n≤i≤m-1
再进行反标准化就得到预测的时间序列
(2)
将预测的序列与原始序列后m-n项对比,计算均方根误差(Root Mean Squard Error,RMSE)作为评估模型的标准,均方根误差是均方误差(Mean Squared Error,MSE)的平方根.
(3)
(4)
(5)
(6)
LSTM层的结构如图2所示.使用一个LSTM神经元,每次输入一个数据,根据此时的输出对模型参数进行调整,训练集中所有数据都输入一次为训练一轮.
图2 LSTM层的结构Fig.2 Structure of LSTM layer
LSTM神经元的结构如图3所示.C为模型状态,h为隐藏状态,xn为第n个输入,yn为第n个输出,σ是sigmod激活函数,tanh是tanh激活函数.神经元使用MSE作为损失函数.
图3 LSTM神经元结构Fig.3 Structure of LSTM neuron
优化器用于根据输出与实际值的差距,更新模型的权重,常用的优化算法有随机梯度下降(Stochastic Gradient Descent,SGD),批量梯度下降(Batch Gradient Descent,BGD),自适应梯度算法(Adaptive Gradien,Adagrad),RMSProp(Root Mean Square Propagation)等,本文使用适应性动量估计算法(Adaptive Moment Estimation,Adam)对模型权重进行更新.Adam算法是基于梯度的参数优化算法,结合了Adagrad和RMSProp的优点,并且占用的存储空间较少.相比于其他优化方法,Adam算法表现更好.
使用LSTM进行建模和预测的算法如算法1所示.
算法1.LSTM建模及预测.
输入:故障时间序列T,第一次建模训练轮数ep,更新模型训练轮数up,Adam学习率lr
输出:预测序列及模型的RMSE
1.将T进行标准化,得到F
2.将F分割为训练集(Xtrain,Ytrain)和测试集(Xtest,Ytest)
3.使用(Xtrain,Ytrain)、ep、lr建立模型LSTM
4.使用LSTM在测试集(Xtest,Ytest)上进行预测,预测结果是Pi
5.将Pi进行反标准化得到Qi,将Qi加入到预测序列Q中
6.将(Xtest,Ytest)加入到(Xtrain,Ytrain)中,F中后一组数据作为新的(Xtest,Ytest)
7.根据新的(Xtrain,Ytrain)、up、lr更新LSTM模型权值
8.使用新的模型在新的测试集上进行预测,预测结果是Pi+1
9.将Pi+1进行反标准化得到Qi+1,将Qi+1加入到预测序列Q中
10.重复6-9步,直到F中最后一组数据产生的预测结果进行了反标准化并加入到预测序列Q中
11.计算RMSE(Q,T)
在构建LSTM模型中,有3个参数ep、up、lr,分别是初次训练的轮数,每次更新训练的轮数,优化器的学习率.本文采用网格搜索的方法对这3个参数进行选择,目标是使RMSE最小.
(7)
ep、up、lr这3个参数的范围构成了三维搜索空间,每个参数根据固定的步长进行穷举,每组参数分别建立模型并进行预测和评估.算法如算法2所示.
算法2.LSTM参数选择.
输入:故障时间序列T,第1次建模训练轮数最大值和步长epmax,sep,更新模型训练轮数最大值和步长upmax,sup,Adam学习率最大值和步长lrmax,slr
输出:RMSE最小的模型对应的参数
1.设置各个参数最大值和步长epmax,sep,upmax,sup,lrmax,slr
2.根据最大值和步长遍历ep所有可能的取值
3. 根据最大值和步长遍历up所有可能的取值
4. 根据最大值和步长遍历lr所有可能的取值
5. 根据3个参数建立LSTM模型并预测,进行评估
6.选择RMSE最小的模型对应的参数进行输出
首先介绍本文使用的故障信息数据集,再对比不同参数下LSTM模型的效果,最后再与ARIMA和SVR模型进行比较.
本文使用轨道交通通信集中告警系统的告警日志作为数据集,其中包含了地铁站内的摄像头在一段时间内的故障记录,原始日志共约800万条,其中故障信息约90条.
其中,横轴为故障次数,纵轴为距离上次故障的时间.
表1展示了不同参数下LSTM模型的表现,在不同的参数下模型表现差距很大,但大多数模型的RMSE在40以下.
根据模型训练的轮数不同,训练时间差距也很大,但训练轮数越多模型表现不一定越好.
由表格可知经过参数选择后模型的精度明显提高,训练时间也保持在较低的水平.
ARIMA模型是时间序列预测的传统模型,可以表示为ARIMA(p,d,q),p、d、q均为整数.其中p、q可以通过观察自相关函数(Auto Correlation Function,ACF)和偏自相关函数(Partial Auto Correlation Function,PACF)确定.
序列的ACF图和PACF图如图4所示.图4中灰色长方形是置信区间,ACF曲线与置信区间上限交点的横坐标为p值,PACF曲线与置信区间上限交点的横坐标为q值.d为使序列平稳所需的差分次数,由于原始序列已经平稳,所以d为0.
SVR是一种可以用于时间序列预测的机器学习算法,其通过核函数将输入向量映射到高维空间,在高维空间进行回归运算,进而得到输入和输出的非线性映射关系.本文使用高斯径向基函数(Radial Basis Function,RBF)作为核函数,使用网格搜索的方法确定参数,目标是使模型均方根误差最小.
图4 序列的自相关图和偏自相关图Fig.4 Autocorrelation graph and partial autocorrelation graph of sequence
表1 不同参数下模型的表现Table 1 Performance of the model under different parameters
高斯径向基函数如公式(8)所示.
(8)
网格搜索算法如算法3所示.
算法3.SVR参数选择.
输入:故障时间序列T,核系数gamma最大值和步长gmax,sg,惩罚参数c最大值和步长cmax,sc
输出:RMSE最小的模型对应的参数
1.设置各个参数最大值和步长gmax,sg,cmax,sc
2.根据最大值和步长遍历gamma所有可能的取值
3. 根据最大值和步长遍历c所有可能的取值
4. 根据3个参数建立SVR模型并预测,进行评估
5.选择RMSE最小的模型对应的参数进行输出
图5 ARIMA、LSTM、SVR模型预测结果Fig.5 ARIMA、LSTM、SVRModel Prediction Results
ARIMA模型、LSTM模型、SVR模型对比如图5所示.横轴为故障的序号,纵轴为当次故障距离上次故障的时间间隔.
表2 3种模型的表现对比Table 2 Performance comparison of three models
3种模型的表现对比如表2所示.
本文提出了一种基于LSTM的故障预测方法,包括对原始数据的处理、分割、训练模型、权重优化、参数优选、模型评估等内容.实验结果表明:
1)与传统的ARIMA和SVR序列预测方法相比,本文的方法以增加运行时间的代价提高了准确性,均方根误差下降了89%,运行时间增加了60-300倍,存储空间增加了约1倍.
2)LSTM算法对参数的变化较为敏感,选择不同的参数可以使模型表现相差很大,学习率和训练轮数过高或过低可能会导致过拟合或欠拟合,从而影响模型的表现.
3)本文使用了网格搜索的方法确定参数,选择合适的参数可以使均方根误差下降90%以上,根据需要还可以降低一半的运行时间,在可接受的时间内,比较准确的预测故障.
未来可以改善参数搜索的方法,更高效地找到表现更好的参数组合,也可以改变神经网络的结构,尝试多隐藏层的LSTM模型,还可以将LSTM与其他机器学习算法相结合,找到运行时间更短,预测结果更准确的模型.此外,还可以针对模型的结果,与设备信息、运行状态等数据结合,分析设备的故障规律,从而减少故障的发生.