BERT 中代码注意力的探索性研究
软件工程
2022-04-22 v1 人工智能
计算与语言
编程语言
摘要
软件工程领域许多近期模型引入了基于 Transformer 架构的深度神经模型,或使用在代码上预训练基于 Transformer 的预训练语言模型(PLM)。尽管这些模型在代码摘要和缺陷检测等许多下游任务中取得了最先进的结果,但它们基于主要在自然语言处理(NLP)领域研究的 Transformer 和 PLM。当前研究在代码上依赖来自 NLP 的推理与实践,尽管自然语言与编程语言之间存在差异。关于解释代码如何被建模的文献也很有限。在此,我们研究 PLM 在代码上的注意力行为,并将其与自然语言进行比较。我们在代码上预训练了基于 Transformer 的 PLM——BERT,并探索它学习到的语义与句法信息。我们运行了若干实验来分析代码构件彼此间的注意力值以及 BERT 在各层学习到的内容。我们的分析表明,与 NLP 中最受关注的 token [CLS] 不同,BERT 更关注句法实体,特别是标识符和分隔符。这一观察促使我们在用于代码克隆检测时,利用标识符来表示代码序列,而非 [CLS] token。我们的结果显示,在 BERT 的较低层和较高层中,使用标识符的嵌入分别使其 F1 分数提升 605% 和 4%。当在基于代码的 PLM——CodeBERT 中使用标识符嵌入时,克隆检测的 F1 分数提升了 21–24%。这些发现可通过使用代码特定表示而非应用 NLP 中常用的嵌入而惠及研究界,并为开发具有相似性能的小型模型开辟新方向。
引用
@article{arxiv.2204.10200,
title = {An Exploratory Study on Code Attention in BERT},
author = {Rishab Sharma and Fuxiang Chen and Fatemeh Fard and David Lo},
journal= {arXiv preprint arXiv:2204.10200},
year = {2022}
}
备注
Accepted in ICPC 2022