文摘

为了提高软件质量和测试效率,本文实现了基于深度学习的软件缺陷预测。根据粒子群算法的各自的优势和劣势和狼群算法,这两种算法是实现优势互补的混合算法。同时,混合算法在搜索hyperparameter优化的模型,模型的损失函数作为适应度函数,和人口群体智慧的协同搜索能力是用来找到全局最优解在多个局部解空间。通过分析六个数据集的实验结果,与传统的hyperparameter优化方法和一个群体智能算法,该模型使用混合算法具有更高的更好的指标。autoencoder的处理下,模型的性能得到进一步改善。

1。介绍

软件缺陷的潜在原因是错误,失败,以及软件系统的崩溃1]。在这个行业有非常严格的要求软件的质量和可靠性,如果不消除潜在缺陷的软件,它可能对企业造成严重的经济损失,甚至威胁到人们的生命安全。

软件缺陷预测技术给出了软件开发团队超过一个机会来检测软件缺陷模块通过花费更多的能量模块的缺陷趋势和消费更少的能量模块的任何有缺陷的倾向(2]。软件将会是一个项目的资源更好的利用,也可以大大减少人力和物质资源消耗的测试工作,节省测试成本和提高研发效率。

近年来,许多研究人员对软件缺陷预测技术进行了各种研究,提出软件缺陷预测模型基于机器学习和统计数据,如逻辑回归、分类树,多层感知器,径向基函数,支持向量机(3]。2000年,保时捷跑车4)37个指标使用逻辑回归来估计软件缺陷的天线配置软件,发现静态软件度量和软件缺陷的数量有一定的相关性。提出的多层感知器(MLP) Pizzi et al。52002年)是一种有效的软件缺陷的研究技术。Mahaweerawa et al。6)使用模糊聚类预测软件缺陷在2002年首次和应用径向基函数(RBF)预测软件缺陷。孟席斯et al。7)建立了一个贝叶斯网络缺陷预测模型在2004年承诺的数据集和PD和PF作为性能指标的评估结果。金达尔et al。8)在2014年建立了神经网络预测模型来研究软件缺陷,随后,提出了神经网络的各种优化模型,如PSO-BP和SA-BP。

然而,模型优化是最困难的挑战之一,在机器学习算法的实现,包括hyperparameter优化、数据预处理和特征提取。模型的优化,苏亚雷斯et al。8)开发并提出优化基于肾盂造影照片分析,详尽的搜索解决方案组合优化问题不同程度的困难。在文献[优化算法研究9),两个改进了布谷鸟搜索算法(CS)赋予其功能在控制人口的多样性,提高计算机科学的探索。文献[10]研究如何教优化技术(OT)系统工程课程课程在本科水平,提出了一个基于实验的方法。在文献[11),提高了算法的收敛速度,结合自组装和粒子群优化的优势。文献[12)提出了一种新的应用metaheuristic黏菌算法(SMA)在区间二型模糊控制器的优化和调整。

hyperparameter优化的目的是找到一组hyperparameters使机器学习算法有最好的性能验证数据集的实现。为了实现有效的模型选择和自动处理hyperparameter优化和建立一个合适的软件之间的非线性关系模型静态测量和缺陷,群体智能优化算法为动态优化和hyperparameter深层神经网络模型的优化。

为了进一步提高预测模型的精度和准确性定位,本文使用功能缺陷样本训练和继续使用自动编码特征提取数据预处理后减少样本数据的维度,去除冗余特征,提高深度学习训练的效率。

2。概念和方法

目前,基于不同的研究对象和研究结果,软件缺陷预测技术主要分为静态软件缺陷预测技术和动态软件缺陷预测技术。本文研究静态软件缺陷预测技术,是构建软件缺陷预测通过历史数据和指标。模型是用来判断缺陷趋势的软件模块。

2.1。静态软件缺陷预测技术

静态软件缺陷预测技术是分析软件模块代码,设计相应的测量元素,并建立一个合适的软件缺陷预测模型基于软件缺陷的测量元素通过分析历史数据,然后使用现有的软件缺陷。执行软件缺陷预测的预测模型。预测结果通常包括两种类型:缺陷(通常是记录为1)和nondefects(通常是记录为0),如图1

