揭示代码预训练模型:探究其语法与语义能力
软件工程
2024-04-18 v3 人工智能
摘要
过去的研究考察了这些模型对代码语法的掌握程度,但它们对代码语义的理解仍有待探索。我们广泛分析了七个代码模型,以研究代码模型如何表示代码语法和语义。这包括四个著名的代码预训练模型(CodeBERT、GraphCodeBERT、CodeT5和UnixCoder)以及三个大语言模型(StarCoder、CodeLlama和CodeT5+)。我们开发了四个探测任务来评估模型学习代码语法和语义的能力。这些任务聚焦于在模型表示空间内重建代码语法和语义结构——如AST、CFG、CDG和DDG——这些结构对于理解代码至关重要。此外,我们探究了语法标记在每个标记表示中的作用以及代码标记间的扩展依赖关系。进而,我们考察了关于代码语义结构的注意力权重分布。通过详细分析,我们的结果强调了各种代码模型在掌握代码语法和语义方面的优势与不足。研究结果表明,这些模型擅长把握代码语法,有效捕获语法标记的关系与角色。然而,它们编码代码语义的能力表现出更大的差异性。本研究丰富了我们对代码模型分析语法和语义能力的理解。我们的发现为未来的代码模型改进提供了宝贵见解,有助于优化其在一系列代码相关任务中的应用。
引用
@article{arxiv.2212.10017,
title = {Unveiling Code Pre-Trained Models: Investigating Syntax and Semantics Capacities},
author = {Wei Ma and Shangqing Liu and Mengjie Zhao and Xiaofei Xie and Wenhan Wang and Qiang Hu and Jie Zhang and Yang Liu},
journal= {arXiv preprint arXiv:2212.10017},
year = {2024}
}