一种差分小波神经网络软件故障预测技术的构建方法与流程

文档序号:11386447阅读:309来源:国知局
一种差分小波神经网络软件故障预测技术的构建方法与流程

本发明提供一种差分小波神经网络软件故障预测技术的构建方法,它涉及一种差分小波神经网络软件故障预测技术的实现,属于软件可信性、软件故障预测领域。



背景技术:

神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。它具有大规模并行处理和分布式存储各类图像信息的功能,有很强的容错性、联想和记忆能力,因而被广泛地应用于故障诊断、故障预测、模式识别、联想记忆、复杂优化、图像处理以及计算机领域。小波神经网络是基于小波分析理论所构造的一种分层的、多分辨率的新型人工神经网络,即用非线性小波基函数取代了通常的非线性sigmoid函数。小波神经网络有以下优点:可避免bp神经网络等结构设计上的盲目性;可避免局部最优等非线性优化问题;有较强的函数学习能力。

差分则是一种常见的数据预处理方法,又名差分函数或差分运算,差分的结果反映了离散量之间的一种变化,是研究离散数学的一种工具,它将原函数f(x)映射到f(x+a)-f(x+b)。

近年来,基于神经网络的混沌时间序列预测技术表现出较快的发展势头,每一种新的神经网络方法都促进了混沌预测技术的丰富和改进。一般来说,如果将预测任务当作一个静态函数逼近问题,则可通过非线性回归方法来解决,比如使用多层前向网络、支持向量机等。另一方面,混沌时间序列本身源自动态系统,因此可使用递归神经网络来模拟动态系统。作为动态系统的递归神经网络常常比静态的多层前向网络更有效。

由于软件变得越来越复杂,规模越来越大,软件发生故障的次数与时机也越来越难以预计。将一个软件的故障发生时间间隔作为一个时间序列,那么它可能具有强烈的非平稳性,甚至可能是一个统计意义上的白噪声序列,这也让软件故障发生时间的预测变得愈加困难。现有的诸如bp神经网络、rbf神经网络、小波神经网络、esn神经网络等的单一使用也难以对软件故障的发生时间进行准确的预测。针对这一状况,我们将提出一种差分小波神经网络软件故障预测技术的构建方法,在这项技术中,对于已有的原始历史软件故障时间序列进行差分预处理,使其变得平稳化,再将差分后的时间序列作为小波神经网络的输入和输出,以此进行训练,再使用训练好的网络来进行预测,最后将预测出的时间序列进行差分还原,即可得所需要的软件故障时间预测。使用这一技术可以克服单一使用神经网络进行预测的预测误差过大的问题,可以得出较为准确的预测值。

该故障预测技术结合差分数据预处理方法和小波神经网络技术进行构建,形成较为准确的差分小波神经网络软件故障预测技术,在提高软件故障时间预测精度的同时,达到提高软件可信性、安全性、可用性的目的。



技术实现要素:

(一)本发明目的:依据基础理论的不同,目前主要的预测方法包括3种:基于线性理论的预测方法、基于知识发现的智能模型预测方法、基于非线性理论的预测方法。由于软件规模和复杂度的急剧扩大,软件故障发生时间的时间序列逐渐称为概率意义上的白噪声序列。已有的诸如arima线性预测方法和神经网络非线性预测方法的直接使用已经不能准确的预测现有的故障发生时间。因此本发明将克服现有技术的不足,提供一种差分小波神经网络软件故障预测技术的构建方法对上述问题进行解决。在这项技术中,首先将已有的历史软件故障时间序列进行差分预处理,再将差分后的时间序列作为小波神经网络的输入和输出,以此进行训练,再使用训练好的网络来进行预测,最后将预测出的时间序列进行差分还原,即可得所需要的软件故障时间预测。可以看出该技术的构建对现有的神经网络预测方法进行了整合与创新,形成了差分小波神经网络软件故障预测技术。

(二)技术方案

本发明技术方案:差分小波神经网络软件故障预测技术的构建方法过程如下:

本发明所述方法中,引用dwnn来表述基于差分(即“difference”)与小波神经网络(即“wnn”)相结合的技术。