之间有一个明显的非线性关系软件静态测量数据和软件缺陷,这既不服从已知的数学模型也不是一个简单的非线性关系基本功能的组合。因此,非线性模型的软件静态测量和缺陷必须自学能力基于现有的静态测量和缺陷的数据集,以自适应获得非线性模型及其参数符合软件静态测量和缺陷之间的关系。

2.2。数据集进行训练

软件测量和缺陷数据由两部分组成。一部分是每个函数的静态测量信息的软件,另一部分是缺陷标签(0或1)的每个函数的软件。

考虑到现有数据集有限数量的度量和记录,本文扩大了静态指标基于共同的原理和实验,同时开发了一个网络爬虫工具软件代码从开源软件被测量和故障信息的网站。

2.2.1。静态指标的软件

我们的结论是静态指标基于共同的原理和实验工具广泛用于静态分析软件。整个指标表中列出1

2.2.2。切割软件功能

面向流程的语言有严格的语法和语义规范和函数定义必须满足正式的编程和编码要求和代码编写。这些语法和语义规范提供切片标准代码函数层次切片和提供了一个有效的方法来提高软件缺陷预测的准确性基于代码函数层次切片技术。本文基于叮当声分析器执行代码的词法和语法分析和实现函数层次切片改善缺陷数据位置的准确性。切片的步骤如下:S1(文件过滤设置):CPP切割包括各种文件的提取,包括. c文件和. CPP文件S2(配置奏鸣曲分析仪):使用铿锵声分析仪分析CPP,编译C、c++语言翻译成LLVM中间表达式,从而实现词法和语法分析S3(主要功能分析):使用get_and_write功能;有两个参数,一个是源代码文件名称abs_file_name解析和文件夹名abs_dir_name输出。S4(提取功能分析):首先创建一个解析器,读取文件,得到并分析光标节点单元的语法解析树,使用类型(元素表示一个节点的组件,例如,这是一个类,一个函数或一个变量名称,等等),拼写(提取函数体的名称,它也可以是一个类的身体,等等),地点(文件开始线和文件结束的函数体),get_children(所有节点在光标)。S5(确定是否它是身体所需的函数体或类):判断完成后,叫write_fun写入文件。S6(异常处理):不能重载的函数用法特殊字符的名字和英文意思重置函数名来取代它。

2.2.3。测量和合并数据进行训练

以下以面向流程的C语言软件为例来说明数据采集的过程基于web爬虫程序,如图2

流程如图2主要包括三个方面。第一个是使用C语言代码切片技术建立函数层次软件测量结果。第二是使用网络爬虫技术自动捕获和识别代码和缺陷数据的开源软件的网站。第三是生成C语言软件度量和缺陷数据通过数据匹配的函数名。自主研发的软件工具用于数据生成过程,具有速度快的特点,正确的匹配,高数据质量和函数层次数据粒度,可以提供高质量和高效的软件度量和缺陷数据的软件缺陷预测模型。

2.3。深度学习

深度学习是一种学习方法,它使用数据来训练和学习的深层神经网络提取非线性模型的特点,通过构建一个多层次的神经网络。在获得数据集组成的矩阵元素和缺陷信息,必须处理的数据集,分析和学习。深层神经网络的学习潜力数据特征可以挖掘数据之间的非线性关系,获取度量元素和缺陷。软件的映射逻辑,从而建立了一个非线性模型的软件静态测量元数据和缺陷预测数据。

2.3.1。深层神经网络

深神经网络(款)是一个前馈人工神经网络(13),也称为多层感知器。根据网络中节点的位置,它可分为输入层、隐层和输出层。与浅网络相比,有多个款隐藏层,每一层也可以有更多的神经单元。当前隐层的输出将被用作输入以前的隐藏层和输出层。图3原理图的完全连接深神经网络的结构。

