(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202210979206.8
(22)申请日 2022.08.16
(71)申请人 南京工业大 学
地址 210009 江苏省南京市 鼓楼区新模范
马路5号
(72)发明人 岳野 刘望舒 刘学军
(74)专利代理 机构 江苏什新 律师事务所 326 57
专利代理师 朱少华
(51)Int.Cl.
G06F 11/36(2006.01)
G06F 8/75(2018.01)
G06F 16/35(2019.01)
G06F 40/253(2020.01)
G06F 40/30(2020.01)
G06K 9/62(2022.01)G06N 3/04(2006.01)
G06N 3/08(2006.01)
(54)发明名称
基于图表示学习和知识蒸馏的半监督软件
缺陷预测方法
(57)摘要
本发明公开了如下技术方案, 首先从源代码
中提取图结构和抽象语 法树结构; 接着通过编码
抽象语法树信息得到词向量序列作为双向循环
神经网络的输入以学习源代码的语义特征并将
得到的语义特征与传统静态特征结合作为图节
点的状态向量表示; 然后利用源代码完整的图表
示预训练教师集成 网络模型; 最后通过知识蒸馏
技术将知识从之前预训练完成的教师集成网络
模型中提取出来并注入到学生集 成网络模型中。
本发明借助图神经网络的先进性和知识蒸馏技
术的思想, 相较现有技术, 使得生成的学生集成
网络模型能够实现更高的软件缺陷检测率, 而且
集成网络的设计保证了该模型的健壮性和鲁棒
性。
权利要求书3页 说明书6页 附图2页
CN 115328782 A
2022.11.11
CN 115328782 A
1.一种基于 图表示学习和知识蒸馏的半监督软件缺陷预测方法, 其特征在于: 其包括
源代码的图表示方法和基于知识蒸馏的半监督软件缺陷预测模型的构建方法, 所述的半监
督软件缺陷预测模型的构建方法利用源代码的完整图表示预训练教师集成网络模型、 通过
知识蒸馏技 术将知识从 教师集成网络模型中提出并注入学生 集成网络模型中。
2.根据权利要求1所述的基于图表示学习和知识蒸馏的半监督软件缺陷预测方法, 其
特征在于: 源代码的图表示方法, 包括如下步骤:
步骤A.选择预设数量的各类型源代码作为样本并从源代码中提取抽象语法树结构和
图结构, 通过静态代码分析工具获得源代码中各个模块的静态特征作为图结构和树结构中
节点的初始向量表示, 然后进入步骤B;
步骤B.将抽象语法树结构进一步划分为语句级树, 输入Word2vec模型中编码为词向
量, 将词向量作为双向循环神经网络的输入学习得到源代码的语义特 征, 然后进入步骤C;
步骤C.将步骤B中学习得到的语义特征与步骤A中提取的传统静态特征拼接为新的节
点状态向量, 得到模块对应节点的最终表示, 然后进入步骤D;
步骤D.将步骤C中得到的最终节点表示嵌入到步骤A中提取的图结构中作为节点的初
始状态向量。
3.根据权利要求1所述的基于图表示学习和知识蒸馏的半监督软件缺陷预测方法, 其
特征在于: 基于知识蒸馏的半监 督软件缺陷预测模型的构建方法, 包括如下步骤:
步骤Ⅰ.通过基于差异的协同训练算法, 仅利用少量类别标签预训练教师集成网络模
型, 预训练的终止条件为教师集成网络模型中的所有子 分类器性能不再提升或有标签数据
集不再扩充, 达 到终止条件进入步骤 Ⅱ;
步骤Ⅱ.将教师集成网络中的子分类器与学生集成网络中的分支逐一匹配, 进行第一
次知识蒸馏以训练学生 集成网络中分支的内部参数, 然后进入步骤 Ⅲ;
步骤Ⅲ.将教师集成网络 中子分类器产生的软标签加权聚合作为教师集成网络模型的
最终结果, 将教师集成网络的最 终结果与学生集成网络的最 终结果进 行第二次知识蒸馏以
训练学生 集成网络中各个分支的权 重。
4.根据权利要求2所述的基于图表示学习和知识蒸馏的半监督软件缺陷预测方法, 其
特征在于: 所述 步骤A包括如下子步骤:
步骤A1.应用javalang工具将程序源代码解析为抽象语法树结构,并从中切分出函数
节点;
步骤A2.应用第三方工具understand根据源代码的控制流图构 建邻接矩阵以表征模块
之间的依赖关系得到源代码的图结构;
步骤A3.应用代码静态分析工具提取图结构和抽象语法树结构中节点对应模块的静态
特征对节点状态向量进行初始化。
5.根据权利要求2所述的基于图表示学习和知识蒸馏的半监督软件缺陷预测方法, 其
特征在于: 所述 步骤B包括如下子步骤:
步骤B1.遍历步骤A1中得到的抽象语法树结构, 并将所有用户定义的名称映射为固定
名称, 并通过 预排序遍历将AST转 化为节点序列;
步骤B2.通过word2vec模型将步骤B1中得到的语句级树映射为它们的词向量序列表示
以便直接由神经网络进行训练;权 利 要 求 书 1/3 页
2
CN 115328782 A
2步骤B3.将步骤B2中得到的词向量序列输入双向循环神经网络进行训练, 最终得到源
代码语义特 征的向量表示。
6.根据权利要求2所述的基于图表示学习和知识蒸馏的半监督软件缺陷预测方法, 其
特征在于: 所述 步骤C包括如下子步骤:
步骤C1.将步骤A3中得到的传统静态特征与步骤B3中通过双向循环神经网络学习得到
的指定维数的语义特 征拼接成为 一个新的向量表示;
步骤C2.应用SPSS软件对步骤C1中得到的向量表示进行数据标准化, 接下来进行特征
之间的相关性判定, 然后设定主成分个数并根据主成分表达式执行主成分分析, 最终得到
降维后的特 征向量作为节点的最终表示。
7.根据权利要求5所述的基于图表示学习和知识蒸馏的半监督软件缺陷预测方法, 其
特征在于: 所述步骤B2中的word2v ec模型是轻量级的神经网络, 仅包括输入层、 隐藏层和输
出层, 该方法将自然语言处理中词向量的表示方法迁移到源代码的表示学习中, 其 目标优
化函数如下:
其中输出层由softmax 归一化, u代表的是输出层的原 始结果。
8.根据权利要求1所述的基于图表示学习和知识蒸馏的半监督软件缺陷预测方法, 其
特征在于, 所述 步骤Ⅰ包括如下子步骤:
步骤Ⅰ1.将图节点划分两 部分, 分别为有标签数据集和无 标签数据集;
步骤Ⅰ2.利用有标签数据集训练教师集成网络并利用训练完成的教师集成网络为无标
签数据集中的节点标记伪标签;
步骤Ⅰ3.计算带有伪标签节点的置信度, 将置信度高于预设阈值的节点加入有标签数
据集, 其对应的伪标签在下一次训练中作为真实标签, 而置信度低于预设阈值的节点保留
在无标签数据集中;
步骤Ⅰ4.重复步骤 Ⅰ2和步骤Ⅰ3直到教师集成网络中所有子分类器的性能不再提升或有
标签数据集 不再扩充。
9.根据权利要求1所述的基于图表示学习和知识蒸馏的半监督软件缺陷预测方法, 其
特征在于: 在知识蒸馏框架中需要保证 教师集成网络中子 分类器的数量与学生集成网络中
分支的数量保持一 致, 所述步骤Ⅱ包括如下子步骤:
步骤Ⅱ1.将预训练完成的教师集成网络中的子分类器与学生集成网络中的分支逐一
匹配;
步骤Ⅱ2.利用预训练完成的教师集成网络中的子分类器产生的软标签与学生集成网
络z中各分支产生的软 标签之间的差异进行第一蒸馏, 蒸馏函数如下:
其中K是表示分支中层数的超参数, | |||2是L2范 数, Θ表示可训练参数的集 合。
10.根据权利要求1所述的基于图表示学习和知识蒸馏的半监督软件缺陷预测方法, 其
特征在于: 所述 步骤Ⅲ的具体子步骤如下:权 利 要 求 书 2/3 页
3
CN 115328782 A
3
专利 基于图表示学习和知识蒸馏的半监督软件缺陷预测方法
文档预览
中文文档
12 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共12页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 SC 于 2024-03-03 12:14:10上传分享