CN110489348A - 一种基于迁移学习的软件功能缺陷挖掘方法 - Google Patents

一种基于迁移学习的软件功能缺陷挖掘方法 Download PDF

Info

Publication number
CN110489348A
CN110489348A CN201910783286.8A CN201910783286A CN110489348A CN 110489348 A CN110489348 A CN 110489348A CN 201910783286 A CN201910783286 A CN 201910783286A CN 110489348 A CN110489348 A CN 110489348A
Authority
CN
China
Prior art keywords
function
model
source code
code
cfrm
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.)
Granted
Application number
CN201910783286.8A
Other languages
English (en)
Other versions
CN110489348B (zh
Inventor
冯落落
李锐
于治楼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Inspur Scientific Research Institute Co Ltd
Original Assignee
Shandong Inspur Artificial Intelligence Research Institute Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Inspur Artificial Intelligence Research Institute Co Ltd filed Critical Shandong Inspur Artificial Intelligence Research Institute Co Ltd
Priority to CN201910783286.8A priority Critical patent/CN110489348B/zh
Publication of CN110489348A publication Critical patent/CN110489348A/zh
Application granted granted Critical
Publication of CN110489348B publication Critical patent/CN110489348B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • G06F16/353Clustering; Classification into predefined classes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • G06F16/355Class or cluster creation or modification
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Machine Translation (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种基于迁移学习的软件功能缺陷挖掘方法,涉及数据处理技术领域,包括训练部分和挖掘部分。在训练部分,首先利用开源源代码和开源源代码的文档解释产生一个text‑enriched代码功能空间,随后构建辅助AM模型和CFRM模型,辅助AM模型学习text‑enriched代码功能空间并产生特征映射函数,用text‑enriched代码功能空间和辅助AM模型产生的特征映射函数训练CFRM模型,CFRM模型捕捉开源源代码文档解释的关键词,并输出开源源代码的功能表示,即可完成CFRM模型的训练;在挖掘阶段,将需要进行软件功能缺陷挖掘的源代码输入CFRM模型,CFRM模型输出所述源代码的功能表示后输入分类器进行软件功能缺陷的挖掘。本方法可以高效快速的对目标项目进行软件功能缺陷的挖掘。

Description

一种基于迁移学习的软件功能缺陷挖掘方法
技术领域
本发明涉及数据处理技术领域,具体的说是一种基于迁移学习的软件功能缺陷挖掘方法。
背景技术
软件质量保证(SQA)在软件工程中扮演非常重要的角色,其中一个最大的影响因子是软件缺陷或者软件Bugs。已经有很多方法发现软件bugs,例如执行软件测试。最近,软件缺陷挖掘利用数据挖掘技术去帮助辨别软件缺陷,在减少软件测试资源方面已经展现出独有的优势,因此吸引了很大的关注度。
软件功能缺陷挖掘在软件质量维护中扮演着一个非常重要的角色。软件功能缺陷挖掘就是预测该代码是否能完成一定的功能。许多深度学习框架已经被用于软件功能缺陷预测任务,并且产生了非常好的性能。这些深度模型通常要求大量的源代码数据进行训练才能获得好的。但是这种要求在实践中很难被满足。另一方面,大量的开源代码和相应的文本解释可以从开源软件仓库中获得,这个对于构建代码功能模型是非常有用的。
许多方法已经被提出用于缺陷挖掘任务,最常用的方法对某个明确的挖掘任务设计人工特征,例如序列特征,AST特征,PDG特征,软件度量特征和此词带特征等。最近深度神经网络已经被用于处理软件缺陷挖掘任务,例如CNN用于从bug报告和源代码中学习一个统一的特征。这些深度学习模型在不同的软件缺陷挖掘的任务中都表现出非常优秀的性能。为了实现更好的性能,深度模型需要更多的训练数据。然而在缺陷挖掘任务中,获取足够多的训练数据和相应的数据标签是非常困难的。例如一个软件系统发布之后,需要很长一段时间用户才能发现软件中潜在bug,因此能被用于软件缺陷预测的bug报告是非常少的。因此,这些深度模型在实践中,可能无法像他们本来执行的效率那么好。另一方面,在开源的软件仓库(Stack Overflow)和讨论、共享源代码的技术论坛中,存在大量的源代码和对应的文本注释。这些数据是可以被获得的,但是没有被搜集和预处理为某一种软件挖掘任务使用。一个问题诞生了,是否可以利用这些数据帮助去完成软件缺陷挖掘任务。直观上,如果源代码的功能被正确用于建模,它将明显的决定代码是否像期望的一样进行工作(即是否包含软件缺陷)。因此关键是有效对源代码的功能进行建模,这种特征能被用到许多软件缺陷挖掘任务中从而更好的帮助挖掘缺陷。然而对于软件维护工程师来说,仅仅基于代码本身去决定源代码的功能是非常困难的。因为相似的源代码功能可以通过不同的方式进行实现,比如,有的源代码表面上看起来相似,但是实现的功能却不同,也有的源代码表面上看起来不相似,但是实现的功能却相同。
基于上述陈述,提出一种基于迁移学习的软件功能缺陷挖掘方法,利用CFRM(codefunctional representation model)模型在大量的开源代码仓库中学习一个好的代码功能表示,然后使用这个模型迁移到目标项目进行软件功能缺陷的挖掘任务。
发明内容
本发明针对目前技术发展的需求和不足之处,提供一种基于迁移学习的软件功能缺陷挖掘方法。
本发明的一种基于迁移学习的软件功能缺陷挖掘方法,解决上述技术问题采用的技术方案如下:
一种基于迁移学习的软件功能缺陷挖掘方法,该方法包括训练部分和挖掘部分;
在训练部分,首先利用开源源代码和开源源代码的文档解释产生一个text-enriched代码功能空间,随后构建辅助AM模型和CFRM模型,辅助AM模型学习text-enriched代码功能空间并产生特征映射函数,用text-enriched代码功能空间和辅助AM模型产生的特征映射函数训练CFRM模型,CFRM模型捕捉开源源代码文档解释的关键词,并输出开源源代码的功能表示,即可完成CFRM模型的训练;
在挖掘阶段,将需要进行软件功能缺陷挖掘的源代码输入CFRM模型,CFRM模型输出所述源代码的功能表示,且CFRM模型将所述源代码的功能表示输入分类器,分类器对软件功能缺陷进行挖掘,并输出挖掘结果0或1,0表示源代码不存在软件功能缺陷,1表示源代码存在软件功能缺陷。
在进行训练之前,首先从开源代码库获取大量的数据集,即text-code集合,用O={o1,o2,...,oN}表示数据集,
其中,oi={ci,ti},ci和ti分别表示第i个原生代码片段和对应的文本注释,N表示样本结合的大小。
在训练部分,利用开源源代码和开源源代码的文档解释产生一个text-enriched代码功能空间后,基于获取的数据集O={o1,o2,...,oN},辅助AM模型学习text-enriched代码功能空间,并产生一个特征映射函数φ(c,t);
在构建CFRM模型时,基于text-enriched代码功能空间,同时构建一个近似特征映射函数φ(c,t)的映射函数ψ(c,t),使得此时,映射函数ψ(c,t)可以捕捉开源源代码文档解释的关键词,并最终输出开源源代码的功能表示。
具体的,基于孪生卷积神经网络构建辅助AM模型,辅助AM模型的孪生卷积神经网络具有相同的卷积网络架构、相同的权重、不同的输入数据;
辅助AM模型学习text-enriched代码功能空间,并产生一个特征映射函数φ(c,t)后,从数据集O={o1,o2,...,oN}选取Oi、Oj任两组数据输入辅助AM模型的孪生卷积神经网络,辅助AM模型的孪生卷积神经网络分别进行特征提取,把提取的特征进行concate,接着与全连接层进行相连从而获取两个特征向量φ(ci,ti)和φ(cj,tj),随后通过全连接到输出层,最后通过sigmoid函数获得输出相似的概率。
更具体的,辅助AM模型学习text-enriched代码功能空间并产生一个特征映射函数φ(c,t)后,通过sigmoid函数获得输出相似的概率,从而将拥有相似功能的源代码被映射到相近的距离,拥有不相似功能的源代码被映射到相远的距离。
优选的,辅助AM模型学习产生特征映射函数φ(c,t)并将拥有相似功能的源代码被映射到相近的距离、拥有不相似功能的源代码被映射到相远的距离,具体操作为:
一)辅助AM模型学习一个预测函数其中yij表示一个输入对是否相似;
二)基于特征映射函数φ(c,t),获得两个特征向量φ(ci,ti)和φ(cj,tj)求距离L1,随后利用距离L1去加权输入对(oi,oj)的相关性,且输入对(oi,oj)相似的概率由f=σ(αT|φ(oi)-φ(oj)|)计算得到,其中,σ是sigmoid激活函数,α参数由公式(1)学习得到,
其中,L表示交叉熵损失函数,
Ω(f)是L2正则化项,L2正则化项就是对模型中的参数进行平方求和,
λ是平衡因子;
基于计算得到的输入对(oi,oj)的相似概率,进行相似功能源代码、不相似功能源代码的划分。
优选的,辅助AM模型学习产生特征映射函数φ(c,t)并将拥有相似功能的源代码被映射到相近的距离、拥有不相似功能的源代码被映射到相远的距离,这一过程中,
基于text-enriched代码功能空间,可以知道,相似源代码的数量通常远远小于不相似源代码的数量,因此,增加对相似代码错分的代价fn,同时,减小不相似代码错分的代价fp,并引入交叉熵损失函数L的公式(2):
其中,fn表示相似代码的错分的代价,fp表示不相似代码错分的代价,
f(oi,oj)表示Oi和Oj在功能空间的相似程度,
通过交叉熵损失函数L对映射过程进行优化。
更具体的,基于孪生卷积神经网络构建CFRM模型,随后用text-enriched代码功能空间和辅助AM模型产生的特征映射函数训练CFRM模型,这一过程包括:
1)首先,利用特征映射函数φ(c,t)和映射函数ψ(c,t)构造一个平方损失函数平方损失函数的公式(3)为:
其中,ci和ti分别表示第i个原生代码片段和对应的文本注释;
2)其次,基于引入交叉熵损失函数L’的公式(4):
其中,fn表示相似代码的错分的代价,fp表示不相似代码错分的代价,
g(ci,cj)表示ci和cj在功能空间的相似程度;
3)最后,基于公式(1)、(3)、(4),训练得到CFRM模型的目标函数公式(5):
表示平方损失函数,L’表示交叉熵损失函数,β、λ是平衡因子,
基于目标函数,在挖掘阶段将需要进行软件功能缺陷挖掘的源代码输入CFRM模型时,CFRM模型通过目标函数在开源代码库中查找与输入源代码相似的开源源代码文档解释的关键词,并最终输出开源源代码的功能表示。
具体的,在挖掘阶段,CFRM模型输出所述源代码的功能表示,且CFRM模型将所述源代码的功能表示输入分类器的具体操作为:
将CFRM模型的其中一个卷积神经网络连接到一个全连接层,接着是一个sigmoid分类层,sigmoid分类层用于判断输入CFRM模型的源代码是否含有功能缺陷,如果所述源代码有功能缺陷,则输出挖掘结果1,如果所述源代码没有功能缺陷,则输出挖掘结果0。
本发明的一种基于迁移学习的软件功能缺陷挖掘方法,与现有技术相比具有的有益效果是:
本发明的软件功能缺陷挖掘方法包括训练部分和挖掘部分,在训练部分,首先利用开源源代码和开源源代码的文档解释产生一个text-enriched代码功能空间,随后构建辅助AM模型和CFRM模型,辅助AM模型学习text-enriched代码功能空间并产生特征映射函数,用text-enriched代码功能空间和辅助AM模型产生的特征映射函数训练CFRM模型,CFRM模型捕捉开源源代码文档解释的关键词,并输出开源源代码的功能表示,即可完成CFRM模型的训练;在挖掘阶段,将需要进行软件功能缺陷挖掘的源代码输入CFRM模型,CFRM模型输出所述源代码的功能表示,且CFRM模型将所述源代码的功能表示输入分类器,分类器对软件功能缺陷进行挖掘,并输出挖掘结果0或1,0表示源代码不存在软件功能缺陷,1表示源代码存在软件功能缺陷;本软件功能缺陷挖掘方法可以高效快速的对目标项目进行软件功能缺陷的挖掘任务,且缺陷挖掘的形式不再局限于源代码段的表面书写语句。
具体实施方式
为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下获得的所有实施例,都在本发明的保护范围之内。
实施例一:
本实施例提出一种基于迁移学习的软件功能缺陷挖掘方法,该方法包括训练部分和挖掘部分;
在训练部分,首先利用开源源代码和开源源代码的文档解释产生一个text-enriched代码功能空间,随后构建辅助AM模型和CFRM模型,辅助AM模型学习text-enriched代码功能空间并产生特征映射函数,用text-enriched代码功能空间和辅助AM模型产生的特征映射函数训练CFRM模型,CFRM模型捕捉开源源代码文档解释的关键词,并输出开源源代码的功能表示,即可完成CFRM模型的训练;
在挖掘阶段,将需要进行软件功能缺陷挖掘的源代码输入CFRM模型,CFRM模型输出所述源代码的功能表示,且CFRM模型将所述源代码的功能表示输入分类器,分类器对软件功能缺陷进行挖掘,并输出挖掘结果0或1,0表示源代码不存在软件功能缺陷,1表示源代码存在软件功能缺陷。
在进行训练之前,首先从开源代码库获取大量的数据集,即text-code集合,用O={o1,o2,...,oN}表示数据集,
其中,oi={ci,ti},ci和ti分别表示第i个原生代码片段和对应的文本注释,N表示样本结合的大小。
在训练部分,利用开源源代码和开源源代码的文档解释产生一个text-enriched代码功能空间后,基于获取的数据集O={o1,o2,...,oN},辅助AM模型学习text-enriched代码功能空间,并产生一个特征映射函数φ(c,t);
在构建CFRM模型时,基于text-enriched代码功能空间,同时构建一个近似特征映射函数φ(c,t)的映射函数ψ(c,t),使得此时,映射函数ψ(c,t)可以捕捉开源源代码文档解释的关键词,并最终输出开源源代码的功能表示。
在本实施例中,基于孪生卷积神经网络构建辅助AM模型,辅助AM模型的孪生卷积神经网络具有相同的卷积网络架构、相同的权重、不同的输入数据;
辅助AM模型学习text-enriched代码功能空间,并产生一个特征映射函数φ(c,t)后,从数据集O={o1,o2,...,oN}选取Oi、Oj任两组数据输入辅助AM模型的孪生卷积神经网络,辅助AM模型的孪生卷积神经网络分别进行特征提取,把提取的特征进行concate,接着与全连接层进行相连从而获取两个特征向量φ(ci,ti)和φ(cj,tj),随后通过全连接到输出层,最后通过sigmoid函数获得输出相似的概率。
在本实施例中,辅助AM模型学习text-enriched代码功能空间并产生一个特征映射函数φ(c,t)后,通过sigmoid函数获得输出相似的概率,从而将拥有相似功能的源代码被映射到相近的距离,拥有不相似功能的源代码被映射到相远的距离。
在本实施例中,辅助AM模型学习产生特征映射函数φ(c,t)并将拥有相似功能的源代码被映射到相近的距离、拥有不相似功能的源代码被映射到相远的距离,具体操作为:
一)辅助AM模型学习一个预测函数其中yij表示一个输入对是否相似;
二)基于特征映射函数φ(c,t),获得两个特征向量φ(ci,ti)和φ(cj,tj)求距离L1,随后利用距离L1去加权输入对(oi,oj)的相关性,且输入对(oi,oj)相似的概率由f=σ(αT|φ(oi)-φ(oj)|)计算得到,其中,σ是sigmoid激活函数,α参数由公式(1)学习得到,
其中,L表示交叉熵损失函数,
Ω(f)是L2正则化项,L2正则化项就是对模型中的参数进行平方求和,
λ是平衡因子;
基于计算得到的输入对(oi,oj)的相似概率,进行相似功能源代码、不相似功能源代码的划分。
在本实施例中,辅助AM模型学习产生特征映射函数φ(c,t)并将拥有相似功能的源代码被映射到相近的距离、拥有不相似功能的源代码被映射到相远的距离,这一过程中,
基于text-enriched代码功能空间,可以知道,相似源代码的数量通常远远小于不相似源代码的数量,因此,增加对相似代码错分的代价fn,同时,减小不相似代码错分的代价fp,并引入交叉熵损失函数L的公式(2):
其中,fn表示相似代码的错分的代价,fp表示不相似代码错分的代价,
f(oi,oj)表示oi和Oj在功能空间的相似程度,
通过交叉熵损失函数L对映射过程进行优化。
在本实施例中,基于孪生卷积神经网络构建CFRM模型,随后用text-enriched代码功能空间和辅助AM模型产生的特征映射函数训练CFRM模型,这一过程包括:
1)首先,利用特征映射函数φ(c,t)和映射函数ψ(c,t)构造一个平方损失函数平方损失函数的公式(3)为:
其中,ci和ti分别表示第i个原生代码片段和对应的文本注释;
2)其次,基于引入交叉熵损失函数L’的公式(4):
其中,fn表示相似代码的错分的代价,fp表示不相似代码错分的代价,
g(ci,cj)表示ci和cj在功能空间的相似程度;
3)最后,基于公式(1)、(3)、(4),训练得到CFRM模型的目标函数公式(5):
表示平方损失函数,L’表示交叉熵损失函数,β、λ是平衡因子,
基于目标函数,在挖掘阶段将需要进行软件功能缺陷挖掘的源代码输入CFRM模型时,CFRM模型通过目标函数在开源代码库中查找与输入源代码相似的开源源代码文档解释的关键词,并最终输出开源源代码的功能表示。
在本实施例的挖掘阶段,CFRM模型输出所述源代码的功能表示,且CFRM模型将所述源代码的功能表示输入分类器的具体操作为:
将CFRM模型的其中一个卷积神经网络连接到一个全连接层,接着是一个sigmoid分类层,sigmoid分类层用于判断输入CFRM模型的源代码是否含有功能缺陷,如果所述源代码有功能缺陷,则输出挖掘结果1,如果所述源代码没有功能缺陷,则输出挖掘结果0。
综上可知,采用本发明的一种基于迁移学习的软件功能缺陷挖掘方法,可以高效快速的对目标项目进行软件功能缺陷的挖掘任务,且缺陷挖掘的形式不再局限于源代码段的表面书写语句。
以上应用具体个例对本发明的原理及实施方式进行了详细阐述,这些实施例只是用于帮助理解本发明的核心技术内容,并不用于限制本发明的保护范围,本发明的技术方案不限制于上述具体实施方式内。基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。

Claims (9)

1.一种基于迁移学习的软件功能缺陷挖掘方法,其特征在于,该方法包括训练部分和挖掘部分;
在训练部分,首先利用开源源代码和开源源代码的文档解释产生一个text-enriched代码功能空间,随后构建辅助AM模型和CFRM模型,辅助AM模型学习text-enriched代码功能空间并产生特征映射函数,用text-enriched代码功能空间和辅助AM模型产生的特征映射函数训练CFRM模型,CFRM模型捕捉开源源代码文档解释的关键词,并输出开源源代码的功能表示,即可完成CFRM模型的训练;
在挖掘阶段,将需要进行软件功能缺陷挖掘的源代码输入CFRM模型,CFRM模型输出所述源代码的功能表示,且CFRM模型将所述源代码的功能表示输入分类器,分类器对软件功能缺陷进行挖掘,并输出挖掘结果0或1,0表示源代码不存在软件功能缺陷,1表示源代码存在软件功能缺陷。
2.根据权利要求1所述的一种基于迁移学习的软件功能缺陷挖掘方法,其特征在于,在进行训练之前,首先从开源代码库获取大量的数据集,即text-code集合,用O={o1,o2,...,oN}表示数据集,
其中,oi={ci,ti},ci和ti分别表示第i个原生代码片段和对应的文本注释,N表示样本结合的大小。
3.根据权利要求2所述的一种基于迁移学习的软件功能缺陷挖掘方法,其特征在于,在训练部分,利用开源源代码和开源源代码的文档解释产生一个text-enriched代码功能空间后,基于获取的数据集O={o1,o2,...,oN},辅助AM模型学习text-enriched代码功能空间,并产生一个特征映射函数φ(c,t);
在构建CFRM模型时,基于text-enriched代码功能空间,同时构建一个近似特征映射函数φ(c,t)的映射函数ψ(c,t),使得此时,映射函数ψ(c,t)可以捕捉开源源代码文档解释的关键词,并最终输出开源源代码的功能表示。
4.根据权利要求3所述的一种基于迁移学习的软件功能缺陷挖掘方法,其特征在于,基于孪生卷积神经网络构建辅助AM模型,辅助AM模型的孪生卷积神经网络具有相同的卷积网络架构、相同的权重、不同的输入数据;
辅助AM模型学习text-enriched代码功能空间,并产生一个特征映射函数φ(c,t)后,从数据集O={o1,o2,...,oN}选取Oi、Oj任两组数据输入辅助AM模型的孪生卷积神经网络,辅助AM模型的孪生卷积神经网络分别进行特征提取,把提取的特征进行concate,接着与全连接层进行相连从而获取两个特征向量φ(ci,ti)和φ(cj,tj),随后通过全连接到输出层,最后通过sigmoid函数获得输出相似的概率。
5.根据权利要求4所述的一种基于迁移学习的软件功能缺陷挖掘方法,其特征在于,辅助AM模型学习text-enriched代码功能空间并产生一个特征映射函数φ(c,t)后,通过sigmoid函数获得输出相似的概率,从而将拥有相似功能的源代码被映射到相近的距离,拥有不相似功能的源代码被映射到相远的距离。
6.根据权利要求5所述的一种基于迁移学习的软件功能缺陷挖掘方法,其特征在于,辅助AM模型学习产生特征映射函数φ(c,t)并将拥有相似功能的源代码被映射到相近的距离、拥有不相似功能的源代码被映射到相远的距离,具体操作为:
一)辅助AM模型学习一个预测函数其中yij表示一个输入对是否相似;
二)基于特征映射函数φ(c,t),获得两个特征向量φ(ci,ti)和φ(cj,tj)求距离L1,随后利用距离L1去加权输入对(oi,oj)的相关性,且输入对(oi,oj)相似的概率由f=σ(αT|φ(oi)-φ(oj)|)计算得到,其中,σ是sigmoid激活函数,α参数由公式(1)学习得到,
其中,L表示交叉熵损失函数,
Ω(f)是L2正则化项,L2正则化项就是对模型中的参数进行平方求和,
λ是平衡因子;
基于计算得到的输入对(oi,oj)的相似概率,进行相似功能源代码、不相似功能源代码的划分。
7.根据权利要求6所述的一种基于迁移学习的软件功能缺陷挖掘方法,其特征在于,辅助AM模型学习产生特征映射函数φ(c,t)并将拥有相似功能的源代码被映射到相近的距离、拥有不相似功能的源代码被映射到相远的距离,这一过程中,
基于text-enriched代码功能空间,可以知道,相似源代码的数量通常远远小于不相似源代码的数量,因此,增加对相似代码错分的代价fn,同时,减小不相似代码错分的代价fp,并引入交叉熵损失函数L的公式(2):
其中,fn表示相似代码的错分的代价,fp表示不相似代码错分的代价,
f(oi,oj)表示oi和oj在功能空间的相似程度,
通过交叉熵损失函数L对映射过程进行优化。
8.根据权利要求7所述的一种基于迁移学习的软件功能缺陷挖掘方法,其特征在于,基于孪生卷积神经网络构建CFRM模型,随后用text-enriched代码功能空间和辅助AM模型产生的特征映射函数训练CFRM模型,这一过程包括:
1)首先,利用特征映射函数φ(c,t)和映射函数ψ(c,t)构造一个平方损失函数平方损失函数的公式(3)为:
其中,ci和ti分别表示第i个原生代码片段和对应的文本注释;
2)其次,基于引入交叉熵损失函数L’的公式(4):
其中,fn表示相似代码的错分的代价,fp表示不相似代码错分的代价,
g(ci,cj)表示ci和cj在功能空间的相似程度;
3)最后,基于公式(1)、(3)、(4),训练得到CFRM模型的目标函数公式(5):
表示平方损失函数,L’表示交叉熵损失函数,β、λ是平衡因子,
基于目标函数,在挖掘阶段将需要进行软件功能缺陷挖掘的源代码输入CFRM模型时,CFRM模型通过目标函数在开源代码库中查找与输入源代码相似的开源源代码文档解释的关键词,并最终输出开源源代码的功能表示。
9.根据权利要求8所述的一种基于迁移学习的软件功能缺陷挖掘方法,其特征在于,在挖掘阶段,CFRM模型输出所述源代码的功能表示,且CFRM模型将所述源代码的功能表示输入分类器的具体操作为:
将CFRM模型的其中一个卷积神经网络连接到一个全连接层,接着是一个sigmoid分类层,sigmoid分类层用于判断输入CFRM模型的源代码是否含有功能缺陷,如果所述源代码有功能缺陷,则输出挖掘结果1,如果所述源代码没有功能缺陷,则输出挖掘结果0。
CN201910783286.8A 2019-08-23 2019-08-23 一种基于迁移学习的软件功能缺陷挖掘方法 Active CN110489348B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910783286.8A CN110489348B (zh) 2019-08-23 2019-08-23 一种基于迁移学习的软件功能缺陷挖掘方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910783286.8A CN110489348B (zh) 2019-08-23 2019-08-23 一种基于迁移学习的软件功能缺陷挖掘方法

Publications (2)

Publication Number Publication Date
CN110489348A true CN110489348A (zh) 2019-11-22
CN110489348B CN110489348B (zh) 2023-08-25

Family

ID=68553177

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910783286.8A Active CN110489348B (zh) 2019-08-23 2019-08-23 一种基于迁移学习的软件功能缺陷挖掘方法

Country Status (1)

Country Link
CN (1) CN110489348B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111292801A (zh) * 2020-01-21 2020-06-16 西湖大学 蛋白质质谱结合深度学习评估甲状腺结节的方法
CN112035345A (zh) * 2020-08-20 2020-12-04 国家电网有限公司信息通信分公司 一种基于代码片段分析的混合深度缺陷预测方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108446711A (zh) * 2018-02-01 2018-08-24 南京邮电大学 一种基于迁移学习的软件缺陷预测方法
CN108829607A (zh) * 2018-07-09 2018-11-16 华南理工大学 一种基于卷积神经网络的软件缺陷预测方法
CN109726120A (zh) * 2018-12-05 2019-05-07 北京计算机技术及应用研究所 一种基于机器学习的软件缺陷确认方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108446711A (zh) * 2018-02-01 2018-08-24 南京邮电大学 一种基于迁移学习的软件缺陷预测方法
CN108829607A (zh) * 2018-07-09 2018-11-16 华南理工大学 一种基于卷积神经网络的软件缺陷预测方法
CN109726120A (zh) * 2018-12-05 2019-05-07 北京计算机技术及应用研究所 一种基于机器学习的软件缺陷确认方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111292801A (zh) * 2020-01-21 2020-06-16 西湖大学 蛋白质质谱结合深度学习评估甲状腺结节的方法
CN112035345A (zh) * 2020-08-20 2020-12-04 国家电网有限公司信息通信分公司 一种基于代码片段分析的混合深度缺陷预测方法

Also Published As

Publication number Publication date
CN110489348B (zh) 2023-08-25

Similar Documents

Publication Publication Date Title
CN111159454A (zh) 基于Actor-Critic生成式对抗网络的图片描述生成方法及系统
CN104699766A (zh) 一种融合词语关联关系和上下文语境推断的隐式属性挖掘方法
CN110826303A (zh) 一种基于弱监督学习的联合信息抽取方法
CN113806746B (zh) 基于改进cnn网络的恶意代码检测方法
CN105893208A (zh) 基于隐半马尔可夫模型的云计算平台系统故障预测方法
CN112560036B (zh) 一种基于神经网络与深度学习的c/c++漏洞静态检测方法
CN113157919B (zh) 语句文本方面级情感分类方法及系统
CN114816497B (zh) 基于bert预训练模型的链接生成方法
Zhang et al. Dualgraph: A graph-based method for reasoning about label noise
CN108319518B (zh) 基于循环神经网络的文件碎片分类方法及装置
CN113393474A (zh) 一种基于特征融合的三维点云的分类和分割方法
CN110489348A (zh) 一种基于迁移学习的软件功能缺陷挖掘方法
CN105656692B (zh) 无线传感网络中基于多示例多标记学习的区域监测方法
CN108920446A (zh) 一种工程文本的处理方法
CN117236677A (zh) 一种基于事件抽取的rpa流程挖掘方法及装置
CN116108215A (zh) 基于深度融合的跨模态大数据检索方法及系统
Rao et al. Dual projective zero-shot learning using text descriptions
CN113255360A (zh) 基于层次化自注意力网络的文档评级方法和装置
CN113222002A (zh) 一种基于生成式鉴别性对比优化的零样本分类方法
CN117176382A (zh) 一种基于融合序列的远控木马流量检测方法
Guan et al. GAMA: A multi-graph-based anomaly detection framework for business processes via graph neural networks
Li et al. Adaptive graph convolutional networks with attention mechanism for relation extraction
CN111723208B (zh) 基于条件分类树的法律判决文书多分类方法、装置和终端
Shoukat et al. A late fusion framework with multiple optimization methods for media interestingness
Ge et al. A modified artificial immune network for feature extracting

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20230802

Address after: 250100 building S02, No. 1036, Langchao Road, high tech Zone, Jinan City, Shandong Province

Applicant after: Shandong Inspur Scientific Research Institute Co.,Ltd.

Address before: North 6th floor, S05 building, Langchao Science Park, 1036 Langchao Road, hi tech Zone, Jinan City, Shandong Province, 250100

Applicant before: SHANDONG INSPUR ARTIFICIAL INTELLIGENCE RESEARCH INSTITUTE Co.,Ltd.

GR01 Patent grant
GR01 Patent grant