赶上最新的AI论文

[SyntaxEval] 代码预测转换功能的演变

[SyntaxEval] 代码预测转换功能的演变

软件工程

三个要点
✔️ 提出了一种也考虑语法规则的模型评估方法
✔️ 我们引入了语法评估(SyntaxEval),这是一种评估多语言模型预测程序结构准确性的方法。

✔️ 我们发现该模型能很好地学习一些句法特征,但仍有改进的余地。

Which Syntactic Capabilities Are Statistically Learned by Masked Language Models for Code?
written by Alejandro VelascoDavid N. PalacioDaniel Rodriguez-CardenasDenys Poshyvanyk
(Submitted on 3 Jan 2024 (v1), last revised 21 Feb 2024 (this version, v2))
Comments: Published on arxiv.

Subjects: Software Engineering (cs.SE)

code:  

本文所使用的图片要么来自论文、介绍性幻灯片,要么是参考这些图片制作的。

概述

本文将讨论如何评估用于编程完成的模型。编程补全是一种功能,例如,当您在智能手机上输入信息时,它会预测下一个要输入的单词。在评估这些预测是否准确时,我们通常会看预测的单词是否正确,但这种方法往往会忽略编程语法规则是否得到遵守。

因此,本文提出了一种同时考虑语法规则的模型评估方法。这种方法可以自动找到编程的重要部分,并用它们来测试模型。具体来说,就是用来检验你是否理解了程序的结构。利用这种方法,我们测试了两种流行的模型。结果显示,模型所建议的语言实际上可能与程序的结构不符。这意味着,重要的是要看预测不仅是否正确,而且是否与节目结构相匹配。

介绍

大规模语言模型在编程相关任务中表现出卓越的性能。自动代码补全在代码生成领域尤为重要。代码补全是一种根据上下文适当补全不完整代码的技术。在以往的研究中,人们尝试使用机器学习来完成代码的各种方法。

最近,掩码语言模型(MLM)被用于代码自动补全,并显示出很高的准确性。然而,这些模型对程序结构的理解程度却不太清楚。在本文中,我们介绍了一种评估 MLM 预测程序结构准确度的方法--SyntaxEval。然后研究了句法特征对 MLM 预测的影响。

相关研究

准确生成和理解代码对于编程相关任务非常重要。现代代码生成技术使用概率模型,从大量代码中学习并预测部分代码(称为标记的元素)。简单地说,代码生成模型应根据编程语言的语法规则自动生成一段代码。

建议方法

首先,需要了解代码的语法(语法),以便评估多层次传销的绩效。代码是以特定结构编写的,理解这种结构非常重要。为了理解这种结构,我们使用所谓的抽象语法树(AST);AST 是代码结构在树形结构中的表示。

SyntaxEval 标识符 AST 节点进程

然后,执行以下步骤来评估多边监 测机制的性能

 1. 从代码中生成 AST。
 2 . 随机隐藏生成的 AST 中的部分内容。
 3. 将隐藏部分提交给多语言模块,以便多语言模块预测隐藏部分;以及
 4 . 将预测 结果与隐藏部分的正确答案进行比较,并评估 MLM 的性能。

还计算因果关系的可解释性,以了解影响传销业绩的因素。这是一种量化影响传销业绩的因素的方法。

最后,利用这种评估方法,使用 Python 编程语言对代码完成情况进行了实验。该实验使用 Python 代码来评估多语言版本管理器的性能,并研究代码结构对多语言版本管理器性能的影响。

试验

关于语法函数性能的总体结果

本节介绍机器学习模型性能的评估结果。对机器学习模型进行了评估,看其是否能够隐藏或掩盖代码的某些部分,并对这些部分进行预测。

下图评估了𝑀1 使用的节点在随机掩码标记(𝑇0)和基于语法的掩码标记(𝑇1)之间的 Jaccard 相似度(一种计算两组相似度的统计量度),并对每个节点进行了比较换句话说,它衡量每个节点预测的一致性,并捕捉随机屏蔽和基于语法屏蔽之间的差异。

下表评估了影响模型性能的因素,并研究了这些因素之间的关系。换句话说,它考察了模型关注的句法特征,并了解了这些特征对模型性能的影响程度;Jaccard、Levenshtein 和 Sorensen-Dice 是对每个字符的相似度和字符串距离的度量。

下图重点关注模型学习到的语法特征,并评估如何利用这些特征进行预测。换句话说,它考察的是模型是否理解代码的形式和结构,以及这对模型准确性的影响程度。

结果表明,模型对代码语法特征的学习效果足够好。然而,模型发现代码的某些特定部分很难预测。这表明,该模型可以很好地处理某些形式的代码,但在代码的其他部分仍有改进的余地。

因果关系评价效果

这里使用了因果评价方法来研究影响模型性能的因素。结果表明,代码的语法信息对模型的性能有显著影响。不过,随机屏蔽的代码部分也会影响模型的性能,代码某些部分的预测性能会降低。总之,结果表明该模型在预测部分代码方面表现良好,但仍有改进的余地。

结论

本研究重点关注机器学习模型理解编程语言语法的能力,并对其性能进行了评估。结果表明,模型很好地学习了一些语法特征,但仍有改进的余地。特别是,结果显示,对语言中随机屏蔽部分的预测性能较差。这表明,机器学习模型可能没有完全理解编程语言的语法。

未来的研究应更进一步,更深入地了解用于评估编程语言语义特征的方法,以及机器学习模型为何能更好地预测随机屏蔽的标记。考虑与机器学习模型的预训练目标相关的因素也很重要。

 
  • メルマガ登録(ver
  • ライター
  • エンジニア_大募集!!

如果您对文章内容有任何改进建议等,请通过 "联系我们 "表格与爱学网编辑部联系。
如果您能通过咨询表与我们联系,我们将非常感激。

联系我们