所有变量之间存在对应款。假设有一个款N+ 1层,输入层第0个层,隐藏的层是第一N−1层和输出层N层。存在 ,对于任何nth层,有以下对应关系: 在哪里 输入值的吗kth节点nth层, 中的节点数量吗nth层, 之间的重量吗th节点nth层和kth节点n层, n的输出值kth节点层, 的偏见kth节点nth层, 是第n层的激活函数。激活函数 ,可以选择不同的形式在不同的算法。常见的激活函数包括乙状结肠函数,softplus功能,纠正线性单元(ReLU)函数。

损失函数,也称为目标函数或误差函数,主要是用来测量误差网络的实际输出与期望输出,以指导网络参数学习。对于回归问题,如平方损失函数通常使用;对于分类问题,对数等功能丧失和交叉熵通常使用。不同的损失函数会影响网络的训练速度和泛化能力。在这样的二元分类问题,交叉熵通常作为损失函数,和softmax作为输出层的激活函数模型。交叉熵在信息理论是一个非常重要的概念,主要用于测量两个概率分布之间的差异。样品(x,y),x是样品,y是相应的标签,假设值的集合{0,1}。当真正的标签样本y和的概率样本的标签y= 1p损失函数的样本,然后叉

为了减少损失函数的误差值,反向传播技术用于网络的追溯与输入层和输出层更新重量和偏见根据不同参数的影响。常用的方法是梯度下降算法,但收敛速度慢等问题,大波动下降过程中损失函数值,和陷入局部最小值。

本文利用梯度下降优化算法亚当,这是一个方法来计算每个参数的自适应学习速率。它不仅存储过去的指数衰减平均值梯度平方, 但还存储过去的指数衰减平均值梯度,也就是说, 通过这种方式,滑动平均梯度和梯度的平方可以使每个更新与历史价值。公式如下:

亚当的更新规则如下:

在公式(4)∼(6), = 0.001, = 0.9, = 0.999, = 1e−8是防止除数为0, 代表了梯度和的公式 如下:

2.3.2。Self-Encoding网络

Autoencoder (AE)是一种无监督学习算法。标签是直接输入所取代。其学习方法如图4

autoencoder可以被视为一种神经网络只有一个隐藏层,它实现了通过压缩和恢复重建的特性。输入数据是一个功能,输入层到隐层是一个编码器,可以压缩输入到一个潜在的空间表征;隐层到输出层是一个解码器,可以输入从潜在的空间表示。的输入和输出神经元数autoencoder等于功能维度。火车这autoencoder输出特性和输入功能尽可能一致。autoencoder试图再现其原始输入。因此,在培训期间,网络的输出应该一样的输入,也就是说,y=x。因此,输入和输出的autoencoder应该有相同的结构。我们使用训练数据训练网络。在培训结束后,网络学习的能力xhx。对我们来说,h这个时候是非常重要的,因为它是另一个表达式的原始数据不丢失的信息量尽可能多。其结构如图5

通过培训的autoencoder输出值等于输入值,可能表示h将有价值的属性。从self-encoder获取有用特性的一种方法是限制的维数h小于输入x。在这种情况下,它被称为self-encoder损失。通过培训损失表示,autoencoder可以学习中最重要的特性数据。

2.4。模型评价指标

在典型的缺陷预测技术的研究14),评估性能相关的混淆矩阵通常是用来评估预测的结果,如精度、精度、回忆,F-measure (F-measure)。混淆矩阵包含两列,如表所示2

