用于学习程序嵌入的深度学习模型制造技术

技术编号:29989388 阅读:49 留言:0更新日期:2021-09-11 04:25
公开了一种使用深度学习模型来学习程序语义的系统和方法。所述方法包括接收程序的多个执行跟踪,每个执行跟踪包括多个变量值。所述多个变量值通过第一循环神经网络进行编码以针对每个执行跟踪生成多个程序状态。然后,双向循环神经网络可以从所述多个程序状态中确定每个执行跟踪的一组减少的程序状态。然后所述一组减少的程序状态通过第二循环神经网络进行编码以生成所述程序的多个执行。然后,所述方法包括池化所述多个执行以生成程序嵌入以及使用所述程序嵌入预测所述程序的语义。入以及使用所述程序嵌入预测所述程序的语义。入以及使用所述程序嵌入预测所述程序的语义。

【技术实现步骤摘要】
【国外来华专利技术】用于学习程序嵌入的深度学习模型
[0001]相关申请交叉引用
[0002]本申请是2019年1月17日提交的第62/793,500号美国临时申请的非临时申请并且要求其权益,所述非临时申请以全文引用的方式并入本文中。

技术介绍

[0003]开源软件的增长趋势和机器学习技术的快速发展使“大代码”的概念具体化。这个概念正在重复使用从现有代码存储库中提取的知识以例如简化软件开发并且提高产品质量。本领域的一些早期方法主要将源代码处理成一段文本,并且应用来自自然语言处理域的现成模型(Abram Hindle、Earl T Barr、Zhendong Su、Mark Gabel和Premkumar Devanbu。关于软件的自然性,在软件工程(ICSE),2012年第34届国际会议,第837

847页,IEEE,2012年,Rahul Gupta,Soham Pal,Aditya Kanade和Shirish Shevade。深度修复:使用深度学习修复常见的c语言错误,2017年,Yewen Pu、Karthik Narasimhan、Armando Solar Lezama和Regina Barzilay。sk_p:一种用于慕课的神经程序校正器,在2016年ACM SIGPLAN系统、编程、语言和应用国际会议的配套会议记录:人类软件,第39

40页,ACM,2016年),而后来的方法是用抽象句法树(AST)建模程序(Chris Maddison和Daniel Tarlow。自然源代码的结构化生成模型,《机器学习国际会议》,第649

657页,2014年,Pavol Bielik、Veselin Raychev和Martin Vechev.Phog:代码的概率模型。《国际机器学习会议》,第2933

2942页,2016年,Lili Mou、Ge Li、Lu Zhang、Tao Wang和Zhi Jin,用于编程语言处理的树结构上的卷积神经网络,2016年)。
[0004]尽管这些努力设法将程序以经得起检验的形式转换为深度学习模型,但它们可能只能捕获浅层的句法特征,并且无法利用定义明确的程序语义。最近,出现了很多深度学习模型,这些模型致力于学习程序语义的表示(Ke Wang、Rishabh Singh和Zhendong Su。用于程序修复的动态神经程序嵌入。arXiv预印本arXiv:1711.07163,2017年,Daniel DeFreez、Aditya V、Thakur和Cindy Rubio

Gonz
á
lez。第40届软件工程国际会议的会议记录:随附会议记录,ICSE'18,第430

431页,美国纽约,2018年,Jordan Henkel、Shuvendu Lahiri、Ben Liblit和Thomas Reps。代码向量:通过嵌入的抽象符号跟踪理解程序,arXiv预印本arXiv:1803.06686,2018年,Miltiadis Allamanis、Marc Brockschmidt和Mahmoud Khademi。学习用图形表示程序,arXiv预印本arXiv:1711.00740,2017年,Uri Alon、Meital Zilberstein、Omer Levy和Eran Yahav。Code2vec:学习代码的分布式表示。arXiv预印本arXiv:1803.09473,2018年)。
[0005]这些作品可以分为两类:动态的和静态的。动态模型从程序的执行中学习,例如Wang等人提出的程序状态序列,或Henkel等人提出的抽象符号跟踪。静态模型是仿照静态分析在之前方法的域中提取程序语义的方式建模的。这些以前的模型在理解语义方面并不稳定,且因此也不是完全有效。
[0006]本公开的实施例单独地以及共同地解决这些问题和其它问题。

技术实现思路

