深度卷积神经网络驱动的软件缺陷预测
需积分: 38 107 浏览量
更新于2024-08-13
2
收藏 1.28MB PDF 举报
"这篇论文提出了一种基于深度学习的软件缺陷预测模型,旨在解决传统静态代码度量无法充分捕捉代码语义特征的问题。该模型利用深度卷积神经网络(CNN)从源代码的抽象语法树(AST)中提取特征,并采用GoogLeNet架构进行设计。通过从AST中选择合适的节点生成表示向量,并将这些向量映射为整数,以适应CNN的输入需求。深度CNN能够深入分析数据,提取出语法和语义特征。为了解决数据不平衡问题,模型运用了随机过采样技术,同时在网络中引入丢弃法以防止过拟合。实验结果表明,该模型在Promise历史工程数据集上的表现优于其他三种方法,表现出更优的软件缺陷预测性能,以AUC和F1-measure作为评估指标。"
在这篇研究中,作者探讨了软件缺陷预测的重要性,指出传统的基于静态代码度量的方法存在局限性,无法充分利用代码的语义信息。为克服这一问题,他们提出了一个创新的解决方案,即利用深度学习,特别是卷积神经网络的力量。深度学习模型,尤其是CNN,因其在图像识别和自然语言处理中的出色表现,被广泛应用于各种任务。在软件工程中,CNN可以捕获代码的结构和模式,这在传统的基于规则的方法中是难以实现的。
具体来说,论文中介绍的模型首先从源代码的抽象语法树中选择关键节点,这些节点包含了代码的结构信息。通过创建一个字典将这些节点映射为整数,使得它们可以被CNN接受为输入。GoogLeNet是一种深度CNN架构,它采用了 inception 模块,能够有效处理高维度数据并减少计算复杂性,因此适合用于软件代码的特征提取。
数据不平衡是软件缺陷预测中的常见问题,因为正常代码远多于有缺陷的代码。为了解决这个问题,研究者采用了随机过采样,这是一种处理类别不平衡的数据增强策略,通过增加少数类样本的数量,使得训练过程更加公平。同时,他们还应用了丢弃法(dropout),这是一种正则化技术,通过在训练过程中随机关闭一部分神经元,防止模型过度依赖特定的特征组合,从而降低过拟合风险。
实验部分,该模型在Promise项目的历史数据上进行了验证,与传统的机器学习方法进行了对比。评估指标包括AUC(Area Under the Curve)和F1-measure,两者都能衡量模型的分类性能。结果显示,提出的深度学习模型在软件缺陷预测方面取得了显著的提升,证明了深度学习在软件工程领域的潜力。
这篇研究揭示了深度学习在软件缺陷预测中的优势,提供了一种新的、有效的预测模型。这种方法对于提高软件的可靠性、提前发现潜在问题具有重要意义,有助于推动软件开发的质量管理和自动化检测的进步。
435 浏览量
215 浏览量
223 浏览量
270 浏览量
2024-10-31 上传
2024-08-01 上传
307 浏览量