TP是模块的数量预计将包含缺陷和缺陷,FP是模块的数量预计将包含缺陷和实际上是免费的缺陷,FN是模块的数量预计将不包含缺陷和实际上是有缺陷的,而TN的模块数量预计将不包含缺陷和实际模块的数量没有缺陷。基于这些四类,以下概念引入评价分类器的性能。(1)准确性:计算所有正确分类测试用例的比率(TP + TN)测试用例的总数,即 准确性使整体效果的预测,是最常用的指标之一在评估分类器模型。然而,在缺陷预测,由于严重的缺陷数据的类不平衡问题,事实上,它是没有意义的使用精度的评价指标预测模型。假设有100个模块在软件项目中,1是一个有缺陷的模块,其余99合格品模块;此时,如果所有软件模块预计无缺陷的模块,预测模型的准确性将会高达99%,但事实上,该预测模型没有发现有缺陷的模块。因此,在当前的缺陷预测,精度不再作为评价指标的预测模型15]。(2)精度:计算测试用例的数量的比率(TP)正确划分为积极的所有测试用例的数量分为积极的,即 (3)召回率:计算测试用例的数量的比率(TP)正确划分为积极正面的实际数量的测试用例,也就是说, (4)F-measure:它的定义可以看到一对相反的召回率和精度的评价指标。但是一个好的软件缺陷预测模型应该有一个高召回率和精确率在同一时间。因此,当评估软件缺陷预测模型的影响,有必要把召回率和精度。这是F-measure评价指标和计算公式 在哪里 代表回忆的重要性和精度,通常需要1,这意味着两个是同样重要的是,作为F1表示。(5)AUC (ROC曲线下的面积):在两种模型中,AUC指标常被作为最重要的评价指标来衡量模型中模型的准确性评价阶段。AUC认为模型预测的质量排名,反映出正面例子之前,负面的比例模型的例子。

3所示。基于混合狼群Hyperparameter优化算法

在深度学习模式中,最重要的是”参数调优。“一些参数,如重量和偏见,将优化模型的训练,和一些参数不能在模型优化训练。这些是hyperparameters。他们经常确定模型的框架和设置,所以优化模型之前应该开始训练。hyperparameters的选择可以直接影响算法的性能模型,但hyperparameter优化过程往往取决于专业知识和长期经验的积累。因此,研究寻找合适hyperparameter优化方法是一个重要的因素,影响深度学习算法的效果和效率(16]。

目前,hyperparameter优化方法主要分为网格搜索、随机搜索和其他定向搜索。网格搜索是根据步长调整参数指定的参数范围内,培养学习者的基础上调整的参数集,以便找到可以最大化模型精度的参数组中所有的参数。随机搜索不是尝试所有可能的组合,但随机组合。这个方法在本质上是类似的网格搜索,除了参数之间的差距的变化是随机的,不一定相等。这是一个为每个hyperparameter随机选择的值。在所有候选参数集,通过循环遍历,尝试每一种可能性,表现最佳的参数组是最终结果。

网格搜索需要遍历所有可能的参数组合的参数范围内,这也是它的缺点。当有更多的数据集和多参数,这种方法会导致计算的数量成倍增加,这将消耗大量的时间,最终无法保证完美hyperparameter值可以发现。虽然随机搜索有较高的机会比网格搜索寻找最优参数,参数尺寸变大时,它是一样的网格搜索和计算量激增也耗时。简而言之,这两种搜索方法只有排列组合参数,属于暴力穷举搜索方法,所以他们必然会牺牲大量的时间和计算能力,和他们不能指出后续更好的参数的优化方向搜索。

Hyperparameter优化是一个动态的过程,但网格和随机搜索只能结合不同的参数,不能动态地选择和调整参数根据模型的训练状态,并允许积极方法的参数最优值。因此,一些研究人员提出的使用群体智能算法hyperparameter优化。张优化hyperparameters基于集团定向改进粒子群算法的优化方法。它主要是通过粒子群的相互合作和信息共享来确定hyperparameters的更新。因此,该搜索方法基于群体智能算法可以避免网格和随机失明问题,可以确保在算法运行时参数逐步优化(17]。同样,使用hyperparameter改进粒子群算法的优化也是研究[18]。改进思想是及时调整算法时发现,该算法可能处于停滞不前的状态,从而加快算法的收敛速度。同时,由于hyperparameter优化问题是一个非线性问题,将会有许多局部最优解。李避免算法陷入局部最优解的扰动添加到全局最优。然而,这种改善并不大大增加算法的准确性,因为更新策略的粒子群算法过于简单,很难保证粒子的优化能力只使用此更新方法。因此,当该算法改进,它可以集成到其他合适的代理的搜索方法。代理的搜索类别是通过增加算法混合,和不同的局部解空间搜索是基于多个代理,以便解决hyperparameter优化的问题是容易陷入局部最优解。

