本发明属于低压铸造机压力数据异常检测领域,尤其是涉及一种基于双向lstm的低压铸造机时间序列数据异常检测方法。
背景技术:
异常检测是寻找不符合期望行为数据模式的问题,计算机相关技术的发展带动了工业化技术水平的提升,异常检测在越来越多的领域取得应用,例如系统运行状况监视,工业故障诊断和入侵检测等。常见的异常主要有两种类型,第一种异常类型称为异常值,是位于正常值之外的值。另一种类型的异常是异常行为,这是时间序列中的周期性崩溃现象,即使异常行为达到正常值,从周期性来看也是异常的。
在工业故障诊断中,基于时间序列的异常检测是一项重要的研究内容,如何利用低压铸造机的历史生产数据指导生产过程中的参数设定,判断铸造机性能好坏从而对铸造机进行相应检修等具有重要的实际应用意义,而利用历史数据进行分析和指导生产,首先需要剔除其中的异常部分,即需要完成对低压铸造机压力数据的异常检测。
循环神经网络作为一种广泛用于处理序列型数据的神经网络架构,具有强大的特征提取和表达能力,在各类需要用到时间序列处理的领域都取得了不错的效果。同时,使用循环神经网络进行故障诊断时,对正常类数据进行建模,通过判断预测误差的大小实现异常模式的识别,这样的方式可以较好的解决异常检测中常面临异常类标签数据稀缺以及异常行为模式不断变化的问题。因此使用循环神经网络解决时间序列异常问题是一个非常值得研究的内容。本方法使用循环神经网络中的双向lstm,双向lstm对序列进行双向处理,可以在当前时间步同时获得前后时间步的信息,将该网络应用于压力数据的异常检测,取得了较好的效果。
技术实现要素:
本发明目的在于针对利用低压铸造机压力历史数据指导生产,需要对异常部分进行剔除的问题,提出一种基于双向长短期记忆神经网络的低压铸造机时间序列数据异常检测方法。
为了实现上述发明目的,本发明采用基于双向lstm的低压铸造机时间序列数据异常检测方法,所述方法包括以下步骤:
步骤一:从数据库调取正常状态下的低压铸造机压力原始数据。
步骤二:对步骤一调取的压力原始数据进行数据预处理操作,并将数据转换为监督学习所需数据格式。
步骤三:将步骤二所得压力数据划分为训练集和测试集数据。
步骤四:使用步骤三所得训练集数据训练,建立并保存双向lstm神经网络模型,使用测试集数据进行测试,将反归一化和差分变换的逆变换处理后的模型预测输出作为双向lstm神经网络的预测输出。
步骤五:根据测试集期望输出与步骤四得到的预测输出计算误差,将修正后的误差作为双向lstm神经网络预测输出误差。根据预测输出误差建立误差向量的高斯分布模型。
步骤六:调取待测压力原始数据,对数据按照步骤二所述方式进行处理,将处理好的数据输入训练好的双向lstm神经网络中进行预测。对网络输出结果进行反归一化和差分变换逆变换处理后计算输出误差,对误差进行修正后根据步骤五建立的误差向量高斯分布模型参数,计算待测压力数据预测误差向量的马氏距离。对计算结果进行误差判定,若判定值大于设定阈值,则判断此处发生异常,反之,则未发生异常。
进一步地,步骤二所述,对数据进行预处理并将数据转换为监督学习所需数据格式,其主要包括以下步骤:
1)对数据库导出数据项的相邻项进行对比,若数据采集时刻与采集值均相同,则将对比数据的第二项作为重复项删除;若数据采集时刻相同,采集值不同,则将对比数据项的第二项作为异常项删除,直至所有遍历完全部序列;
2)计算相邻采集时刻的时间间隔,得到最小时间间隔tmin,对步骤1)得到的序列按照最小时间间隔添加采集时刻;
3)对新增采集时刻对应的空缺采集值进行填充,采用lagrange方法进行插值,插值公式为:
其中,x,y表示所采集到的不同的数据,i和j表示不同的时刻的数量,为常数,l是中间结果,li表示i时刻的中间结果,pn是插值结果,
4)对插值后的序列进行一阶差分处理,其计算公式为:
δxt=xt 1-xt;
其中:xt 1为t 1时刻数据,xt为t时刻数据,δxt表示差分处理后的序列;
5)对差分处理后的序列进行归一化处理,其计算公式为:
其中max为样本数据的最大值,min为样本数据的最小值,x*为归一化处理后的序列;
6)遍历差分处理后的时间序列数据,对任一时刻t,使用t时刻和t时刻前的d-1个数据{xt-d 1,...,xt}与t时刻后的l个数据{xt 1,...,xt l}相结合,构造成新的一项{xt-d 1,...,xt,xt 1,...,xt l},将新的项进行合并,得到共n-l个训练样本数据
进一步地,步骤四所建立的双向lstm神经网络,输入层节点数为d,输出层节点数为l,网络包括前向隐含层,后向隐含层,输出层,前向传播层根据输入时间序列正向计算并保存各个时刻前向隐含层输出,后向传播层从最后时刻反向计算一遍并保存各个时刻后向隐含层输出,最后在每个时刻结合前向传播层和后向传播层相应时刻输出得到最终的网络输出,损失函数采用绝对值误差函数,网络采用adam优化算法加快网络训练速度,采用dropout防止模型过拟合。
进一步地,步骤五中所述对误差进行修正,其主要包括以下步骤:
1)计算修正后网络预测输出误差,其计算公式为:
x=e=xtrue-xpred;
其中xtrue为观测值,xpred为双向lstm神经网络的预测输出值,e表示误差的值。
2)根据预测误差确定误差修正界限值elim;
3)确定误差接受系数α;
4)结合待判定点与其前k-1个点在内的共k个点,按照如下公式计算误差允许界限值etol:
etol=α×k×valmax,
其中,valmax为正常状态生产的压力最大值;
5)对于
如果e>etol,则将该点预测误差置零,即
其中,
进一步地,步骤五所述对正常状态下的预测误差分布建立高斯分布模型,其主要过程为:
1)获取权利要求4中得到的修正后预测误差x=e;
2)计算修正后误差的均值μ与协方差∑,其计算公式为:
其中,n为第n个训练样本数据的序号,n为n的总数;
3)建立修正后误差向量的高斯分布模型,其计算公式为:
p(x|data)=n(x|μ,∑)。
进一步地,步骤六中所述对预测结果的误差判定,其主要包括以下步骤:
1)计算双向lstm神经网络预测结果误差并进行修正;
2)对每一个点x,根据已建立的高斯分布模型参数计算该点的马氏距离,其计算公式为:
a(x)=(x-μ)τ∑-1(x-μ)
3)确定异常划分阈值alim,
若a(xi)>alim,则该点xi对应的状态为异常状态,若a(xi)≤alim,则该点xi对应的状态为正常状态,其中,a(xi)为点xi的马氏距离。
本发明的有益效果是:
(1)低压铸造机压力数据在增压阶段和泄压阶段,压力值随着时间的增长,不断增大或不断减小,即压力数据一定程度上依赖于时间,而稳态数据更易于建模,可以产生更加准确的预测。本发明方法在进行预测前,先对进行lagrange插值后的压力数据进行了差分处理,移除趋势后继续进行后续操作。经对比,进行差分处理后可以检测出未进行差分处理时检测不出的部分异常,即提升了异常检测的效果。
(2)本发明专利预测部分使用双向lstm,双向lstm在进行预测时,对序列进行双向处理,在当前时间步可以同时获得前后时间步的信息,从而可以得到比单向lstm神经网络更加准确的预测效果。
(3)神经网络对于压力突然变化处的预测具有延迟,因而会在该处产生较大预测误差,本发明方法采用了特定的误差判定消除方法,对误差进行判定与修正,从而可以消除该部分误差对结果的影响,提升异常检测准确率。
(4)异常检测通常面临异常类标签数据稀缺以及异常行为模式不断变化的问题。本发明专利采用了一种通过对正常类数据进行建模,使神经网络学习正常类数据特征,进而实现异常模式识别的方法,该方法较好的解决了低压铸造机压力数据面临的异常数据相对较少且无标签的问题。
附图说明
图1为主要过程步骤示意图。
图2为数据预处理流程图。
图3为双向lstm模型与误差向量高斯分布模型训练流程图。
图4为本发明实施例中去除重复项异常项后的曲线图。
图5为本发明实施例中进行lagrange插值后的曲线图。
图6为本发明实施例中进行一阶差分处理后的曲线图。
图7为本发明实施例中模型在测试集上的期望输出与预测输出图。
图8为本发明实施例中修正前的预测输出误差图。
图9为本发明实施例中修正后的预测输出误差图。
图10为本发明实施例中待测样本插值后的曲线图。
图11为本发明实施例中误差向量马氏距离计算结果图。
具体实施方式
以下结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方案和具体的操作过程,但本发明的保护范围不限于下述的实施例。
本发明可以采用如图1所示的方法,具体步骤如下:
步骤一:根据通讯公约从数据库调取低压铸造某型号轮毂正常状态下的低压铸造机压力生产原始数据。本实施例调取的正常状态下压力原始数据共含有数据项1007项。
步骤二:对步骤一调取的压力原始数据进行数据预处理操作,步骤如图2所示。
首先,对数据库导出数据项的相邻项进行对比,若数据采集时刻与采集值均相同,则将对比数据的第二项作为重复项删除;若数据采集时刻相同,采集值不同,则将对比数据项的第二项作为异常项删除,直至所有遍历完全部序列;剔除其中重复项和异常项后,得到数据项1000项,绘制成图像如图4所示。
对数据项按照最小时间间隔tmin=1s添加采样时刻后,得到数据项共1251项;本实施例选用线性lagrange插值方法对新增的采样时刻添加采集值,其中,其中,x1和x0分别为t=1s和t=0时刻所采样的数据,计算公式如下所示,插值后绘制得到如图5所示图像。
对lagrange插值后的数据进行一阶差分处理,差分处理的计算公式为δxt=xt 1-xt,差分处理后的图像如图6所示。
选取d=6,l=1,即使用当前时刻和当前时刻前的5个数据,预测后1个时刻的数据值。将数据转换为监督学习所需数据格式,共得到1250个样本数据。
步骤三:将步骤二所得压力数据划分为训练集和测试集数据,本实施例选取了前396项作为训练样本,后854项作为测试样本。
步骤四:使用步骤三所得396项训练集数据,建立并训练双向lstm神经网络,步骤如图3所示。所建立的双向lstm神经网络隐含层节点数目为5,训练次数为200次,对网络输出结果进行反归一化和差分变换逆变换处理后,得到在测试样本上的期望输出和网络预测输出结果如图7所示。
步骤五:根据测试集期望输出与步骤四得到的预测输出计算误差,得到修正前的预测输出误差结果如图8所示。对误差进行修正,本实施例选取的误差修正界限值elim=40,误差接受系数α=0.85,选取待判定点与前9个点在内的共k=10个点进行误差判定,误差判定修正后的预测输出误差如图9所示。根据修正后的误差建立误差向量的高斯分布模型,得到的高斯分布模型的均值:μ=0.627,方差:∑=18.711。
步骤六:根据通讯公约从数据库中调取待测压力数据,对数据按照步骤二所述方式进行处理,得到线性lagrange插值后的曲线图像如图10所示。从图10可以发现,待测样本在开始段存在2个异常,中间段存在1个异常,末端存在1个异常,共5个异常。将处理好的数据输入训练好的双向lstm神经网络进行预测,对网络输出结果进行反归一化和差分变换逆变换处理后计算输出误差,并对误差向量进行修正。根据步骤五建立的误差向量高斯分布模型参数,计算待测压力数据预测误差向量的马氏距离,对计算数值进行相应误差判定。本实施例设定阈值为alim=400,当判定值a(xi)大于设定阈值时,判断此处发生异常,反之,则未发生异常,由图11所示,当设定阈值为alim=400时,由图10所示的马氏距离计算结果可以看出,共有5处超过阈值,即共检测出5处异常。与图10进行对比,发现本发明方法检测出的异常及其位置与图10所示的实际情况相吻合,因此本发明方法具有较好的检测效果。
1.一种基于双向lstm的低压铸造机时间序列数据异常检测方法,其特征在于,所述方法包括以下步骤:
步骤一:从数据库调取正常状态下的低压铸造机的压力原始数据;
步骤二:对步骤一调取的压力原始数据进行数据预处理操作,并将数据转换为监督学习所需数据格式;
步骤三:将步骤二所得压力数据划分为训练集和测试集数据;
步骤四:使用步骤三所得训练集数据训练,建立并保存双向lstm神经网络模型,使用测试集数据进行测试,将反归一化和差分变换的逆变换处理后的模型预测输出作为双向lstm神经网络的预测输出;
步骤五:根据测试集期望输出与步骤四得到的预测输出计算误差,将修正后的误差作为双向lstm神经网络预测输出误差;根据预测输出误差建立误差向量的高斯分布模型;
步骤六:调取待测压力原始数据,对数据按照步骤二所述方式进行处理,将处理好的数据输入训练好的双向lstm神经网络中进行预测;对网络输出结果进行反归一化和差分变换逆变换处理后计算输出误差,对误差进行修正后根据步骤五建立的误差向量高斯分布模型参数,计算待测压力数据预测误差向量的马氏距离;对计算结果进行误差判定,若判定值大于设定阈值,则判断此处发生异常,反之,则未发生异常。
2.根据权利要求1所述的一种基于双向lstm的低压铸造机时间序列数据异常检测方法,其特征在于,步骤二所述,对数据进行预处理并将数据转换为监督学习所需数据格式,其主要包括以下步骤:
1)对数据库导出数据项的相邻项进行对比,若数据采集时刻与采集值均相同,则将对比数据的第二项作为重复项删除;若数据采集时刻相同,采集值不同,则将对比数据项的第二项作为异常项删除,直至所有遍历完全部序列;
2)计算相邻采集时刻的时间间隔,得到最小时间间隔tmin,对步骤1)得到的序列按照最小时间间隔添加采集时刻;
3)对新增采集时刻对应的空缺采集值进行填充,采用lagrange方法进行插值,插值公式为:
其中,x,y表示所采集到的不同的数据,i和j表示不同的时刻的数量,为常数,l是中间结果,li表示i时刻的中间结果,pn是插值结果,
4)对插值后的序列进行一阶差分处理,其计算公式为:
δxt=xt 1-xt;
其中:xt 1为t 1时刻数据,xt为t时刻数据,δxt表示差分处理后的序列;
5)对差分处理后的序列进行归一化处理,其计算公式为:
其中max为样本数据的最大值,min为样本数据的最小值,x*为归一化处理后的序列;
6)遍历差分处理后的时间序列数据,对任一时刻t,使用t时刻和t时刻前的d-1个数据{xt-d 1,...,xt}与t时刻后的l个数据{xt 1,...,xt l}相结合,构造成新的一项{xt-d 1,...,xt,xt 1,...,xt l},将新的项进行合并,得到共n-l个训练样本数据
3.根据权利要求1所述的一种基于双向lstm的低压铸造机时间序列数据异常检测方法,其特征在于,步骤四所建立的双向lstm神经网络,输入层节点数为d,输出层节点数为l,网络包括前向隐含层,后向隐含层,输出层,前向传播层根据输入时间序列正向计算并保存各个时刻前向隐含层输出,后向传播层从最后时刻反向计算一遍并保存各个时刻后向隐含层输出,最后在每个时刻结合前向传播层和后向传播层相应时刻输出得到最终的网络输出,损失函数采用绝对值误差函数,网络采用adam优化算法加快网络训练速度,采用dropout防止模型过拟合。
4.根据权利要求1所述的一种基于双向lstm的低压铸造机时间序列数据异常检测方法,其特征在于,步骤五所述对误差进行修正,其主要包括以下步骤:
1)计算修正后网络预测输出误差,其计算公式为:
x=e=xtrue-xpred;
其中xtrue为观测值,xpred为双向lstm神经网络的预测输出值,e表示误差的值。
2)根据预测误差确定误差修正界限值elim;
3)确定误差接受系数α;
4)结合待判定点与其前k-1个点在内的共k个点,按照如下公式计算误差允许界限值etol:
etol=α×k×valmax,
其中,valmax为正常状态生产的压力最大值;
5)对于
如果e>etol,则将该点预测误差置零,即
其中,
5.根据权利要求1所述的一种基于双向lstm的低压铸造机时间序列数据异常检测方法,其特征在于,步骤五所述对正常状态下的预测误差分布建立高斯分布模型,其主要过程为:
1)获取权力要求4中得到的修正后预测误差x=e;
2)计算修正后误差的均值μ与协方差∑,其计算公式为:
其中,n为第n个训练样本数据的序号,n为n的总数;
3)建立修正后误差向量的高斯分布模型,其计算公式为:
p(x|data)=n(x|μ,∑)。
6.根据权利要求1所述的一种基于双向lstm的低压铸造机时间序列数据异常检测方法,其特征在于,步骤六中所述对预测结果的误差判定,其主要包括以下步骤:
1)计算双向lstm神经网络预测结果误差并进行修正;
2)对每一个点x,根据已建立的高斯分布模型参数计算该点的马氏距离,其计算公式为:
a(x)=(x-μ)τ∑-1(x-μ),
3)确定异常划分阈值alim,
若a(xi)>alim,则该点xi对应的状态为异常状态,若a(xi)≤alim,则该点xi对应的状态为正常状态,其中,a(xi)为点xi的马氏距离。
技术总结