基于改进BP算法的软件缺陷预测模型研究
2016-09-03韩智慧
韩智慧
(长春科技学院 信息工程学院,吉林 长春 130600)
基于改进BP算法的软件缺陷预测模型研究
韩智慧
(长春科技学院 信息工程学院,吉林 长春130600)
针对传统软件测试成本高及测试过程依赖于软件用例的设置等问题,设计了基于BP,JCUDA_BP和JCUDASA_BP的软件缺陷预测模型,并通过调研、实验的方式对基于改进BP算法的软件缺陷预测算法进行了相关的研究分析,探讨了JCUDA技术对于BP算法的影响,证明了模拟退火算法与JCUDA技术相结合的方式具有改进软件缺陷预测模型的可能性。
缺陷预测模型;模拟退火算法;JCUDA技术;BP算法
随着软件应用领域的不断延伸,软件系统安全日益受到研究人员的重视,软件测试等方法已经越来越受到工程人员的重视。伴随着IT行业人工成本的不断上涨,软件测试的成本更是水涨船高[1]。因此,如何便捷、快速、优质地进行软件测试或发现软件缺陷已经成为一个难以避免的问题,如何通过机器快速、准确地进行软件缺陷预测也就成为研究的一个热点[2]。所以,如何建立合理的软件缺陷预测模型成为近年来的研究重点。本文以通过一系列的实验,研究验证了将BP算法运用于软件缺陷预测模型的可行性,分析其存在的缺陷,提出基于JCUDA的BP算法的预测模型和基于改进BP算法的预测模型,并通过实验分析,证明了模拟退火算法与JCUDA技术结合的方式具有改进软件缺陷预测模型的可能性。
1 BP算法运用于软件缺陷预测模型的可行性研究
BP算法是一个前向传播与后向反馈相互结合的过程,前向过程用于求出当前神经网络权值情况下的输出值,利用误差行程反馈信息[3-4]。然后利用反馈信息对神经网络进行进一步的修正以获得新的求解结果。多次反复,直至前向神经网络计算的误差值能够被用户接受,这时BP神经网络处于当前最优解的情况,也就是BP神经网络完成了反馈操作。该算法流程图如图1所示。
图1 BP算法流程
基于BP算法的软件缺陷预测模型包含一个输入层、一个隐含层和一个输出层[5]。将软件缺陷模型的相关数据作为BP算法的学习样本,利用BP神经网络对数据进行学习,从而对未知的软件数据进行预测以获得较好的预测效果。采用MDP数据集作为实验数据,采用对比实验的方式对基于BP的软件缺陷模型的预测效果进行分析。实验表明,BP算法能够有效地对软件缺陷进行预测。但是基于BP算法的软件缺陷预测模型仍然存在易陷入局部最小值、BP网络基本参数较难确认、计算时间过长和训练结果依赖学习样本等不足。
2 基于JCUDA_BP算法的软件缺陷预测模型研究
利用JCUDA进行BP算法优化设计时,采用CPU与GPU都承担部分计算工作的协同方式,即具有较强并行性的计算交由GPU进行处理,CPU既负责管理GPU也进行部分的非并行性计算。有效地激发GPU/CPU的计算能力,从而使基于JCUDA_BP算法的软件缺陷模型具有更高的计算效率,具体实现过程如下:
(1)JCUDA_BP算法对学习样本输入阶段进行优化。假设,软件缺陷预测模型的学习样本为S,样本数为N,表示为:
JCUDA_BP算法在CPU中将学习样本划分为x个组合,则学习样本S就可以表示为:
式中,每一个s′i对应着学习样本,当的计算值不为整数时,分组阶段自动对该数值进行向下取整获得一个参数n表示该值。式(2)中,第i样本组的数据可以用式(3)进行表示:
当进行到S样本最后一个分组时,自动取剩余所有样本,以保证分组数据的正确与完整。紧接着,基于JCUDA_BP算法的软件缺陷模型在GPU中启动多个线程,分别计算样本集S的平均误差值,所有的样本的误差的表示为:
其中:Δej表示第 j个样本组合计算完的误差值;Δe表示全部样本集计算的平均误差值。
(2)基于JCUDA_BP算法利用BP算法的反向误差对BP神经网络内的权值进行调整。调整完成后,验证误差值范围是否满足需求。如果误差仍然无法满足BP算法的准确性要求,则反复进行迭代,直至获得最佳的学习效果。结合JCUDA_BP算法的软件缺陷,预测算法利用多线程、数据分组的方式加快BP算法效果。软件缺陷预测模型是采用与BP网络相似的网络结构,利用JCUDA算法对软件缺陷预测的运行时间进行优化、模拟。CPU承担误差求解与验证的任务,同时实现GPU运行监测的工作。
基于JCUDA_BP算法对软件缺陷信息学习的学习过程如下:
①CPU、GPU内完成BP神经网络初始化;
②利用JCUDA编程技术实现BP算法在JCUDA上的学习过程;
③采用CPU存储BP算法的计算结果;
④利用CPU对GPU内数据计算的效果进行分析与监控。
BP算法采用JCUDA实现是将BP计算迭代的过程置于GPU内进行计算,利用CPU对学习过程误差进行分析,调整GPU内神经网络拓扑图内边的权值。其中BP算法的相关处理流程如图2所示。
图2 JCUDA_BP算法实现流程图
3 基于改进BP算法的软件缺陷预测模型研究
在基于JCUDASA_BP算法的软件缺陷预测模型中,具有N个学习样本的所有输入样本集合称为Si,其中每个学习样本具有pnum个输入参数。Si中的第i个输入样本sii的信息如下:
式中,sii∈Si,j=pnum。
根据分组设定值将N个学习样本进行分组,每个小组保留n个学习样本。具有N个学习样本集合的Si如下:其中,S′m表示第m组学习样本,m的值为N与n的比值并进行向上取整。
式中:mj表示m组分组中第i组的学习样本。当i属于前m-1组的学习样本时,学习样本组内包含n个学习样本。如果i属于第m组时,则将剩余全部的学习样本置入该学习样本组合中。
基于JCUDA_BP的软件缺陷预测模型的网络结构如图3所示[6]。
图3 输入层-隐含层和隐含层-输出层权值说明
图3中输入层每一个输入节点R代表着Si学习样本的输入项sii;H表示隐含层节点;pr则代表输入层与隐含层之间的权值;同理,O表示输出层节点,即该学习样例通过软件缺陷模型计算后得到的计算结果;ph表示隐含层与输出层之间的权值。输入层与隐含层之间的权值矩阵为:
假设某一个学习样本sii作为输入项输入该网络中,则通过隐含层计算获得的结果如下:
针对输入层与隐含层的权值以及输出层与隐含层之间的权值引入小扰动,并计算期望误差值:
其中:ok表示该学习样本的输出值;oex-k表示该学习样本的预期输出值。通过引入浮动,产生期望值变化量,当变化量大于零时,根据模拟退火算法,以一个概率ρ=接收当前解,反复迭代重新计算的过程中,ρ中 t的值会不断减小。为了保证t是一个有规律的下降过程,设置模拟退火的温度下降速率τ,τ的值根据实际实验的情况进行调整,以保证能够达到求解最优解,但是不陷入局部最小值的情况。t的求解公式如下:
反复求解后,获得基于JCUDASA_BP算法的软件缺陷预测结果。
基于JCUDASA_BP算法的软件缺陷预测处理流程如图4所示。首先构建一个BP网络,初始化网络中各层的权值。然后,利用模拟退火算法对权值进行调整以避免局部最优解的出现[7-8]。在这个过程中,利用JCUDA编程技术,将并行的处理过程加载到GPU进行处理,以获得更快的处理速度。如果计算未完成则不停止GPU中计算BP算法的线程。当线程长期无反应时,基于JCUDA_BP算法的软件缺陷预测会利用监控线程根据其他学习样本的计算结果重新设定线程计算样本的结果,以获得更快的处理效率。
图4 软件缺陷预测模型算法流程图
4 实验分析
4.1基于JCUDA_BP算法的软件缺陷预测模型实验分析
基于BP与基于JCUDA_BP的软件缺陷预测模型的评估实验采用MDP数据集作为实验数据,如表1所示。实验采用Eclipse作为编程环境,使用基于Java的JCUDA技术实现GPU与CPU下的编程操作。
本试验结果与分析从“基于BP的软件缺陷预测与基于JCUDA_BP算法的软件缺陷预测对比分析”和“基于不同隐含节点个数JCUDA_BP对软件缺陷预测的影响的分析”两方面入手,说明基于JCUDA_BP的软件缺陷预测算法与基于BP的软件缺陷算法的差异和JCUDA_BP可能会在实际使用中产生的问题与影响。
(1)速率改进实验结果与分析
在实验数据相同的情况下,不同数据集用JCUDA优化的软件缺陷预测模型和基于BP算法的软件缺陷预测模型进行计算,计算GPU学习过程与CPU学习过程消耗时间的差值,计算该差值与CPU计算时间求得优化率,具体结果见表2。
表1 基于BP与基于JCUDA_BP的软件缺陷预测模型实验数据
表2 软件缺陷预测时间优化差值与优化率
分析实验结果可知,针对MDP软件模块信息数据集,基于JCUDA技术改进的BP算法一定程度上能够对学习过程进行优化,获得较好的优化效果。但是,该优化过程在软件缺陷模型学习样本较多时优化效果明显;如果学习样本较少则优化效果不理想。
(2)隐含节点实验结果与分析
PC5隐含节点数与GPUCPU处理时间对照:
实验结果表明:当隐含节点个数增加时,GPU与 CPU运行BP软件缺陷模拟算法的时间都会增加,但是随着隐含节点个数的增加GPU计算的时间会优于CPU计算时间,即当隐含节点个数达到一个数量级以后,GPU的优化后的BP算法效果远好于CPU下的BP算法,学习效果会得到提升。当隐含节点较少时,软件缺陷预测速度、CPU的处理时间更短。
表3 PC5隐含节点数与GPU,CPU处理时间对照 ms
4.2基于改进BP算法的软件缺陷预测模型实验分析
本实验使用的数据集及实验环境同第4.1节。在基于JCUDASA_BP算法的软件缺陷预测研究的实验过程中,BP算法的输入参数设置为37个,输出参数设置为1个,学习率设置为0.01,训练次数设置为10 000次,误差允许值设置为0.001。该实验主要从准确性和效率两个方面进行分析。
(1)改进算法准确性分析
改进算法准确性实验主要说明“基于JCUDASA_BP的软件缺陷预测的准确性分析的实验结果”。利用该实验结果与基于BP算法的软件缺陷预测结果进行对比,分析基于模拟退火算法改进的软件缺陷预测模型的预测效果,具体对比结果如表4所示。
表4 基于BP算法与基于JCUDASA_BP算法准确度对比 %
由表4对比可知,基于JCUDASA_BP算法对于软件缺陷预测的准确性优于基于BP算法的软件缺陷预测,并且能够较好地避免局部最优解的出现。
(2)改进算法效率分析
改进算法效率实验对比分析基于BP算法的软件缺陷预测模型、基于JCUDA_BP算法的软件缺陷预测模型、基于JCUDASA_BP算法软件缺陷预测模型针对MDP软件信息数据集中软件模块信息学习过程时间的长短,其实验结果如表5所示。
表5 基于JCUDASA_BP算法的软件缺陷预测计算时间
分析实验结果可知:当数据集较少时,由于基于JCUDA改进的BP算法需耗费一定时间进行GPU启动,基于JCUDASA_BP算法需要消耗较多时间进行模拟退火算法计算。因此,数据集较少时,传统BP算法的软件缺陷预测模型对于软件缺陷数据的预测速率较高;当数据集较多时,利用传统BP算法对于软件缺陷信息的学习时间长于基于JCUDA技术改进的BP算法的学习时间。其主要原因是JCUDA技术对计算量进行了分解,加速了运行速度。基于JCUDASA_BP算法进行的软件缺陷预测学习过程消耗的时间较长,其主要原因是由于模拟退火算法对原始算法的影响较大,其迭代计算的过程消耗了较多的计算时间。
5 结 论
本文对基于BP的软件缺陷预测模型、基于JCUDA_BP的软件缺陷预测模型和基于JCUDASA_BP的软件缺陷预测模型进行了相关研究,验证了BP算法在软件缺陷预测模型中使用的可行性。分析上述算法的不足,证明了JCUDA技术能够帮助BP算法进行处理优化,但是不能有效地解决陷入局部最小值的情况,基于改进的BP算法的软件缺陷预测模型通过结合模拟退火算法可以实现防止陷入局部最小值的情况,能够获得较好的处理效果。然而本文所提出软件缺陷预测模型算法仍未对数据做出更好的预处理,在未来的工作中,后期需要对预处理进行深入的总结,通过优化学习样本获得更高效的学习样本。
[1]韩璐,荆晓远.一种新型软件缺陷预测模型研究[J].南京邮电大学学报(自然科学版),2015,35(1):95-101.
[2]尹然,丁晓明,李小亮,等.基于SA-BP神经网络的软件缺陷预测模型的研究[J].西南师范大学学报(自然科学版),2013,38 (8):147-152.
[3]张丽红,王艳.基于回归神经网络自适应快速BP算法[J].计算机测量与控制,2015,12(5):480-482.
[4]侯彦东,方惠敏,杨国胜,等.一种改进的可变学习速率的BP神经网络算法[J].河南大学学报(自然科学版),2015,38(3):309-312.
[5]YIN R,DING X M,LI X L,et al.Research on software defect prediction model based on SA-BP[J].Journal of Southwest China Normal University,2013(8):120-139.
[6]FAN Xiujuan,LIChenguo.The research in yarn quality prediction model based on an improved BP algorithm [C]//Proceedings of 2009 WRIWorld Congress on Computer Science and Information Engineering.US:IEEE,2009:167-172.
[7]张少迪.基于PSO-BP神经网络的短期负荷预测算法[J].现代电子技术,2013,36(12):155-158.
[8]朱旭东,梁光明,冯雁.基于改进SFS特征选择BP识别算法[J].现代电子技术,2015,38(12):1-4.
Research on software defect p rediction m odel based on im p roved BP algorithm
HAN Zhihui
(School of Information Engineering,Changchun University of Science and Technology,Changchun 130600,China)
Since the cost of traditional software testing is high,and the test process relies on the set of software use case,a software defect prediction model based on BP,JCUDA_BP and JCUDASA_BP was designed.The software defect prediction algorithm based on improved BP algorithm is relevantly researched and analyzed by means of survey and experiment.The influence of JCUDA technology on BP algorithm is discussed,which proved that the combination of simulated annealing algorithm and JCUDA technology can improve the software defect prediction model.
defect prediction model;simulated annealing algorithm;JCUDA technology;BP algorithm
TN915-34;TQ028.1
A
1004-373X(2016)11-0136-05
10.16652/j.issn.1004-373x.2016.11.033
2015-05-19
吉林省高等教育学会科研项目:计算机专业应用型人才培养创新实践教学体系的研究与实践(JGJX2015D269)
韩智慧(1978—),女,吉林双辽人,硕士,讲师。研究方向为计算机应用。