本发明一种差分小波神经网络软件故障预测技术的构建方法,其步骤如下:

步骤1、搜集大量被诊断软件的历史故障案例,针对被诊断软件系统的特点,依据故障信息相关、完整、非重复、非人为错误操作四原则,筛选有效故障案例,按照故障发生时间的顺序加入至创建的故障知识案例库;

步骤2、计算故障间隔时间,按照故障知识案例库中的排序,构建原始混沌间隔时间序列;

步骤3、结合拓展后的多维时间序列,构建故障间隔时间预测信息的训练样本和预测样本;

步骤4、对训练样本和预测样本进行差分预处理,构建训练差分时间序列和预测差分时间序列;

步骤5、通过相空间重构法获得多维差分时间序列。构建训练网络的输入矩阵和预期输出矩阵,该输出矩阵会根据与网络实际输出的差别来调整连接权值,完成训练的过程;

步骤6、构建基于差分小波神经网络的故障预测算法。首先要实现其核心技术,即基于故障知识案例库数据的网络函数初始化,结合样本分类和预测输出,实现网络权值修正和网络参数数据的自动学习,并以此为依据判断算法是否结束。算法结束后,即意味着网络训练结束,然后使用训练好的网络进行预测;

步骤7、结合差分小波神经网络算法训练样本和预期输出的多维时间序列拓展方法,完成差分小波神经网络的训练过程,构建基于故障时间信息的软件故障预测系统;

步骤8、在软件故障预测系统中输入预测差分时间序列,预测软件最新的故障差分间隔时间信息;

步骤9、结合多维时间序列预测样本,通过差分还原法将输出的预测值转换成软件最新的故障间隔时间预测数据;

步骤10、将上一轮故障差分间隔的预测时间信息视为已知预测差分序列,运用迭代法实现多步故障预测技术指南,构建软件故障间隔时间信息数据库。

其中,在步骤1中所述的“筛选有效故障案例”的做法,主要有以下几点:

(1)判断故障报告信息是否相关;

(2)判断故障报告信息是否完整;

(3)判断故障报告是否重复;

(4)判断故障是否是由人员的错误操作造成;

若故障信息相关、完整、不重复、不是人员的错误操作造成,那么可以认为故障是由软件代码本身固有的缺陷被触发而导致的故障,即有效故障。其中故障信息相关表示故障报告是因为软件本身发生故障而提出,而不是因为需求新的功能而提出。

其中,在步骤2中所述的“构建原始混沌间隔时间序列”的做法如下:假设共收集了m个故障发生时间数据,构成原始混沌时间序列{t1,t2,...,tm},计算故障间隔时间ti=ti+1-ti,(i=1,2,...m-1)后,共m-1个故障间隔时间数据,构成m-1维时间序列{t1,t2,...,tm-1}。

其中,在步骤3中所述的“训练样本和预测样本”,是指拓展的多维时间序列,将其分为差分小波神经网络的训练部分和预测部分;令k=n-1,对于m-1个故障间隔时间数据,我们规定训练部分m-k-2个故障间隔时间数据,用于差分小波神经网络的训练,预测部分k+1个数据,用于故障间隔时间的预测。

其中,在步骤4中所述的“进行差分预处理”的做法如下:根据差分公式有训练样本差分故障间隔时间t(i-1)=ti-ti-1(i=2,3,...m-k-2),其中t(i-1)即为差分,{tt(1),tt(2),...,tt(m-k-3)}即构成训练差分序列,共m-k-3个差分数据;对于预测样本,则有tp(i-1)=ti-ti-1(i=m-k,m-k+1,...,m-1),将预测部分的k+1个故障间隔时间序列值转化为差分序列{tp(m-k-1),tp(m-k),...,tp(m-2)},共k个差分数据;所以对总体样本来说,共有m-3个故障间隔差分数据;差分数据的下标t和p分别代表训练和预测。

其中,在步骤5中所述的“通过相空间重构法获得多维差分时间序列”的做法如下:选定一个延迟时间t,将原来的混沌差分时间序列作漂移,从而获得一组新的时间序列,最终得到一系列n维相空间的相点,它们是

