当使用深度学习技术对程序语言进行建模时,广泛采用了带有树或图形结构的神经网络,以捕获程序抽象语法树(AST)中的丰富结构信息。但是,计划中广泛存在长期/全球依赖性,大多数这些神经体系结构无法捕获这些依赖性。在本文中,我们提出了Tree-Transformer,这是一种新型的递归树结构神经网络,旨在克服上述局限性。树转化器利用两个多头注意单元来建模兄弟姐妹和父子节点对之间的依赖关系。此外,我们提出了一个双向传播策略,以允许节点信息向两个方向传递:沿树木的自下而上和自上而下。通过结合自下而上和自上而下的传播,树转化器可以同时学习全局上下文和有意义的节点特征。广泛的实验结果表明,我们的树转换器在具有树级和节点级别的预测任务中,在与程序相关的任务中优于现有基于树或基于图的神经网络,这表明Tree-Transformer在学习两个树级时都表现良好和节点级表示。
translated by 谷歌翻译
代码搜索目标是根据自然语言查询检索相关的代码片段,以提高软件生产力和质量。但是,由于源代码和查询之间的语义间隙,自动代码搜索是具有挑战性的。大多数现有方法主要考虑嵌入的顺序信息,其中文本背后的结构信息不完全考虑。在本文中,我们设计了一个名为GraphsearchNet的新型神经网络框架,通过共同学习源代码和查询的富集语义来启用有效和准确的源代码搜索。具体地,我们建议将源代码和查询编码为两个图,其中双向GGNN以捕获图表的本地结构信息。此外,我们通过利用有效的多主题来增强BigGNN,以补充BigGNN错过的全球依赖。关于Java和Python数据集的广泛实验说明了GraphSearchNet优于当前最先进的工作原位。
translated by 谷歌翻译
从结构化数据中学习是一项核心机器学习任务。通常,此类数据表示为图,通常仅考虑(键入)节点对之间的二进制关系。对于具有高度结构化数据的许多域而言,这是一个实质性的限制。一个重要的域是源代码,基于超图的表示可以更好地捕获代码的语义丰富和结构化的性质。在这项工作中,我们提出了热量,这是一种能够代表键入和合格的超图的神经模型,在该模型中,每个Hyperede都明确地符合参与节点的贡献。它可以看作是传递神经网络和变压器的消息的概括。我们使用新型程序代表程序来评估知识库完成和错误检测和维修的热量。在这两种情况下,它都优于强大的基线,表明其力量和通用性。
translated by 谷歌翻译
文本分类是自然语言处理(NLP)的主要任务。最近,图神经网络(GNN)已迅速发展,并应用于文本分类任务。作为一种特殊的图形数据,该树具有更简单的数据结构,可以为文本分类提供丰富的层次结构信息。受结构熵的启发,我们通过最小化结构熵并提出提示来构造图形的编码树,该提示旨在充分利用文本中包含的文本中包含的层次信息,以完成文本分类的任务。具体来说,我们首先为每个文本建立依赖关系解析图。然后,我们设计了一种结构熵最小化算法来解码图中的关键信息,并将每个图转换为其相应的编码树。基于编码树的层次结构,通过逐层更新编码树中的非叶子节点的表示来获得整个图的表示。最后,我们介绍了层次信息在文本分类中的有效性。实验结果表明,在具有简单的结构和很少的参数的同时,提示在流行基准测试上的最新方法优于最先进的方法。
translated by 谷歌翻译
图形神经网络已被证明可以为各种软件工程任务产生令人印象深刻的结果。但是,现有技术仍然有两个问题:(1)长期依赖性和(2)不同的代码组件在不应该的情况下被视为平等。为了解决这些问题,我们提出了一种表示代码为层次结构(代码层次结构)的方法,其中不同的代码组件在各个粒度级别分别表示。然后,为了处理每个表示级别的表示,我们设计了一个新颖的网络体系结构Echelon,它结合了异质图形变压器网络和基于树的卷积神经网络的优势,以学习具有代码依赖性信息丰富的抽象语法树。我们还提出了一个新颖的预处理目标,称为缺失子树预测以补充我们的代码层次结构。评估结果表明,我们的方法在三个任务中大大优于其他基准:任何代码完成,代码分类和代码克隆检测。
translated by 谷歌翻译
在源代码处理的领域中,基于变压器的表示模型表现出强大的功能,并在许多任务中都实现了最先进的(SOTA)性能。尽管变压器模型处理了顺序源代码,但证据表明,它们也可以捕获结构信息(\ eg,在语法树,数据流,控制流,\等)。我们提出了汇总的注意力评分,这是一种研究变压器学到的结构信息的方法。我们还提出了汇总的注意图,这是一种从预训练模型中提取程序图的新方法。我们从多个角度测量我们的方法。此外,根据我们的经验发现,我们使用自动提取的图形来替换可变滥用任务中那些巧妙的手动设计图。实验结果表明,我们自动提取的语义图非常有意义且有效,这为我们提供了一个新的观点,可以理解和使用模型中包含的信息。
translated by 谷歌翻译
动态类型的语言如JavaScript和Python已成为最受欢迎的使用中的使用中。重要的优势可以从动态类型的程序中的类型注释累积。逐渐键入的这种方法是由Querecript编程系统示例,允许程序员指定部分键入的程序,然后使用静态分析来推断剩余类型。然而,通常,静态类型推断的有效性受到限制,取决于程序结构和初始注释的复杂性。结果,对于可以在动态类型的程序中可以在静态预测类型中推进本领域的新​​方法的强大动机,并且该具有可接受的性能用于交互式编程环境。以前的工作表明了使用深度学习的概率类型推断的承诺。在本文中,我们通过引入一系列图形的神经网络(GNN)模型来推进过去的工作,该模型在新型流程图(TFG)表示上运行。 TFG表示输入程序的元素,作为与语法边缘和数据流边缘连接的图表节点,并且我们的GNN模型训练以预测给定输入程序的TFG中的类型标签。我们为我们的评估数据集中的100种最常见类型的GNN模型研究了不同的设计选择,并显示了我们最佳的准确性的两个GNN配置,分别实现了87.76%和86.89%的前1个精度,优于两个最密切相关的深度学习型推断从过去的工作 - 矮人的前进剂,顶级1的精度为84.62%,兰丹特精确为79.45%。此外,这两种配置的平均推理吞吐量为353.8和1,303.9文件/秒,而DeepTyper的186.7个文件/秒和LambDanet的1,050.3文件/秒。
translated by 谷歌翻译
近年来,图形变压器在各种图形学习任务上表现出了优势。但是,现有图形变压器的复杂性与节点的数量二次缩放,因此难以扩展到具有数千个节点的图形。为此,我们提出了一个邻域聚集图变压器(Nagphormer),该变压器可扩展到具有数百万节点的大图。在将节点特征馈送到变压器模型中之前,Nagphormer构造令牌由称为Hop2Token的邻域聚合模块为每个节点。对于每个节点,Hop2token聚合从每个跳跃到表示形式的邻域特征,从而产生一系列令牌向量。随后,不同HOP信息的结果序列是变压器模型的输入。通过将每个节点视为一个序列,可以以迷你批量的方式训练Nagphormer,从而可以扩展到大图。 Nagphormer进一步开发了基于注意力的读数功能,以便学习每个跳跃的重要性。我们在各种流行的基准测试中进行了广泛的实验,包括六个小数据集和三个大数据集。结果表明,Nagphormer始终优于现有的图形变压器和主流图神经网络。
translated by 谷歌翻译
与自然语言相反,源代码理解受到令牌之间的语法关系的影响,无论其标识符名称如何。源代码的图表表示诸如抽象语法树(AST)可以从源代码中捕获不明显的令牌之间的关系。我们提出了一种新颖的方法,GN变压器在融合序列和图形模型上学习端到端我们调用语法代码图(SCG)。 GN变压器使用自我关注机制在图形网络(GN)框架上展开。 SCG是源代码片段和AST表示之间的早期融合的结果。我们对SCG的结构进行了实验,对模型设计的消融研究,以及结论性能优势来自融合表示的超参数。所提出的方法在两个代码摘要数据集中实现最先进的性能,并跨越三个自动编码摘要度量(BLEU,Meteor,Rouge-L)。我们进一步评估了我们模型的人类感知质量和以前的工作与专家用户学习。我们的模型以人类的质量和准确性高出现有技术。
translated by 谷歌翻译
在本文中,我们试图通过引入深度学习模型的句法归纳偏见来建立两所学校之间的联系。我们提出了两个归纳偏见的家族,一个家庭用于选区结构,另一个用于依赖性结构。选区归纳偏见鼓励深度学习模型使用不同的单位(或神经元)分别处理长期和短期信息。这种分离为深度学习模型提供了一种方法,可以从顺序输入中构建潜在的层次表示形式,即更高级别的表示由高级表示形式组成,并且可以分解为一系列低级表示。例如,在不了解地面实际结构的情况下,我们提出的模型学会通过根据其句法结构组成变量和运算符的表示来处理逻辑表达。另一方面,依赖归纳偏置鼓励模型在输入序列中找到实体之间的潜在关系。对于自然语言,潜在关系通常被建模为一个定向依赖图,其中一个单词恰好具有一个父节点和零或几个孩子的节点。将此约束应用于类似变压器的模型之后,我们发现该模型能够诱导接近人类专家注释的有向图,并且在不同任务上也优于标准变压器模型。我们认为,这些实验结果为深度学习模型的未来发展展示了一个有趣的选择。
translated by 谷歌翻译
The Transformer architecture has become a dominant choice in many domains, such as natural language processing and computer vision. Yet, it has not achieved competitive performance on popular leaderboards of graph-level prediction compared to mainstream GNN variants. Therefore, it remains a mystery how Transformers could perform well for graph representation learning. In this paper, we solve this mystery by presenting Graphormer, which is built upon the standard Transformer architecture, and could attain excellent results on a broad range of graph representation learning tasks, especially on the recent OGB Large-Scale Challenge. Our key insight to utilizing Transformer in the graph is the necessity of effectively encoding the structural information of a graph into the model. To this end, we propose several simple yet effective structural encoding methods to help Graphormer better model graph-structured data. Besides, we mathematically characterize the expressive power of Graphormer and exhibit that with our ways of encoding the structural information of graphs, many popular GNN variants could be covered as the special cases of Graphormer. The code and models of Graphormer will be made publicly available at https://github.com/Microsoft/Graphormer.
translated by 谷歌翻译
变压器架构已成功用于学习源代码表示。图形表示像抽象语法树(AST)和源代码序列之间的融合使得使用电流接近计算地难以用于大输入序列长度。源代码可以有需要更大序列长度的远程依赖性,以有效地模拟模型。电流方法在序列长度方面具有计算和内存成本的二次生长。在实际情况下使用这些模型很难。在这项工作中,我们通过使用图形邻接矩阵作为稀疏自我关注机制的注意掩模以及使用图形扩散机制来模拟更长范围令牌依赖性的关注掩模来提出源代码片段的调节。我们的型号在Bleu,Meteor和Rouge-L指标中达到最先进的结果,用于代码摘要任务以及可变误用任务的最先进的准确性。与先前作品的二次生长相比,我们模型的内存使用和推理时间具有相对于输入序列长度的线性生长。
translated by 谷歌翻译
代码摘要可帮助开发人员理解程序并减少在软件维护过程中推断程序功能的时间。最近的努力诉诸深度学习技术,例如序列到序列模型,以生成准确的代码摘要,其中基于变压器的方法已实现了有希望的性能。但是,在此任务域中,有效地将代码结构信息集成到变压器中的情况不足。在本文中,我们提出了一种名为SG-Trans的新方法,将代码结构属性纳入变压器。具体而言,我们将局部符号信息(例如,代码令牌和语句)和全局句法结构(例如,数据流程图)注入变压器的自我发项模块中。为了进一步捕获代码的层次结构特征,局部信息和全局结构旨在分布在下层和变压器高层的注意力头中。广泛的评估表明,SG-trans的表现优于最先进的方法。与表现最佳的基线相比,SG-Trans在流星评分方面仍然可以提高1.4%和2.0%,这是一个广泛用于测量发电质量的度量,分别在两个基准数据集上。
translated by 谷歌翻译
本文通过自然应用程序对网页和元素分类来解决复杂结构数据的高效表示的问题。我们假设网页内部元素周围的上下文对问题的价值很高,目前正在被利用。本文旨在通过考虑到其上下文来解决将Web元素分类为DOM树的子树的问题。为实现这一目标,首先讨论当前在结构上工作的专家知识系统,如树 - LSTM。然后,我们向该模型提出上下文感知扩展。我们表明,在多级Web分类任务中,新模型实现了0.7973的平均F1分数。该模型为各种子树生成更好的表示,并且可以用于应用此类元素分类,钢筋在网上学习中的状态估计等。
translated by 谷歌翻译
最近的研究表明,自然语言理解中的系统概括仍然是最先进的神经模型(如变形金刚和图形神经网络)的挑战。为了解决这一挑战,我们提出了边缘变压器,这是一种新的模型,将灵感与基于规则的符号AI结合起来。边缘变压器中的第一个关键思想是将矢量状态与每个边缘相关联,即使用每对输入节点 - 与每个节点相对,因为它在变压器模型中完成。第二重要创新是一个三角形关注机制,以通过从逻辑编程的统一启发的方式更新边缘表示。我们在关系推理,语义解析和依赖性解析中评估边缘变压器上的成分泛化基准。在所有三种设置中,边缘变压器优于关系感知,通用和古典变压器基线。
translated by 谷歌翻译
变压器架构已成为许多域中的主导选择,例如自然语言处理和计算机视觉。然而,与主流GNN变体相比,它对图形水平预测的流行排行榜没有竞争表现。因此,它仍然是一个谜,变形金机如何对图形表示学习表现良好。在本文中,我们通过提出了基于标准变压器架构构建的Gragemer来解决这一神秘性,并且可以在广泛的图形表示学习任务中获得优异的结果,特别是在最近的OGB大规模挑战上。我们在图中利用变压器的关键洞察是有效地将图形的结构信息有效地编码到模型中。为此,我们提出了几种简单但有效的结构编码方法,以帮助Gramemormer更好的模型图形结构数据。此外,我们在数学上表征了Gramemormer的表现力,并展示了我们编码图形结构信息的方式,许多流行的GNN变体都可以被涵盖为GrameRormer的特殊情况。
translated by 谷歌翻译
深度学习在各种软件工程任务中广泛使用,例如,节目分类和缺陷预测。虽然该技术消除了特征工程所需的过程,但源代码模型的构建显着影响了这些任务的性能。最近的作品主要集中在通过引入从CFG提取的上下文依赖项来补充基于AST的源代码模型。但是,所有这些都关注基本块的表示,这是上下文依赖性的基础。在本文中,我们集成了AST和CFG,并提出了一种嵌入了分层依赖项的新型源代码模型。基于此,我们还设计了一种神经网络,这取决于图表关注机制。特殊地,我们介绍了基本块的句法结构,即其对应的AST,在源代码模型中提供足够的信息并填补间隙。我们在三种实际软件工程任务中评估了该模型,并将其与其他最先进的方法进行了比较。结果表明,我们的模型可以显着提高性能。例如,与最佳性能的基线相比,我们的模型将参数的比例降低了50 \%并实现了对程序分类任务的准确性的4 \%改进。
translated by 谷歌翻译
源代码的表示学习对于将机器学习应用于软件工程任务至关重要。已经显示,跨不同编程语言的学习代码表示比从单语言数据集中学习更有效,因为来自多语言数据集的更多培训数据可提高该模型从源代码中提取语言 - 不平衡信息的能力。但是,现有的多语言模型忽略了特定于语言的信息,这对于在多语言数据集中培训的下游任务至关重要,同时仅着眼于学习不同语言之间的共享参数。为了解决这个问题,我们提出了MetatPtrans,这是一种用于多语言代码表示学习的元学习方法。 MetAtPtrans根据输入源代码段的特定编程语言为特征提取器生成不同的参数,从而使模型能够同时学习语言 - 语言和特定于语言的信息。实验结果表明,MetAtPtrans可将最新方法的F1得分显着提高到2.40个百分点,以汇总代码摘要,这是一项语言不可或缺的任务;以及TOP-1(TOP-5)的预测准确性高达7.32(13.15)百分点,以完成代码完成,这是一项特定于语言的任务。
translated by 谷歌翻译
AMR到文本是NLP社区中旨在从抽象含义表示(AMR)图生成句子的关键技术之一。自2013年提出AMR以来,有关AMR到文本的研究越来越普遍,因为AMR作为自然语言的高级语义描述,由于AMR具有独特的优势,因此作为结构化数据的重要分支变得越来越普遍。在本文中,我们简要介绍了AMR到文本。首先,我们介绍了此技术的当前情况,并指出了它的困难。其次,根据先前研究中使用的方法,我们根据它们各自的机制将它们大致分为五个类别和预先训练的语言模型(PLM)。特别是,我们详细介绍了基于神经网络的方法,并介绍了AMR到文本的最新进展,该方法指的是AMR重建,解码器优化等。此外,我们介绍了AMR-TOXT的基准和评估方法。最终,我们提供了当前技术和未来研究的前景的摘要。
translated by 谷歌翻译
在源代码中自动定位易受攻击的陈述至关重要,以确保软件安全性和缓解开发人员的调试工作。这在当今软件生态系统中变得更加重要,其中易受攻击的代码可以在像GitHub这样的软件存储库中轻松且无意中流动。在这类数百万的代码行中,传统的静态和动态方法争取缩放。虽然基于机器学习的方法在这样的设置中看起来很有希望,但大多数工作都在较高的粒度下检测到脆弱的代码 - 在方法或文件级别。因此,开发人员仍然需要检查大量代码以找到需要修复的弱势陈述。本文提出了一种新的集合学习方法来定位脆弱的陈述。我们的模型结合了基于图形的基于序列的神经网络,以成功捕获程序图的本地和全局上下文,并有效地了解代码语义和易受攻击的模式。为了研究天鹅绒的效果,我们使用了一个现成的合成数据集和最近发布的现实世界数据集。在静态分析设置中,未提前检测到易受攻击功能,Velvet可以实现4.5倍的性能,而不是真实世界数据上的基线静态分析仪。对于孤立的漏洞本地化任务,在我们假设特定漏洞声明未知的同时知道函数的漏洞,我们将天鹅绒与几个神经网络进行比较,这些内部网络也参加了本地和全局代码背景。天鹅绒分别达到99.6%和43.6%的13.6%,分别在合成数据和现实世界数据上实现了高精度,优于基线深度学习模型5.3-29.0%。
translated by 谷歌翻译