Skip to main content
QUICK REVIEW

[论文解读] Building Program Vector Representations for Deep Learning

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

本文提出了一种新颖的“编码准则”,用于生成程序抽象语法树(AST)节点的稠密向量表示,从而实现程序分析的深度学习。通过在AST上进行训练,并将这些学习到的向量作为输入,该方法在分类准确率上优于传统机器学习模型,证明了深度学习在程序分析中可行且有效。

ABSTRACT

Deep learning has made significant breakthroughs in various fields of artificial intelligence. Advantages of deep learning include the ability to capture highly complicated features, weak involvement of human engineering, etc. However, it is still virtually impossible to use deep learning to analyze programs since deep architectures cannot be trained effectively with pure back propagation. In this pioneering paper, we propose the "coding criterion" to build program vector representations, which are the premise of deep learning for program analysis. Our representation learning approach directly makes deep learning a reality in this new field. We evaluate the learned vector representations both qualitatively and quantitatively. We conclude, based on the experiments, the coding criterion is successful in building program representations. To evaluate whether deep learning is beneficial for program analysis, we feed the representations to deep neural networks, and achieve higher accuracy in the program classification task than "shallow" methods, such as logistic regression and the support vector machine. This result confirms the feasibility of deep learning to analyze programs. It also gives primary evidence of its success in this new field. We believe deep learning will become an outstanding technique for program analysis in the near future.

研究动机与目标

  • 通过创建程序结构的有效向量表示,实现程序分析的深度学习。
  • 解决由于缺乏合适的预训练和特征表示而导致在程序上训练深度神经网络的挑战。
  • 评估深度学习是否能在程序分类任务中超越传统机器学习方法。
  • 通过发布代码、数据集和学习到的表示,推动开放科学,以加速神经程序分析领域的研究。

提出的方法

  • 提出一种“编码准则”,基于节点的语法和上下文特征,学习抽象语法树节点(如ID、常量)的实值向量表示。
  • 使用前馈神经网络通过端到端训练学习这些表示,将AST视为节点序列。
  • 应用反向传播优化向量嵌入,使网络能够捕捉代码中的语义和结构关系。
  • 将学习到的向量表示作为输入,输入到更深层的神经网络中,用于下游任务(如程序分类)。
  • 引入一种二维的代码表示视角,受计算机视觉启发,将缩进和换行符视为结构线索。
  • 探索将领域特定先验知识(如树结构、局部模式)整合到神经架构中,例如基于树的卷积神经网络(TCNN)。

实验结果

研究问题

  • RQ1能否学习到有效的程序AST节点向量表示,以支持程序分析中的深度学习?
  • RQ2所提出的编码准则是否成功捕捉了AST节点之间的语义和结构关系?
  • RQ3在这些学习到的表示上训练的深度神经网络是否能在程序分类任务中超越传统“浅层”模型(如SVM、逻辑回归)?
  • RQ4如何有效将人类对程序结构的先验知识(如语法树、缩进)整合到深度学习架构中?
  • RQ5深度学习在更广泛程序分析应用(如代码克隆检测和错误发现)中的可行性与潜力如何?

主要发现

  • 编码准则成功生成了能捕捉AST节点之间语义和结构关系的向量表示。
  • 学习到的向量表示显著提升了深度神经网络在程序分类任务中的优化与泛化能力。
  • 使用学习表示作为输入的深度神经网络在分类准确率上显著优于传统机器学习模型(如逻辑回归和SVM)。
  • 实验结果证实了在程序分析中使用深度学习的可行性,为该新领域中的成功提供了初步证据。
  • 向量表示在建模程序相似性与关系方面表现有效,经定性和定量验证均成立。
  • 开源代码、数据集和学习到的表示,预计将加速未来在神经程序分析领域的研究。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

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