CN104731709B - 一种基于jcudasa_bp算法的软件缺陷预测方法 - Google Patents

一种基于jcudasa_bp算法的软件缺陷预测方法 Download PDF

Info

Publication number
CN104731709B
CN104731709B CN201510148727.9A CN201510148727A CN104731709B CN 104731709 B CN104731709 B CN 104731709B CN 201510148727 A CN201510148727 A CN 201510148727A CN 104731709 B CN104731709 B CN 104731709B
Authority
CN
China
Prior art keywords
sample
formula
algorithms
network
layer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510148727.9A
Other languages
English (en)
Other versions
CN104731709A (zh
Inventor
单纯
薛静锋
张亮
周杨森
董磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Institute of Technology BIT
Original Assignee
Beijing Institute of Technology BIT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Technology BIT filed Critical Beijing Institute of Technology BIT
Priority to CN201510148727.9A priority Critical patent/CN104731709B/zh
Publication of CN104731709A publication Critical patent/CN104731709A/zh
Application granted granted Critical
Publication of CN104731709B publication Critical patent/CN104731709B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明针对现有基于误差反向传播算法方法的缺陷预测准确率偏低、消耗时间过久的问题,提出一种基于JCUDASA_BP算法的软件缺陷预测方法,步骤一、构建一个BP网络,初始化BP网络中各层的权值;其中所述网络包含一个输入层、一个隐含层和一个输出层,确定网络输入、输出节点数,确定隐藏节点,明确初始化权值,完成初始化BP网络结构;步骤二、根据步骤一构建的BP网络结构,统计输入样本数量,根据输入样本情况利用JCUDA技术实现在GPU中启动线程计算各层输出,根据输出值与期望误差计算误差值;步骤三、统计输出值与期望值之间的误差后,利用模拟退火算法计算是否接受当前误差,接受则完成;否则继续调整网络权值,每一个样本分条进行处理。

Description

一种基于JCUDASA_BP算法的软件缺陷预测方法
技术领域
本发明属于静态预测中的分布预测技术领域,涉及一种基于JCUDASA_BP算法的软件缺陷预测方法。
背景技术
术语解释:
人工神经网络模型(artificial neural network,ANN)起源于对生物系统的研究和模仿。人工神经网络以数学和物理方法以及从信息处理的角度对人脑神经进行抽象,并建立简化模型,模拟人脑的智能处理行为。人工神经网络可以划分为两大类,即前馈网络和后馈网络。后馈网络拓扑中的各个节点之间具有反馈机制,这种网络的信息处理是一种动态思想。前馈网络中各个节点接收前一级的输入,输出到下一层网络中,神经网络拓扑结构中不具有反馈机制,是一种有向无环的网络结构。这种结构简单易于实现。
BP(Error Back Propagation,BP)神经网络是一种误差反传神经网络,是一种有监督的学习方法。它将前馈网络结构的正向传播与错误反馈的逆向传播相互结合形成一种完善的学习过程。其基本思想:神经网络在外界样本的刺激下反向传播算法不断地动态修整网络的连接权值和阈值,以使网络的输出等同期望或者以设定的误差接近期望输出。在软件缺陷预测领域使用的神经网络主要是基于误差反向传播算法(Error BackPropagation,简称BP)或者该算法的某个分支/变种。
JCUDA是支持Java编程技术的CUDA运算平台。CUDA即Compute Unified DeviceArchitecture的简称,是一款由NVDIA推出的运算平台,其突出特点是支持GPU内部的并行计算引擎,为基于GPU的计算提供并行化支持,从而提升程序的计算效率。目前,程序开发者对GPU技术的使用越来越多。CUDA技术以图形处理器为基础,针对其进行扩展。该技术已经广泛地运用至图形处理、科学计算等方面,并且受到广大科研人员的认可。此外,情报学领域、数学分析领域都在广泛地尝试使用CUDA技术解决运算速度的问题。CPU/GPU技术是目前一种具有较强优势的协同计算方法,通常是利用CPU管理GPU或者是利用GPU和CPU共同进行计算分别承担复杂计算的一部分。CPU管理GPU的方式充分利用了GPU的计算优势,但是却浪费了CPU的计算资源。反观GPU/CPU协同计算的方式则将GPU与CPU的计算能力很好地进行了释放。这种释放也是未来协同并行计算的发展方向。因此,利用JCUDA进行BP算法优化设计时,需要考虑CPU/GPU的哪种协同方式。明显地,后者较前者具有较大的优势,即CPU与GPU都承担部分计算工作,具有较强并行性的计算交由GPU进行处理,CPU既负责管理GPU也进行部分的非并行性计算。这样,可以有效地激发GPU/CPU的计算能力,结合JCUDA技术与BP算法,通过学习样本分解、多线程处理、CPU-GPU的处理模式,尝试性地对软件缺陷模型的学习过程的学习速度进行优化,从而使改进的BP算法软件缺陷模型具有更高的计算效率。
模拟退火算法(简称SA)是Kirkpatrick S等人于1980年提出的一种最优解求解算法。初期,其主要应用于设计大规模集成电路。但随着模拟退火算法的不断优化,模拟退火算法的应用面越来越广,逐步解决了收敛速度慢、应用范围窄的问题。目前,模拟退火算法被广泛地应用于工业自动化的优化算法中。其主要是为了解决以有限的代价求解最优化问题。模拟退火算法作为一种迭代自适应的算法,其通过随机概率减小算法陷入最优解的可能性,从而更加有效地实现对算法的改进。
软件缺陷预测技术诞生于20世纪70年代,半个世纪以来,伴随并见证了软件工程发展的历史,是软件工程学科中一个重要的组成部分。软件缺陷预测的主要作用体现在对质量保证工作的指导以及为平衡软件成本提供高价值参考。软件缺陷预测技术的主要思想是使用各种机器学习方法对软件度量数据进行分析。软件缺陷预测技术大体上分为静态和动态两种缺陷预测技术。静态预测技术,主要是指基于缺陷相关的度量数据,对缺陷的数量或者分布进行预测的技术;而动态技术则是基于缺陷或者失效产生的时间,对系统缺陷随时间的分布进行预测的技术。
发明内容
本发明针对现有基于误差反向传播算法(Error Back Propagation,简称BP)方法的缺陷预测准确率偏低、消耗时间过久的问题,提出一种改进BP算法,即基于JCUDASA_BP算法的软件缺陷预测方法,其预测结果比之原始方法(BP算法)准确率高、速度快。
本发明通过以下技术方案实现:
一种基于JCUDASA_BP算法的软件缺陷预测方法,包括以下步骤:
步骤一、构建一个BP网络,初始化BP网络中各层的权值;其中所述网络包含一个输入层、一个隐含层和一个输出层,确定网络输入、输出节点数,确定隐藏节点,明确初始化权值,完成初始化BP网络结构;
步骤二、根据步骤一构建的BP网络结构,统计输入样本数量,根据输入样本情况利用JCUDA技术实现在GPU中启动线程计算各层输出,根据输出值与期望误差计算误差值;
步骤三、统计输出值与期望值之间的误差后,利用模拟退火算法计算是否接受当前误差,接受则完成;否则继续调整网络权值,每一个样本分条进行处理。
其中利用JCUDA算法对软件缺陷预测的运行时间进行优化、模拟,包括以下步骤:
第一步:设软件缺陷预测模型的学习样本为S,样本数为N,表示为公式1;
S=(S1,...,SN) 公式1
第二步:JCUDA_BP算法在CPU中将学习样本划分为x个组合,则学习样本S就可以表示为公式2;
S=S'=(S1',...,S'X) 公式2
第三步:在公式2中,每一个Si'对应着X/N学习样本,当X/N的计算值不为整数时,分组阶段自动对该数值进行向下取整获得一个参数n表示该值,上式中,第i样本组的数据用公式3进行表示。
Si'=(S1-i,...,Sn-i) 公式3
第四步:当进行到S样本最后一个分组时,自动取剩余所有样本,以保证分组数据的正确与完整;
第五步:基于JCUDA_BP算法的软件缺陷模型在GPU中启动多个线程,分别计算上式样本集S的平均误差值,所有的样本的误差的表示为公式4;
公式4
公式4中,Δej表示第j个样本组合计算完的误差值,Δe表示全部样本集计算的平均误差值。
上述方法基于JCUDASA_BP算法利用梯度下降法和SA算法对网络的权值进行修正,获得新的权值矩阵PR,即产生一个很小的随机扰动值Δ;利用SA算法时,首先针对输入层与输出层的权值引入一个随机扰动Δpr,针对输出层与隐含层之间的权值引入随机扰动Δph,然后,分别计算Δph和Δpr的期望误差值;如果期望值变化量小于零,则接受该随机扰动;如果该变化量大于零时,根据模拟退火算法,以一个概率p接受当前解;当接收当前解时,记录前一任的解,以防止当前解陷入局部最小值或者局部最优解的情况。
在上述方法执行过程中,如果计算未完成则不停止GPU中计算BP算法的线程;当线程长期无反应时,基于JCUDA_BP算法的软件缺陷预测利用监控线程根据其他学习样本的计算结果重新设定线程计算样本的结果以获得更快的处理效率。
本发明的有益效果:
本发明采用JCUDA技术、BP神经网络技术与模拟退火算法相互结合的处理方式,JCUDA技术是为了更加有效地加快运算速度,模拟退火算法则是利用其随机性、灵活性调整BP神经网络中输入层与隐含层之间的权值以及隐含层与输出层之间的权值,模拟退火算法的随机性确保了BP神经网络较难陷入局部最优解。
附图说明
图1为输入层-隐含层和隐含层-输出层权值说明示意图;
图2为本发明基于JCUDASA_BP算法的软件缺陷预测方法流程图。
具体实施方式
下面结合附图对本发明作进一步介绍。
一种基于JCUDASA_BP算法的软件缺陷预测方法,包括以下步骤:
步骤一、构建一个BP网络,初始化BP网络中各层的权值;其中所述网络包含一个输入层、一个隐含层和一个输出层,确定网络输入、输出节点数,确定隐藏节点,明确初始化权值,完成初始化BP网络结构;
步骤二、根据步骤一构建的BP网络结构,统计输入样本数量,根据输入样本情况利用JCUDA技术实现在GPU中启动线程计算各层输出,根据输出值与期望误差计算误差值;
步骤三、统计输出值与期望值之间的误差后,利用模拟退火算法计算是否接受当前误差,接受则完成;否则继续调整网络权值,每一个样本分条进行处理。
其中利用JCUDA算法对软件缺陷预测的运行时间进行优化、模拟,包括以下步骤:
第一步:设软件缺陷预测模型的学习样本为S,样本数为N,表示为公式1;
S=(S1,...,SN) 公式1
第二步:JCUDA_BP算法在CPU中将学习样本划分为x个组合,则学习样本S就可以表示为公式2;
S=S'=(S1',...,S'X) 公式2
第三步:在公式2中,每一个Si'对应着X/N学习样本,当X/N的计算值不为整数时,分组阶段自动对该数值进行向下取整获得一个参数n表示该值,上式中,第i样本组的数据用公式3进行表示。
Si'=(S1-i,...,Sn-i) 公式3
第四步:当进行到S样本最后一个分组时,自动取剩余所有样本,以保证分组数据的正确与完整;
第五步:基于JCUDA_BP算法的软件缺陷模型在GPU中启动多个线程,分别计算上式样本集S的平均误差值,所有的样本的误差的表示为公式4;
公式4
公式4中,Δej表示第j个样本组合计算完的误差值,Δe表示全部样本集计算的平均误差值。
上述方法基于JCUDASA_BP算法利用梯度下降法和SA算法对网络的权值进行修正,获得新的权值矩阵PR,即产生一个很小的随机扰动值Δ;利用SA算法时,首先针对输入层与输出层的权值引入一个随机扰动Δpr,针对输出层与隐含层之间的权值引入随机扰动Δph,然后,分别计算Δph和Δpr的期望误差值;如果期望值变化量小于零,则接受该随机扰动;如果该变化量大于零时,根据模拟退火算法,以一个概率p接受当前解;当接收当前解时,记录前一任的解,以防止当前解陷入局部最小值或者局部最优解的情况。
在上述方法执行过程中,如果计算未完成则不停止GPU中计算BP算法的线程;当线程长期无反应时,基于JCUDA_BP算法的软件缺陷预测利用监控线程根据其他学习样本的计算结果重新设定线程计算样本的结果以获得更快的处理效率。
反复求解后,获得基于JCUDASA_BP算法的软件缺陷预测结果。基于JCUDASA_BP算法的软件缺陷预测处理流程如图2所示。
如图2所示,基于JCUDASA_BP的软件缺陷预测首先构建一个BP网络,初始化网络中各层的权值。然后,利用模拟退火算法对权值进行调整以避免局部最优解的出现。在这个过程中,利用JCUDA编程技术,将并行的处理过程加载到GPU进行处理,以获得更快的处理速度。具体过程如下:
1)明确神经网络输入、输出节点数,确认隐藏节点,明确初始化权值,完成CPU端初始化神经网络结构。
2)统计输入样本数量,根据输入样本情况利用JCUDA技术实现在GPU中启动线程计算各层输出,根据输出值与期望误差计算误差值。
3)统计输出值与期望值之间的误差后,利用模拟退火算法计算是否接受当前解,如果不符合条件则进行权值调整。
4)如果模拟退火算法没有接受当前解,则继续进行调整,每一个学习样本分条进行处理。反之,则接受当前解。
通过以上四步,可以完成基于JCUDA_BP算法的软件缺陷预测学习。此外,在以上四步执行过程中,如果计算未完成则不停止GPU中计算BP算法的线程。当线程长期无反应时,基于JCUDA_BP算法的软件缺陷预测会利用监控线程根据其他学习样本的计算结果重新设定线程计算样本的结果以获得更快的处理效率。

