于淑香,温一军
(沙洲职业工学院,江苏 张家港 215600)
随着信息技术的快速发展,各行业都在广泛应用各种软件,软件的质量和可靠性也受到人们更多的重视。软件缺陷预测技术对提高软件质量和可靠性、降低软件开发和维护成本起着关键作用。软件缺陷预测可以在软件开发编程的早期检测出系统的有缺陷模块并对其进行修正,从而实现精准定位软件缺陷且准确修改,最终提高软件的质量和可靠性。
现阶段,软件缺陷预测模型大致分以下几类:逻辑回归、贝叶斯统计方法、聚类分析、马尔科夫模型、支持向量机、人工神经网络、线性判别分析等[1]。众多研究人员已经对以上模型开展了各种分析和研究,但是这些模型在软件缺陷预测中的还存在一定问题,难以达到理想的效果。
本文提出了基于GWO-BP算法的软件缺陷预测模型,目的在于提高软件测试中缺陷预测的准确性。首先利用GWO算法优化BP神经网络的参数值。其次,建立并不断优化基于该算法的软件缺陷预测模型。最后通过实验,验证该模型对软件缺陷模块预测的效果。
BP (Back—Propagation)神经网络是由Rumelhart,McClelland提出的概念,其结构简单、可操作性强,具有非线性映射能力,是目前应用最广泛的人工神经网络。但BP算法存在收敛速度慢、容易陷入局部最优等缺陷,在很大程度上影响了预测结果[2]。BP模型如图1所示,该模型包括输入层、隐层、输出层,其中W、V为连接权矩阵,跨层的神经元之间则不连接[3]。
图1 BP神经网络结构图
BP神经网络算法由信号的正向传播和误差的反向传播两个过程组成。正向传播,输入信号通过隐含层处理,经过非线性变换,转向输出层产生输出信号,若输出值与期望值不符,则转入反向传播过程。误差反传是将输出误差信号通过隐含层向输入层逐层反传,通过修改各神经元的权值,使误差沿梯度方向下降,这样反复学习训练,直到输出的误差达到要求或者达到最大迭代次数,训练停止。
1.权值初始化
将网络中的所有权值随机初始化。
2.根据实例的输入,计算输出层每个单元的输出。
网络的实际输出及隐层单元的状态Okj,由公式(1)计算:
公式中,θj是阈值,一般可采用Sigmoid函数,即公式(2)作为激励函数作用于它。
3.计算网络各层误差信号
对于输出层的每个单元k,误差δk,由公式(3)计算:
Ok是单元k的实际输出值,Ok(1-Ok)是Logistic函数的导数,而Tk是基于k给定训练元组的已知目标值。
而对于隐藏层单元h的误差由公式(4)计算:
4.调整各层的权值
公式(5)是权值的更新公式,公式(6)阈值的更新公式。
5.核查算法是否符合结束条件
如果网络总误差满足设定的精度要求或符合结束条件,训练过程结束。否则,继续进行下一轮训练。
GWO算法是Mirjalili[4]等人2014年提出的一种新型群智能优化算法,该算法通过模拟自然界中灰狼的狩猎跟踪、追捕、包围和攻击等建立一个数学模型,进而完成最优化工作[5]。整个狼群按照适应度值被分为最优灰狼α、次优灰狼β、第三优灰狼β和其他狼ω四个等级。在捕食过程中α、β、δ灰狼追捕猎物,ω狼追随前三者进向着目标搜索。捕食过程中,灰狼个体与猎物的距离为:
公式中 t表示迭代次数;Xp(t)是猎物的位置,X(t)表示第t代时灰狼的位置,D表示猎物与灰狼之间的距离,C=2r1。
灰狼位置更新为:
其中,a是收敛因子,取值[0,2],max是最大迭代次数;r2和 r2均是[0,1]的随机数:当|A|>1 时,灰狼群体将搜索范围扩大,进行全局搜索;|A|<1时,灰狼群体将包围圈缩小,进行局部搜索。
在狼群中,利用α、β、δ这三头狼的位置跟踪猎物的数学描述如下:
式(12)和式(13)定义了狼群内ω与α、β、δ的距离关系。
式 (13)根据α、β、δ的位置计算ω狼的最终位置。
BP算法有收敛速度慢,易陷入局部最优,对初始化参数依赖性大等不足,而灰狼优化算法具有收敛速度快,全局搜索能力强,避免陷入局部最优等性能[5],二者结合恰好可以扬长补短,克服传统BP算法的缺陷。提出基于GWO-BP算法模型用于预测的软件缺陷,如图2所示。其中,模型的预测准确率达到预先设置的值或循环次数达到最大值时终止优化循环。
1.收集数据集。
2.建立基于BP的软件缺陷预测模型。
3.利用GWO算法优化BP算法的权值和阈值。
4.判断模型的结束条件,如果预测结果满足终止条件,则结束。否则返回步骤3,继续实行优化。
图2 GWO-BP软件缺陷预测模型流程图
由于BP神经网络采用均方误差梯度下降方向进行收敛,因此容易陷入局部最优,且收敛速度慢,而且BP神经网络对初始化参数中的权值和阀值具有较大的敏感性。本文采用GWO优化BP神经网络,以达到克服BP算法的缺陷,避免陷入局部最优,而且使收敛加速。
用GWO优化BP神经网络,即将灰狼的位置信息作为BP神经网络的权重和阈值,灰狼不断对猎物的位置进行判断和更新,相当于在不断更新BP神经网络的阈值和权重,通过多次迭代,最终计算全局最优结果[5]。优化BP神经网络具体步骤:
1.初始化参数。包括灰狼种群大小、灰狼个体位置信息的维度、灰狼维度的上界和下界,最大迭代次数、随机初始化灰狼位置。
2.将灰狼的位置映射给BP神经网络,按照公式计算适应度
3.适应度值的计算:狼群内部按照等级被分为最优、次优、第三优、和普通狼四组,并根据与的位置,用公式(11)~(13)更新的位置信息,并更新参数a、A和C的值。
4.判断灰狼个体的每一维度越界情况,如有越界,把灰狼维度的上界或下界设置为越界的值。
5.判断迭代次数:如果小于最大迭代次数,重复步骤2-步骤5,继续下一次迭代,直到满足条件;否则结束算法。
实验数据采用了美国国家航空航天局(NASA)提供数据包[6]中的4个数据集,这些数据集均为真实软件项目,由常见的开发语言编写。其相关参数如表1所示。
表1 实验数据相关参数
根据数据集中Error_Count属性,对软件模块进行缺陷分类,如数据集中属性Error_Count≥1的模块为有缺陷模块,否则为无缺陷模块[7]。
为了验证本文模型的预测能力,采用十字交叉验证行实验,即将每个数据集平均分成10份,将其中9份轮流做训练,剩余的1份做预测,取10次预测结果的均值作为对算法预测能力的评价[7]。
本文采用通用的准确率、查准率、查全率[7][8]三个指标来评价模型的预测能力,根据文献[7][8]中的交叉矩阵,定义出模型评价指标,如表2所示[9]。
表2 模型评价指标定义
其中,实际正例数量P=TP+FN,实际负例数量N=FP+TN,实验实例总数C=P+N。
为了更好地对算法进行评价分析,将本文算法与PSO-BP[7],SA-BP[2]方法建立的软件缺陷预测模型进行比较,基于CM1,JM1,KC1和PC1测试集的模型软件缺陷预测结果比较如图3-图6。
图3 数据集的CM1预测结果
图4 数据集JM1的预测结果
图5 数据集KC1的预测结果
图6 数据集PC1的预测结果
分析实验结果图3-图6可以看出,本文提出的GWO-BP算法与PSO-BP和SA-BP在四个数据集的软件缺陷预测比较中有较高的性能,在准确率,查准率和查全率方面均优于其他两种算法且有较大的提高。但BP网络需要较大的训练样本,计算成本较大,如何减少计算成本是今后的研究中需要注意的问题。
基于GWO-BP的软件缺陷预测模型能将GWO算法很好地与BP算法结合,成功地应用于软件测试中。建立基于BP神经网络算法模型,使用灰狼优化算法优化BP神经网络的参数值,解决其参数设置依赖性问题。该模型充分利用灰狼优化算法的随机搜索、全局优化能力,避免了传统BP算法的收敛速度慢和易陷入局部最优的不足,解决了其对初始化权值和阀值参数设置的依赖性问题。采用交叉验证的方式进行实验,实验结果表明,本文基于GWOBP算法的软件缺陷预测模型优于现有BP优化算法。