利索能及
我要发布
收藏
专利号: 2019104465462
申请人: 浙江工业大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-07-29
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于深度迁移的软件缺陷预测方法,包括以下步骤:(1)采用可视化方法将源项目和目标项目的源代码文件转化为图像文件,转化时,针对源项目的源代码文件,采用三原色排列组合策略对图像进行扩充,形成训练集;将目标项目的源代码文件转化为图像文件作为测试集;其中,采用可视化方法将源代码文件转化为图像文件的过程包括:首先,将源代码转化为二进制表达序列,并将二进制表达序列转换为八进制向量,再将八进制向量转化为0~255之间的文件向量file(xi),其中,0≤xi≤255,i为索引号,取决于源代码文件的大小;然后,将R、G、B三原色按照不同的排列顺序形成RGB、RBG、GBR、GRB、BGR和BRG六种排列方式,命名为三原色排列组合策略;最后,按照三原色排列组合策略中至少一种排列方式将文件向量转化为预测尺寸的图像;

(2)构建深度迁移网络,其中,所述深度迁移网络包含用于提取特征的特征提取单元和用于软件缺陷预测的软件缺陷预测单元,并在特征提取单元采用自注意力机制;

(3)根据采用自注意力机制提取的训练样本特征和测试样本特征之间的最大均值差异,和深度迁移网络的预测输出与样本的真值标签自检的交叉熵构建损失函数,并以损失函数收敛为目标,采用训练集和测试集对深度迁移网络进行训练,当满足训练截止条件时,网络参数确定,将获得软件缺陷预测模型;

(4)应用时,采用可视化方法将待检测源代码文件转化为图像,并将图像输入至软件缺陷预测模型,经计算,输出待检测源代码文件的缺陷预测结果。

2.如权利要求1所述的基于深度迁移的软件缺陷预测方法,其特征在于,针对源项目的源代码文件,采用三原色排列组合策略中六种排列方式将文件向量转化为预测尺寸的图像,以实现对图像的扩充。

3.如权利要求1所述的基于深度迁移的软件缺陷预测方法,其特征在于,针对目标项目的源代码文件和待检测源代码文件,采用三原色排列组合策略中任意一种排列方式将文件向量转化为预测尺寸的图像。

4.如权利要求1~3任一项所述的基于深度迁移的软件缺陷预测方法,其特征在于,预测尺寸设定规则为:

其中,生成图像长度取决于根据源代码文件大小。

5.如权利要求1所述的基于深度迁移的软件缺陷预测方法,其特征在于,所述深度迁移网络包括:特征提取单元,其包括依次连接的卷积层conv1、卷积层conv2、卷积层conv3、卷积层conv4、卷积层conv5;

注意力层,其包含有自注意力机制,作用于特征提取单元的任意卷积层上,用于对有利于分类的特征进行加权;

软件缺陷预测单元,其包括依次连接的全连接层fc6、全连接层fc7、全连接层fc8、全连接层fc9,且全连接层fc6的输入连接卷积层conv5的输出,全连接层fc9作为二分类的输出层。

6.如权利要求1或5所述的基于深度迁移的软件缺陷预测方法,其特征在于,所述自注意力机制包括:(a)对于特征提取单元输出的特征矩阵X,进行卷积核为1*1的卷积操作,获得矩阵F(x),G(x),H(x),其中,矩阵H(x)尺寸与特征矩阵X相同,矩阵F(x),G(x)的深度变为特征矩阵X的1/8;

(b)将矩阵F(x)的转置矩阵F(x)T与矩阵G(x)相乘,获得自相关矩阵S(x):S(xij)=F(xi)T*G(xj)其中,F(xi)T表示矩阵F(x)中第i列,G(xj)表示矩阵G(x)中第j列,S(xij)表示图像中位置(i,j)处像素点与所有像素点在特征上的自相关特征值,形成自相关矩阵S(x);

(c)对自相关矩阵S(x)进行softmax处理,以获得每个自相关特征值在0到1范围内的注意力权重αj,i,并形成注意力权重矩阵Oj:

其中,H(xi)表示矩阵H(x)中第i列;

(d)通过注意力层输出加权后的特征矩阵XAttention:XAttention=(O1,O2,…,ON),其中N=h*w生成h*w的向量,输入全连接层。

7.如权利要求1所述的基于深度迁移的软件缺陷预测方法,其特征在于,深度迁移网络的损失函数L为:L=LClassification+λ*LMMD 其中,λ为人为设定的惩罚系数;

交叉熵损失函数LClassification为:

其中,Θ代表该深度迁移网络中所有的参数,n0为样本总个数,na为样本类标种类的个数,φ(·)表示深度迁移网络所隐藏的非线性表达式,表示类标应该为a的第i个样本的深度迁移网络的输出预测值,为第i个样本类标为a的真值标签,F(·)为交叉熵计算函数;

最大均值差异损失函数LMMD为:

其中,src为训练集,tar为测试集,n1为训练集中样本个数,n2为测试集中样本个数,srci为训练集第i个样本,tari为测试集中第i个样本,dist(·)为最大值差异函数。