System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机,尤其涉及一种基于对比学习和特征融合的及时缺陷预测方法,旨在提高源代码中的缺陷检测的准确性。
技术介绍
1、随着现代软件开发的复杂性和规模的不断增加,软件缺陷的检测变得至关重要。当前的缺陷预测方法大多数依赖于人工设计特征或传统的机器学习模型,这些方法通常通过提取与代码变更相关的手工特征(如修改文件的数量、开发者的经验等)进行缺陷预测。然而,这些方法往往忽视了代码中蕴含的语义信息,导致预测的准确性不足。
2、近年来,随着深度学习技术的发展,特别是预训练语言模型如codebert开始显现出在及时缺陷预测方向的潜力。然而,使用交叉熵损失微调这些模型带来了重大挑战,包括有限的泛化和易受噪声标签的影响。当易受攻击的代码与非易受攻击的代码非常相似时,这些问题变得尤为突出,使得深度学习模型难以准确区分。
3、如何解决上述问题成了本专利技术的关键。本专利技术通过在语义特征阶段引入对比学习,既可以解决模型区分相似代码变更更能力的不足,又可以缓解噪声标签的问题。本专利技术的提出通过将对比学习与特征融合相结合,旨在弥补现有技术的不足,从而有效提高模型在及时缺陷检测任务中的表现。
技术实现思路
1、本专利技术的目的是提供一种基于对比学习和特征融合的及时缺陷预测方法,旨在更有效地检测代码中的潜在缺陷,并提高检测的准确性和鲁棒性。
2、本专利技术的思想为:本专利技术提出一种基于对比学习和特征融合的及时缺陷预测方法,通过对比学习计算正负样本的相似度差异,生
3、本专利技术是通过如下措施实现的:一种基于对比学习和特征融合的及时缺陷预测方法,其中,包括以下步骤:
4、1.1:对数据集进行预处理和切分,将其划分为训练集d1和测试集d2;
5、1.2:从步骤1.1中划分的训练集d1的提交信息和修改描述中提取语义特征;
6、1.3:应用对比学习,定义正样本zp和负样本zn,通过最大化正样本之间的相似性并最小化正样本与负样本之间的相似性,增强模型对相似代码变化的区分能力;
7、1.4:计算步骤1.3中定义的正样本zp和负样本的zn的对比损失值,得到总的对比损失,用于优化模型;
8、1.5:在特征融合阶段,将步骤1.2提取的语义特征与专家特征进行融合,并通过微调全连接层和激活函数,以优化模型架构;
9、1.6:使用训练好的模型对测试集d2中的数据进行缺陷预测,输出预测结果。
10、所述1.2中从步骤1.1中划分的训练集d1的提交信息和修改描述中提取语义特征,具体包括如下步骤:
11、2.1:使用codebert模型将训练集d1中每个代码片段转换为特征向量。通过输入代码片段的上下文信息,捕捉代码中的语义信息,生成多个维度的特征向量,用于表示代码的语义内容和结构;
12、所述步骤1.3中应用对比学习,定义正样本zp和负样本zn,通过最大化正样本之间的相似性并最小化正样本与负样本之间的相似性,增强模型对相似代码变化的区分能,具体包括如下步骤:
13、3.1:将训练集d1具有相同缺陷标签的代码变更视为正样本zp,将不同缺陷标签的代码变更视为负样本zn。
14、所述步骤1.4中,计算步骤1.3中定义的正样本zp和负样本的zn的对比损失值,得到总的对比损失,用于优化模型,具体包括如下步骤:
15、4.1:先将样本zi的嵌入表示与正样本zp的嵌入表示进行点积计算,得到正样本的相似性度量sim(zi,zp);
16、4.2:然后将样本zi的嵌入表示与负样本zn的嵌入表示进行点积计算,得到负样本的相似性度量sim(zi,zn);
17、4.3:将正样本和负样本的相似性度量带入对比损失函数中,最终计算对比损失lcontrast,具体公式如下:
18、
19、其中zi表示样本i的嵌入,zp表示与zi具有相同标签的正样本的嵌入,zn表示与zi具有不同标签的负样本的嵌入,sim表示样本之间的相似性度量。
20、所述步骤1.5中在特征融合阶段,将步骤1.2提取的语义特征与专家特征进行融合,并通过微调全连接层和激活函数,以优化模型架构,具体包括如下步骤:
21、5.1:将从步骤1.2中提取的语义特征和专家特征进行标准化处理,使得两类特征在同一尺度下进行融合;
22、5.2:将扩展后的语义特征和专家特征进行拼接操作,生成一个综合特征表示,融合语义和专家特征的信息;
23、5.3:将拼接后的综合特征输入多层全连接层,使用激活函数对特征进行非线性转换;
24、5.4:在全连接层的基础上,利用反向传播算法对模型的权重进行更新,调整全连接层和激活函数的参数,以最大化模型的预测性能。
25、所述步骤1.6中使用训练好的模型对测试集d2中的数据进行缺陷预测,输出预测结果。
26、与现有技术相比,本专利技术的有益效果为:
27、1、本专利技术通过引入对比学习和特征融合来解决目前预训练模型在区分相似代码和捕捉上下文信息方面的不足,增强了模型对复杂代码场景的适应能力,进一步提高了及时缺陷预测的准确性。
28、2、本专利技术通过引入对比学习,解决了现有预训练模型难以区分相似代码变更的困难。传统预训练模型,如codebert,虽然能够提取代码的语义特征,但在处理那些语义或结构上高度相似的代码变更时,往往表现不佳,容易将不同标签的代码变更错误归类为同类。本专利技术在语义特征提取阶段引入了对比学习方法,最大化了正样本之间的相似性,并最小化正负样本之间的相似性,从而增强了模型在处理相似代码变更时的区分能力。通过构建对比损失函数,模型能够更有效地捕捉到代码间的细微差异,特别是那些在语义上高度相似但功能或行为不同的代码变更,大幅提升了模型在缺陷检测中的精确度,尤其是在处理复杂代码修改时的表现。
29、3、本专利技术引入了特征融合,解决了单一语义特征或专家特征在捕捉上下文信息方面的不足。传统方法通常依赖于单一特征提取方式,无法同时捕捉代码的多维信息,导致上下文理解不充分。本专利技术结合了专家特征(如代码变更的扩散程度、文件修改数量、开发者经验等)与通过codebert提取的语义特征,将这两类特征在特征融合阶段进行融合。这种特征融合的方式使得模型能够同时理解代码变更的结构信息和语义信息,提升了模型对代码上下文的理解能力,通过多层全连接层和激活函数的进一步优化,特征融合增强了模型对复杂代码场景的适应能力,进一步提高了及时缺陷预测的准确性。
本文档来自技高网...【技术保护点】
1.一种基于对比学习和特征融合的及时缺陷预测方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种基于对比学习和特征融合的及时缺陷预测方法,其特征在于,所述步骤1.2包括如下步骤:
3.根据权利要求1所述的一种基于对比学习和特征融合的及时缺陷预测方法,其特征在于,所述步骤1.3包括如下步骤:
4.根据权利要求1所述的一种基于对比学习和特征融合的及时缺陷预测方法,其特征在于,所述步骤1.4包括如下步骤:
5.根据权利要求1所述的一种基于对比学习和特征融合的及时缺陷预测方法,其特征在于,所述步骤1.5包括如下步骤:
6.根据权利要求1所述的一种基于对比学习和特征融合的及时缺陷预测方法,其特征在于,所述步骤1.6中使用训练好的模型对测试集D2中的数据进行缺陷预测,输出预测结果。
【技术特征摘要】
1.一种基于对比学习和特征融合的及时缺陷预测方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种基于对比学习和特征融合的及时缺陷预测方法,其特征在于,所述步骤1.2包括如下步骤:
3.根据权利要求1所述的一种基于对比学习和特征融合的及时缺陷预测方法,其特征在于,所述步骤1.3包括如下步骤:
4.根据权利要求1所述的一种基于对比...
【专利技术属性】
技术研发人员:鞠小林,曹义,张书为,陈翔,王皓晨,
申请(专利权)人:南通大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。