Claims (3)

1.一种基于JCUDASA_BP算法的软件缺陷预测方法,其特征在于,包括以下步骤:
步骤一、构建一个BP网络,初始化BP网络中各层的权值;其中所述网络包含一个输入层、一个隐含层和一个输出层,确定网络输入、输出节点数,确定隐藏节点,明确初始化权值,完成初始化BP网络结构;
步骤二、根据步骤一构建的BP网络结构,统计输入样本数量,根据输入样本情况利用JCUDA平台实现在GPU中启动线程计算各层输出,根据输出值与期望误差计算误差值;
步骤三、统计输出值与期望值之间的误差后,利用模拟退火算法计算是否接受当前误差,接受则完成;否则继续调整网络权值,每一个样本分条进行处理;
利用JCUDASA_BP算法对软件缺陷预测的运行时间进行优化、模拟,包括以下步骤:
第一步:设软件缺陷预测模型的学习样本为S,样本数为N,表示为公式1;
S=(S1,...,SN) 公式1
第二步:JCUDASA_BP算法在CPU中将学习样本划分为X个组合,则学习样本S表示为公式2;
S=S'=(S′1,...,S'X) 公式2
第三步:在公式2中,每一个S′i,i=(1,X)对应着N/X学习样本,当N/X的计算值不为整数时,分组阶段自动对该N/X的计算值进行向下取整获得一个参数n表示该N/X的计算值,公式2中,第i样本组的数据用公式3进行表示;
S′i=(S1·i,...,Sn·i) 公式3
第四步:当进行到S样本最后一个分组时,自动取剩余所有样本,以保证分组数据的正确与完整;
第五步:基于JCUDASA_BP算法的软件缺陷模型在GPU中启动多个线程,分别计算公式2中学习样本S的平均误差值,所有的样本的误差的表示为公式4;
公式4中,Δej表示第j个样本组合计算完的误差值,Δe表示全部样本集计算的平均误差值。
2.如权利要求1所述的一种基于JCUDASA_BP算法的软件缺陷预测方法,其特征在于,上述方法基于JCUDASA_BP算法利用梯度下降法和模拟退火算法对网络的权值进行修正,获得新的权值矩阵PR,即产生一个很小的随机扰动值Δ;利用模拟退火算法时,首先针对输入层与输出层的权值引入一个随机扰动Δpr,针对输出层与隐含层之间的权值引入随机扰动Δph,然后,分别计算Δph和Δpr的期望误差值;如果期望值变化量小于零,则接受该随机扰动;如果该变化量大于零时,根据模拟退火算法,以一个概率ρ接受当前解;当接收当前解时,记录前一任的解,以防止当前解陷入局部最小值或者局部最优解的情况。
3.如权利要求1所述的一种基于JCUDASA_BP算法的软件缺陷预测方法,其特征在于,在上述方法执行过程中,如果计算未完成则不停止GPU中计算BP算法的线程;当线程长期无反应时,基于JCUDASA_BP算法的软件缺陷预测,利用监控线程,根据其他学习样本的计算结果重新设定线程计算样本的结果,以获得更快的处理效率。
CN201510148727.9A 2015-03-31 2015-03-31 一种基于jcudasa_bp算法的软件缺陷预测方法 Active CN104731709B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510148727.9A CN104731709B (zh) 2015-03-31 2015-03-31 一种基于jcudasa_bp算法的软件缺陷预测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510148727.9A CN104731709B (zh) 2015-03-31 2015-03-31 一种基于jcudasa_bp算法的软件缺陷预测方法

