[发明专利]一种基于Transformer的软件缺陷预测方法在审
申请号: | 201910915073.6 | 申请日: | 2019-09-26 |
公开(公告)号: | CN110688312A | 公开(公告)日: | 2020-01-14 |
发明(设计)人: | 冯落落;李锐;于治楼 | 申请(专利权)人: | 山东浪潮人工智能研究院有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 37100 济南信达专利事务所有限公司 | 代理人: | 阚恭勇 |
地址: | 250100 山东省济南市高新*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 软件测试 软件缺陷 编码阶段 预测技术 二分类 时间步 预测 消耗 测试 帮助 | ||
1.一种基于Transformer的软件缺陷预测方法,其特征在于,
使用Transformer中的Encoder阶段,然后在编码阶段的最后一个时间步介入到一个二分类的softmax层进行预测。
2.根据权利要求1所述的方法,其特征在于,
主要包括
(1)构建抽象语法树;
(2)Transformer网络架构。
3.根据权利要求2所述的方法,其特征在于,
抽象语法树作为程序的一种中间表示形式,利用抽象语法树实现一种以上源程序处理工具。
4.根据权利要求3所述的方法,其特征在于,
所述Transformer网络架构,包括如下步骤:
1)给定一个Java源文件的标记;
2)然后和对应的位置编码信息进行连接;
3)然后这里进行self-attention操作;这里使用一个以上的self-attention操作,从而获得一个Multi-Head Attention,然后和这一层的输入进行一个Add操作。
5.根据权利要求4所述的方法,其特征在于,
加上一个Layer Normalization操作,然后加上一层前向网络,使用全连接网络,然后对全连接层也进行Layer Normalization;
然后把这一层的所有输出进行一个concate连接操作,连接后的向量与输出层进行连接,判断是否是有缺陷。
6.根据权利要求5所述的方法,其特征在于,
具体的步骤如下所述:
(1)首先借助BugInfo工具对每个Java源文件进行打标签;
(2)利用Python中的Javalang工具包,把对应的Java源文件解析成抽象语法树,并且抽取语法树中相应的控制节点、函数调用节点、实例创建节点,形成一个以空格为分隔符的单词文件;
(3)然后利用gensim中的Word2vec模型,把单词进行向量化,最终把每个单词向量化为一个50维的词向量;
(4)然后利用Transformer算法,借助Java源文件的标记向量进行模型训练,然后把每个向量对应位置编码进行相加,最终获的最后的词向量;
(5)使用self-attention操作,获得一个Multi-Head Attention;
(6)通过上步获得的Multi-Head Attention和对应的词向量进行相加,然后在进行layer-normalization操作,获得向量a。然后对向量a进行一个全连接层,或者a2,然后把a对应相加,然后在进行layer-normalization操作,获得向量a2,然后把向量a2与输出层softmax层进行向量,判断该Java文件是否是包含缺陷。
7.根据权利要求6所述的方法,其特征在于,
所述self-attention操作,为了获得查询向量q、键向量k、值向量v,这里分别使用词嵌入和三个矩阵WQ,WK,WV相乘。然后使用每个查询向量q和所有的键向量k分别进行向量点乘分别获得对应的打分,然后把分数都除以8,获得数值,然后进行softmax操作,获得softmax值。然后利用softmax值和对应的值向相乘,相乘之后进行相加,分别获得对应的求和z。
8.根据权利要求7所述的方法,其特征在于,
实现multi-head需要使用一个以上的self-attention操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东浪潮人工智能研究院有限公司,未经山东浪潮人工智能研究院有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910915073.6/1.html,转载请声明来源钻瓜专利网。