Skip to main content
QUICK REVIEW

[论文解读] Convolutional Neural Networks over Tree Structures for Programming Language Processing

Lili Mou, Ge Li|arXiv (Cornell University)|Sep 18, 2014
Software Engineering Research参考文献 30被引用 295
一句话总结

本文提出基于树的卷积神经网络(TBCNN)用于编程语言处理,通过抽象语法树(AST)捕捉代码中的丰富结构信息。该模型采用连续二叉树和动态池化机制,以处理不同大小的树结构,在程序分类和模式检测任务中达到最先进性能,相较于传统NLP模型和基线神经方法,在关键任务上提升超过10%。

ABSTRACT

Programming language processing (similar to natural language processing) is a hot research topic in the field of software engineering; it has also aroused growing interest in the artificial intelligence community. However, different from a natural language sentence, a program contains rich, explicit, and complicated structural information. Hence, traditional NLP models may be inappropriate for programs. In this paper, we propose a novel tree-based convolutional neural network (TBCNN) for programming language processing, in which a convolution kernel is designed over programs' abstract syntax trees to capture structural information. TBCNN is a generic architecture for programming language processing; our experiments show its effectiveness in two different program analysis tasks: classifying programs according to functionality, and detecting code snippets of certain patterns. TBCNN outperforms baseline methods, including several neural models for NLP.

研究动机与目标

  • 为解决传统NLP模型在处理编程语言中固有的显式复杂结构信息方面的局限性。
  • 开发一种通用的深度学习架构,以有效捕捉源代码中的语法和语义结构。
  • 克服基于神经网络的程序分析中变量大小和形状的抽象语法树带来的挑战。
  • 展示树结构卷积网络在实际软件工程任务中的有效性。

提出的方法

  • TBCNN模型通过构建程序的抽象语法树(AST)并对其树结构表示应用卷积核来处理程序。
  • 引入连续二叉树结构,以处理具有不同子节点数目的节点,并保持子节点的顺序。
  • 应用动态池化以聚合不同大小和形状的树的特征,使模型能够泛化到各种程序结构。
  • 通过编码层学习节点表示,结合预训练嵌入与结构上下文,增强特征表达能力。
  • 采用1路和3路池化策略,评估特征聚合对性能的影响。
  • 使用连续词袋(CBoW)基线进行对比,以评估保持子节点顺序的重要性。

实验结果

研究问题

  • RQ1树结构卷积神经网络能否有效捕捉源代码中的语法和语义特征?
  • RQ2在AST中保持子节点顺序对程序分析任务中模型性能有何影响?
  • RQ3动态池化在多大程度上提升了对不同大小和形状AST的泛化能力?
  • RQ4TBCNN在程序分类和模式检测中与传统词袋和词袋树基线相比表现如何?
  • RQ5通过连续二叉树引入结构归纳偏置,是否能带来优于标准池化或平均策略的性能提升?

主要发现

  • TBCNN在检测冒泡排序模式任务中达到94.4%的验证准确率,显著优于词袋基线(62.3%)和词袋树基线(77.06%)。
  • 引入结合全局结构上下文的编码层使性能提升2%,相比直接对预训练节点嵌入进行卷积。
  • 使用600维卷积层时达到最高验证准确率,表明丰富的结构语义需要大量特征检测器。
  • 1路池化性能与3路池化相当或略优,表明TBCNN对池化策略选择具有鲁棒性。
  • 与CBoW基线相比,连续二叉树结构使性能提升1.3%,证明保持子节点顺序的重要性。
  • TBCNN在程序分类和模式检测任务中均优于递归神经网络及其他基于NLP的模型,确立了深度学习在编程语言处理领域的全新最先进水平。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。