[0007]本公开的一个实施例包括接收程序的多个执行跟踪,每个执行跟踪包括多个变量值。所述方法还包括由第一循环神经网络对所述多个变量值进行编码以针对每个执行跟踪生成多个程序状态,以及由双向循环神经网络从所述多个程序状态中确定每个执行跟踪的一组减少的程序状态。所述方法还包括由第二循环神经网络对所述一组减少的程序状态进行编码以生成所述程序的多个执行。所述方法还包括池化所述多个执行以生成程序嵌入以及使用所述程序嵌入预测所述程序的语义。
[0008]本公开的另一实施例包括一种计算机,所述计算机包括处理器和计算机可读介质,所述计算机可读介质包括可由所述处理器执行以实施方法的代码,所述方法包括接收程序的多个执行跟踪,每个执行跟踪包括多个变量值。所述方法还包括由第一循环神经网络对所述多个变量值进行编码以针对每个执行跟踪生成多个程序状态,以及由双向循环神经网络从所述多个程序状态中确定每个执行跟踪的一组减少的程序状态。所述方法还包括由第二循环神经网络对所述一组减少的程序状态进行编码以生成所述程序的多个执行。
[0009]所述方法还包括池化所述多个执行以生成程序嵌入以及使用所述程序嵌入预测所述程序的语义。
[0010]关于本公开的实施例的其它细节可以参见具体实施方式和附图。
附图说明
[0011]图1示出根据实施例的深度学习模型架构。
[0012]图2示出根据实施例的模型训练和预测过程的流程图。
[0013]图3示出根据实施例的语义预测模型的流程图。
[0014]图4示出执行跟踪的示例。
[0015]图5A和5B示出根据实施例的示例数据集的表格。
[0016]图6示出根据实施例的处理计算机的框图。
[0017]图7示出根据实施例的评估框架的流程图。
[0018]图8示出几种语义预测模型的预测准确度的图表。
[0019]图9示出根据实施例的模型的预测准确度与程序状态的数量的函数关系的图表。
[0020]图10示出根据实施例的模型的预测准确度与分支覆盖率的关系的图表。
[0021]图11示出几种语义预测模型的预测准确度结果的表格。
具体实施方式
[0022]本公开的实施例包括一种深度学习模型,其被配置成学习动态程序语义。语义包括一段文本的含义(例如,句子的含义、计算机程序的功能),而不是一段文本的句法或内容(例如,句子中的单词、计算机程序中的变量)。例如,句子“我有一只黑猫”和句子“我有一只猫,它是黑色的”尽管句法不同,但语义相同。程序的语义可能与程序的功能有关。程序功能可以指由程序解决的问题,而程序语义指由程序解决问题的方式。
[0023]与从程序文本中学习的静态深度学习模型不同,动态深度学习模型可以是从程序的执行中学习的模型。深度学习模型可以允许通过神经网络学习程序嵌入。根据实施例的深度学习模型可以建立并改进Wang等人的状态跟踪模型,以便不仅能够压缩执行跟踪以避
免与可扩展性有关的问题,而且还能够在本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种方法,包括:接收程序的多个执行跟踪,每个执行跟踪包括多个变量值;由第一循环神经网络对所述多个变量值进行编码以针对每个执行跟踪生成多个程序状态;由双向循环神经网络从所述多个程序状态中确定每个执行跟踪的一组减少的程序状态;由第二循环神经网络对所述一组减少的程序状态进行编码以生成所述程序的多个执行;池化所述多个执行以生成程序嵌入;以及使用所述程序嵌入预测所述程序的语义。2.根据权利要求1所述的方法,其中预测所述程序的语义包括返回一系列程序函数中的一个程序函数的概率。3.根据权利要求1所述的方法,其中所述一组减少的程序状态中的状态比所述多个程序状态中的状态少50%。4.根据权利要求1所述的方法,其中所述多个执行跟踪中的每个执行跟踪是使用随机生成的输入生成的。5.根据权利要求1所述的方法,其中确定一组减少的程序状态包括:根据所述多个程序状态计算前向序列;根据所述多个程序状态计算后向序列;以及对于所述多个程序状态中的每个程序状态:根据所述前向序列确定前向上下文向量;根据所述后向序列确定后向上下文向量;并且至少基于所述前向上下文向量和所述后向上下文向量确定将所述程序状态包括在所述一组减少的程序状态中。6.根据权利要求5所述的方法,其中确定所述前向上下文向量包括池化所述前向序列的分量子集,所述前向序列的所述分量子集包括来自第一s

1程序状态的信息,并且其中确定所述后向上下文向量包括池化所述后向序列的分量子集,所述后向序列的所述分量子集包括来自最后m

s程序状态的信息。7.根据权利要求5所述的方法,其中确定将所述程序状态包括在所述一组减少的程序状态中是由多层感知器执行的。8.根据权利要求1所述的方法,其中预测语义是通过归一化指数函数的输出执行的。9.根据权利要求1所述的方法,其中所述程序已经变异。10.根据权利要求1所述的方法,其中所述方法被优化以使交叉熵损失最小化并且使所述一组减少的程序状态中的程序状态的数量最小化。11.一种计算机,包括:处理器;以及计算机可读介质,其包括能由所述处理器执行以实施方...

【专利技术属性】
技术研发人员:王轲
申请(专利权)人:维萨国际服务协会
类型:发明
国别省市:

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

1