式中t为延迟时间,t为采样时间,n<m-3。

“选定一个延迟时间t”的做法如下:求故障间隔时间序列的自相关、偏相关数,绘制自相关和偏相关图。依据自相关、偏相关系数的截尾、拖尾性,采用ar(p)、ma(q)或者arma(p,q)模型,求得模型阶数,即为延迟时间t。为简化流程,本发明中默认t=1。

其中,在步骤5中所述的“构建训练网络的输入矩阵和预期输出矩阵”,其做法如下:n作为时间序列延迟坐标的维数,表示可预测的最大时间维度。这里k=n-1,取多维差分时间序列的前k列作为训练样本输入层,第k+1列作为输出层的期望输出。即使用前k个差分{tt(1),tt(2),...,tt(k)}作为输入,去预测第k+1个差分tt(k+1)。同理,使用{tt(2),tt(3),...,tt(k+1)}去预测tt(k+2),如此,直到预测到最后一个差分tt(m-k-3)为止。如此即可形成训练网络输入矩阵input和预期输出矩阵output,可表示为:

其中,n可根据混沌动力系统k熵值和关联维数d确定,k=n-1。

其中,在步骤6中所述的“构建基于差分小波神经网络的故障预测算法”,其做法如下:

(1)网络初始化。随机初始化小波函数伸缩因子ak、平移因子bk以及网络连接权值ωij,ωjk,设置网络学习速率η;

(2)样本分类。把样本分为训练样本和测试样本,训练样本用于训练网络,测试样本用于测试网络预测精度;

(3)预期输出。把训练样本输入网络,计算网络预测输出并计算网络输出和期望输出的误差ε;

(4)权值修正。根据误差ε修正网络权值和小波函数参数,使网络预测值逼近期望值;

(5)判断算法是否结束,如没有结束,返回(3);

(6)训练算法结束后,使用训练好的网络进行预测。

其中,在步骤7中所述的“构建基于故障时间信息的软件故障预测系统”,其做法如下:指将训练网络已经完成的输入矩阵input和预期输出矩阵output导入差分小波神经网络仿真环境中接受教师学习。使得软件故障预测系统的网络结构逼近算法网络,提高系统整体可靠性和预测准确性。

其中,在步骤8中所述的“预测软件最新的故障差分间隔时间信息”是指将序列{tp(m-k-1),tp(m-k),...,tp(m-2)}作为故障预测系统的输入,系统会输出一个差分预测值tp(m-1)

其中,在步骤9中所述的“通过差分还原法将输出的预测值转换成软件最新的故障间隔时间预测数据”,其作法如下:逆向使用差分公式,即ti=ti-1+t(i-1),使用步骤8得到的预测值tp(m-1)加上原有的已知的最后一个故障间隔时间,即第m-1个故障间隔时间tm-1,则有tm=tm-1+tpm-1,tm即为最新的软件故障间隔时间预测数据。

其中,在步骤10中所述的“运用迭代法实现多步故障预测技术指南”,其做法如下:将步骤9中得到的差分预测值tp(m-1)加入到预测差分序列{tp(m-k-1),tp(m-k),...,tp(m-2)}中并实现序列更新,形成新的预测差分序列{tp(m-k),...,tp(m-2),tp(m-1)},重复迭代步骤9~步骤10,即可更新差分预测值tp(m)和故障间隔时间预测值tm+1。同样,还可以将tp(m)加入到差分预测序列,再次重复步骤9~步骤10,即可进行多步预测,即任意时间点,时间段,故障间隔时间信息的预测,由此构建软件故障间隔时间信息数据库。

通过上述步骤,可以完成对差分小波神经网络软件故障预测技术的构建,将经过差分预处理后的故障间隔时间数据作为小波神经网络的输入,然后经过差分还原,即可进行软件故障间隔时间的预测。本发明适用于解决实际问题中的软件故障时间预测问题,可以帮助软件开发者利用已知的软件故障时间信息,不需要其他数据,即可预知未来可能发生的故障的具体时间,以便在软件实际发生故障前做出应对,减小损失,具有较高的实际应用价值。

(三)优点及功效

