暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
一种采用对抗学习的跨项目缺陷预测方法-邢颖,钱晓萌,管宇,章世豪,赵梦赐,林婉婷.pdf
661
16页
3次
2022-05-19
免费下载
软件学报 ISSN 1000-9825, CODEN RUXUEW E-mail: jos@iscas.ac.cn
Journal of Software, [doi: 10.13328/j.cnki.jos.006571] http://www.jos.org.cn
©中国科学院软件研究所版权所有. Tel: +86-10-62562563
一种采用对抗学习的跨项目缺陷预测方法
1
,
钱晓萌
2
,
1
,
章世豪
1
,
赵梦赐
1
,
林婉婷
1
1
(北京邮电大学 人工智能学院,北京 100876)
2
(北京邮电大学 现代邮政学院(动化学院),北京 100876)
通讯作者: 邢颖, E-mail: xingying@bupt.edu.cn
: 跨项目缺陷预测(cross-project defect prediction,简称 CPDP)已经成为软件工程数据挖掘领域的一个重要
研究方向,利用其他项目的缺陷代码来建立预测模型,解决了模型构建过程中的数据不足问题.然而,源项目和目
标项目的代码文件之间存在着数据分布的差异,导致跨项目预测效果不佳.本文基于生成式对抗网络(generative
adversarial network,简称 GAN)中的对抗学习思想,在鉴别器的作用下通过改变目标项目特征的分布,使其接近于源
项目特征的分布,从而进行跨项目缺陷预测.具体来说,本文提出的抽象连续生成式对抗网络(abstract continuous
generative adversarial network,简称 AC-GAN)方法包括数据处理和模型构建两个阶段.(1)首先将源项目和目标项目
的代码转换为抽象语法树(abstract syntax tree,简称 AST)的形式,然后以深度优先方式遍历抽象语法树得出节点序
.再使用连续词袋模型(continuous bag-of-words model,简称 CBOW)生成词向量,依据词向量表将节点序列转化为
数值向量.(2)处理后的数值向量被送入基于 GAN 网络结构的模型进行特征提取和数据迁移,然后使用二分类器来
判断目标项目代码文件是否有缺陷.本文在 15 组源-目标项目对上进行了对比实验,实验结果表明了 AC-GAN 方法
的有效性.
关键词: 跨项目缺陷预测;生成式对抗网络;
连续词袋模型;抽象语法树
中图法分类号: TP311
A Cross-Project Defect Prediction Method Using Adversarial Learning
XING Ying
1
, QIAN Xiao-Meng
2
, GUAN Yu
1
, ZHANG Shi-Hao
1
, ZHAO Meng-Ci
1
, LIN Wan-Ting
1
1
(School of Artificial Intelligence, Beijing University of Posts and Telecommunications, Beijing 100876, China)
2
(School of Modern Post(School of Automation), Beijing University of Posts and Telecommunications, Beijing 100876, China)
Abstract: Cross-project defect prediction(CPDP) has become an important research direction in data mining of software engineering,
which uses the defective codes of other projects to build prediction models and solves the problem of insufficient data in the process of
model construction. However, there is difference in data distribution between the code files of source and target projects, which leads to
poor cross-project prediction results. Based on the adversarial learning idea of generative adversarial network (GAN), under the action of
discriminator, this paper changes the distribution of target project features to make it similar to the distribution of source project features,
so as to predict cross-project defects Specifically, the process of our proposed Abstract Continuous Generative Adversarial Network
(AC-GAN) method consists of two stages: data processing and model construction.(1) First, the source and target project codes are
converted into the form of abstract syntax trees (AST), and then the abstract syntax trees are traversed in a depth-first manner to derive the
token sequences. The continuous bag-of-words model (CBOW) is used to generate word vectors, and the token sequences are transformed
into numeric vectors based on the word vector table. (2) The processed numeric vectors are fed into a GAN network structure-based model
for feature extraction and data migration. Finally, a binary classifier is used to determine whether the target project code files are defective
基金项目: 国家自然科学基金(61702044); 国家重点研发计划课题(2017YFD0401001)
收稿时间: 2021-09-05; 修改时间: 2021-10-15; 采用时间: 2022-01-10; jos 在线出版时间: 2022-01-28
2
Journal of Software
软件学报
or not. We conducted comparison experiments on 15 sets of source-target project pairs, and the experimental results demonstrate the
effectiveness of the AC-GAN method.
Key words: Cross-project defect prediction; Generative adversarial network; Bag-of-words model; Abstract syntax tree
1 引言
现代软件在人们的日常生活中发挥着越来越重要的作用.然而,潜在的软件缺陷对软件的质量和可靠性构
成了严重威胁.潜在的软件缺陷越晚被发现,修复缺陷的成本就越高,严重时可能给企业带来巨大的经济损失,
甚至有时会造成人员伤亡
[1]
. 为了更好地保证软件质量, 研究人员提出了软件缺陷预测(software defect
prediction,简称 SDP)技术
[2]
.SDP 是软件工程中数据挖掘领域的一个研究热点,它希望在项目开发的早期阶段就
能提前发现并改进有缺陷的程序模块,从而帮助开发人员更快地发现缺陷代码,以节省开发时间,提高测试效
.
传统的 SDP 研究用手工提取的静态度量来进行缺陷预测.程序模块中的源代码作为一种形式语言,包含丰
富的结构信息和语义信息,手工提取的静态度量主要集中在程序的统计特性上
[3]
,无法从源代码中捕获这些复
杂的信息,这就使得当有 bug 代码与无 bug 代码在结构上类似时,手工提取的静态度量无法捕获这些缺陷,这个
局限性是影响缺陷预测准确性的重要因素.为了克服这一局限性,一些研究人员利用深度学习从源代码中学习
有意义的语义和上下文特征
[4-6]
.为在整个训练和预测过程中不丢失代码的语义和上下文信息,本文采用抽象
法树(abstract syntax tree,简称 AST)
[7]
的形式来表示代码,利用连续词袋模型(continuous bag-of-words model,
CBOW)
[8]
来提取包含上下文信息的词向量,并将深度学习技术应用于特征提取阶段.
实现基于深度学习的 SDP 研究的前提是获得足够的历史数据来训练预测模型.但在实际开发中,需要预测
的软件项目可能是一个全新的项目,也可能是一个历史数据较少的项目.跨项目缺陷预测(cross-project defect
prediction,简称 CPDP)
[9]
由此被提出,通过借用其他成熟项目数据来弥补历史数据的不足,其中,将成熟项目视为
源项目(训练集),而将被预测项目视为目标项目(测试集).
CPDP 研究中,不同项目的功能、开发人员和开发流程不尽相同,这将导致源项目和目标项目之间存在数
据分布差异,
与训练集和测试集独立相同分布的假设相悖.因此,跨项目缺陷预测的性能往往低于项目内缺陷预
.为了解决这个问题,很多学者采用机器学习的方法进行了相关研究
[10-12]
,包括迁移学习和特征选择等.然而,
这些传统的机器学习方法往往无法学习复杂的特征,而且损失函数的设计也很复杂.有实验证明,对抗学习中的
生成式对抗神经网络(generative adversarial network,简称 GAN)
[13]
作为消除域间差异工具能够很好地应用在自
然语言处理和图像识别等领域
[14-18]
.与传统方法相比,GAN 网络有以下优点:GAN 网络的训练过程采用两种对
抗性神经网络作为训练准则,可以采用反向传播的方法进行训练,且该训练不依赖低效的马尔可夫链方法,也不
依赖近似推理,没有复杂的变分下界,大大降低了训练难度,提高了训练效率;GAN 网络训练方式采用的是对抗
训练方式,可以产生更加清晰、真实的样本, GAN 网络利用鉴别器来实现数据迁移,能够避免迁移学习中损失
函数设计的困难.为了能够更好地解决源项目和目标项目代码文件间的数据分布差异问题,本文采用了 GAN
络中的对抗学习思想来训练具有领域适应性的神经网络,不断改变目标项目特征的分布直至其与源项目特征
分布相.
基于上述分析,为了解决跨项目缺陷预测问题,本文提出了一种采用对抗学习的抽象连续生成式对抗网络
(abstract continuous generative adversarial network,简称 AC-GAN)方法.其过程如下:首先,源项目和目标项目中
每个模块的代码被解析为抽象语法树,按照深度优先原则遍历出节点序列;接着,通过词嵌入技术 CBOW 算法
生成词向量,并根据词向量表将节点序列转换为数值向量;然后,将与源项目相对应的带标记的数值向量作为输
,对源特征提取器和源分类器进行训练;再以源特征作为真实数据,目标特征提取器提取的目标特征作为假数
据输入到判别器中进行博弈,通过 GAN 网络的对抗训练,源数据和目标数据之间的分布差异被缩小;最后,分布
改变后的目标特征被输入到目标分类器中进行缺陷预测.
具体来说,本文针对跨项目缺陷预测的主要贡献如下:
of 16
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