为了实现快速、准确hyperparameter优化,本文研究的优化hyperparameters深层神经网络模型的基于混合群集智能算法。首先,根据粒子群算法的特点和狼群算法,两者混合得到一种改进的混合算法狼群。当使用群集智能算法来优化hyperparameters,模型的损失函数用作标准监督模型的状态,和损失函数的值作为适应度函数的值的群体智能算法。通过代理的迭代搜索,找到一组最优的hyperparameters,从而提高软件缺陷预测深层神经网络模型的性能。

3.1。群体智能算法
3.1.1。粒子群算法

粒子群优化(PSO)实现了搜索最优解的基础上,粒子群之间的相互合作和信息共享。首先,最初的人口是随机生成的,每个粒子的健身价值取决于目标函数。健身价值代表粒子的质量状况。在每个迭代寻找最优解,每个粒子将调整其位置后两种极端值。一个是粒子本身迄今为止最佳的健身价值发现的,被称为个体极值。另一种是最佳的健身价值发现迄今所有其他粒子的人口,即全局极值。

粒子群优化算法的数学表达式如下:在一维搜索空间,有一个人口粒子,X= {X1、…X_、…X_},的位置粒子表示为X_= {X_1,X_2,…X_id}T和它的速度表示为V_= {V_1,V_2,…V_id}T。的个体极值粒子表示为P_bi = {P_bi1,P_bi2,…P_bid}T,全球人口表示为极值 _b = { _b1, _b2、… _bd}T。粒子更新自己的速度和位置根据公式(13)和(14):

的公式, 是惯性权重,这是一个非负的数字在[0,1],代表粒子的能力继承当前的速度;学习因子c₁和c₂,一般来说,代表粒子的能力学习;rand_1()和rand_2()是随机数字(0,1)。更新粒子的速度是由三个部分组成的。第一部分是前面的粒子的速度,代表粒子的当前状态是惯性感动自己的速度,平衡全局探索和局部开发能力;是“认知”部分,第二部分代表粒子的最优位置经历了到目前为止,之间的区别,粒子的当前位置代表粒子的影响价值的经验对其下一步的行为;第三部分是“社会”的部分, _bd是所有粒子迄今为止发现的最优位置;粒子之间的相互合作和信息共享使粒子搜索一个更好的方向。

3.1.2。狼群算法

狼群算法(WPA)旨在模拟狼的狩猎行为处理函数优化问题和把狼分成三类:头狼,狼,侦探和凶猛的狼。整个狼群的狩猎活动抽象为三个智能行为(步行行为,召唤行为,围攻行为),以及“维克多王”狼生成规则和“强烈生存”狼群更新机制。(1)标准代狼:开始从某个初始的猎物组织空间优化,和狼狼作为最好的健身价值。(2)流浪的行为:选择最好的 人工狼除了头狼,狼检测执行的行为。 是一个整数随机选择在n( + 1),n/ ),n是人工的总数狼在狼群中,然后呢 狼是检测比例因子。首先计算当前位置的猎物的气味浓度侦探狼。如果Y<Y,然后Y=Y。探测头狼的狼取代了位置和发起一个召唤行为;如果Y>Y侦探狼向前移动 此时方向分别(步长 )。狼的位置在采用空间向前pth方向p= 1、2、3、…h)是 侦探狼一直走,直到气味浓度被一定的狼Y<Y的数量,或者散步T达到最大T马克斯其中,有差异为每个狼发现猎物搜索方法,也就是说,不同的价值,它是随机整数在在h最小值,h马克斯在实际的情况下)。(3)召唤行为:头狼发起一个咆哮执行召唤行为,并通知周围的激烈快速接近的头狼,狼_num =n年代_num−1;当激烈的狼听到咆哮,他们都运行得很快,相对较长的步长。地面是接近头狼的位置(步长在这个时候被称为突袭步长一步b)。然后,当狼j经过k+ 1迭代,采用空间中的位置 在哪里 是狼的位置吗kth代集团采用空间。在运行的过程中,如果香味浓度Yj<Y被狼j,然后Yj=Y和狼j变成一头狼,发起一个召唤行为;如果Y>Y狼,然后j继续实施抢劫行为,当狼之间的距离j和狼年代d小于判断距离d附近,它将变成一个围攻行为。判断距离d附近得到的估计: 其中,D变量的维度空间优化;马克斯d和最小d的最大和最小值吗dth维度空间优化。 是距离测定的因素,及其不同的价值观会影响算法的收敛速度。增加时,它将加速算法的收敛性,但如果太大,它将很难人工狼进入围攻行为和缺乏寻找猎物的精度。(4)围攻行为:狼进行围攻行为根据公式(18)。为kth代的狼群,假设的猎物的位置th维度空间 ,下面的公式可以用来表达狼群的围攻行为: 的随机数分布式(−1,1); 是人工狼的攻击步长当它围攻行为d维空间。三种类型的智能行为包括步行步长 ,运行的步长 ,攻击步长 ,和步长d维空间涉及以下关系: 的公式,年代步长因子。(5)“生存的狼群更新机制的强大。“消除R人工狼最严重的目标函数值,并生成R新的人工狼同时随机。的价值R是一个随机整数之间 是人口更新比例因子。

