[发明专利]一种基于RvNN+Transformer神经网络模型的代码语义克隆检测方法在审

专利信息
申请号: 202210052857.2 申请日: 2022-01-18
公开(公告)号: CN114398079A 公开(公告)日: 2022-04-26
发明(设计)人: 陈昊亮;高红雨;苏航 申请(专利权)人: 北京工业大学
主分类号: G06F8/75 分类号: G06F8/75;G06F8/41;G06N3/04
代理公司: 北京思海天达知识产权代理有限公司 11203 代理人: 沈波
地址: 100124 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 rvnn transformer 神经网络 模型 代码 语义 克隆 检测 方法
【权利要求书】:

1.一种基于RvNN+Transformer神经网络模型的代码语义克隆检测方法,其特征在于,该方法具体包括以下流程:

步骤1、代码的预处理;一个代码完整的抽象语法树如果直接输入模型可能会出现梯度消失的问题,所以需要先进行拆分,可以把抽象语法树分割成一组语句树,对于有嵌套结构的语句可以把它的花括号内的代码分割出来;然后把每个语句树按顺序存储到本地,语句树是以多级数组的形式存储,第一级的值是第二级的父节点;

步骤2、代码的预训练;由于深度学习模型必须要传入向量,所以需要先把代码的每个token转化为向量;利用Word2vec的Skip-Gram模型对数据集中代码的所有token进行训练,生成每个token对应的词向量;词向量的维度d为128;

步骤3、建立神经网络模型,由RvNN语句树编码层,Transformer-encoder层和最大池化层组成;

为了训练得到语句树上的结构信息,所以需要将语句树自底向上的输入到RvNN模型中;具体转化过程如下:

对一个代码的语句树进行深度优先遍历并借助训练好的Skip-Gram模型将各个节点值转化为d维向量Vi;然后对语句树中各节点对应向量公式(1)进行更新,从而使其包含子节点信息;

其中,vn表示节点n对应的向量,为权重矩阵,k为编码维度,C为节点n对应的子节点数量,bn为偏差,hi为子节点i更新后的向量,σ为激活函数;

为获得节点向量中最重要的特征,在完成对各节点的向量更新后,使用公式(2)对语句树的所有结点向量hi进行最大池化,以获取语句树的最终向量表示;

et=[max(hi1),…,max(hik)],i=1,…,N (2)

其中,N为语句树的节点数量;

最终一个代码完整的抽象语法树表示为[e1,…,ei,…,et],i∈[1,t];其中t表示语句树的数量;

由于代码的顺序信息也很重要,所以需要Transformer-encoder模型训练代码各个语句树之间的顺序信息;Transformer-encoder模型需要使用带有相对位置信息的注意力计算得分公式,公式如下:

Att(Q,K,V)=softmax(Arel)V (6)

其中,H是输入的语句树向量e和位置编码的和,维度为dk,Q,V是向量H通过对应的矩阵W映射得到的;K为了增强输入向量H的信息,所以不用矩阵映射;输入向量t是目标token索引,j是上下文token索引,表示第i个token和第j个token的相似度,u和v是可学习参数,Rt-j是相对位置编码;将A矩阵经过softmax进行归一化,再乘上V就得到最终表示;

通过Transformer-encoder层变化的语句向量再经过最大池化获取最终的代码表示r;公式如下:

r=[max(V1),…,max(Vi)],i=1,…,N (7)

其中,N表示一个语句树对应的节点总数;

步骤4、设计Siamese架构进行代码语义克隆检测,具体包括:给定的两个代码转换为两个语句树集合作为输入,再把每个语句树自底向上传入到RvNN模型中;然后通过步骤3设计的模型输出最终的向量表示,计算两个代码向量距离来辨别两个代码是否克隆。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京工业大学,未经北京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202210052857.2/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top