一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法及系统技术方案

技术编号:36694040 阅读:50 留言:0更新日期:2023-02-27 20:04
本发明专利技术公开了一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法及系统,涉及代码摘要生成技术领域。本发明专利技术的技术要点包括:将一段程序经过编译和链接过程生成可执行程序,提取其中的二进制代码序列和二进制函数名序列;对二进制函数名序列进行编码,获得函数名表示向量;将二进制代码序列输入BERT预训练语言模型,获取二进制代码序列全局上下文信息特征;利用多个卷积核对二进制代码序列全局上下文信息特征进行局部语义特征提取;将二进制代码序列全局特征和局部语义特征输入预训练的深层等长卷积神经网络,获取二进制代码序列的表示向量;将函数名表示向量和二进制代码序列的表示向量输入预训练的前馈神经网络,获取二进制代码摘要。获取二进制代码摘要。获取二进制代码摘要。

【技术实现步骤摘要】
一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法及系统


[0001]本专利技术涉及代码摘要生成
,具体涉及一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法及系统。

技术介绍

[0002]随着越来越多的研究人员将深度学习应用到解决软件工程领域的问题上,代码自动摘要技术作为程序理解的一项重要突破,在近几年逐渐成为研究热点。代码摘要是指能简明扼要地描述代码行为、主体和设计思想的一种概括的表示,它可以帮助代码阅读者迅速获取代码基本内容方面的信息。生成代码摘要的任务可以描述为:利用源代码序列来预测方法、变量、类或代码段的名称。自动代码摘要生成是指运用计算机自动地为未知源代码或未知代码片段生成具有可读性的相关描述,为不了解此段代码的阅读者提供代码摘要。源代码的自然语言摘要通过显著减少开发人员的工作量来促进程序理解。
[0003]目前的代码摘要生成任务虽然完成了为未知源代码段生成具有可读性的代码摘要的任务,但仍存在以下不足:(1)通常情况下,二进制源代码长度差距较大,使得模型可捕获代码句柄之间的长距离依赖关系能力较差;(2)从源代码编译生成二进制过程中,有很多有助于理解代码意图的信息会被丢失,比如:函数名称、变量名称、数据结构定义、变量类型定义、注释信息等,为二进制代码摘要生成产生了更大的阻碍。
[0004]在二进制代码摘要生成任务中,如何解决二进制源代码长度差距较大,使得模型可捕获代码token之间的长距离依赖关系能力较差这一问题,以及如何处理从源代码编译生成二进制过程中,有很多有助于理解代码意图的信息丢失,是二进制代码摘要生成的关键和难点问题。

技术实现思路

[0005]为此,本专利技术提出一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法及系统,以解决现有代码摘要生成方法对于代码长度差距较大、编译过程中信息丢失较多的二进制代码不能有效生成摘要的问题。
[0006]根据本专利技术的一方面,提供一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法,该方法包括以下步骤:
[0007]将一段程序经过编译和链接过程生成可执行程序,提取其中的二进制代码序列和对应的二进制函数名序列;
[0008]对所述二进制函数名序列进行编码,获得函数名表示向量;
[0009]将所述二进制代码序列输入BERT预训练语言模型,获取二进制代码序列全局上下文信息特征;
[0010]利用多个卷积核对所述二进制代码序列全局上下文信息特征进行局部语义特征提取;
[0011]将所述二进制代码序列全局上下文信息特征和局部语义特征输入预训练的深层等长卷积神经网络,获取二进制代码序列的表示向量;
[0012]将所述函数名表示向量和所述二进制代码序列的表示向量输入预训练的前馈神经网络,获取二进制代码摘要。
[0013]进一步地,提取二进制代码序列和对应的二进制函数名序列的方法包括:去除所述可执行程序中的静态数据区、堆和栈,即获得二进制代码序列和与其对应的二进制函数名序列。
[0014]进一步地,对所述二进制函数名序列进行编码,获得函数名表示向量的具体过程包括:对于所述二进制函数名序列中的每一个二进制函数名,提取关键词,计算二进制函数名关键词的词频,所述词频表示该二进制函数名关键词在所述二进制函数名序列中出现的概率;计算二进制函数名关键词的逆文档频率,所述逆文档频率表示该函数名关键词在所述二进制函数名序列中的普遍程度;将所述词频和所述逆文档频率相乘,获得函数名表示向量。
[0015]进一步地,所述词频的计算公式为:
[0016][0017]其中,表示函数名关键词w在二进制函数名集D
i
中出现的概率,count(w)表示函数名关键词w出现的次数,|D
i
|表示二进制函数名集D
i
中出现的所有函数名关键词的数量;
[0018]所述逆文档频率的计算公式为:
[0019][0020]其中,IDF
w
表示当前函数名关键词w在二进制函数名集的普遍程度,n表示二进制函数名集总数,l(w,D
i
)表示当前二进制函数名集D
i
中是否包含当前函数名关键词w,包含则为1,不包含则为0。
[0021]进一步地,将所述二进制代码序列输入BERT预训练语言模型,获取二进制代码序列全局上下文信息特征的具体过程包括:
[0022]计算二进制代码序列T中每个二进制代码的位置编码,获得所述二进制代码序列T对应的位置编码序列LE;
[0023]将所述二进制代码序列T和对应的位置编码序列LE相加,获得输入T
input