Publications (2)

Publication Number Publication Date
CN104731709A CN104731709A (zh) 2015-06-24
CN104731709B true CN104731709B (zh) 2017-09-29

Family

ID=53455618

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510148727.9A Active CN104731709B (zh) 2015-03-31 2015-03-31 一种基于jcudasa_bp算法的软件缺陷预测方法

Country Status (1)

Country Link
CN (1) CN104731709B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105550749A (zh) * 2015-12-09 2016-05-04 四川长虹电器股份有限公司 一种新型网络拓扑结构的卷积神经网络的构造方法
CN106991095B (zh) * 2016-01-21 2021-09-28 阿里巴巴集团控股有限公司 机器异常的处理方法、学习速率的调整方法及装置
CN109814986B (zh) * 2017-11-20 2021-01-05 上海寒武纪信息科技有限公司 任务并行处理方法、存储介质、计算机设备、装置和系统
CN108171318B (zh) * 2017-11-30 2022-05-27 河南大学 一种基于模拟退火—高斯函数的卷积神经网络集成方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108648A (en) * 1997-07-18 2000-08-22 Informix Software, Inc. Optimizer with neural network estimator
CN101556553A (zh) * 2009-03-27 2009-10-14 中国科学院软件研究所 基于需求变更的缺陷预测方法和系统
CN102141958A (zh) * 2011-03-09 2011-08-03 中国矿业大学 面向缺陷的路径覆盖测试数据进化生成方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108648A (en) * 1997-07-18 2000-08-22 Informix Software, Inc. Optimizer with neural network estimator
CN101556553A (zh) * 2009-03-27 2009-10-14 中国科学院软件研究所 基于需求变更的缺陷预测方法和系统
CN102141958A (zh) * 2011-03-09 2011-08-03 中国矿业大学 面向缺陷的路径覆盖测试数据进化生成方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于SA-BP神经网络的软件缺陷预测模型的研究;尹然;《西南师范大学学报》;20130831;第147-152页 *

