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

文档序号:8412455阅读:553来源:国知局
一种基于jcudasa_bp算法的软件缺陷预测方法
【技术领域】
[0001] 本发明属于静态预测中的分布预测技术领域,涉及一种基于JCUDASA_BP算法的 软件缺陷预测方法。
【背景技术】
[0002] 术语解释:
[0003] 人工神经网络模型(artificial neural network, ANN)起源于对生物系统的研宄 和模仿。人工神经网络以数学和物理方法以及从信息处理的角度对人脑神经进行抽象,并 建立简化模型,模拟人脑的智能处理行为。人工神经网络可以划分为两大类,即前馈网络和 后馈网络。后馈网络拓扑中的各个节点之间具有反馈机制,这种网络的信息处理是一种动 态思想。前馈网络中各个节点接收前一级的输入,输出到下一层网络中,神经网络拓扑结构 中不具有反馈机制,是一种有向无环的网络结构。这种结构简单易于实现。
[0004] BP(Error Back Propagation, BP)神经网络是一种误差反传神经网络,是一种 有监督的学习方法。它将前馈网络结构的正向传播与错误反馈的逆向传播相互结合形成 一种完善的学习过程。其基本思想:神经网络在外界样本的刺激下反向传播算法不断地 动态修整网络的连接权值和阈值,以使网络的输出等同期望或者以设定的误差接近期望 输出。在软件缺陷预测领域使用的神经网络主要是基于误差反向传播算法(Error Back Propagation,简称BP)或者该算法的某个分支/变种。
[0005] JCUDA 是支持 Java 编程技术的 CUDA 运算平台。CUDA 即 Compute Unif ied Device Architecture的简称,是一款由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进行处理, (PU既负责管理GPU也进行部分的非并行性计算。这样,可以有效地激发GPU/CPU的计算能 力,结合JCUDA技术与BP算法,通过学习样本分解、多线程处理、CPU-GPU的处理模式,尝试 性地对软件缺陷模型的学习过程的学习速度进行优化,从而使改进的BP算法软件缺陷模 型具有更尚的计算效率。
[0006] 模拟退火算法(简称SA)是Kirkpatrick S等人于1980年提出的一种最优解求 解算法。初期,其主要应用于设计大规模集成电路。但随着模拟退火算法的不断优化,模拟 退火算法的应用面越来越广,逐步解决了收敛速度慢、应用范围窄的问题。目前,模拟退火 算法被广泛地应用于工业自动化的优化算法中。其主要是为了解决以有限的代价求解最优 化问题。模拟退火算法作为一种迭代自适应的算法,其通过随机概率减小算法陷入最优解 的可能性,从而更加有效地实现对算法的改进。
[0007] 软件缺陷预测技术诞生于20世纪70年代,半个世纪以来,伴随并见证了软件工程 发展的历史,是软件工程学科中一个重要的组成部分。软件缺陷预测的主要作用体现在对 质量保证工作的指导以及为平衡软件成本提供高价值参考。软件缺陷预测技术的主要思想 是使用各种机器学习方法对软件度量数据进行分析。软件缺陷预测技术大体上分为静态和 动态两种缺陷预测技术。静态预测技术,主要是指基于缺陷相关的度量数据,对缺陷的数量 或者分布进行预测的技术;而动态技术则是基于缺陷或者失效产生的时间,对系统缺陷随 时间的分布进行预测的技术。

【发明内容】

[0008] 本发明针对现有基于误差反向传播算法(Error Back Propagation,简称BP)方法 的缺陷预测准确率偏低、消耗时间过久的问题,提出一种改进BP算法,即基于JCUDASA_BP 算法的软件缺陷预测方法,其预测结果比之原始方法(BP算法)准确率高、速度快。
[0009] 本发明通过以下技术方案实现:
[0010] 一种基于JCUDASA_BP算法的软件缺陷预测方法,包括以下步骤:
[0011] 步骤一、构建一个BP网络,初始化BP网络中各层的权值;其中所述网络包含一个 输入层、一个隐含层和一个输出层,确定网络输入、输出节点数,确定隐藏节点,明确初始化 权值,完成初始化BP网络结构;
[0012] 步骤二、根据步骤一构建的BP网络结构,统计输入样本数量,根据输入样本情况 利用JCUDA技术实现在GPU中启动线程计算各层输出,根据输出值与期望误差计算误差 值;
[0013] 步骤三、统计输出值与期望值之间的误差后,利用模拟退火算法计算是否接受当 前误差,接受则完成;否则继续调整网络权值,每一个样本分条进行处理。
[0014] 其中利用JCUDA算法对软件缺陷预测的运行时间进行优化、模拟,包括以下步骤:
[0015] 第一步:设软件缺陷预测模型的学习样本为S,样本数为N,表示为公式1 ;
[0016] S=(S1i-^1Sn) 公式 1
[0017] 第二步:JCUDA_BP算法在CPU中将学习样本划分为X个组合,则学习样本S就可 以表示为公式2 ;
[0018] S = S' = (S/ ,. . . , S' x) 公式 2
[0019] 第三步:在公式2中,每一个S/对应着X/N学习样本,当X/N的计算值不为整数 时,分组阶段自动对该数值进行向下取整获得一个参数η表示该值,上式中,第i样本组的 数据用公式3进行表示。
[0020] S/ = (Sh,· · ·,Slri) 公式 3
[0021] 第四步:当进行到S样本最后一个分组时,自动取剩余所有样本,以保证分组数据 的正确与完整;
[0022] 第五步:基于JCUDA_BP算法的软件缺陷模型在GPU中启动多个线程,分别计算上 式样本集S的平均误差值,所有的样本的误差的表示为公式4 ;
[0023]
【主权项】
1. 一种基于JCUDASA_BP算法的软件缺陷预测方法,其特征在于,包括以下步骤: 步骤一、构建一个BP网络,初始化BP网络中各层的权值;其中所述网络包含一个输 入层、一个隐含层和一个输出层,确定网络输入、输出节点数,确定隐藏节点,明确初始化权 值,完成初始化BP网络结构; 步骤二、根据步骤一构建的BP网络结构,统计输入样本数量,根据输入样本情况利用 JCUDA技术实现在GPU中启动线程计算各层输出,根据输出值与期望误差计算误差值; 步骤三、统计输出值与期望值之间的误差后,利用模拟退火算法计算是否接受当前误 差,接受则完成;否则继续调整网络权值,每一个样本分条进行处理。
2. 如权利要求1所述的一种基于JCUDASA_BP算法的软件缺陷预测方法,其特征在于, 其中利用JCUDA算法对软件缺陷预测的运行时间进行优化、模拟,包括以下步骤: 第一步:设软件缺陷预测模型的学习样本为S,样本数为N,表示为公式1 ; S = (S1, · · ·,Sn) 公式 1 第二步:JCUDA_BP算法在CPU中将学习样本划分为X个组合,则学习样本S就可以表 示为公式2 ; S = S' = (S,!,..., S' x) 公式 2 第三步:在公式2中,每一个S' i对应着X/N学习样本,当X/N的计算值不为整数时, 分组阶段自动对该数值进行向下取整获得一个参数η表示该值,上式中,第i样本组的数据 用公式3进行表示。 Sri= (S1^,...,Sn^) 公式 3 第四步:当进行到S样本最后一个分组时,自动取剩余所有样本,以保证分组数据的正 确与完整; 第五步:基于JCUDA_BP算法的软件缺陷模型在GPU中启动多个线程,分别计算上式样 本集S的平均误差值,所有的样本的误差的表示为公式4 ;
公式4中,Λ &表示第j个样本组合计算完的误差值,Λ e表示全部样本集计算的平均 误差值。
3. 如权利要求2所述的一种基于JCUDASA_BP算法的软件缺陷预测方法,其特征在于, 上述方法基于JCUDASA_BP算法利用梯度下降法和SA算法对网络的权值进行修正,获得新 的权值矩阵PR,即产生一个很小的随机扰动值Δ ;利用SA算法时,首先针对输入层与输出 层的权值引入一个随机扰动ΔρΓ,针对输出层与隐含层之间的权值引入随机扰动Aph,然 后,分别计算Aph和Apr的期望误差值;如果期望值变化量小于零,则接受该随机扰动; 如果该变化量大于零时,根据模拟退火算法,以一个概率P接受当前解;当接收当前解时, 记录前一任的解,以防止当前解陷入局部最小值或者局部最优解的情况。
4. 如权利要求1或2或3所述的一种基于JCUDASA_BP算法的软件缺陷预测方法,其特 征在于,在上述方法执行过程中,如果计算未完成则不停止GPU中计算BP算法的线程;当线 程长期无反应时,基于JCUDA_BP算法的软件缺陷预测利用监控线程根据其他学习样本的 计算结果重新设定线程计算样本的结果以获得更快的处理效率。
【专利摘要】本发明针对现有基于误差反向传播算法方法的缺陷预测准确率偏低、消耗时间过久的问题,提出一种基于JCUDASA_BP算法的软件缺陷预测方法,步骤一、构建一个BP网络,初始化BP网络中各层的权值;其中所述网络包含一个输入层、一个隐含层和一个输出层,确定网络输入、输出节点数,确定隐藏节点,明确初始化权值,完成初始化BP网络结构;步骤二、根据步骤一构建的BP网络结构,统计输入样本数量,根据输入样本情况利用JCUDA技术实现在GPU中启动线程计算各层输出,根据输出值与期望误差计算误差值;步骤三、统计输出值与期望值之间的误差后,利用模拟退火算法计算是否接受当前误差,接受则完成;否则继续调整网络权值,每一个样本分条进行处理。
【IPC分类】G06F11-36, G06N3-08
【公开号】CN104731709
【申请号】CN201510148727
【发明人】单纯, 薛静锋, 张亮, 周杨森, 董磊
【申请人】北京理工大学
【公开日】2015年6月24日
【申请日】2015年3月31日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1