3.2。基于混合狼群Hyperparameter优化
3.2.1之上。Hyperparameter

Hyperparameter优化也叫Hyperparameter调整。深入学习算法包含成千上万的参数。这些参数可以优化的一些培训,如神经网络的权重,我们称之为参数。也有一些参数,无法训练。优化,如学习速率,我们称之为hyperparameter (hyperparameter)。

当训练一个神经网络,它调整hyperparameters至关重要。这个过程可以训练更科学更有效的机器学习模型。本文的主要优化hyperparameters网络的层数、每层的神经元数量,学习速率。(我)深层神经网络的网络层:数量,除了输入层和输出层,隐藏层的数量可以根据学习情况增加或减少。添加一个隐藏层可以减少网络错误和提高精度,但同时也使网络,从而提高网络的训练时间和倾向的“过度拟合”。(2)后的神经元数量:确定训练集,在输入层的节点数和输出层的节点数决定。然而,如何优化在隐藏层节点的数目是一个更困难的问题。实验表明,如果隐层节点的数量太小,网络不会有必要的学习能力和信息处理能力。相反,如果太多,它不仅会大大增加网络结构的复杂性和减缓网络网络的学习速度,也更有可能在学习过程陷入局部最小值。(3)学习速率是指网络的更新的大小重量的优化算法。可以将学习速率常数,逐渐减少,锦上添花的或自适应。不同的优化算法确定不同的学习速率。学习速率过大时,模型可能不收敛,和损失将继续上下摆动;当学习速率太小,模型将慢慢收敛,将需要更长的时间来训练。

3.2.2。混合狼群算法

PSO算法有一个简单的结构和一些参数和容易实现。虽然收敛速度非常快在迭代的初期,很容易陷入局部优化的后期迭代,导致过早收敛。水渍险有很强的全局探索能力,尤其是在以后的迭代中,不会陷入局部最优。与PSO相比,水渍险有较低的随机性算法运行过程中,并多次跑后的解决方案可以更接近实际值,不会导致解决方案值偏离实际值在一个大区域。基于WPA和PSO算法的优点和缺点,结合两种算法可以实现良好的互补效应(19]。解决方案空间中所采用的方法如下:在粒子的粒子群优化算法搜索粒子,然后使用狼群中的狼算法。集团再次精制的搜索过程来确定最终的新职位。

学习算法的详细流程步骤如下:S1:首先初始化的参数狼群算法和粒子群算法,计算适应度函数,并更新个体极值和人口极值。S2:判断当前的迭代次数是否符合要求,如果迭代次数不小于最小值,运行。S3:人口,每个粒子的更新的人口根据更新公式的粒子群速度和位置。S4:狼猎人游荡在方向,更新位置根据流浪的公式,获得健身价值更新的位置。S5:找到更新的最佳的健身价值和最优位置的头狼。S6:狼发起一个召唤行为,和狼狼跑向正在运行的公式。(七)S7:计算的健身价值更新的狼,狼和更新的健身价值和地位在当前位置。S8:给定数量的突袭,当达到最大数量的突袭,狼变成了头狼,或 满足三个条件之一,执行步骤9,否则执行步骤6。S9:计算和更新围攻狼的位置根据公式,计算适应度值和更新当前位置的值。S10:根据狼群的更新机制,执行强大而放弃生存的最坏的打算R狼。S11:生成随机狼和狼的健身价值计算。S12:如果没有达到最大的迭代次数要求,转向S2继续。