[0024]将输入T
input
通过自注意力机制处理,获得自注意力机制的输出结果Attention(Q,K,V);具体过程包括:将输入T
input
与查询向量的权重矩阵、值向量的权重矩阵、键向量的权重矩阵分别相乘,获得查询向量Q、值向量K、键向量V;将查询向量Q、值向量K、键向量V作为softmax函数的输入,通过运算获得自注意力机制的输出结果Attention(Q,K,V);其中,d
k
为调节参数;
[0025]将输入T
input
和输出结果Attention(Q,K,V)相加,获得输出T
output

[0026]进一步地,所述二进制代码序列T对应的位置编码序列LE中,每一个位置编码由两
个分量组成,第一个分量的计算公式为:
[0027][0028]式中,loc表示当前字符在二进制代码序列中的位置;d
MODEL
表示输入字符词表查询后的维度;
[0029]第二个分量的计算公式为:
[0030][0031]进一步地,在获得输出T
output
后,对其进行标准化处理,计算公式如下:
[0032][0033]其中,μ表示二进制代码序列经过自注意力机制处理后输出的均值,σ表示二进制代码序列经过自注意力机制处理后输出的标准差;为防止标准差为0时分母失去意义,加入参数ε;α和β为迭代值。
[0034]进一步地,利用多个卷积核对所述二进制代码序列全局上下文信息特征进行局部语义特征提取的过程包括:每个卷积核对应一个特征表示矩阵M,M中每一列表示卷积核对于一个字符为单位滑动进行卷积操作得到的特征向量;M中每一列特征向量m
i
的计算公式如下:
[0035]m
i
=f(e
·
t
(i:i+2)
+b)
[0036]其中,f表示Relu激活函数,e表示卷积核中的参数矩阵,b表示偏置值,t
(i:i+2)
表示所述二进制代码序列全局上下文信息特征中由第i位置开始的三个字符,到第i+2位置结束。
[0037]进本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法,其特征在于,包括以下步骤:将一段程序经过编译和链接过程生成可执行程序,提取其中的二进制代码序列和对应的二进制函数名序列;对所述二进制函数名序列进行编码,获得函数名表示向量;将所述二进制代码序列输入BERT预训练语言模型,获取二进制代码序列全局上下文信息特征;利用多个卷积核对所述二进制代码序列全局上下文信息特征进行局部语义特征提取;将所述二进制代码序列全局上下文信息特征和局部语义特征输入预训练的深层等长卷积神经网络,获取二进制代码序列的表示向量;将所述函数名表示向量和所述二进制代码序列的表示向量输入预训练的前馈神经网络,获取二进制代码摘要。2.根据权利要求1所述的一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法,其特征在于,提取二进制代码序列和对应的二进制函数名序列的方法包括:去除所述可执行程序中的静态数据区、堆和栈,即获得二进制代码序列和与其对应的二进制函数名序列。3.根据权利要求1所述的一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法,其特征在于,对所述二进制函数名序列进行编码,获得函数名表示向量的具体过程包括:对于所述二进制函数名序列中的每一个二进制函数名,提取关键词,计算二进制函数名关键词的词频,所述词频表示该二进制函数名关键词在所述二进制函数名序列中出现的概率;计算二进制函数名关键词的逆文档频率,所述逆文档频率表示该函数名关键词在所述二进制函数名序列中的普遍程度;将所述词频和所述逆文档频率相乘,获得函数名表示向量。4.根据权利要求3所述的一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法,其特征在于,所述词频的计算公式为:其中,表示函数名关键词w在二进制函数名集D
i
中出现的概率,count(w)表示函数名关键词w出现的次数,|D
i
|表示二进制函数名集D
i
中出现的所有函数名关键词的数量;所述逆文档频率的计算公式为:其中,IDF
w
表示当前函数名关键词w在二进制函数名集的普遍程度,n表示二进制函数名集总数,l(w,D
i
)表示当前二进制函数名集D
i
中是否包含当前函数名关键词w,包含则为1,不包含则为0。5.根据权利要求1所述的一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法,其特征在于,将所述二进制代码序列输入BERT预训练语言模型,获取二进制代
码序列全局上下文信息特征的具体过程包括:计算二进制代码序列T中每个二进制代码的位置编码,获得所述二进制代码序列T对应的位置编码序列LE;将所述二进制代码序列T和对应的位置编码序列LE相加,获得输入T
input
;将输入T
input
通过自注意力机制处理,获得自注意力机制的输出结果Attention(Q,K,V);具体过程包括:将输入T
input
与查询向量的权重矩阵、值向量的权重矩阵、键向量的权重矩阵分别相乘,获得查询向量Q、值向量K、键向量V;将查询向量Q、值向量K、键向量V作为softmax函数的输入,通过运算获得自注意力机制的输出结果Attention(Q,K,V);其中,d
k
为调节参数;将输入T
input
和输出结果Attenti...

【专利技术属性】
技术研发人员:孙广路宋宁梁丽丽
申请(专利权)人:哈尔滨理工大学
类型:发明
国别省市:

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

1