本发明与现有技术相比的优点在于:目前,使用神经网络的进行预测往往都是单一的使用,比如使用bp神经网络预测,或者使用其他类型的神经网络。优化也都停留在神经网络本身的参数优化上,这虽然很有效果,但是优化本身是一个工作量较大的工作,同时,由于来源数据的不同,最优参数也往往不同。针对一种数据就优化一次参数,工作量很大。而差分则多应用于传统的时间序列建模,但这些模型往往又不适用于非线性的时间序列。本发明则是在使用神经网络预测前,进行数据的差分预处理,再使用神经网络预测出差分值,再差分还原即可得到预测效果较好的软件故障时间预测,同时,这适用于不同的来源数据,可以减轻工作量。

附图说明

图1为本发明的总体步骤流程图。

图2为本发明的有效故障判断流程图。

图3为本发明的相空间重构实现架构图。

图4为本发明的小波神经网络拓扑结构图。

图5为本发明基于差分小波神经网络的故障预测算法流程图。

图6为本发明迭代法多步预测流程图。

图中序号、符号、代号说明如下:

图1中的“步骤1~10”即技术方案中对应的步骤;

图1,3中的“t”即时间序列延迟时间;

图1,3中的“n”即时间序列延迟坐标维数;

图3中的“g-p算法”即grass-berger-procaccia算法,是计算关联维数的主要算法;

图3中的“k熵”即kolmogorov熵,是用来判别系统在相空间中混沌运动性质的物理量;

图3中的“ar模型”、“ma模型”、“arma模型”分别指自回归模型、滑动平均模型、自回归滑动平均模型;

图4中的“ωij”即输入层和隐含层的连接权值;

图4中的“ωjk”即隐含层和输出层的连接权值。

具体实施方式

为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图进行详细描述。

本发明提供了一种差分小波神经网络软件故障预测技术的构建方法。利用该方法构建的技术可以对现有的趋于混沌的软件故障间隔时间进行较为准确的预测。在这项技术中,首先将已有的历史软件故障时间序列进行差分预处理,再将差分后的时间序列作为小波神经网络训练部分代码所需的输入和输出,以此进行训练,再使用训练好的网络预测新的差分值,最后将预测出的差分进行差分还原,即可得所需要的软件故障时间预测。同时,还可以将新得的预测差分数据结合已有数据作为输入,进行多步预测,满足更长预测的需求。

本发明一种差分小波神经网络软件故障预测技术的构建方法,如图1所示,其具体构建步骤如下:

步骤一:构建软件故障知识案例库。其构建方法是:

有效软件故障案例集的筛选。搜集大量被诊断软件的历史故障案例,针对被诊断软件系统的特点,依据故障信息相关、完整、非重复、非人为错误操作四原则,筛选出有效的案例集。筛选有效故障案例的做法,主要包括判断故障报告信息是否相关;判断故障报告信息是否完整;判断故障报告是否重复;判断故障是否是由人员的错误操作造成,有效故障判断准则如图2所示。若故障信息相关、完整、不重复、不是人员的错误操作造成,那么可以认为故障是由软件代码本身固有的缺陷被触发而导致的故障,即有效故障。其中故障信息相关表示故障报告是因为软件本身发生故障而提出,而不是因为需求新的功能而提出。

按照故障发生时间为故障案例排序,加入故障知识案例库。

步骤二、构建原始混沌故障间隔时间序列。其构建方法是:

计算故障间隔时间。

假设共收集了m个故障发生时间数据,构成原始混沌时间序列{t1,t2,...,tm},计算故障间隔时间ti=ti+1-ti,(i=1,2,...m-1)。

按排序构建原始混沌间隔时间序列。

共计m-1个故障间隔时间数据,构成m-1维时间序列{t1,t2,...,tm-1}。

步骤三:构建故障间隔时间预测信息的训练样本和预测样本。其构建方法是:

将原始时间序列{t1,t2,...,tm-1}分为两部分,即训练部分和预测部分。训练部分是将差分小波神经网络的训练部分所需的输入和输出,预测部分则是程序的预测部分所需的输入。原始时间序列共m-1个故障间隔时间数据,具体的分法则是训练部分m-k-2个,预测部分k+1个。如此,训练样本部分序列为{t1,t2,...,tm-k-2},预测样本部分序列为{tm-k-1,tm-k,...,tm-1}。

