[发明专利]基于图表示学习和知识蒸馏的半监督软件缺陷预测方法在审
申请号: | 202210979206.8 | 申请日: | 2022-08-16 |
公开(公告)号: | CN115328782A | 公开(公告)日: | 2022-11-11 |
发明(设计)人: | 岳野;刘望舒;刘学军 | 申请(专利权)人: | 南京工业大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/75;G06F16/35;G06F40/253;G06F40/30;G06K9/62;G06N3/04;G06N3/08 |
代理公司: | 江苏什新律师事务所 32657 | 代理人: | 朱少华 |
地址: | 210009 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 图表 学习 知识 蒸馏 监督 软件 缺陷 预测 方法 | ||
本发明公开了如下技术方案,首先从源代码中提取图结构和抽象语法树结构;接着通过编码抽象语法树信息得到词向量序列作为双向循环神经网络的输入以学习源代码的语义特征并将得到的语义特征与传统静态特征结合作为图节点的状态向量表示;然后利用源代码完整的图表示预训练教师集成网络模型;最后通过知识蒸馏技术将知识从之前预训练完成的教师集成网络模型中提取出来并注入到学生集成网络模型中。本发明借助图神经网络的先进性和知识蒸馏技术的思想,相较现有技术,使得生成的学生集成网络模型能够实现更高的软件缺陷检测率,而且集成网络的设计保证了该模型的健壮性和鲁棒性。
技术领域
本发明涉及一种基于图表示学习和知识蒸馏的半监督软件缺陷预测方法,属于软件工程中的软件分析及缺陷预测领域。
背景技术
软件缺陷预测技术从20世纪70年代发展至今,一直是软件工程领域最活跃的内容之一,在分析软件质量、平衡软件成本方面起着重要的作用。近些年,随着海量存储能力的可用性、高速互联网以及物联网等设备的出现,软件已经成为影响国民经济、政治、军事乃至社会生活的重要因素。与此同时,现代软件系统的规模和复杂性都在增长,使得缺陷隐藏得更深、更复杂、检测更具挑战性。因此,基于人工审查方式的传统软件测试方法不仅需要开发人员在测试或调试过程中投入更多的成本和精力,而且很难保证软件测试的及时性和准确性。在这种情况下,学者们提出了软件缺陷预测技术来帮助开发人员确定软件中是否存在可能的缺陷问题,指导开发人员将有限的软件质量保证资源集中于高风险缺陷模块。与软件缺陷预测的相关专利主要有:一种基于代码表示学习的即时软件缺陷预测方法(公开号CN 111858323);基于深度神经网络和概率决策森林的软件缺陷预测模型(公开号CN109446090);一种基于卷积神经网络的软件缺陷预测方法(公开号CN 108829607)等。
在之前的研究中,机器学习技术已广泛应用于软件的缺陷预测任务中,相关工作主要致力于设计并提取软件系统中的度量特征,例如用于度量代码复杂程度的McCabe度量特征,以此构建基于软件度量特征的预测分类模型。随着图神经网络在自然语言处理、推荐系统等诸多领域取得先进的性能,源代码在图上的表示和学习也得到了广泛的研究。2020年Wang等人通过图表示学习专注于源代码中的循环结构,通过构建区间图神经网络学习源代码在图上的表示,在一定程度上解决了图神经网络扩展到大图过程中的过平滑问题和消息传递策略导致的梯度消失问题,实验结果表明他们的工作有效提高了图神经网络在软件工程领域的工作性能。但是基于图神经网络的方法,由于消息传递策略和复杂的聚合操作等预测机制,导致始终无法充分利用基于结构和特征的先验知识,而基于结构和特征的先验知识在软件缺陷预测问题中往往十分重要,例如存在继承、调用等依赖关系的两个模块之间更加倾向于具有相同的类标签。
发明内容
本发明要解决的技术问题是提供一种基于图表示学习和知识蒸馏技术的半监督软件缺陷预测方法,本发明继承图神经网络的先进性,借助协同训练和知识蒸馏的思想解决监督学习中标签不足和图神经网络无法充分利用基于结构和特征的先验知识的问题。
本发明采用了以下技术方案:用于针对源代码进行软件缺陷预测;包括源代码的图表示学习方法以及基于知识蒸馏的半监督软件缺陷预测模型的构建方法;其中源代码的图表示学习方法步骤如下:
步骤A.选择预设数量的各类型源代码作为样本、并从源代码中提取抽象语法树结构和图结构,进而通过静态代码分析工具获得源代码中各个模块的静态特征作为图结构和树结构中节点的初始向量表示,然后进入步骤B;
步骤B.将抽象语法树结构进一步划分为语句级树输入Word2vec模型中编码为词向量,进而将词向量作为双向循环神经网络的输入学习得到源代码的语义特征,然后进入步骤C;
步骤C.将步骤B中学习得到的语义特征与步骤A中提取的传统静态特征拼接为新的节点状态向量,并进行特征降维以去除冗余特征和噪声得到模块对应节点的最终表示,然后进入步骤D;
步骤D.将步骤C中得到的最终节点表示嵌入到步骤A中提取的图结构中作为节点的初始状态向量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京工业大学,未经南京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210979206.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:ORVR测试装置
- 下一篇:一种白茶茶膏的制备方法