Also Published As

Publication number Publication date
CN104731709A (zh) 2015-06-24

Similar Documents

Publication Publication Date Title
CN104731709B (zh) 一种基于jcudasa_bp算法的软件缺陷预测方法
CN102073785B (zh) 基于广义动态模糊神经网络的燃气日负荷组合预报方法
CN103676881B (zh) 一种半导体生产线动态瓶颈分析方法
CN107330516A (zh) 模型参数训练方法、装置及系统
CN107888669A (zh) 一种基于深度学习神经网络的大规模资源调度系统及方法
CN111860828B (zh) 一种神经网络的训练方法、存储介质和设备
CN109615146B (zh) 一种基于深度学习的超短时风功率预测方法
CN104639626A (zh) 一种多级负载预测与云资源弹性配置方法与监控配置系统
CN103365727A (zh) 一种云计算环境中的主机负载预测方法
CN106934497A (zh) 基于深度学习的智慧小区用电量实时预测方法及装置
CN105023056B (zh) 基于群智能强化学习的电网最优碳能复合流获取方法
CN115940294B (zh) 多级电网实时调度策略调整方法、系统、设备及存储介质
CN106650931A (zh) 混合精度深度学习算法
CN110858805A (zh) 小区网络流量预测方法及装置
CN109886560A (zh) 配电网改造措施与电压合格率指标关联性挖掘方法及装置
CN110009181A (zh) 配电网改造措施与失负荷量指标关联性挖掘方法及装置
CN104111875B (zh) 云数据中心新增任务数动态控制装置、系统及方法
Zhu et al. Structural safety monitoring of high arch dam using improved ABC-BP model
CN111047071B (zh) 基于深度迁移学习和Stackelberg博弈的电力系统实时供需互动方法
CN107067028A (zh) 基于分布式聚类的网络流量时间序列预测方法
CN116755876A (zh) 一种大模型混合并行训练加速方法和系统
CN113572647B (zh) 一种基于强化学习的区块链-边缘计算联合系统
Liu et al. Based on BP Neural Network Stock Prediction.
CN113991752A (zh) 一种电网准实时智能控制方法及系统
Li et al. Application of MBR Membrane Flux Prediction Based on Elman Neural Network

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant