System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种通过强化学习增强基于提示学习的漏洞检测方法技术_技高网
当前位置: 首页 > 专利查询>南通大学专利>正文

一种通过强化学习增强基于提示学习的漏洞检测方法技术

技术编号:41224375 阅读:4 留言:0更新日期:2024-05-09 23:43
本发明专利技术提供了一种通过强化学习增强基于提示学习的漏洞检测方法,属于智能软件工程技术领域。解决了现有深度学习模型在理解源代码的语义和语法能力的限制,以及微调预训练模型在大数据集上性能提升较低的技术问题。其技术方案为:包括两个部分:通过采用CodeBERT预训练模型从源代码中提取语义和语法信息,结合提示学习的方法,将预训练模型的预先知识快速应用到漏洞检测任务上,同时结合奖励机制,提升模型在大数据样本下的性能。本发明专利技术的有益效果为:可以提高软件漏洞检测的有效性。

【技术实现步骤摘要】

本专利技术涉及智能软件工程,具体涉及一种通过强化学习增强基于提示学习的漏洞检测方法


技术介绍

1、随着信息技术的不断发展,计算机软件已经逐渐成为支撑社会运行的关键基础设施,在现代社会中发挥着重要作用。然而,随着软件行业的繁荣,软件安全问题愈发突出,恶意攻击者时常寻找并利用系统和应用程序中的漏洞,以获取非法访问权限、窃取敏感信息或破坏关键系统等。因此,高效的软件漏洞检测技术能够快速寻找代码中漏洞信息,对于提高软件质量、保障信息安全具有重要意义。

2、尽管现有的机器学习和深度学习模型在软件漏洞检测领域取得了一定的成果,但它们仍面临一些挑战。首先,由于代码语义的复杂性,这些模型往往难以准确理解代码本身的语义信息。其次,训练这些模型需要大量的时间和资源,增加了检测的开销。

3、近年来,基于预训练模型的方法逐渐受到关注。这种方法利用预先训练过的知识直接作用于特定任务,使模型能够更好地理解代码的复杂结构和语义信息。因此采用基于预训练模型的方法有望解决软件漏洞检测的问题。


技术实现思路

1、本专利技术的目的在于提供一种通过强化学习增强基于提示学习的漏洞检测方法,该方法可以根据预训练模型的预先知识来进行漏洞检测。

2、本专利技术的思想为:本专利技术提出一种漏洞检测方法,通过强化学习增强基于提示学习的技术,以提高预测准确性。方法包括结合强化学习的奖励机制和提示学习,构建提示模板并将其与源代码结合,形成新的输入。利用codebert模型中的编码器将该输入转化为新的向量。在搭建codebert模型后,将向量输入模型,并结合奖励机制实施奖励函数。根据模型的预测结果生成奖励信号。通过自定义的反馈函数,将奖励信号反馈给神经网络模型,进一步提高漏洞检测的能力。通过定制奖励机制和反馈函数,增强了模型在漏洞检测方面的性能。

3、本专利技术是通过如下措施实现的,技术方案为具体:一种通过强化学习增强基于提示学习的漏洞检测方法,其中,包括以下步骤:

4、(1)从相关网站收集对应数据,构建漏洞检测的数据集,具体处理操作包括如下步骤:

5、(1-1)首先从相应的开源网站获取软件项目集合。

6、(1-2)以项目类为基准构建实例集合。

7、(2)对数据集进行预处理,根据自定义噪声过滤规则采用正则表达式对代码进行删除,生成新的数据集。具体处理操作包括如下步骤:

8、(2-1)由于transformer架构的模型对输入内容长度存在一定限制。因此对每个源项目进行分析,寻找其中可能影响模型性能的元素。

9、(2-2)将寻找到影响输入内容长度的元素进一步筛选,这一步目的是为了保证代码处理后与未处理时的一致性。处理过后的代码依旧与源代码语义一致。

10、(2-3)将筛选后的元素定义为噪声,同时根据正则表达式将代码中的噪声删除,生成新的数据集。

11、(3)将新的数据集和外部知识进行融合,构成提示学习的方法。通过codebert编码器将两者的结合转化成向量集合。具体处理操作包括如下步骤:

12、(3-1)通过提示学习方法,借用外部知识与源代码结合,该方法可以快速调用预训练模型的预先知识,同时可以减缓模型的遗忘性。

13、(3-2)在嵌入层部分对输入序列进行编码。首先,将每个词映射到一个唯一的编码,通过嵌入矩阵将编码转为一个密集的连续向量表示。这个过程将原始的离散文本映射到了连续的向量空间,形成嵌入序列。