袭击发生在S6的最大数量因为当狼和狼的位置很难满足 ,算法的运行时间变得更长,在严重的情况下,它甚至可能陷入无限循环。因此,为了缩短算法的运行时间,本文确定的运行数量根据hyperparameter的值为5,距离确定因素和步长运行,这不仅可以确保狼到达附近的参数搜索头狼还控制算法的运行时间。

3.2.3。混合狼群算法优化Hyperparameters

hyperparameter优化方法,手动调优方法需要大量的经验和比较耗时;网格优化的一个缺点是,当涉及多个hyperparameters,计算的数量成倍增加,和这种方法并不能保证搜索会找到完美的hyperparameter价值;随机优化方法有较高的机会找到最优参数,但此法适用于低维数据。针对这种情况,本文将使用混合狼群算法优化hyperparameters。流程图如图6:

群体智能算法初始化时,混合算法的维度的人口的数量主要取决于hyperparameters需要优化,然后粒子长度取决于每个参数的值范围。本文以深的损失函数神经网络的混合算法的适应度函数。调整和优化粒子的位置,也就是说,hyperparameter的价值,通过优化的健身价值。这个设计的目的主要是充分发挥强大的混合算法的全局优化能力,以减少损失函数的值由深层神经网络输出。

深层神经网络在这篇文章中,我们判断当前训练状态模型的通过观察等监测指标的价值损失函数在培训过程中,使用混合群集智能算法来调整hyperparameters,因此,该模型可以以更科学的方式使用。有效的学习和训练,提高模型预测的准确性。

4所示。实验结果和比较

在当前的研究中,建立预测模型主要是基于元数据与测量确定缺陷信息,但在实际过程中,确定软件度量元数据是非常贫穷的20.]。与此同时,当前的大部分工作结果使用公共数据集,例如NASA的数据集。然而,数据样本量的限制问题的有限测量元素,数据量有限,和相对固定的样本集和训练集,使培训效果差。,由于简化数据集的正确性、有效性,和多功能性的缺陷预测和定位结果不能得到保证。不仅如此,美国国家航空航天局的数据集的质量和可靠性也被研究人员质疑。值得一提的是,在互联网上的软件仓库存储大量的软件开发和演化数据。除了源代码和改变日志,有缺陷报告,等,可以提供大量的样本数据对软件工程预测问题。

不同于先前的研究使用美国宇航局等公共数据集,本文中使用的数据集提取通过自动化工具,爬行从开源软件缺陷信息网站和整理相应的度量元函数。本文中的实验数据集都从C语言软件项目度量元素的数量,也就是说,特性是47岁的数量和缺陷分布如表所示3

4.1。基于深层神经网络的软件缺陷预测模型

的前提下,使用神经网络来构建一个深深学习模式是决定网络设置,如层数,节点的数量,和网络的激活函数。为了建立一个软件缺陷预测模型基于深层神经网络,本文将构建的模型和基于Tensorflow框架的学习和训练。流程图如图7:

4.2。基于Autoencoder特征提取

autoencoder学习监督本身的数据集的内部特性,提取有用的特征信息,达到降维的目的。本文将提要数据前的autoencoder深层神经网络训练。autoencoder autoencoder训练结束后,获得一个有效的数据表示。此时,译码器删除,只保留编码器。然后,编码器的输出将被直接用作后续的软件缺陷预测模型的输入来完成数据降维,提高训练效果的目的是通过这个操作。流程图如图8:

4.3。比较不同的Hyperparameter优化方法

