崔梦天,梁 杰,龙松林,吴克奇,贺春林
(1.国家民族委员会计算机系统重点实验室,西南民族大学,四川 成都 610041;2.西华师范大学计算机学院,四川 南充 637001)
在网络技术快速发展的时代,软件的功能也逐渐地变得复杂,处理逻辑也更复杂,导致软件缺陷的产生无法避免,在投入使用之后也会常常产生缺陷,上线之后进行修复所需要消耗的资源会远远大于在开发阶段所消耗的资源,增加了软件成本.美国国家标准与技术研究院根据相关数据进行估算,软件开发总成本的50%到75%[1]都用于对软件所产生的缺陷进行修复.因此软件缺陷的及时预测以及在开发阶段进行解决将有助于降低软件成本,并使软件质量得到保障.
软件缺陷具有遗传性,因此可以根据历史数据进行预测模型的训练,使预测模型具备相关的规律性,从而可以对新缺陷数据进行相关的预测.根据这个思路已经有了很多软件缺陷预测模型.例如将ANN技术[2]、SVM技术[3]以及BP神经网络技术[4]应用到软件缺陷的预测.但这些模型都还存在一定的问题,难以达到理想的效果.
本文将探路者算法应用于优化BP神经网络,以解决现有BP算法存在的易陷入局部最优值问题.以MSE和Accuracy作为评价指标,并采用NASA MDP软件缺陷数据集进行实验.
BP(Back Propagation)神经网络[5,11-13]具有非线性映射的能力.其过程有两个部分,前向传播和反向传播.前向传播通过设置内部节点和层与层之间节点之间的权重来构建一个映射过程;反向传播通过损失函数和梯度下降算法来修改权重,最终得到一个最优权重.
探路者算法(PFA),在2019年由Yapici[6]提出,该算法是一种基于群体动物的狩猎过程的启发式算法,该算法将一个种群划分为探路者(领导者)和跟随者,两者同时寻找食物.将这样的行为变成一个寻优的过程,该过程更加有益于寻找最优解.
在探路者算法中,为了寻找猎物或觅食区域并跟随探路者,遵循以下模型[6]:
其中t是时间,X是位置矢量,n是没有任何角度的单位矢量,Fi是相邻Xi和Xj成对交互,Fp是取决于全局最优值或探路者位置的全局因素,ε是矢量振动,决定位置更新的随机性.探路者的位置[6]根据以下等式更新:
式(2)中,K当前迭代,下标p表示探路者,r3是在[0,1]范围内均匀生成的随机向量,每次迭代时A由式(7)生成.追随者的位置[7]更新如下:
其中,K表示当前迭代,Xi是第i个成员的位置向量,Xj是第j个成员的位置向量,R1和R2是随机向量.其中r1和r2是在[0,1]范围内均匀生成的随机变量,α是相互作用的系数,它定义任何成员与其相邻成员一起移动的幅度,β是吸引系数,它设置随机距离以使群与领导者保持大致的距离.理想情况下,α和β应该在1左右.此外,α和β可以是其他常数.在本研究中,在迭代过程中,α和β在[1,2]范围内随机选择.
最后一项是关于变量的,其中ε是在每次迭代中由式(6)生成的[6].
其中,U1和U2是在[-1,1]范围中随机向量,Dij是两个成员之间的距离,Kmax是最大迭代次数.A和ε可以为所有成员提供随机运动.为了确保多方向和随机运动,设置A和ε应该在适当的值范围内,U1和U2变量的范围是[-1,1]使得成员也可以移动到其先前位置.同时振动矢量ε的变化接近路径查找器可以避免陷入局部最优的情况.
探路者算法采用模仿种群狩猎或者进行的行为思想提出的元启发式算法,根据其思想可以快速的对高维数据或者多目标问题寻找最优解.根据探路者算法能够寻找最优解的能力来优化BP神经网络.流程图如图1所示:
图1 算法流程图Fig.1 Algorithm flowchart
探路者算法优化BP神经网络的步骤分以下几个步骤:
步骤一:首先将NASA软件缺陷数据集进行清洗,并采用归一化进行数据的处理,进行初步筛选,将误差较大或失真数据的影响降低,之后作为神经网络的输入.
步骤二:随机产生n个数据作为群体,每个种群代表一组神经网络的权值和阈值.初始化种群数量,迭代次数等条件,之后进行优化训练,按照适应度函数进行计算,找到当前群体中最优的位置作为探路者.
步骤三:寻路器记录上一代最优的探路者位置,按照跟随者位置更新公式更新跟随者位置.同时计算更新后跟随者的适应度值,并跟上一代的适应度值进行比较,如果更优则更新探路者位置,如果没有更优,则依然保留上一代探路者的位置.
步骤四:PFA将使用“if-else”规则[8]更新最终种群,并更新式(6)、式(7)中A和ε.根据A中K和Kmax进行比较,若满足所设定的条件,则保留探路者位置,若不满足条件,则随机产生新一代群体,并进行迭代产生新的探路者位置.并和探路者位置进行比较,若更优则保留新的群体,若不更优,则依然沿用原来的群体,得到更新后的n个个体位置.
步骤五:将BP神经网络的参数设置为探路者算法优化后的结果.对数据集进行归一化处理,之后输入到模型中进行处理,最终在输出层得到软件缺陷预测的结果.
步骤六:计算相关的实验指标正确率和MSE,方便对模型进行评价.
在MDP数据集[9]上进行实验,该数据集包含13个项目.本文选取了具有典型特点的6个项目,分别是CM1、JM1、KC1、MC1、PC1、PC5.在表1给出了相关描述.
表1 NASA MDP实验数据集Table 1 NASA MDP data set
根据表1可以看出,部分数据集存在着严重的数据比例失衡,标记为不是缺陷的数据远远超过标记为缺陷的数据,尤其是MC1数据集中,标记为缺陷数据的数量比例不足2%,在任何模型的预测中准确率都会比较高,显然是不合理的.因此在进行模型的检验之前需要对各实验数据集进行筛选.采用SMOTEENN方法对数据集进行采样,确保缺陷率要大于20%,使数据集满足模型测试要求.
针对本文提出的基于探路者优化BP神经网络的软件缺陷预测模型,本文采用均方误差(MSE)和准确性(Accuracy)作为评价指标[10].
准确度(Accuracy)公式如下:
均方误差(MSE)公式如下:
本文将标准BP神经网络模型和PFA-BP神经网络模型进行对比实验,同时进行多次训练来减小实验误差,结果采用5次训练的平均值.数据集采用10折交叉验证.
同时考虑到不同维度的数据集在进行测试时所应用的网络结构不同,故对所选择的数据集网络结构进行说明,如表2所示.在进行检验时,隐含层网络的神经元个数均采用10个,同时在进行MSE指标计算的时候输出神经元为1个,在进行计算准确度指标时输出神经元为2个,其他结构与MSE指标网络相似,故不再指出.
表2 实验数据集采用的网络结构Table 2 The network structure used in the experimental data set
MSE(均方误差)表示的是采用模型进行拟合之后与真实之间的差距,故MSE数值越小表示模型的训练结果更好,就证明该模型的准确性更高.相关的实验结果见表3.
表3 各实验数据集MSETable 3 Each experimental data set MSE
表中数据可看出,要求训练精度达到0.0001的条件下,改进后的PFA-BP算法的训练结果的MSE指标明显小于标准BP算法,这说明对通过探路者算法优化过后的初始权值进行训练比直接对随机数据进行训练效果好.
准确度(Accuracy)测试实验的网络结构与MSE为指标的网络结构相似,不再赘述.相关的详细实验结果见表4.
表4 各实验数据集准确率Table 4 Accuracy of each experimental data set
根据表中数据可看出,要求训练精度达到0.0001的条件下,改进后的PFA-BP算法的训练结果的准确率指标在数据集CM1、JM1、MC1和PC5高于标准BP神经网络,但数据集KC1的训练结果准确率,所改进的模型低于标准BP,同时也出现了两种模型出现预测结果准确率均为100%的情况.出现这种情况的主要原因,可能是数据集的缺陷数据都属于一类,故在数据清洗阶段所采用的方法有待提高.但整体而言,探路者优化过后的BP神经网络软件缺陷预测模型在预测上依旧有良好的预测能力.
本文采用了NASA数据集.使用归一化方法进行数据预处理,降低错误数据的影响.实验结果表明PFA_BP神经网络的MSE数值得到了显著下降,说明对于标准的BP神经网络而言,此模型具有一定的优势.同时在预测结果的准确率上,和标准BP神经网络相比,也得到了提高,证明了PFA_BP神经网络进行软件缺陷预测的可行性.