针对视觉-语言模型的小组引导式提示学习
《Expert Systems with Applications》:Group-guided Prompt Learning for Vision-Language Models
【字体:
大
中
小
】
时间:2025年09月25日
来源:Expert Systems with Applications 7.5
编辑推荐:
软件缺陷预测中,基于改进的TinyPDG工具提取Java程序的CFG和PDG,结合CBOW训练代码图语料库,并构建融合多图注意力机制(PNIAT)和双向LSTM的语义特征提取器。提出加权求和(W-CFG/PDG)和线性全连接(L-CFG/PDG)两种方法融合方法级特征至文件级,通过SMOTETomek解决数据不平衡,对比11种传统机器学习模型发现QDA结合W-PDG的模型(W-PDG-QDA)在AUC、F1、准确率上分别提升0.402%-21.72%、5.18%-55.25%、1.99%-25.16%。
在当今软件开发领域,随着软件系统的规模和复杂性不断增加,软件缺陷预测(Software Defect Prediction, SDP)技术的重要性日益凸显。SDP旨在识别哪些模块更有可能存在缺陷,从而帮助软件工程师更有效地分配测试资源,提高软件质量。近年来,随着深度学习技术的快速发展,研究者们开始探索如何利用这些技术来提升缺陷预测的准确性和效率。然而,传统的代码表示方法如抽象语法树(Abstract Syntax Tree, AST)在捕捉代码的全局语义信息方面存在一定的局限性。AST虽然能够反映代码的结构信息,但其粒度较小,容易导致模型对局部信息过度关注,而忽视了代码的整体语义特征。此外,AST缺乏对控制流和数据流的明确表示,限制了其在理解代码上下文方面的应用。
为了克服这些局限,本文提出了一种新的方法,通过改进的TinyPDG工具获取程序的控制流图(Control Flow Graph, CFG)和程序依赖图(Program Dependence Graph, PDG)。这两种图结构不仅能够反映代码的控制流信息,还能捕捉数据流和依赖关系,从而更全面地表达代码的语义特征。在获取CFG和PDG之后,研究者们使用连续词袋(Continuous Bag-of-Words, CBOW)模型对这些图结构进行训练,以提取出节点、边以及邻接矩阵等方法级别的语义特征。随后,研究者们引入了一种改进的PNIAT层,该层结合了多头注意力机制和双向长短期记忆网络(BiLSTM),用于进一步提取和融合代码语义信息。
在特征融合方面,本文提出了两种方法:基于加权求和的融合方法(W-PDG)和基于线性全连接层的融合方法(L-PDG)。这两种方法分别用于将方法级别的语义特征向量整合为文件级别的特征向量。加权求和方法通过赋予不同节点或边不同的权重,以反映其在代码语义中的重要性,从而更好地捕捉代码中可能存在的缺陷。而线性全连接层方法则通过将所有输入特征进行线性组合,使得模型能够综合考虑所有特征,提取更高层次的信息。
为了应对数据不平衡的问题,本文采用了SMOTETomek方法进行数据平衡处理。该方法结合了过采样和欠采样技术,能够在不引入过多噪声的情况下提高数据集的平衡性。随后,研究者们使用了11种传统的机器学习模型作为分类器,包括逻辑回归(Logistic Regression, LR)、决策树分类器(Decision Tree Classifier, DTC)、随机森林分类器(Random Forest Classifier, RFC)、支持向量机(Support Vector Machines, SVM)、高斯朴素贝叶斯(Gaussian Naive Bayes, GNB)、K近邻分类器(KNeighborsClassifier, KNC)、感知机(Perceptron)、梯度提升分类器(Gradient Boosting Classifier, GBC)、线性判别分析(Linear Discriminant Analysis, LDA)、二次判别分析(Quadratic Discriminant Analysis, QDA)以及多层感知机分类器(MLPClassifier, MLPC)。实验结果表明,QDA模型在作为分类器时表现尤为出色,其在加权求和方法和线性全连接方法下的F1分数均优于其他模型。此外,基于加权求和的PDG方法(W-PDG-QDA)在AUC、准确率和F1分数上均优于基于线性全连接的PDG方法(L-PDG-QDA)和基于CFG的加权求和方法(W-CFG-QDA)。
在实验设计方面,本文使用了来自PROMISE数据集的七项研究,以验证所提出方法的有效性。通过系统的实验分析,研究者们不仅比较了不同分类器的性能,还深入探讨了特征提取方法对缺陷预测结果的影响。此外,为了确保实验结果的可靠性,本文还进行了两组控制的消融实验,以评估各个模块对整体性能的贡献。实验结果表明,基于加权求和的PDG方法在多个指标上均优于其他方法,特别是在AUC、准确率和F1分数方面取得了显著的提升。这进一步验证了PDG在捕捉代码语义方面的优势,同时也表明了加权求和方法在特征融合中的有效性。
本文的主要贡献包括三个方面:首先,改进了TinyPDG工具,使其能够更高效地提取Java类中每个方法的CFG和PDG。这一改进使得代码语义的获取更加全面和准确。其次,引入了改进的PNIAT层,结合多头注意力机制和BiLSTM,以更有效地提取和融合代码语义信息。PNIAT层的改进不仅提高了模型的语义理解能力,还增强了模型的可解释性,使得研究人员能够直观地分析代码中的关键节点和边。第三,提出了基于加权求和和线性全连接层的特征融合方法,并验证了其在缺陷预测中的有效性。通过对比实验,研究者们发现加权求和方法在多个指标上均优于线性全连接方法,这表明在处理代码语义信息时,赋予不同节点或边不同的权重有助于提高模型的性能。
在实验结果分析中,本文不仅关注了分类器的性能,还探讨了特征提取方法对模型效果的影响。研究者们发现,基于PDG的加权求和方法(W-PDG-QDA)在多个指标上均优于基于CFG的加权求和方法(W-CFG-QDA)。这一结果与研究者的预期一致,因为PDG不仅能够反映控制流信息,还能捕捉数据流和依赖关系,从而更全面地表达代码的语义特征。此外,本文还讨论了实验过程中可能存在的外部有效性威胁,例如数据集的选择、模型参数的设置以及实验设计中的变量控制等因素。通过深入分析这些潜在因素,研究者们确保了实验结果的可靠性和有效性。
本文的结构安排也体现了研究的系统性和严谨性。首先,在第二部分中,研究者们详细描述了所采用的方法和技术。随后,在第三部分中,介绍了实验的准备工作,包括数据集的构建和特征提取的流程。第四部分则展示了实验的整体架构,包括数据预处理、特征提取和模型训练等关键步骤。第五部分详细说明了数据集、评估指标和超参数设置,以确保实验的可重复性和可比较性。第六部分对实验结果进行了深入分析,探讨了不同方法和模型的性能差异。第七部分进一步讨论了实验结果的意义和应用前景。第八部分则分析了实验过程中可能影响结果的各种因素,确保结论的科学性和可信度。最后,在第九部分中,研究者们总结了本文的主要成果,并展望了未来的研究方向。
综上所述,本文通过改进的代码表示方法和特征提取技术,为软件缺陷预测提供了一种新的解决方案。研究者们不仅验证了PDG在捕捉代码语义方面的优势,还通过实验比较了不同特征融合方法的效果,发现基于加权求和的PDG方法在多个指标上均优于其他方法。此外,本文还采用了SMOTETomek方法处理数据不平衡问题,并选择了多种传统机器学习模型作为分类器,以确保实验的全面性和可靠性。通过系统的实验设计和分析,本文为软件缺陷预测领域提供了有价值的参考,也为未来的研究奠定了基础。
生物通微信公众号
生物通新浪微博
今日动态 |
人才市场 |
新技术专栏 |
中国科学人 |
云展台 |
BioHot |
云讲堂直播 |
会展中心 |
特价专栏 |
技术快讯 |
免费试用
版权所有 生物通
Copyright© eBiotrade.com, All Rights Reserved
联系信箱:
粤ICP备09063491号