Bridge and Hint: Extending Pre-trained Language Models for Long-Range Code

2024年05月18日
  • 简介
    在代码智能领域,有效地对长代码进行建模是一个重大挑战。现有的预训练语言模型(PLMs),例如UniXcoder已经取得了显著的成功,但是它们在处理长代码输入时仍然面临困难。这主要是因为它们在维护上下文连续性和记忆长代码的关键信息方面的能力受限。为了缓解这些困难,我们提出了EXPO,一个用于扩展预训练语言模型以处理长代码的框架。EXPO包括我们在本文中提出的两种创新记忆机制:桥接记忆和提示记忆。桥接记忆使用标记机制连接长代码的不同片段,帮助模型保持上下文连贯性。提示记忆关注于全局上下文中的关键代码元素,例如包导入,通过集成kNN注意力层来自适应地选择相关的代码元素。这种双重记忆方法弥合了理解局部代码片段和维护全局代码连贯性之间的差距,从而增强了模型对长代码序列的整体理解能力。我们在五个流行的预训练语言模型(如UniXcoder)和两个代码智能任务(API推荐和漏洞检测)上验证了EXPO的有效性。实验结果表明,EXPO显著改进了预训练语言模型。
  • 作者讲解
  • 图表
  • 解决问题
    本文旨在解决预训练语言模型在处理长代码时的困难,提出了EXPO框架,通过引入桥接记忆和提示记忆机制来增强模型对长代码序列的理解。
  • 关键思路
    EXPO框架包含两种创新的记忆机制:桥接记忆和提示记忆。桥接记忆通过标记机制连接不同的代码片段,帮助模型维持上下文连贯性。提示记忆则通过集成kNN注意力层,选择相关的代码元素,专注于全局上下文中的关键代码元素,例如包导入。这种双重记忆机制弥补了理解局部代码片段和维护全局代码连贯性之间的差距,从而增强了模型对长代码序列的理解。
  • 其它亮点
    本文在五个常用的预训练语言模型上进行了实验验证,以API推荐和漏洞检测两个代码智能任务为例。实验结果表明,EXPO显著提高了预训练语言模型的性能。本文的亮点在于提出了桥接记忆和提示记忆机制,这种双重记忆机制有助于增强模型对长代码序列的理解。
  • 相关研究
    最近在这个领域中,还有一些相关的研究,例如《CodeBERT: A Pre-Trained Model for Programming and Natural Language Processing》、《CodeXGLUE: A Machine Learning Benchmark Dataset for Code Understanding and Generation》等。
许愿开讲
PDF
原文
点赞 收藏
向作者提问
NEW
分享到Link

提问交流

提交问题,平台邀请作者,轻松获得权威解答~

向作者提问