CN115328782A - 基于图表示学习和知识蒸馏的半监督软件缺陷预测方法 - Google Patents
基于图表示学习和知识蒸馏的半监督软件缺陷预测方法 Download PDFInfo
- Publication number
- CN115328782A CN115328782A CN202210979206.8A CN202210979206A CN115328782A CN 115328782 A CN115328782 A CN 115328782A CN 202210979206 A CN202210979206 A CN 202210979206A CN 115328782 A CN115328782 A CN 115328782A
- Authority
- CN
- China
- Prior art keywords
- integrated network
- graph
- teacher
- knowledge distillation
- student
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000007547 defect Effects 0.000 title claims abstract description 40
- 238000013140 knowledge distillation Methods 0.000 title claims abstract description 37
- 239000013598 vector Substances 0.000 claims abstract description 39
- 238000013528 artificial neural network Methods 0.000 claims abstract description 30
- 238000012549 training Methods 0.000 claims abstract description 22
- 230000003068 static effect Effects 0.000 claims abstract description 21
- 238000005516 engineering process Methods 0.000 claims abstract description 12
- 230000002457 bidirectional effect Effects 0.000 claims abstract description 11
- 125000004122 cyclic group Chemical group 0.000 claims abstract description 7
- 238000004821 distillation Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 12
- 230000004931 aggregating effect Effects 0.000 claims description 6
- 230000002776 aggregation Effects 0.000 claims description 6
- 238000004220 aggregation Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 6
- 230000010354 integration Effects 0.000 claims description 5
- 230000009467 reduction Effects 0.000 claims description 5
- 230000000306 recurrent effect Effects 0.000 claims description 4
- 238000010276 construction Methods 0.000 claims description 3
- 239000011159 matrix material Substances 0.000 claims description 3
- 238000000513 principal component analysis Methods 0.000 claims description 3
- 239000000284 extract Substances 0.000 claims description 2
- 238000003058 natural language processing Methods 0.000 claims description 2
- 238000005457 optimization Methods 0.000 claims 1
- 238000013461 design Methods 0.000 abstract description 3
- 238000001514 detection method Methods 0.000 abstract 1
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 238000013522 software testing Methods 0.000 description 2
- 108091026890 Coding region Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
- G06F16/353—Clustering; Classification into predefined classes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Databases & Information Systems (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了如下技术方案,首先从源代码中提取图结构和抽象语法树结构;接着通过编码抽象语法树信息得到词向量序列作为双向循环神经网络的输入以学习源代码的语义特征并将得到的语义特征与传统静态特征结合作为图节点的状态向量表示;然后利用源代码完整的图表示预训练教师集成网络模型;最后通过知识蒸馏技术将知识从之前预训练完成的教师集成网络模型中提取出来并注入到学生集成网络模型中。本发明借助图神经网络的先进性和知识蒸馏技术的思想,相较现有技术,使得生成的学生集成网络模型能够实现更高的软件缺陷检测率,而且集成网络的设计保证了该模型的健壮性和鲁棒性。
Description
技术领域
本发明涉及一种基于图表示学习和知识蒸馏的半监督软件缺陷预测方法,属于软件工程中的软件分析及缺陷预测领域。
背景技术
软件缺陷预测技术从20世纪70年代发展至今,一直是软件工程领域最活跃的内容之一,在分析软件质量、平衡软件成本方面起着重要的作用。近些年,随着海量存储能力的可用性、高速互联网以及物联网等设备的出现,软件已经成为影响国民经济、政治、军事乃至社会生活的重要因素。与此同时,现代软件系统的规模和复杂性都在增长,使得缺陷隐藏得更深、更复杂、检测更具挑战性。因此,基于人工审查方式的传统软件测试方法不仅需要开发人员在测试或调试过程中投入更多的成本和精力,而且很难保证软件测试的及时性和准确性。在这种情况下,学者们提出了软件缺陷预测技术来帮助开发人员确定软件中是否存在可能的缺陷问题,指导开发人员将有限的软件质量保证资源集中于高风险缺陷模块。与软件缺陷预测的相关专利主要有:一种基于代码表示学习的即时软件缺陷预测方法(公开号CN 111858323);基于深度神经网络和概率决策森林的软件缺陷预测模型(公开号CN109446090);一种基于卷积神经网络的软件缺陷预测方法(公开号CN 108829607)等。
在之前的研究中,机器学习技术已广泛应用于软件的缺陷预测任务中,相关工作主要致力于设计并提取软件系统中的度量特征,例如用于度量代码复杂程度的McCabe度量特征,以此构建基于软件度量特征的预测分类模型。随着图神经网络在自然语言处理、推荐系统等诸多领域取得先进的性能,源代码在图上的表示和学习也得到了广泛的研究。2020年Wang等人通过图表示学习专注于源代码中的循环结构,通过构建区间图神经网络学习源代码在图上的表示,在一定程度上解决了图神经网络扩展到大图过程中的过平滑问题和消息传递策略导致的梯度消失问题,实验结果表明他们的工作有效提高了图神经网络在软件工程领域的工作性能。但是基于图神经网络的方法,由于消息传递策略和复杂的聚合操作等预测机制,导致始终无法充分利用基于结构和特征的先验知识,而基于结构和特征的先验知识在软件缺陷预测问题中往往十分重要,例如存在继承、调用等依赖关系的两个模块之间更加倾向于具有相同的类标签。
发明内容
本发明要解决的技术问题是提供一种基于图表示学习和知识蒸馏技术的半监督软件缺陷预测方法,本发明继承图神经网络的先进性,借助协同训练和知识蒸馏的思想解决监督学习中标签不足和图神经网络无法充分利用基于结构和特征的先验知识的问题。
本发明采用了以下技术方案:用于针对源代码进行软件缺陷预测;包括源代码的图表示学习方法以及基于知识蒸馏的半监督软件缺陷预测模型的构建方法;其中源代码的图表示学习方法步骤如下:
步骤A.选择预设数量的各类型源代码作为样本、并从源代码中提取抽象语法树结构和图结构,进而通过静态代码分析工具获得源代码中各个模块的静态特征作为图结构和树结构中节点的初始向量表示,然后进入步骤B;
步骤B.将抽象语法树结构进一步划分为语句级树输入Word2vec模型中编码为词向量,进而将词向量作为双向循环神经网络的输入学习得到源代码的语义特征,然后进入步骤C;
步骤C.将步骤B中学习得到的语义特征与步骤A中提取的传统静态特征拼接为新的节点状态向量,并进行特征降维以去除冗余特征和噪声得到模块对应节点的最终表示,然后进入步骤D;
步骤D.将步骤C中得到的最终节点表示嵌入到步骤A中提取的图结构中作为节点的初始状态向量。
基于知识蒸馏的半监督软件缺陷预测模型的构建,按照如下步骤I至步骤ⅣⅤ,实现通过知识蒸馏技术将知识从教师集成网络模型中提出并注入学生集成网络模型中,进而使训练后的学生网络模型实现更高效、准确的软件缺陷预测:
步骤Ⅰ.通过基于差异的协同训练算法仅利用少量类别标签预训练教师集成网络模型,预训练的终止条件为教师集成网络模型中的所有子分类器性能不再提升或有标签数据集不再扩充,达到终止条件进入步骤Ⅱ;
步骤Ⅱ.将教师集成网络中的子分类器与学生集成网络中的分支逐一匹配,进行第一次知识蒸馏以训练学生集成网络中分支的内部参数,然后进入步骤Ⅲ;
步骤Ⅲ.将教师集成网络中子分类器产生的软标签加权聚合作为教师集成网络模型的最终结果,将教师集成网络的最终结果与学生集成网络的最终结果进行第二次知识蒸馏以训练学生集成网络中各个分支的权重。
作为本发明的一种优选技术方案,所述步骤A中分别根据源代码的词法分析和控制流图提取源代码的抽象语法树结构和图结构,包括如下子步骤:
步骤A1.应用javalang工具将程序源代码解析为抽象语法树结构,并从中切分出函数节点;
步骤A2.应用第三方工具understand根据源代码的控制流图构建邻接矩阵以表征模块之间的依赖关系得到源代码的图结构;
步骤A3.应用代码静态分析工具提取图结构和抽象语法树结构中节点对应模块的静态特征对节点状态向量进行初始化。
作为本发明的一种优选技术方案,所述步骤B通过Word2vec模型和双向循环神经网络按照如下步骤B1至B3学习源代码的语义特征:
步骤B1.遍历步骤A1中得到的抽象语法树结构,并将所有用户定义的名称映射为固定名称,并通过预排序遍历将AST转化为节点序列,利用这种方法,我们提取函数级代码,去除冗余信息,保留完整的语法信息,这种算法在处理大量的程序时非常有效;
步骤B2.通过word2vec模型将步骤B1中得到的语句级树映射为它们的词向量序列表示以便直接由神经网络进行训练;
步骤B3.将步骤B2中得到的词向量序列输入双向循环神经网络进行训练,最终得到源代码语义特征的向量表示。
作为本发明的一种优选技术方案,所述步骤C并非将传统静态特征和步骤B3中学习到的语义特征进行简单的拼接,而是按照如下C1步骤至C2步骤执行,以达到保留重要特征信息的同时去除噪声和冗余特征从而提升数据处理速度的目的,具体子步骤如下:
步骤C1.将步骤A3中得到的传统静态特征与步骤B3中通过双向循环神经网络学习得到的指定维数的语义特征拼接成为一个新的向量表示;
步骤C2.应用SPSS软件对步骤C1中得到的向量表示进行数据标准化,接下来进行特征之间的相关性判定,然后设定主成分个数并根据主成分表达式执行执行主成分分析,最终得到降维后的特征向量作为节点的最终表示。
作为本发明的一种优选技术方案,所述步骤Ⅰ包括如下子步骤:
步骤Ⅰ1.将图节点划分两部分,分别为有标签数据集和无标签数据集;
步骤Ⅰ2.利用有标签数据集训练教师集成网络并利用训练完成的教师集成网络为无标签数据集中的节点标记伪标签;
步骤Ⅰ3.计算带有伪标签节点的置信度,将置信度高于预设阈值的节点加入有标签数据集,其对应的伪标签在下一次训练中作为真实标签,而置信度低于预设阈值的节点保留在无标签数据集中;
步骤Ⅰ4.重复步骤Ⅰ2和步骤Ⅰ3直到教师集成网络中所有子分类器的性能不再提升或有标签数据集不再扩充。
作为本发明的一种优选技术方案,所述步骤Ⅱ包括如下子步骤:
步骤Ⅱ1.将预训练完成的教师集成网络中的子分类器与学生集成网络中的分支逐一匹配;
步骤Ⅱ2.利用预训练完成的教师集成网络中的子分类器产生的软标签与学生集成网络z中各分支产生的软标签之间的差异进行第一蒸馏,蒸馏函数如下:
其中K是表示分支中层数的超参数,||||2是L2范数,Θ表示可训练参数的集合。
作为本发明的一种优选技术方案,所述步骤Ⅲ的具体子步骤如下:
步骤Ⅲ1.均值初始化学生集成网络模型中各分支的权重;
步骤Ⅲ2.插值聚合教师集成网络中各子分类的软标签作为教师集成网络模型生成的最终软标签,加权聚合学生集成网络中各分支的软标签作为学生集成网络模型生成的最终软标签;
步骤Ⅲ3.基于步骤Ⅲ2中得到的教师集成网络模型与学生集成网络模型生成的软标签之间的差异进行第二次集成知识蒸馏以训练各分支在学生集成网络模型中的权重,集成蒸馏函数表示如下:
LKD=LKL(SA,TA/T)+LMSE(SA,TA)
作为本发明的一种优选技术方案,所述教师集成网络模型由多种不同结构的图神经网络构成以利用源于先进图神经网络的知识并从不同角度学习来自不同子分类器的知识,所述学生集成网络中的分支结构为参数化标签传播算法和多层感知机的可训练组合以弥补图神经网络未能充分利用基于结构和特征的先验知识的不足。
本发明的有益效果为:
本技术方案聚焦于半监督软件缺陷预测问题,综合运用图表示学习和知识蒸馏技术,同时提高了半监督软件缺陷预测模型的准确率和效率。
本技术方案取得上述成果的技术原因有:1)传统的代码表示方法,无论是将代码模块视为孤立的节点或简单地将其作为自然语言处理都无法充分利用代码本身独特的特征,本发明通过提取代码的图结构并为图节点嵌入语义特征的方法更全面和充分地利用了代码中包含的信息;2)图神经网络在预测过程中由于消息传递策略和聚合操作等复杂的预测机制导致无法充分利用基于结构和特征的先验知识,本发明通过精心设计学生集成网络中分支的结构,用参数化标签传播算法和多层感知机的可训练组合包含了上述先验知识,并通过知识蒸馏技术将先验知识与图神经网络的先进性相结合,有效弥补了图神经网络的不足;3)单教师蒸馏方法中,学生模型过于依赖教师模型的性能,如果教师模型性能不佳则存在误导学生模型的风险,而传统多教师蒸馏方法尽管运用了多教师的知识,但简单的聚合操作会削弱不同教师之间的差异性,影响训练效果,本发明通过两次蒸馏,分别对学生集成网络中各个分支的内部参数和整体网络中各个分支的权重进行训练,更加充分和有效地利用了来自于多个教师的知识。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1是本方法的基于图表示学习和知识蒸馏技术的半监督软件缺陷预测方法的流程示意图。
图2是本方法实施例的提取语义特征方法的示意图。
图3是本方法实施例的预训练教师集成网络模型方法的示意图。
图4是本方法实施例的多教师蒸馏过程的框架示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细描述:
本发明实施例提供的基于图表示学习和知识蒸馏技术的半监督软件缺陷预测方法,该方法综合运用图表示学习和知识蒸馏技术,同时提高了半监督软件缺陷预测模型的准确率和效率。如图1和图2所示,本发明的具体实施方式如下:
步骤A.选择预设数量的各类型源代码作为样本、并从源代码中提取抽象语法树结构和图结构,进而通过静态代码分析工具获得源代码中各个模块的静态特征作为图结构和树结构中节点的初始向量表示,然后进入步骤B;
步骤A1.应用javalang工具将程序源代码解析为抽象语法树结构,并从中切分出函数节点;
步骤A2.应用第三方工具understand根据源代码的控制流图构建邻接矩阵以表征模块之间的依赖关系得到源代码的图结构;
步骤A3.应用代码静态分析工具提取图结构和抽象语法树结构中节点对应模块的静态特征对节点状态向量进行初始化;
在实际应用当中,由于程序代码不同于普通的自然语言文本,本发明必须将其设计成为语言模型能够识别的有效编码序列,因此继续执行如下步骤B。
步骤B.将抽象语法树结构进一步划分为语句级树输入Word2vec模型中编码为词向量,进而将词向量作为双向循环神经网络的输入学习得到源代码的语义特征,然后进入步骤C;
步骤B1.遍历步骤A1中得到的抽象语法树结构,并将所有用户定义的名称映射为固定名称,并通过预排序遍历将AST转化为节点序列,利用这种方法,我们提取函数级代码,去除冗余信息,保留完整的语法信息,这种算法在处理大量的程序时非常有效;
步骤B2.通过word2vec模型将步骤B1中得到的语句级树映射为它们的词向量序列表示以便直接由神经网络进行训练;
步骤B3.将步骤B2中得到的词向量序列输入双向循环神经网络进行训练,最终得到源代码语义特征的向量表示。
步骤C.将步骤B中学习得到的语义特征与步骤A中提取的传统静态特征拼接为新的节点状态向量,并进行特征降维以去除冗余特征和噪声得到模块对应节点的最终表示,然后进入步骤D;
步骤C1.将步骤A3中得到的传统静态特征与步骤B3中通过双向循环神经网络学习得到的指定维数的语义特征拼接成为一个新的向量表示;
步骤C2.应用SPSS软件对步骤C1中得到的向量表示进行数据标准化,接下来进行特征之间的相关性判定,然后设定主成分个数并根据主成分表达式执行执行主成分分析,最终得到降维后的特征向量作为节点的最终表示;
步骤D.将步骤C中得到的最终节点表示嵌入到步骤A中提取的图结构中作为节点的初始状态向量;
如图4所示,按照如下步骤Ⅰ至步骤Ⅲ执行两次蒸馏,实现将知识从教师集成网络模型中提取出来并注入到学生集成网络模型中的过程:
步骤Ⅰ.如图3所示,通过基于差异的协同训练算法仅利用少量类别标签预训练教师集成网络模型,预训练的终止条件为教师集成网络模型中的所有子分类器性能不再提升或有标签数据集不再扩充,达到终止条件进入步骤Ⅱ;
步骤Ⅰ1.将图节点划分两部分,分别为有标签数据集和无标签数据集;
步骤Ⅰ2.利用有标签数据集训练教师集成网络并利用训练完成的教师集成网络为无标签数据集中的节点标记伪标签;
步骤Ⅰ3.计算带有伪标签节点的置信度,将置信度高于预设阈值的节点加入有标签数据集,其对应的伪标签在下一次训练中作为真实标签,而置信度低于预设阈值的节点保留在无标签数据集中;
步骤Ⅰ4.重复步骤Ⅰ2和步骤Ⅰ3直到教师集成网络中所有子分类器的性能不再提升或有标签数据集不再扩充。
步骤Ⅱ.将教师集成网络中的子分类器与学生集成网络中的分支逐一匹配,进行第一次知识蒸馏以训练学生集成网络中分支的内部参数,然后进入步骤Ⅲ;
步骤Ⅱ1.将预训练完成的教师集成网络中的子分类器与学生集成网络中的分支逐一匹配;
步骤Ⅱ2.利用预训练完成的教师集成网络中的子分类器产生的软标签与学生集成网络z中各分支产生的软标签之间的差异进行第一蒸馏,蒸馏函数如下:
其中K是表示分支中层数的超参数,||||2是L2范数,Θ表示可训练参数的集合。
步骤Ⅲ.将教师集成网络中子分类器产生的软标签加权聚合作为教师集成网络模型的最终结果,将教师集成网络的最终结果与学生集成网络的最终结果进行第二次知识蒸馏以训练学生集成网络中各个分支的权重;
步骤Ⅲ1.均值初始化学生集成网络模型中各分支的权重;
步骤Ⅲ2.插值聚合教师集成网络中各子分类的软标签作为教师集成网络模型生成的最终软标签,加权聚合学生集成网络中各分支的软标签作为学生集成网络模型生成的最终软标签;
步骤Ⅲ3.基于步骤Ⅲ2中得到的教师集成网络模型与学生集成网络模型生成的软标签之间的差异进行第二次集成知识蒸馏以训练各分支在学生集成网络模型中的权重,集成蒸馏函数表示如下:
LKD=LKL(SA,TA/T)+LMSE(SA,TA)
上面结合附图对本发明的实施方式做了详细说明,但是本发明不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可在不脱离本发明宗旨的前提下做出各种变化。
Claims (10)
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中得到的语句级树映射为它们的词向量序列表示以便直接由神经网络进行训练;
步骤B3.将步骤B2中得到的词向量序列输入双向循环神经网络进行训练,最终得到源代码语义特征的向量表示。
6.根据权利要求2所述的基于图表示学习和知识蒸馏的半监督软件缺陷预测方法,其特征在于:所述步骤C包括如下子步骤:
步骤C1.将步骤A3中得到的传统静态特征与步骤B3中通过双向循环神经网络学习得到的指定维数的语义特征拼接成为一个新的向量表示;
步骤C2.应用SPSS软件对步骤C1中得到的向量表示进行数据标准化,接下来进行特征之间的相关性判定,然后设定主成分个数并根据主成分表达式执行主成分分析,最终得到降维后的特征向量作为节点的最终表示。
8.根据权利要求1所述的基于图表示学习和知识蒸馏的半监督软件缺陷预测方法,其特征在于,所述步骤Ⅰ包括如下子步骤:
步骤Ⅰ1.将图节点划分两部分,分别为有标签数据集和无标签数据集;
步骤Ⅰ2.利用有标签数据集训练教师集成网络并利用训练完成的教师集成网络为无标签数据集中的节点标记伪标签;
步骤Ⅰ3.计算带有伪标签节点的置信度,将置信度高于预设阈值的节点加入有标签数据集,其对应的伪标签在下一次训练中作为真实标签,而置信度低于预设阈值的节点保留在无标签数据集中;
步骤Ⅰ4.重复步骤Ⅰ2和步骤Ⅰ3直到教师集成网络中所有子分类器的性能不再提升或有标签数据集不再扩充。
10.根据权利要求1所述的基于图表示学习和知识蒸馏的半监督软件缺陷预测方法,其特征在于:所述步骤Ⅲ的具体子步骤如下:
步骤Ⅲ1.均值初始化学生集成网络模型中各分支的权重;
步骤Ⅲ2.插值聚合教师集成网络中各子分类的软标签作为教师集成网络模型生成的最终软标签,加权聚合学生集成网络中各分支的软标签作为学生集成网络模型生成的最终软标签;
步骤Ⅲ3.基于步骤Ⅲ2中得到的教师集成网络模型与学生集成网络模型生成的软标签之间的差异进行第二次集成知识蒸馏以训练各分支在学生集成网络模型中的权重,集成蒸馏函数表示如下:
LKD=LKL(SA,TA/T)+LMSE(SA,TA)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210979206.8A CN115328782A (zh) | 2022-08-16 | 2022-08-16 | 基于图表示学习和知识蒸馏的半监督软件缺陷预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210979206.8A CN115328782A (zh) | 2022-08-16 | 2022-08-16 | 基于图表示学习和知识蒸馏的半监督软件缺陷预测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115328782A true CN115328782A (zh) | 2022-11-11 |
Family
ID=83924510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210979206.8A Pending CN115328782A (zh) | 2022-08-16 | 2022-08-16 | 基于图表示学习和知识蒸馏的半监督软件缺陷预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115328782A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115629995A (zh) * | 2022-12-21 | 2023-01-20 | 中南大学 | 基于多依赖lstm的软件缺陷定位方法、系统及设备 |
CN117251376A (zh) * | 2023-10-09 | 2023-12-19 | 湖北大学 | 一种软件缺陷预测方法和系统 |
-
2022
- 2022-08-16 CN CN202210979206.8A patent/CN115328782A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115629995A (zh) * | 2022-12-21 | 2023-01-20 | 中南大学 | 基于多依赖lstm的软件缺陷定位方法、系统及设备 |
CN117251376A (zh) * | 2023-10-09 | 2023-12-19 | 湖北大学 | 一种软件缺陷预测方法和系统 |
CN117251376B (zh) * | 2023-10-09 | 2024-03-19 | 湖北大学 | 一种软件缺陷预测方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115328782A (zh) | 基于图表示学习和知识蒸馏的半监督软件缺陷预测方法 | |
CN109840322A (zh) | 一种基于强化学习的完形填空型阅读理解分析模型及方法 | |
CN113743119B (zh) | 中文命名实体识别模块、方法、装置及电子设备 | |
CN111930906A (zh) | 基于语义块的知识图谱问答方法及装置 | |
CN111651983B (zh) | 一种基于自训练与噪声模型的因果事件抽取方法 | |
CN115114409B (zh) | 一种基于软参数共享的民航不安全事件联合抽取方法 | |
CN117421595B (zh) | 一种基于深度学习技术的系统日志异常检测方法及系统 | |
CN116661805A (zh) | 代码表示的生成方法和装置、存储介质及电子设备 | |
CN116225760A (zh) | 一种基于运维知识图谱的实时根因分析方法 | |
CN117272142A (zh) | 一种日志异常检测方法、系统及电子设备 | |
CN117474010A (zh) | 面向电网语言模型的输变电设备缺陷语料库构建方法 | |
CN111553142A (zh) | 一种自然语言推理方法及系统 | |
CN110909174A (zh) | 一种基于知识图谱的简单问答中实体链接的改进方法 | |
CN112579777B (zh) | 一种未标注文本的半监督分类方法 | |
CN116680407A (zh) | 一种知识图谱的构建方法及装置 | |
CN112131879A (zh) | 一种关系抽取系统、方法和装置 | |
CN116578671A (zh) | 一种情感-原因对提取方法及装置 | |
CN114357160B (zh) | 基于生成传播结构特征的早期谣言检测方法及装置 | |
Lv et al. | Rumor detection based on time graph attention network | |
CN113988083B (zh) | 一种用于航运新闻摘要生成的事实性信息编码与评估方法 | |
CN115840884A (zh) | 样本选择方法、装置、设备及介质 | |
CN115422945A (zh) | 一种融合情感挖掘的谣言检测方法及系统 | |
CN114330350A (zh) | 一种命名实体识别方法、装置、电子设备及存储介质 | |
Wang et al. | End-to-end relation extraction using graph convolutional network with a novel entity attention | |
CN118132738B (zh) | 针对桥梁检评文本的抽取式问答方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |