法律状态公告日
法律状态信息
法律状态
2022-08-16
实质审查的生效 IPC(主分类):G06F11/36 专利申请号:2022102315049 申请日:20220310
实质审查的生效
技术领域
本发明涉及软件工程领域,尤其涉及一种基于混合项目对抗学习的跨项目软件缺陷预测方法。
背景技术
在当今社会,软件系统规模越来越大,不同系统间的调用错综复杂,如果一个商用的软件系统在上线之后由于软件bug问题而导致生产事故,那么产生的损失是不可估量的。传统的软件缺陷排查通过人工的方式,需要耗费大量时间、人力,排查的效果也不是十分令人满意。这时就需要一种自动化的方式来发现在软件开发过程中软件存在bug。传统的软件缺陷预测方法是通过在同一个项目内进行,这种方式效果会好一点,但是往往一个新开发的项目没有充足的历史数据,或者历史数据丢失等等都会给软件缺陷预测带来困难。这个时候就需要在其他项目上训练一个模型,然后用于新的项目上进行缺陷预测,这种方式被称为跨项目软件缺陷预测。跨项目软件缺陷预测也存在一些问题,例如来自不同公司的项目由于开发人员的经验,或者使用的编程语言不同,使得源项目和目标项目在进行特征表示后存在较大的特征分布差异问题,如何在减小分布差异的同时更好的保留原始特征是跨项目软件缺陷预测所研究的一个重点课题。此外,现有的一些跨项目软件缺陷预测模型不能充分利用源和目标项目的信息,不能更好的挖掘不同项目间存在的关系。
发明内容
发明目的:针对不同项目间存在过大分布差异,如何更好地保留鉴别特征信息问题,本发明提出一种基于混合项目对抗学习的跨项目软件缺陷预测方法,并利用该方法进行跨项目软件缺陷预测。
技术方案:为实现本发明的目的,本发明所采用的技术方案是:一种基于混合项目对抗学习的跨项目软件缺陷预测方法,包括如下步骤:
S1:获取跨项目软件缺陷数据集,划分为训练集和测试集,训练集包括源项目和目标项目,测试集包括目标项目,源项目是有标签实例,目标项目是无标签实例;
S2:初始化一个随机比例因子,对训练数据集中源项目和目标项目按照比例因子进行混合;
S3:对训练数据集中源项目和目标项目分别进行特征提取;
S4:对来自不同项目中提取的特征按照比例因子进行混合;
S5:将提取的特征分别输入对抗网络模型的生成器,生成器根据输入特征进行特征重构;
S6:对抗网络模型的判别器对重构的特征和原始输入特征进行真假判断;
S7:根据判别器损失函数,生成器损失函数和监督对比学习损失函数训练对抗网络模型,模型的输出为0或1,模型输出为1表示为是缺陷实例;
S8:待网络收敛后,对测试集的实例进行软件缺陷预测。
进一步的,所述S1的跨项目软件缺陷数据集:
源项目特征表示为
其中x
进一步的,所述S2包括:
初始化比例因子λ,λ服从β分布,其值大小在0和1之间;
对训练数据集中源项目和目标项目按照比例因子进行混合,得到一个混合后的项目特征表示为
进一步的,所述S3包括:
S3.1:构建一个三层的全连接神经网络作为源项目和目标项目的特征映射网络,经过特征映射网络分别得到关于源项目和目标项目特征的表示为
进一步的,将
S3.1.1:分类器由两层全连接神经网络组成,设网络映射函数为C(·),通过定义在源项目上的交叉熵损失L
交叉熵损失函数L
式中E表示期望,P
S3.1.2:使用监督对比学习损失函数L
监督对比学习损失函数L
其中
进一步的,所述S4,对来自不同项目中提取的特征按照比例因子进行混合;通过特征混合得到一个源项目和目标项目混合后的特征表示
进一步的,所述S5包括:
在重构特征阶段之前,首先为源项目和目标项目这两个项目以及混合的特征定义一个one-hot类标签向量l
式中,
生成器N
进一步的,所述S6包括:
S6.1:通过对抗训练增强判别器的判别能力,判别器D由三个分支子网络组成,分别是判别器下的域判别子网络D
针对来自不同项目数据,判别器分别通过以下损失函数来指导学习:
式中
S6.2:在训练过程中,混合特征由源项目和目标项目特征级别上的某个位置混合而成,并且域分类器将预测分数分配到0到1之间;域分类损失
式中P
S6.3:引入三元组损失
其中f
进一步的,在生成器对源项目和目标项目进行特征还原时,保证数据的判别特征不丢失,源项目和目标项目的分类损失
其中D
进一步的,联合模型的生成损失函数、判别损失函数以及监督对比学习的损失函数,采用极大极小博弈策略优化生成模型和判别模型;固定生成器和特征映射网络参数,更新判别器参数;固定判别器参数,更新分类器、生成器和特征映射网络参数。
有益效果:与现有技术相比,本发明的技术方案具有以下有益的技术效果:
(1)本发明基于生成对抗网络自编码器的框架,结合对抗网络改进了自编码器项目内重构过程,极大极小博弈的策略使得项目内的原始特征和重构特征难以判别,再结合监督对比学习方法,在减小不同项目间分布差异的同时更好地保留判别特征。
(2)本发明通过引入一个中间项目,中间项目是由源项目和目标项目按照一个0到1之间的比例因子混合而成,结合域判别网络提高了生成器重构特征的能力,生成域不变表示的同时使得项目间数据难以被区分,有效地减小跨项目数据的分布差异,同时提高了特征映射网络的特征提取能力,使得模型的具有较强的泛化能力。
附图说明
图1是本发明的整体框架图。
具体实施方式
下面结合附图和实施例对本发明的技术方案作进一步的说明。
参阅图1,本发明所述的基于混合项目对抗学习的跨项目软件缺陷预测方法,包括:
S1:获取跨项目软件缺陷预测数据集,常见的数据集及包括AEEEM和NASA;划分训练集和测试集。其中源项目是训练集,目标项目充当训练集和测试集,源项目是有标签数据集,目标项目是无标签数据集。
对于源项目特征表示为
S2:随机初始化比例因子λ,λ服从β分布,其值大小在0和1之间,每一次进行迭代λ都是进行随机变化的,得到一个混合后的项目特征表示为
S3:对训练数据集中源项目和目标项目分别进行特征提取;
构建一个三层的全连接神经网络作为源和目标项目的特征映射网络,每层神经元的个数分别为50,20,10,每一层神经网络的激活函数采用ReLU。经过特征映射网络分别得到关于源和目标项目的特征表示为
式中E表示期望,P
其中A(i)≡{1,...,n
S4:根据每次迭代初始化的比例因子λ,再进行特征级别混合得到一个源和目标项目混合后的特征表示
S5:在重构特征阶段之前,首先为两个项目和混合特征定义一个one-hot类别标签向量l
式中,
S6:通过对抗训练的方式来增强判别器的判别能力,判别器D内部由三个分支子网络组成,分别是域判别子网络D
式中
在训练过程中,混合特征由源项目和目标项目特征级别上的某个位置混合而成,并且域分类器将预测分数分配到0到1之间。
域分类损失
为了进一步约束混合项目到源项目或目标项目的距离来帮助域分类器进行领域判别,引入了三元组损失
S7:分类损失
S8、联合网络模型的生成器损失函数、判别器损失函数以及监督对比学习的损失函数,考虑到生成器和判别器的优化目标是相反的,采用极大极小博弈策略进行优化。该博弈策略使用随机梯度下降的优化算法来实现,本发明中使用pytorch的Adam优化器实现。
对于判别器、生成器、分类器和特征映射网络的参数θ
固定生成器和特征映射网络参数,更新判别器参数:
固定判别器参数,更新分类器、生成器和特征映射网络参数:
其中
在一个实施例中,最小训练批次大小为256,学习率r为0.005,两个权重超参数ω和
S9:待网络收敛后,对目标项目的实例进行软件缺陷预测,模型的输出为0或1,模型输出为1表示为是缺陷实例。
机译: 跨项目软件缺陷预测方法及系统
机译: 基于天气预测的项目推荐系统,其方法以及用于基于天气预测的项目推荐方法的计算机可读记录介质记录程序
机译: 基于机器学习预测项目奖励量的装置和方法