步骤四:构建训练差分时间序列和预测差分时间序列。其构建方法是:

对训练样本和预测样本进行差分预处理。

根据差分公式有训练样本差分故障间隔时间t(i-1)=ti-ti-1(i=2,3,...m-k-2),其中t(i-1)即为差分,{tt(1),tt(2),...,tt(m-k-3)}即构成训练差分序列,共m-k-3个差分数据。对于预测样本,则有,将预测部分的k+1个故障间隔时间序列值转化为差分序列{tp(m-k-1),tp(m-k),...,tp(m-2)},共k个差分数据。所以对总体样本来说,共有m-3个故障间隔差分数据。差分数据的下标t和p分别代表训练和预测。

步骤五:构建训练网络的输入矩阵和预期输出矩阵。其构建方法是:

(1)通过相空间重构法获得多维时间序列。相空间重构理论认为,确定任一系统的状态所需要的全部动力学信息包含在该系统任一变量的时间序列中,把单变量时间序列嵌入到新的坐标系中所得的状态轨迹保留了原空间状态轨道的最主要的特征。所以采用延迟之后时间序列的思想,我们就能对一维原始混沌时间序列进行相空间重构,拓展时间序列的维数信息。相空间重构实现架构如图3所示。

a)确定延迟坐标的维数n。n作为时间序列延迟坐标的维数,表示可预测的最大时间维度。求延迟坐标的维数n的方法主要包括关联维数法和kolmogorov熵,简称k熵法。关联维数和k熵都是可以用来判别系统在相空间中混沌运动性质的物理量。关联维数d与延迟坐标的维数n具有n≥2d+1的关系,通过takens嵌入理论和grass-berger-procaccia算法,简称为g-p算法,可以计算得出关联维数d。

k熵值的倒数常常被用来估计平均可预测时间维度。其实际意义与延迟坐标的维数相当,本发明认为两者近似,故而将t与n等价。常用极大似然法求解k熵。即由吸引子上初始非常接近的两个轨道开始发散的平均时间求得熵的估计值。

考察吸引子上的两个初始点,它们之间的初始距离小于某一个特定的距离r0,记下它们分离至其间距大于r0所需的时间t0,根据满足条件的所有点的分离时间的平均值计算k熵的大小。遍历m维相空间,从中找到满足条件的点对共n对,对每个点对求出相应的t值,得到样本(t1,t2,...tn)的概率pk,利用pk进行极大似然估计,可以得到k熵的极大似然估计值knl。

b)确定延迟时间t。首先,计算故障间隔时间序列{t1,t2,...,tm-1}的自相关、偏相关数,然后绘制自相关和偏相关图。依据自相关、偏相关系数的截尾、拖尾性进行模型的选择,备选模型包括ar(p)模型,ma(q)模型,arma(p,q)模型。最后求得的模型阶数即为延迟时间t。本发明为简化流程,默认t=1。自相关函数的含义是同一时间函数在瞬时t和t+τ的两个值相乘积的平均值作为延迟时间τ的函数,它是信号与延迟后信号之间相似性的度量。ar模型、ma模型以及arma模型则是广为人知的时间序列模型。

c)拓展多维时间序列。n作为时间序列延迟坐标的维数,表示可预测的最大时间维度。n的确定决定了多维时间序列的维度,再按延迟时间τ将原来的一维混沌时间序列(t(i))作飘移,拓展成多维时间序列,最终得到一系列n维相空间的相点,它们是

式中t为采样时间,n<m-3。

(2)确定训练样本输入层和输出层的期望输出。

取k=n-1,将多维差分时间序列的前k列作为训练样本网络输入层,第k+1列作为输出层的期望输出。未来的工作中将用前k个差分{tt(1),tt(2),...,tt(k)}作为输入,去预测第k+1个差分tt(k+1)。同理,使用{tt(2),tt(3),...,tt(k+1)}去预测tt(k+2),如此,直到预测到最后一个差分tt(m-k-3)为止。如此即可形成训练网络输入矩阵input和预期输出矩阵output,可表示为:

