当前位置:文档之家› 基于静态删减算法的神经网络在软件可靠性预测中的应用

基于静态删减算法的神经网络在软件可靠性预测中的应用

第32卷第3期 2013年6月 飞行器测控学报 Journal of Spacecraft TT&C Technology VoL 32 No.3 Jun.2013 

基于静态删减算法的神经网络 

在软件可靠性预测中的应用 

夏 烨,闰国英,司倩然 

(北京跟踪与通信技术研究所・北京・100094) 

摘 要:与传统的基于人工神经网络的软件可靠性预测模型结构普遍由预先经验或者通过不断尝试的方法确定不 同,在分析一般的软件可靠性模型的基础上,提出将一种基于静态删减算法的神经网络模型应用到软件可靠性预测 中。通过利用2组经典的软件失效数据进行仿真,并与传统的神经网络可靠性预测模型对比分析,研究了神经网络 拓扑结构和预测精度的关系,结果表明,基于静态删减算法的运用能够提高神经网络模型对软件可靠性的预测精度。 关键词:软件可靠性;神经网络;静态删减算法(SPA);拓扑结构;可靠性预测 中图分类号:TP3¨.52 文献标志码:A 文章编号:1674 5620(2013)03—0234 06 D0I:10.7642/j.issn.1674—562O.2013-03—0234—06 

Software Reliability Prediction with a Neural Network 

Model Based on Silent Pruning Algorithm 

XIA Ye,YAN Guoying,SI Qianran 

(Beijing Institute of Tracking and Telecommunications Technology,Beijing 100094) 

Abstract:Following a study of typical software reliability prediction models,a new software reliability prediction mode1 based on neural network using SPA(Silent Pruning Algorithm)is proposed.The model is different from most software reliability prediction models based on neural networks in that the topological structures of the net— works are determined by the algorithms with prior knowledge or trial and error.Simulation with two suites of classi— cal software defect information show that SPA helps improve the accuracy of neural network—-based software reliabili—- ty prediction models and the relationship between the topological structures of neural networks and prediction accu racy is discussed in comparison with traditional neural network—based software reliability prediction models. Keywords:software reliability;topology;neura1 network;Silent Pruning Algorithm(SPA);reliability prediction 

0 引 

软件可靠性研究是保证软件质量的一个重要方 

面,但是如何对软件的可靠性进行预测,一直是软件 工程实践中的一个难题。 预测软件的可靠性,首先需要建立软件可靠性 

模型。软件可靠性建模方法可以概括为2类:基于 统计分析的方法和基于计算智能的方法。前者在软 

件可靠性预测的发展过程中占很大比例,其中典型 

的可靠性模型有J—M模型、G—O模型、MuSA模型 等。然而,这类模型都基于一定的数学理论假设。 在实际应用中,一方面这些假设往往是不现实的或 

难以满足的;另一方面开发者也无法预先得知软件 的失效过程符合哪一种可靠性模型的假设,导致选 

择合适的模型进行可靠性预测成为一个难题。 

软件可靠性预测的计算智能方法是一种数据驱 动的预测技术,即不做任何限制性的假设,直接通过 

已有失效数据对软件可靠性进行分析和预测。由于 

ANN(人工神经网络)非常强的非线性运算能力,这 

种方法已成为最主要的基于数据驱动的软件可靠性 

预测方法。1991年,Karunanithi等口 首次提出了 

基于神经网络的可靠性预测模型,证明了神经网络 

*收稿日期:2013—02—01;修回日期:2013—02—27;网络出版时间:2013—05—27 11:19 网络出版地址:http://www.cnki.net/kcms/detail/11.4230.TV.20130527.1119.013.html 第一作者简介:夏烨(1 987一),女,硕士研究生,助理工程师,主要研究方向为软件测试、软件可靠性;E-mail:sunnybay04@h。tmail

_com 第3期 夏烨,等:基于静态删减算法的神经网络在软件可靠性预测中的应用 235 

模型具有很好的预测一致性。为了进一步提高预测 可信度,许多研究人员提出了改进的方法。例如, 

N.R.Kiran等_2 提出利用小波函数作为隐含层激 

活函数,形成3层全连接的小波神经网络,对软件可 靠性进行预测。A.Jomeiri_3]在前馈网络的基础 

上,将隐含层前一时刻的输出反馈到输入层对软件 

进行缺陷检测。 神经网络的拓扑结构、学习算法、学习速率等因 

素都会影响网络的性能,但是在现有的基于神经网 络的软件可靠性预测模型中,大部分的模型结构都 

是由预先经验或通过不断尝试的方法确立的。为了 获得更好的预测效果,本文主要关注拓扑结构,利用 

基于SPA(静态删减算法)的神经网络[4]进行软件 

可靠性预测,研究拓扑结构与预测精度的关系,并在 

此基础上讨论归一化处理对预测精度的影响。 

1 基于神经网络的软件可靠性模型 

利用神经网络进行软件可靠性预测可以视为一 个时间序列预测问题,主要包括2个阶段_5]: 

1)训练阶段。对神经网络进行训练的目的是, 

利用网络输出和期望输出的偏差,通过数值计算方 

法对连接节点的权重不断调整,得到期望的输出。 若给定一个累积失效序列{Y ,Y ,…,Yw),可以构 

造以 时刻以前的累积失效序列{Y…,Y ,…, 

Y + }作为输入, + +忌时刻的累积失效数Y 作为 

