中文

CodeArt:当符号缺失或不可靠时,通过注意力正则化构建更好的代码模型

软件工程 2024-11-22 v1 人工智能 计算与语言

摘要

基于Transformer的代码模型在许多软件工程任务中表现突出。然而,当符号缺失或不可提供时,其有效性会下降。原因是模型可能无法在没有符号帮助的情况下学习正确注意力/上下文。我们提出了一种在符号缺失时预训练通用代码模型的新方法。我们观察到在这种情况下,程序退化为类似非常原始语言的程序。因此,我们提出使用程序分析预先提取上下文(而不是像传统模型那样依赖符号和掩码语言模型),然后利用新颖的注意力掩码方法仅允许模型关注这些上下文,例如双向程序依赖传递闭包和标记共现。在此同时,利用内在的自注意力机制来学习哪些允许的注意力比其他注意力更重要。为实现这一思想,我们增强了BERT模型的基础分词和模型架构,构建并使用注意力掩码,并引入一种新的预训练算法。我们使用由2600万个剥离的二进制函数组成的数据集进行预训练,这些函数包含我们工具提取的显式程序依赖信息。我们将该模型应用于三个下游任务:二进制相似性、类型推断和恶意软件族分类。我们的预训练模型在这些任务中分别将SOTA提升至64%、60%和94%。该模型在其他通用代码理解模型的预训练技术方面也显著优于它们。

关键词

引用

@article{arxiv.2402.11842,
  title  = {CodeArt: Better Code Models by Attention Regularization When Symbols Are Lacking},
  author = {Zian Su and Xiangzhe Xu and Ziyang Huang and Zhuo Zhang and Yapeng Ye and Jianjun Huang and Xiangyu Zhang},
  journal= {arXiv preprint arXiv:2402.11842},
  year   = {2024}
}