并将训练网络的输入矩阵和预期输出矩阵加入故障知识案例库。

步骤六:构建基于差分小波神经网络的故障预测算法。其构建方法是:

实现其核心技术,即基于故障知识案例库数据的网络函数初始化。包括随机初始化小波函数伸缩因子ak、平移因子bk以及网络连接权值ωij,ωjk,设置网络学习速率η,小波神经网络拓扑结构如图4所示。完成了网络函数初始化的工作,接下来就是对样本进行分类,即把样本分为训练样本和测试样本,训练样本用于训练网络,测试样本用于测试网络预测精度。继而把训练样本输入网络,计算网络预测输出并计算网络输出和期望输出的误差ε。接下来的工作是权值修正,根据误差修正网络权值和小波函数参数,使网络预测值逼近期望值,实现网络参数数据的自动学习。最后的工作就是根据输出的误差ε判断算法是否结束,若算法未结束,即返回输入训练样本,输出样本预测值,并结合预期输出值计算输出误差ε的工作;若算法结束,即意味着网络训练结束,就可以使用训练好的网络针对未来软件故障时间信息的进行预测。该算法具体实现如下所示:

本算法流程图如图5所示。

步骤七:完成差分小波神经网络的训练过程,构建基于时间故障信息的软件故障预测系统。其构建方法是:

结合差分小波神经网络算法训练样本和预期输出的多维时间序列拓展方法,将训练网络已经完成的输入矩阵input和预期输出矩阵output导入差分小波神经网络仿真环境中接受教师学习。使得软件故障预测系统的网络结构逼近算法网络,提高系统整体可靠性和预测准确性。

步骤八:实现软件最新故障差分间隔时间信息的预测。

差分预测值的输出。

将预测差分时间序列{tp(m-k-1),tp(m-k),...,tp(m-2)}作为故障预测系统的输入,系统会输出一个差分预测值tp(m-1)

步骤九:实现输出的预测值与软件最新的故障间隔时间预测之间的数据转换。其实现具体流程是:

逆向使用差分公式ti=ti-1+t(i-1),使用最新输出的差分预测值tp(m-1)加上原有已知的最后一个故障间隔时间,即第m-1个故障间隔时间tm-1,得到tm=tm-1+tpm-1,tm即为最新的软件故障间隔时间预测数据。

步骤十:构建软件故障间隔时间信息数据库。其构建方法是:

更新故障间隔时间信息。

将上一轮故障差分间隔的预测时间信息视为已知预测差分序列,就是将差分预测值tp(m-1)加入到预测差分序列{tp(m-k-1),tp(m-k),...,tp(m-2)}中并实现序列更新,形成新的预测差分序列{tp(m-k),...,tp(m-2),tp(m-1)}。

迭代法实现多步故障预测技术指南。

即提供使得本系统不仅可以实现对软件故障信息同时间单步预测,还可以实现同时间、同次的多步预测,甚至隔步预测,具体做法就是重复迭代步骤九到步骤十,更新差分预测值tp(m)和故障间隔时间预测值tm+1。同样,还可以将tp(m)加入到差分预测序列,再次重复步骤九到步骤十,即可进行多步预测,即任意时间点,时间段,故障间隔时间信息的预测,由此构建软件故障间隔时间信息数据库。迭代法多步预测流程如图6所示。

通过上述步骤,可以完成对差分小波神经网络软件故障预测技术的构建。在这项技术中,我们对于已有的原始历史软件故障时间序列进行差分预处理,使其变得平稳化,再将差分后的时间序列作为小波神经网络的输入和输出,以此进行训练,再使用训练好的网络来进行预测,最后将预测出的时间序列进行差分还原,即可得所需要的软件故障时间预测。使用这一技术可以克服单一使用神经网络进行预测的预测误差过大的问题,可以得出较为准确的预测值。

该故障预测技术结合差分数据预处理方法和小波神经网络技术进行构建,形成较为准确的差分小波神经网络软件故障预测技术。

本发明未详细阐述部分属于本领域公知技术。

以上所述,仅为本发明部分具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域的人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1