基于结构感知稀疏注意力理解长编程语言
计算与语言
2022-05-30 v1 人工智能
摘要
基于编程的预训练语言模型(PPLM),如 CodeBERT,已在许多下游代码相关任务中取得巨大成功。由于 Transformer 中自注意力的内存和计算复杂度随序列长度呈二次增长,PPLM 通常将代码长度限制为 512。然而,实际应用中的代码通常较长,例如代码搜索,现有 PPLM 无法高效处理。为解决此问题,本文提出 SASA,一种结构感知稀疏注意力(Structure-Aware Sparse Attention)机制,降低了复杂度并提升了长代码理解任务的性能。SASA 的关键组件为 top- 稀疏注意力和基于抽象语法树(AST)的结构感知注意力。通过 top- 稀疏注意力,可以以更低计算成本获得最关键的注意力关系。由于代码结构代表了代码语句的逻辑,是对代码序列特征的补充,我们进一步将 AST 结构引入注意力。在 CodeXGLUE 任务上的大量实验表明,SASA 取得了优于对比基线的性能。
引用
@article{arxiv.2205.13730,
title = {Understanding Long Programming Languages with Structure-Aware Sparse Attention},
author = {Tingting Liu and Chengyu Wang and Cen Chen and Ming Gao and Aoying Zhou},
journal= {arXiv preprint arXiv:2205.13730},
year = {2022}
}
备注
sigir 2022 accepted, code will be available at https://github.com/alibaba/EasyNLP