本文实现五hyperparameters-grid的优化方法,随机的,粒子群算法,狼群算法和混合狼群算法和比较模型的4个指标。三个hyperparameters解决实验的局限性如下:隐藏层的数量范围 ,的范围的隐层节点的数目 ,和学习速率的范围 ;其余的参数设置如下:(1)网格优化:设置 hyperparameters范围内的参数组合。例如,隐藏层的数量 和隐层的节点数是多少 ,学习速率是 (2)随机优化:鉴于hyperparameter范围参数组合的数量是45。(3)粒子群优化:粒子的数量 ,迭代的最大数量 ,学习的因素 ,和惯性权重 (4)狼群的优化算法:狼的数量 ,迭代的最大数量 ,决定因素是距离 ,旅游限制的最大数量 ,狼检测比例因子 ,狼群更新比例因子 ,一步的因素 (5)混合狼群算法优化:参数是一样的粒子群和狼群算法。

在上述算法的参数设置,可以选择的范围三个hyperparameters由用户。每个参数设置网格的优化可以随意设置,但它是必要的,以确保最终的数量符合随机组合优化和等于粒子数的乘积和粒子群算法的迭代次数和狼蜂群算法。例如,有45(5∗∗3)在上面的组合网格优化,参数为随机组合优化的数量设置为45,粒子群中粒子的数量和狼群算法是15,和迭代的数量是3。这是为了确保不同的算法的计算量是一致的,以保证算法的比较结果的可信度。

首先,数据集预处理,数据标准化和缩放。接下来,每个数据集都是分为三个部分,作为测试集,训练集和验证集,然后是软件缺陷预测模型训练使用训练集和验证集,最后,测试集上的缺陷进行预测的基础上,训练模型。每组实验是训练有素的20倍,10个实验的平均结果。实验结果如表所示4- - - - - -9和数字9- - - - - -14

精确率反映了模型的能力区分负样本,召回率反映了模型的识别能力正样本,F-measure是两者的结合。F-measure值越大,更健壮的分类模型。AUC是ROC曲线下的面积。值越大,模型就越好。

观察表4- - - - - -9和数字9- - - - - -14,它是发现,与其他方法相比,混合算法的优化方法(WPA-PSO)不仅能保证精确率也提高召回率更高。作为模型的综合评价指数,F-measure和AUC也增加与优化方法的改进。一般来说,优势和劣势的排名hyperparameter优化方法

4.4。比较之前和之后的特征提取

中使用的数据集的数量的特性部分4.1 这些高维数据将增加的复杂性和减少模型在数据处理的准确性和施工的培训模式。本文使用self-encoding网络只有一个隐藏层和设置在隐层节点的数目 self-encoding网络通过训练集训练,最后的数据集是基于训练self-encoding网络编码。编码的数据集将继续使用5 hyperparameter优化方法来训练模型。每组实验的训练 次,结果的平均值 实验。实验结果如表所示10- - - - - -15

为了比较使用self-encoding更直观的效果,以下将平均结果不同的数据集,如图15- - - - - -19

观察表10- - - - - -15,我们可以发现,在五个hyperparameter优化方法,使用self-encoding网络处理数据可以提高模型的精度,这反映了数据降维的优越性。此外,当使用self-encoding hyperparameter优化方法相比,模型的各种指标下WPA-PSO方法仍然是最好的,表明混合算法具有更强大的搜索和优化功能比单一算法。

5。结论

基于深层神经网络缺陷预测,本文提出了一种混合狼群算法优化的hyperparameters模型,提高了模型的全局优化和软件缺陷预测能力和执行数据降维基于autoencoding提高培训和缺陷预测效果。为了防止过度拟合,本文使用了早期停止方法阻止模型训练结果停滞不前时,例如当连续培训带来的小改进或连续轮不带来任何改善。这可以避免只有改善训练集的索引但降低测试集的索引。

在未来的研究中,我们可以考虑使用深度学习的其他学习算法提取特征并构建软件缺陷预测模型和比较不同的学习算法的有效性。

数据可用性

使用的数据来支持本研究的发现是可用的https://github.com/justlz/hybird-PSO-WPA/branches

的利益冲突

作者宣称没有利益冲突有关的出版。

确认

这项工作是支持部分由中国国家自然科学基金批准号。61702234和61702234下。