期望输出的训练数据集,其输入输出的映射关系如 图1(a)所示。 2)预测阶段。利用训练好的网络,对未知的数 

据集进行预测,k一1时称为单步预测;k≥2时称 

为多步预测。图1(b)所示的是单步预测。 

输入 (yl,Y2,…, ) 

, …, + ) 

{Yi ,y 1, 一,Yi—1) 输出 

(a) ̄ll练过程 

{Yi +l, …2, 。, 】 {y +2,Yi +3,’。。,Y 1 

(b)预测过程 

图1基于ANN的软件可靠性模型 Fig.1 Software reliability model based on ANN (a)training phase;(b)prediction phase 2模型结构的确立 

目前,软件可靠性预测大部分采用的都是FFN 

(前馈神经网络)。FFN由3层神经元组成:输人 

层、隐含层和输出层,如图2所示。输入层有叫个 神经元,对应数据集{ 一 + ,Y +。,…,Y ,Y );隐 

含层可包含多个神经元;在进行单步预测时,输出层 

只有1个神经元。 

…1 

y£ +2 

), 输入层 隐含层 输出层 

\ 

图2前馈神经网络 Fig.2 FFN 

由于输入层和输出层的神经元一般是根据情况 

或需要确定的,而隐含层神经元(又称为隐单元)往 

往是根据经验或通过不断尝试的方法来确定,例如, 文献[63中按经验把隐单元数设为3,文献[7]中将 

隐单元数设为q一2w+1,其中叫为神经网络输入 

层神经元数。然而由于样本数据集大小以及输入 

层、输出层神经元个数的差异性,上述方法得到的神 

经网络并不能达到最优预测效果。2011年,S.U_ 

Ahmed等 提出了基于LZC(Lempel—Ziv复杂度) 

的SPA,并在大量的机器学习问题上证明了其在动 

态确立神经网络结构上有良好的效果。SPA有如 下优点: 

1)在进行网络训练过程中不会产生很大 

扰动; 

2)保留复杂度高的隐单元,删减复杂度低的隐 

单元,使隐含层对前层输入有较好的灵敏性。 

本文利用SPA动态确立基于神经网络的软件 

可靠性模型结构,并与隐单元数分别为3和2w+1 

的软件可靠性模型在相同的数据集进行实验,通过 

实验结果的对比分析表明,SPA能快速确立基于神 

经网络的软件可靠性模型结构,提高预测精度。

 飞行器测控学报 第32卷 

2.1 隐单元LZC SPA是利用LZC理论计算得到的冗余度来删 

减人工神经网络的冗余隐单元 ]。LZC是一种度 

量符号序列复杂性的算法。它衡量的是描述一个给 定符号序列所需最少的、互不相同的子串个数。复 

杂度越大,说明数据出现的新变化越多,发生新变化 

的速率越快。因此,神经元的复杂度是神经网络是 否能有组织地协同作用、较好地实现功能的一个指 

标。LZC值越大,表明该神经元灵敏度越高。计算 

隐单元LZC的过程如图3所示。其中 ( )表示隐 单元的输出序列,它是位于(0,1)的浮点数,当 ( ) 

大于等于0.5时,则将S( )赋值为1;否则,将其赋 值为0。这样,就构成了S。n为S的长度,c( )表 

示s的LZC值,BUF1和BUF2是2个缓冲区。 

图3隐单元LZC计算流程 Fig.3 Algorithmic steps to measure LZC of the neurons of the hidden layer 

2.2可靠性模型中隐含层的确定 

SPA动态调整基于神经网络的软件可靠性模 型结构的主要思想是:首先根据软件失效数据集的 大小确定输入层神经元数,通过计算训练过程中隐 

单元的复杂度,删除含有LZC最小值或者最大冗余 

度的神经元,并保留训练中LZC值较大的神经元。 

关键步骤如下: 1)创建一个全连接的FFN,隐单元数从设定的 

取值范围中随机获得,进行单步预测时输出层神经 

元数为1。利用软件失效数据作为神经网络的输 

入。 2)使用BP(反向传播)算法对初始神经网络进 

行训练,并按图3所示流程计算训练好的各隐单元 的LZC值。隐单元和输出层神经元选择S型函数 

作为激发函数。 3)计算所有隐单元LZC的平均值M,将其作为 

阈值。 4)若当前所有隐单元中最小的LZC小于M,删 

除LZC最小的隐单元,训练新网络。 5)在迭代的过程中检验训练样本的RMSE(均 

方根误差),当训练样本的RMSE增加时即可终止 

训练过程。 6)得到适合当前软件失效数据集的神经网络。 

3 仿真验证 

3.1 实验数据 本文选取2组训练数据集DataSetl和Data— set2进行仿真验证,数据集分别来源于文献[8]和 

文献[9]中的经典软件失效数据,如表1、表2所 

示 

表1 DataSetl:软件1失效数据 Tab.1 DataSetl:historical data from project 1 

时间/N 时间/N Y 时间/N Y 

1 3 11 173 21 222 

2 6 l2 187 22 225 

3 44 13 194 23 229 

4 63 14 2O1 24 23O 

5 75 15 208 25 232 

6 88 16 208 26 233 

7 114 17 21O 27 233 

8 146 l8 213 28 234 

9 154 19 215 

1O l62 2O 

22O

相关主题