2. 中国民航大学 中国民航信息技术科研基地, 天津 300300
2. Information Technology Research Base of Civil Aviation Administration of China, Civil Aviation University of China, Tianjin 300300, China
软件可靠性作为软件可信性的属性之一,其定量评估和预测已经成为人们关注和研究的焦点[1-2]。建立软件可靠性模型的方法可以分为两类:基于统计分析的方法和基于计算智能的方法[3]。前者建立的模型需要基于一些特定的假设条件,而在实际应用中这些条件往往很难全部满足。后者建立的模型是基于数据的一种方法,由于不需要假设条件以及较高的适用性和预测精度,已经得到了广泛关注和研究,成为当前软件可靠性建模研究热点。软件可靠性数据主要从两方面获得:一是从实验室进行的可靠性实验中得到,称为实验数据;二是从产品实际使用现场得到,称为现场数据[4]。实验数据通常是稳定的失效数据,这类数据来源于软件测试阶段后期,不确定性因素相对较少,所获得的数据相对比较准确,稳定性较强。现场数据往往是非稳定的失效数据,这类数据来源于软件实际运行和维护阶段,运行环境相对比较复杂,不确定性因素相对较多,稳定性较差。现场数据与质量优良的实验数据相比,往往呈现出非常强的随机性和动态性,比实验数据更代表产品的表现。
目前,基于数据的软件可靠性模型主要有支持向量机模型[5]、灰色理论模型[6]以及基于多种预测方法的混合预测模型[7-9],特别是用人工神经网络来实现基于分类的软件可靠性预测已经成为研究热点[10]。国外,Kiran等[11]将小波神经网络应用在软件可靠性预测中,并证明了模型的有效性。Roy等[12]提出基于粗糙前馈神经网络的动态加权组合模型进行可靠性预测,取得了良好的预测效果。Lakshmanan等[13]提出了一种新的基于动态评价权重的神经网络组合模型,并证明其优于传统的单一神经网络模型。国内,乔辉等[14]提出一种自适应遗传算法-学习向量量化(Adaptive Genetic Algorithm-Learning Vector Quantization,AGA-LVQ)神经网络的可靠性模型,并在短期预测方面提高了可靠性预测精度。刘逻等[15-16]提出使用智能优化算法结合动态模糊神经网络来进行可靠性预测,提高了预测精度。这些基于数据的软件可靠性模型由于没有关注软件失效数据中存在的随机性和动态性现象,这类模型大部分仅对稳定的实验失效数据具有较高的预测精度和适应性,对于非稳定的现场失效数据的预测精度和适应性有时并不太理想。
对于非稳定的现场失效数据,如果不考虑数据中的随机性和动态性,仅靠单一的可靠性模型很难对其进行准确有效的预测。特别是在用户访问量比较大、需要持续运行的软件系统中,软件失效数通常会受时间、季节以及节假日因素的影响,统计到的可靠性现场数据波动性比较大,随机性和动态性比较强。针对此类情况,本文提出一种将灰色GM(1,1)模型和Elman神经网络相结合的灰色Elman神经网络软件可靠性预测模型,并对航班查询软件现场失效数据进行预测。
1 灰色Elman神经网络模型 1.1 灰色模型灰色系统理论是处置少数据不确定性问题的理论,少数据不确定性亦称灰性,具有灰性的系统称为灰色系统[17]。其理论认为,系统一切灰色序列都能通过某种生成弱化其随机性,显现其规律性。
最常用的灰色模型(Grey Model,GM)主要是GM(1,1)模型,它具有微分、差分、指数兼容等性质,模型的参数可调,结构随时间而变,突破了一般建模要求数据多、一般得不到“微分”性质的局限。其模型建模根据数据序列变化趋势又可以分成平滑型、陡型以及摆动型GM(1,1)建模。目前最常见的是平滑型GM(1,1)建模,其灰微分方程:
${{x}^{(0)}}(k)+a{{z}^{(1)}}(k)=b$ | (1) |
该模型首先对原始序列进行一阶累加,使其数据序列的灰色过程由灰变白,呈现一定的规律性,然后再通过参数调整进行函数逼近,具体建模方法如下:
假设X(0)为初始数据序列:
$\begin{align} & X(0)=\left\{ {{x}^{(0)}}(i)|i=1,2...n \right\} \\ & \text{ }=\left\{ {{x}^{(0)}}(1),{{x}^{(0)}}(2),...,{{x}^{(0)}}(n) \right\} \\ \end{align}$ | (2) |
对其进行一阶累加,得到生成数据序列:
$X(1)=\left\{ {{x}^{(1)}}(1),{{x}^{(1)}}(2),...,{{x}^{(1)}}(n) \right\}$ | (3) |
式(2)到式(3),对应累加公式为:
${{x}^{(1)}}(k)=\sum\limits_{i=0}^{k}{{{x}^{(0)}}(i)}$ | (4) |
于是x(0)(k)的GM(1,1)的白化形式微分方程为:
$\frac{d{{x}^{(1)}}}{dt}+a{{x}^{(1)}}=u$ | (5) |
式中a、u为待定参数,微分方程的离散解为:
${{\widehat{x}}^{(1)}}(k+1)=\left[ {{x}^{(1)}}(1)-\frac{\widehat{u}}{\widehat{a}} \right]{{e}^{-\widehat{a}k}}+\frac{\widehat{u}}{\widehat{a}}$ | (6) |
其中$\widehat{a}$、$\widehat{u}$可由式(7)确定:
${{\left[ \widehat{a},\widehat{u} \right]}^{T}}={{\left( {{B}^{\text{T}}}B \right)}^{\text{-1}}}{{B}^{\text{T}}}Y$ | (7) |
式中:
$\left\{ \matrix{ Y = {\left[ {{x^{(0)}}(2),{x^{(0)}}(3),...,{x^{(0)}}(n)} \right]^T} \hfill \cr B = \left[ \matrix{ - {1 \over 2}({x^{(1)}}(1) + {x^{(1)}}(2))\quad {\rm{ }}1 \hfill \cr - {1 \over 2}({x^{(1)}}(2) + {x^{(1)}}(3))\quad 1 \hfill \cr \quad \quad {\rm{ }} \vdots \quad {\rm{ }} \vdots {\rm{ }} \hfill \cr - {1 \over 2}({x^{(1)}}(n - 1) + {x^{(1)}}(n))1 \hfill \cr} \right] \hfill \cr} \right.$ | (8) |
对式(6)离散解进行还原可以得到逼近后的预测数据,还原公式得:
$\begin{align} & {{\widehat{x}}^{(0)}}(k+1)={{\widehat{x}}^{(1)}}(k+1)-{{\widehat{x}}^{(1)}}(k) \\ & =(1-{{e}^{\widehat{a}}})\left[ {{\widehat{x}}^{(1)}}(1)-\frac{\widehat{u}}{\widehat{a}} \right]{{e}^{-\widehat{a}k}} \\ \end{align}$ | (9) |
其对应残差序列为:
$E=X(0)-\widehat{X}(0)$ | (10) |
式(6)、(9)是GM(1,1)模型相应的时间函数模型,代表着灰色预测的具体计算公式。
1.2 Elman神经网络模型Elman神经网络是一种典型的动态回归神经网络,通过存储内部状态而映射动态特征。该模型在BP神经网络的隐含层中增加一个承接层,作为一步延时算子,达到记忆的目的,从而使系统具有适应时变特性的能力,能直接反映动态过程系统的特性。其网络模型如图 1所示:输入层、隐含层、输出层的链接类似于前馈式神经网络,相连接两层之间权重是可变的;承接层和隐含层之间构成一个后向反馈循环,使得神经网络对历史输入数据敏感[18]。
假设输入层神经元个数为m,隐含层和承接层神经元个数为n,输出层神经元个数为k,并且输入层到隐含层的权值为w1,承接层到隐含层权值为w2,隐含层到输出层权值为w3,u(p-1)作为神经网络的输入,xc(p-1)表示前一次承接层的值,x(p)表示隐含层输出,y(p)表示输出层输出,xci(p-1)表示承接层第i个神经元的值,xi(p)表示第i个隐含层神经元的值,yi(p)表示第i个输出层神经元的输出。那么有:
$\left\{ \begin{align} & {{x}_{i}}(p)=f(\sum\limits_{j=1}^{m}{w_{ji}^{1}}{{u}_{j}}(p-1)+\sum\limits_{j=1}^{n}{w_{ji}^{2}}{{x}_{cj}}(p)) \\ & {{x}_{ci}}(p)={{x}_{\text{i}}}(p-1) \\ & {{y}_{i}}(p)=g(\sum\limits_{j=1}^{n}{w_{ji}^{3}}{{x}_{j}}(p)) \\ \end{align} \right.$ | (11) |
其中: f(x)是隐含层激活函数,g(x)是输出层激活函数,并且f(x)常用S型函数,g(x)则为线性函数。Elman神经网络的权值修正一般采用自适应学习率附加动量梯度下降的BP算法。该算法是在梯度下降算法的基础上引入动量因子η(0 <η<1),表示为:
$\begin{align} & {{w}_{ij}}(p+1)={{w}_{ij}}(p)+\Delta {{w}_{ij}}(p+1) \\ & \Delta {{w}_{ij}}(p+1)=\eta \Delta {{w}_{ij}}(p)+a(1-\eta )\frac{{{\partial }_{{{E}_{p}}}}}{\partial {{w}_{ij}}} \\ \end{align}$ | (12) |
其中:a为学习速率;Ep为第p次训练的输出误差。
误差函数采用:
$E=\sum\limits_{p=1}^{n}{{{\left[ y(p)-d(p) \right]}^{2}}}$ | (13) |
其中:d(p)为第p次训练的期望输出;n为训练总次数。
2 灰色Elman神经网络可靠性预测模型软件失效过程是一个灰色过程,使用灰色理论对其进行建模和分析是合适的[6]。对灰色过程建立的模型称为灰色模型(GM)。GM(1,1)是目前最常用的灰色模型。GM(1,1)模型首先通过对软件失效数据序列进行一阶累加生成,将失效数据序列变为具有累增趋势的失效数据序列,使得失效数据序列的灰色过程由灰变白,弱化数据序列中的随机性,使其呈现出一定的规律性。然后使用灰色预测模型对具有累增趋势的失效数据序列进行规律性预测,捕捉数据中的线性规律。最后通过数据的累减,进行还原变换实现对数据的拟合和预测。通过GM(1,1)预测后,弱化了数据中的随机性,得到了软件失效数据的基本趋势变化规律,但是误差比较大,需要降低产生的误差。然而误差存在于失效数据预测值与原始失效数据的残差中,需要选用合适的预测模型对残差进行预测修正。而Elman神经网络可以通过网络权值的调整和对历史数据的学习来实现对任意函数曲线的近似逼近,并且由于比BP神经网络增加了一个承接层,其对历史数据具有敏感性,特别适合处理时序性比较强的动态数据预测问题。
软件在实际使用中产生的可靠性现场数据,具有很强的随机性和动态性,而且数据波动比较大,可以使用灰色Elman神经网络进行失效历史数据的学习和预测,模型主要步骤如下:
1) 对可靠性失效数据进行GM(1,1)模型预测。选择可靠性失效数据,记为原始数据序列:
$X(0)=\{{{x}^{(0)}}(1),{{x}^{(0)}}(2),...,{{x}^{(0)}}(n)\}$ | (14) |
对失效数据进行GM(1,1)模型的预测,得到失效数据的预测序列以及相应的残差序列分别如式(15)~(16):
$\widehat{X}(0)=\left\{ {{\widehat{x}}^{(0)}}(2),{{\widehat{x}}^{(0)}}(3),...,{{\widehat{x}}^{(0)}}(n) \right\}$ | (15) |
$E(0)=\left\{ {{e}^{(0)}}(2),{{e}^{(0)}}(3),...,{{e}^{(0)}}(n) \right\}$ | (16) |
其中残差计算采取如下公式:
${{e}^{(0)}}(i)={{x}^{(0)}}(i)-{{\widehat{x}}^{(0)}}(i)$ | (17) |
这样通过GM(1,1)模型对失效数据进行预测后,得到了可靠性失效数据的线性变化规律,并且通过灰色处理后弱化了数据的随机性,保留了数据中的动态特性。此时,预测误差主要存在于失效原始值与失效预测值的残差中,采用Elman神经网络对GM模型预测残差进行动态修正。
2) 对GM(1,1)模型的残差序列进行数据的归一化处理。通过式(18)将残差序列值变换成[0, 1]区间的值,记为残差序列E(1):
$\begin{align} & E(1)=\{{{e}^{(1)}}(2),{{e}^{(1)}}(3),...,{{e}^{(1)}}(n)\} \\ & {{e}^{(1)}}(i)=\frac{{{e}^{(0)}}(i)-{{x}_{\min }}}{{{x}_{\max }}-{{x}_{\min }}} \\ \end{align}$ | (18) |
式中:xmax和xmin分别为残差序列E(0)中的最大、最小值。
3) 对归一化后的数据E(1),进行Elman神经网络的训练。由于残差序列E(1)为一维时间数据序列,需要对其确定最佳数据维度m,作为Elman神经网络的输入层神经元个数,则将E(1)中数据每前m个作为一组输入放入数据矩阵P中,第m+1个数据作为这m个数据的期望输出值放入T中,具体变化公式:
$\left\{ \begin{align} & P=\{p(m+1),p(m+2),...,p(n-1))\} \\ & p(i)=\{{{e}^{(1)}}(i-m),{{e}^{(1)}}(i-m+1),...,{{e}^{(1)}}(i-1)\} \\ & T=\{{{e}^{(1)}}(m+2),{{e}^{(1)}}(m+3),...,{{e}^{(1)}}(n)\} \\ \end{align} \right.$ | (19) |
其中:p(i)表示输入矩阵中第i个输入向量。然后选择合适的Elman神经网络隐含层神经元个数,并从输入和输出的矩阵中选择前j组进行训练,后k组作为预测验证。
4) 对残差数据的进行Elman神经网络预测。使用步骤3)中训练的Elman神经网络,进行后k组残差数据的预测,得到残差的预测值。
5) 对残差预测值进行反归一化处理。通过式(20)将Elman神经网络的残差预测值还原成残差预测原值。
$y={{y}^{(1)}}(i)({{x}_{\max }}-{{x}_{\min }})+{{x}_{\min }}$ | (20) |
式中:y表示残差预测原值;y(1)(i)表示残差预测值;xmax和xmin分别为残差序列E(0)中的最大、最小值。
6) 求出失效数据预测结果。将GM(1,1)模型的失效预测值和Elman神经网络的残差预测原值相加,求出灰色Elman神经网络的最终预测结果。
其对应算法流程如图 2所示。
选用航班查询系统的监控日志所记录的失效数据作为仿真实验数据,使用Matlab 2010b版本工具进行仿真实验。航班查询系统失效数据如表 1所示。
使用失效原始数据进行GM(1,1)建模,得到参数a = -0.003、u = 422.814的灰色预测模型,其模型预测结果如图 3所示。
从图 3可以看出,GM(1,1)模型对失效数据的线性趋势进行了拟合预测,弱化了数据中的随机性现象。根据预测得到的GM(1,1)模型灰色预测值和失效数据实际值,可以得到对应的残差序列E(0),将其归一化为残差序列E(1),并对E(1)序列进行Elman神经网络的残差修正。
这里选用每前7个时间序列的残差数去预测第8个时间序列的失效残差数,即进行Elman神经网络的训练和预测时,选取输入层节点数为7、隐含层节点数为3、承接层节点数为3、输出层节点数为1的网络结构进行Elman神经网络的构建。此时可以得到210组输入、输出数据,取前200组作为Elman神经网络的训练数据,后10组作为Elman神经网络的预测验证数据。进行100次训练,选择训练效果较好的一个网络,进行后10组数据的残差预测,并将预测值进行反归一化后,其结果如图 4所示。
图 4中,残差实际值表示GM(1,1)模型预测时产生的残差,Elman神经网络预测值表示训练后得到的残差预测值,从中不难看出,Elman神经网络可以很好地实现对灰色预测所产生的残差序列的预测修正,从而达到对实时波动比较大的软件失效数据的准确预测。
最后,将Elman神经网络的残差预测数值和灰色GM(1,1)失效数据预测值相加,即可得到灰色Elman神经网络的原始失效数据预测结果。将其和使用原始失效数据训练了100次的BP神经网络模型和Elman神经网络模型作对比,其中BP 神经网络为9个输入层节点、5个隐含层节点和1个输出层节点的网络结构,Elman神经网络为2个输入层节点,2个隐层节点和1个输出层节点的网络结构。三种模型的预测结果和预测误差如图 5~6所示。
从图 5~6可以看出在失效数据预测中,灰色Elman神经网络模型更加接近实际失效数据的变化曲线,并且在预测误差对比中也明显低于其他两个可靠性预测模型,这里选用均方误差 (Mean Squared Error,MSE)和平均相对误差 (Mean Relative Error,MRE)两个衡量指标来进行量化对比,其具体公式如下:
$\left\{ \begin{align} & MSE=\frac{1}{n}\sum\limits_{i=1}^{n}{{{({{y}_{i}}-{{d}_{i}})}^{2}}} \\ & MRE=\frac{1}{n}\sum\limits_{i=1}^{n}{\left( |\frac{{{d}_{i}}-{{y}_{i}}}{{{y}_{i}}}| \right)} \\ \end{align} \right.$ | (21) |
式中:yi为实际失效数;di为模型预测失效数;n为预测失效数据总个数。将式(21)用于三种模型的预测结果中,其相应的MSE和MRE值,如表 2所示。
由表 2可以看出,基于灰色Elman神经网络建立的软件可靠性预测模型的MSE和MRE均为最小值,其预测效果比Elman神经网络和BP神经网络所建立的软件可靠性模型预测效果好很多。
本文将灰色理论和Elman神经网络结合,既考虑到灰色模型可以弱化原始数据的随机性,又结合了Elman神经网络对动态数据具有较好预测效果的优点,使用Elman神经网络去修正灰色预测的残差,然后将灰色预测值和Elman神经网络残差预测值相加,建立了基于灰色Elman神经网络软件可靠性模型。使用航班查询软件现场失效数据,以均方误差和平均相对误差作为衡量标准,与BP神将网络和Elman神经网络软件可靠性预测模型进行了对比实验分析。实验结果表明,基于灰色Elman神经网络的软件可靠性模型在随机性和动态性比较强的现场失效数据中预测精度波动较小,具有一定的适应性。在接下来来的研究中,可以考虑在残差修正过程中,对网络Elman网络的阈值和权值进行寻优,从而增加预测稳定性,减少训练次数。
[1] | 司冠南, 任宇涵, 许静, 等. 基于贝叶斯网络的网构软件可信性评估模型[J]. 计算机研究与发展, 2012, 49 (5) : 1028-1038. ( SI G N, REN Y H, XU J, et al. A dependability evaluation model for internetware based on Bayesian network[J]. Journal of Computer Research and Development, 2012, 49 (5) : 1028-1038. ) |
[2] | 张婷婷, 张德平, 刘国强. 软件可靠性预测的增强贝叶斯组合模型[J]. 计算机应用研究, 2016, 33 (4) : 1096-1101. ( ZHANG T T, ZHANG D P, LIU G Q. Enhanced Bayesian combinational model for software reliability prediction[J]. Application Research of Computers, 2016, 33 (4) : 1096-1101. ) |
[3] | 郭平. 软件可靠性工程中的计算智能方法[M]. 北京: 科学出版社, 2012 : 256 -257. ( GUO P. Computational Intelligence for Software Reliability Engineering[M]. Beijing: Science Press, 2012 : 256 -257. ) |
[4] | 赵宇. 可靠性数据分析[M]. 北京: 国防工业出版社, 2011 : 56 -64. ( ZHAO Y. Data Analysis of Reliability[M]. Beijing: National Defence Industry Press, 2011 : 56 -64. ) |
[5] | MOURA M D C, ZIO E, LINS I D, et al. Failure and reliability prediction by support vector machines regression of time series data[J]. Reliability Engineering & System Safety, 2011, 96 (11) : 1527-1534. |
[6] | 靳昂, 江建慧, 楼俊刚, 等. 基于灰色模型的软件可靠性建模[J]. 计算机应用, 2009, 29 (3) : 690-694. ( JIN A, JIANG J H, LOU J G, et al. Software reliability modeling based on grey system theory[J]. Journal of Computer Applications, 2009, 29 (3) : 690-694. doi: 10.3724/SP.J.1087.2009.00690 ) |
[7] | LO J H. A data-driven model for software reliability prediction[C]//Proceedings of the 2012 IEEE International Conference on Granular Computing. Piscataway, NJ:IEEE, 2012:326-331. |
[8] | XIAO X, DOHI T. Wavelet shrinkage estimation for non-homogeneous poisson process based software reliability models[J]. IEEE Transactions on Reliability, 2013, 62 (1) : 211-225. doi: 10.1109/TR.2013.2240897 |
[9] | 韦大伟, 崔正斌. 基于神经网络集成的软件可靠性预测研究[J]. 计算机工程与设计, 2010, 31 (19) : 4228-4231. ( WEI D W, CUI Z B. Research on software reliability prediction based on neural network ensemble[J]. Computer Engineering and Design, 2010, 31 (19) : 4228-4231. ) |
[10] | 乔辉, 周雁舟, 邵楠. 基于学习向量量化神经网络的软件可靠性预测[J]. 计算机应用, 2012, 32 (5) : 1436-1438. ( QIAO H, ZHOU Y Z, SHAO N. Software reliability prediction based on learning vector quantization neutral network[J]. Journal Computer Applications, 2012, 32 (5) : 1436-1438. ) |
[11] | KIRAN N R, RAVI V. Software reliability prediction using wavelet neural networks[C]//ICCIMA'07:Proceedings of the 2007 International Conference on Computational Intelligence and Multimedia Applications. Piscataway, NJ:IEEE, 2007:195-199. |
[12] | ROY P, MAHAPATRA G S, RANI P, et al. Robust feedforward and recurrent neural network based dynamic weighted combination models for software reliability prediction[J]. Applied Soft Computing, 2014, 22 (5) : 629-637. |
[13] | LAKSHMANAN I, RAMASAMY S. An artificial neural-network approach to software reliability growth modeling[J]. Procedia Computer Science, 2015, 57 : 695-702. doi: 10.1016/j.procs.2015.07.450 |
[14] | 乔辉, 周雁舟, 邵楠, 等. 基于AGA-LVQ神经网络的软件可靠性预测模型研究[J]. 计算机科学, 2013, 40 (1) : 179-182. ( QIAO H, ZHOU Y Z, SHAO N, et al. Research of software reliability prediction model based on AGA-LVQ[J]. Computer Science, 2013, 40 (1) : 179-182. ) |
[15] | 刘逻, 郭立红, 肖辉, 等. 基于参数动态调整的动态模糊神经网络的软件可靠性增长模型[J]. 计算机科学, 2013, 40 (2) : 186-190. ( LIU L, GUO L H, XIAO H, et al. Software reliability growth model based on dynamic fuzzy neural network with parameters dynamic adjustment[J]. Computer Science, 2013, 40 (2) : 186-190. ) |
[16] | 刘逻, 郭立红. 基于结合自适应步长布谷鸟搜查算法的模糊神经网络的软件可靠性增长模型[J]. 计算机应用, 2014, 34 (10) : 2908-2912. ( LIU L, GUO L H. Software reliability growth model based on self-adaptive step cuckoo search algorithm-fuzzy neural network[J]. Journal of Computer Applications, 2014, 34 (10) : 2908-2912. ) |
[17] | 邓聚龙. 灰色系统基本方法[M]. 武汉: 华中科技大学出版社, 2005 : 26 -40. ( DENG J L. The Primary Methods of Grey System Theory[M]. Wuhan: Huazhong University of Science & Technology Press, 2005 : 26 -40. ) |
[18] | JIE S, LI W, WEISONG Z, et al. Numerical analysis of modeling based on improved Elman neural network[J]. Scientific World Journal, 2014, 2014 (1) : 271593. |