14、(3-3)在codebert编码器中,嵌入序列首先通过多头注意力机制进行处理。该机制允许模型同时关注输入序列的不同方面,从而更好地捕捉复杂的语义关系。通过计算每个位置的注意力权重,模型能够深入理解序列中不同位置之间的关联性。接下来,执行查询、键、值的线性变换,进一步增强模型对序列的理解能力。经过多头注意力的输出结果,再经过融合和额外的线性变化,最终形成一系列的输出向量。这些输出向量集合能够全面地表示输入序列的语义信息。当前输出形成了一个向量集合。

15、(4)得到对应向量集后,构建一个codebert模型,用以挖掘源码中更深层次的结构,同时进行预测。具体处理操作包括如下步骤:

16、(4-1)获取预训练模型,codebert通常是在大规模代码语料库上进行训练的,从codebert的官方资源中获取预训练好的模型权重文件。并将权重文件配置到模型中。

17、(4-2)加载模型,利用transformers库,加载预训练的codebert模型。并将创建一个可供推理和特征提取的模型实例。

18、(4-3)特征提取,利用加载的codebert模型对已经构建好的向量集合提取模型的中间层特征表示,这是让模型对输入产生进一步的理解。

19、(4-4)应用特定任务中,在第三阶段已经将提示学习融入到输入部分,可以对其直接进行预测。模型利用预先训练的知识来预测输入内的掩蔽位置。然后通过描述器的定义将预测结果映射到标签。

20、(5)对预测标签进行反馈,构建奖励机制,反向传播,保证最终的预测准确性。具体处理操作包括如下步骤:

21、(5-1)预测标签生成后,根据这些标签构建奖励机制,其目的为了让模型可以加强学习预测错误的类别。奖励机制的想法来自于强化学习中的奖励方法。将预测生成的标签与原标签进行对比,若预测结果相同给定奖励,若预测结果相反给定惩罚。同时根据奖励函数制定相应的反向传播函数。基于上述步骤,生成最终的预测结果。

22、与现有技术相比,本专利技术的有益效果为:

23、1、本专利技术采用提示学习方法,将预训练模型中的预先知识快速应用于漏洞检测任务,从而提高了检测效率和准确性。

24、2、通过结合强化学习思想,本专利技术能够适应不同数据量场景下的漏洞检测任务,进一步提升了方法的通用性和鲁棒性。

25、3、此外,多组实验证明,本专利技术提出的方法在现有数据集上具有显著的有效性,为漏洞检测领域的发展做出了积极贡献。

本文档来自技高网...

【技术保护点】

1.一种通过强化学习增强基于提示学习的漏洞检测方法,主要包括以下步骤:

2.根据权利要求1所述的通过强化学习增强基于提示学习的漏洞检测方法,其特征在于,所述步骤1.1中构建漏洞检查数据集,包括如下步骤:

3.根据权利要求1所述的通过强化学习增强基于提示学习的漏洞检测方法,其特征在于所述步骤1.2中对构建的粗糙数据集进行预处理,包括如下步骤:

4.根据权利要求1所述的通过强化学习增强基于提示学习的漏洞检测方法,其特征在于,所述步骤1.3中构建和组合提示模板,将源代码和提示模板同时输入到模型中,包括如下步骤:

5.根据权利要求1所述的通过强化学习增强基于提示学习的漏洞检测方法,其特征在于,所述步骤1.4中构建一个CodeBERT的预训练模型,模型是由12层的Transformer编码器构成,其中每一层包含了多头注意力和前馈神经网络,用以挖掘更深层次的语义结构,包括如下步骤:

6.根据权利要求1所述的通过强化学习增强基于提示学习的漏洞检测方法,其特征在于,所述步骤1.5中构建基于奖励机制的检测方法,包括如下步骤:

7.根据权利要求1所述的通过强化学习增强基于提示学习的漏洞检测方法,其特征在于,该方法利用编码器从源代码提取语义特征信息,并采用提示学习与奖励机制让预先知识快速应用到任务中,同时学习到更多漏洞特征用于提升模型性能。

...

【技术特征摘要】

1.一种通过强化学习增强基于提示学习的漏洞检测方法,主要包括以下步骤:

2.根据权利要求1所述的通过强化学习增强基于提示学习的漏洞检测方法,其特征在于,所述步骤1.1中构建漏洞检查数据集,包括如下步骤:

3.根据权利要求1所述的通过强化学习增强基于提示学习的漏洞检测方法,其特征在于所述步骤1.2中对构建的粗糙数据集进行预处理,包括如下步骤:

4.根据权利要求1所述的通过强化学习增强基于提示学习的漏洞检测方法,其特征在于,所述步骤1.3中构建和组合提示模板,将源代码和提示模板同时输入到模型中,包括如下步骤:

5.根据权利要求1所述的通过强化学习增强基于...

【专利技术属性】
技术研发人员:鞠小林任子龙陈翔沈昊徐慧高瞻
申请(专利权)人:南通大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1