[发明专利]一种基于神经网络语言模型的代码分类方法有效
申请号: | 201710426179.0 | 申请日: | 2017-06-08 |
公开(公告)号: | CN107220180B | 公开(公告)日: | 2020-08-04 |
发明(设计)人: | 屈鸿;杨林川;涂强;张书州;王淼;颜志鹏;王一鸣 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F16/35;G06N3/08 |
代理公司: | 成都弘毅天承知识产权代理有限公司 51230 | 代理人: | 徐金琼;刘东 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 神经网络 语言 模型 代码 分类 方法 | ||
1.一种基于神经网络语言模型的代码分类方法,其特征在于:包括以下步骤:
步骤1:将代码转换为AST树;
步骤2:初始化AST树结点ci的向量vec(ci),所述结点ci中非叶子结点pk的向量为vec(pk)1,所述非叶子结点pk的孩子结点tx的向量为vec(tx),其中vec(pk)1∈vec(ci),vec(tx)∈vec(ci),其中i表示结点的序号,k表示非叶子结点的序号,x表示孩子结点的序号;
步骤3:利用所述孩子结点tx的向量vec(tx),得到所述非叶子结点pk的重构向量vec(pk)2;
步骤4:利用AST_Node2Vec模型对所述结点向量vec(ci)进行学习,若不满足循环条件,则更新结点向量vec(ci),跳转到步骤3;若满足循环条件,则输出更新了结点向量vec(ci)的AST树和更新后的非叶子结点pk的重构向量vec(pk)2;
利用AST_Node2Vec模型对所述结点向量vec(ci)进行学习的步骤如下:
S401:计算非叶子结点pk的向量vec(pk)1和重构向量vec(pk)2之间的差异值,计算公式如下为:
S402:对AST树中的结点进行负采样,得到Y个训练样例和Y个由训练样例产生的负样例,训练样例与负样例的损失函数的计算公式如下:
其中,d(y)表示第y个训练样例的差异值,表示第y个负样例的差异值,Δ表示设定的训练样例与负样例之间间距的最小值;
S403:对AST_Node2Vec模型的参数进行正则化,得到的目标函数公式如下:
其中,M表示矩阵Wl和Wr中元素的个数且λ表示为了平衡编码误差和正则化项的超参数;
S404:对所述目标函数使用随机梯度下降算法,使模型的参数得到调整,其中参数的更新公式如下:
其中,vec(ci)j表示结点向量vec(ci)中的元素,表示矩阵Wr中的元素,表示矩阵Wl中的元素,j表示维度;
步骤5:将更新了结点向量vec(ci)的AST树和更新后的非叶子结点pk的重构向量vec(pk)2作为基于树的卷积神经网络的输入,利用基于树的卷积神经网络完成对代码的分类。
2.根据权利要求1所述的一种基于神经网络语言模型的代码分类方法,其特征在于:所述步骤2中,AST树的结点向量vec(ci)的初始化的方法为给所述AST树中的结点分别分配一个随机值向量。
3.根据权利要求1所述的一种基于神经网络语言模型的代码分类方法,其特征在于:所述步骤3中,非叶子结点pk的重构向量vec(pk)2的计算步骤如下:
其中,n表示结点的个数,b表示大小为的偏置项;lx表示孩子结点的权重,a代表孩子结点下的叶子数,e代表非叶子结点pk下的叶子数;Wx表示孩子结点与非叶子结点pk间的连接矩阵且Nf表示向量的维度,Wl、Wr为参数矩阵。
4.根据权利要求1所述的一种基于神经网络语言模型的代码分类方法,其特征在于:利用所述基于树的卷积神经网络完成对代码的分类的具体步骤如下:
S501:将更新了结点向量vec(ci)的AST树和更新后的非叶子结点pk的重构向量vec(pk)2作为基于树的卷积神经网络中编码层的输入,利用所述非叶子结点pk的向量vec(pk)1和重构向量vec(pk)2计算非叶子结点pk的线性组合向量vec(pk),计算公式如下:
vec(pk)=Wcomb1·vec(pk)1+Wcomb2·vec(pk)2,
其中,Wcomb1表示非叶子结点pk的向量vec(pk)l的权重,Wcomb2表示重构向量vec(pk)2的权重;
S502:将所述非叶子结点pk的向量vec(pk)1替换为所述线性组合向量vec(pk),其余叶子结点的向量不变,得到更新后的AST树;
S503:利用卷积层对更新后的AST树进行处理,即使特征探测器在AST树进行滑动,得到特征探测器输出H,计算公式如下:
其中,和均表示参数矩阵,表示的系数,表示的系数,表示的系数;depthi表示结点ci在窗口中的深度,depth表示窗口的深度;pti表示结点ci在所有兄弟结点中的位置,u表示结点ci的兄弟结点的个数;
S504:将卷积层输出的AST树输入到池化层进行处理;
S505:将池化层处理后的AST树输入到隐藏层进行处理;
S506:将隐藏层处理后的结果输入到输出层中,输出分类的结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710426179.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:有钥匙孔的无源电子锁驱动装置
- 下一篇:有钥匙孔的无源电子锁驱动机构