CN119442246A 基于预训练代码语言模型和卷积神经网络的漏洞检测方法 (华南理工大学)_第1页
CN119442246A 基于预训练代码语言模型和卷积神经网络的漏洞检测方法 (华南理工大学)_第2页
CN119442246A 基于预训练代码语言模型和卷积神经网络的漏洞检测方法 (华南理工大学)_第3页
CN119442246A 基于预训练代码语言模型和卷积神经网络的漏洞检测方法 (华南理工大学)_第4页
CN119442246A 基于预训练代码语言模型和卷积神经网络的漏洞检测方法 (华南理工大学)_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于预训练代码语言模型和卷积神经网络练代码语言模型和卷积神经网络的漏洞检测方模型训练数据集的源代码获取数据传播链和代基于预训练代码语言模型和卷积神经网络的漏洞检测模型,采用了数据传播链和代码token序2S3、构建基于预训练代码语言模型和卷积神经网S4、将待检测的源代码进行预处理得到源代码对应2.根据权利要求1所述的基于预训练代码语言模型和卷积神经网络的漏洞检测方法,3.根据权利要求1所述的基于预训练代码语言模型和卷积神经网络的漏洞检测方法,采用Tree_sitter工具将源代码转换成抽象语法树,标记AST的叶子结对于变量集合V中的每个变量构造有向的边表示变量之间的传播采用预训练代码语言模型GraphCodeBERT中的BPE序列化工具对源代码进行token序列4.根据权利要求3所述的基于预训练代码语言模型和卷积神经网络的漏洞检测方法,GraphCodeBERT对长序列I进行嵌入,将长序列I转换成向量得到嵌入向量源代码对应的嵌5.根据权利要求4所述的基于预训练代码语言模型和卷积神经网络的漏洞检测方法,所述预训练代码语言模型模块为预训练代码语言模型GraphCodeBERT,预训练代码语言模型GraphCodeBERT包括12层的TransformerEncoder层,每层的TransformerEncoder在结构上包括前馈神经网络和掩码多头注意力机制;预训练代码语言模型GraphCodeBERT3所述卷积神经网络模块包括输入层、隐藏层和输出层,其中隐藏层练代码语言模型GraphCodeBERT的输出,输出层连接全连接层并输出1维的向量,通过6.根据权利要求5所述的基于预训练代码语言模型和卷积神经网络的漏洞检测方法,其中x对应Net_Block小网络层输出的张量7.根据权利要求6所述的基于预训练代码语言模型和卷积神经网络的漏洞检测方法,8.根据权利要求7所述的基于预训练代码语言模型和卷积神经网络的漏洞检测方法,从待检测的源代码中提取出数据传播链和token序列,对数据传播链和to嵌入得到源代码对应的嵌入向量,将源代码对应的嵌入向量输入到训练好的漏洞检测模4链和token序列进行嵌入得到源代码对应5[0014]采用Tree_sitter工具将源代码转换成抽象语法树,标记A[0017]以初始节点集合InitVars的每个变量作为初始节点,根据边关系集合E执行广度[0018]采用预训练代码语言模型GraphCodeBERT中的BPE序列化工具对源代码进行token[0020]将数据传播链和token序列连接成一个长序列I,通过预训练代码语言模型GraphCodeBERT对长序列I进行嵌入,将长序列I转换成向量得到嵌入向量源代码对应的嵌[0022]所述预训练代码语言模型模块为预训练代码语言模型GraphCodeBERT,预训练代码语言模型GraphCodeBERT包括12层的TransformerEncoder层,每层的TransformerEncoder在结构上包括前馈神经网络和掩码多头注意力机制;预训练代码语言模型GraphCodeBERT采用数据传播链和代层的TransformerEncoder层后输6代码提取出数据传播链和源代码token序列作为代码表示,数据传播链代表了源代码的结[0032]通过构建漏洞检测模型,预训练代码语言模型GraphCodeBERT作为漏洞检测模型的第一个模块,预训练代码语言模型中使用了基于图引导的注意力掩码机制,能够让够从预训练代码语言模型GraphCodeBERT输出的隐藏层状态中捕获到更多的上下文信息和[0034]图1是本发明实施例中的基于预训练代码语言模型和卷积神经网络的漏洞检测方7用了数据传播链和代码token序列作为模型输入,结合了预训练代码语言模型和卷积神经[0042]如图1所示,本发明提出的基于预训练代码语言模型和卷积神经网络的漏洞检测世界收集而非自动合成的漏洞数据集,它从LinuxDebianKernel和Chromium这两个开源转换成抽象语法树,标记AST的叶子结点的位置,并且组成变量集合V,记为V={x1,y2,_sitter工具是一款主要通过Rust编写的跨平台的代码解析器生成工具和增量解析库。对于变量集合V中的每个变量构造有向的边表示变量之间的2为起8练好的BytePairEncoding(BPE)序列化工具对源代码进行token序列化得到token序列,得到的token序列记为c=fc1,cz,…,cno"token"指的是文本中的一个基本单位,这个单滤token序列中的只有单个字符组成且非变量的token。以图2中的源代码为例,其对应的[0051]S23、将数据传播链和token序列连接成一个长序列I,通过预训练代码语言模型GraphCodeBERT对长序列I进行嵌入,将长序列I转换成向量得到嵌入向量源代码对应的嵌[0053]利用了预训练代码过预训练代码语言模型模块进行处理,然后再使用Sigmoid激活代码语言模型模块为预训练代码语言模型GraphCodeBERT,预训练代码语言模型GraphCodeBERT包括12层的TransformerEncoder(编码器)层,每层的Transformer[0058]其中,这个公式(1)代表嵌套的12层transformerencoder计算,每一层9表12层transformerencoder针对输入向量进行学习而得到[0059]由于预训练代码语言模型GraphCodeBERT在12层的TransformerEncoder的学习层之间依次连接,卷积神经网络模块的输入层连接预训练代码语言模型GraphCodeBERT的体得采用GraphCodeBERT中最后一层Transformer的隐藏层连接的输出H12作为卷积神经网别为(4×1)和(3×1)。多层的Net_Block有助于更多的上下文语义信息融入到每个嵌入位置,在加深Net_Block层数的同时使用了跳跃连接以便规避由于网络层加深和梯度消失而出还会经过另一个最大池化层,这个最大池化层的卷积核大小为(x×1),其中x对应Net_Block层输出的张量的第三维度的大小。最后通过全连接层输出1维的向量O,并且使用作为代码表示输入到检测模型。采用预训练代码语言模型GraphCodeBERT学习数据传播链测模型能学习到更加全面的代码特征。由于GraphCodeBERT具有六种编程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论