通过 Transformers 自动化代码相关任务:预训练的影响
软件工程
2023-02-09 v1 机器学习
摘要
Transformers 在软件工程(SE)文献中已广受欢迎。这些深度学习模型通常通过自监督目标进行预训练,旨在为模型提供关于感兴趣语言(如 Java)的基础知识。一个经典的预训练目标是掩码语言模型(MLM),其中输入(如一个 Java 方法)中一定比例的 token 被掩码,由模型负责预测它们。一旦预训练完成,模型随后被微调以支持感兴趣的具体下游任务(如代码摘要)。虽然有证据表明预训练可提升性能,但关于所使用的具体预训练目标的影响却知之甚少。实际上,MLM 只是可能的预训练目标之一,且来自自然语言处理领域的最新工作表明,为具体下游任务量身定制的预训练目标可能大幅提升模型性能。在本研究中,我们关注预训练目标对 transformers 在自动化代码相关任务时性能的影响。我们首先进行系统性文献综述,旨在识别 SE 中使用的预训练目标。然后,我们使用(i)SE 中通常采用的通用预训练目标;以及(ii)为我们实验对象即缺陷修复、代码摘要和代码补全这些特定代码相关任务量身定制的预训练目标,预训练了 32 个 transformers。我们还将预训练模型与未预训练模型进行比较。我们的结果显示:(i)仅当可用的微调数据量较小时,预训练才有助于提升性能;(ii)即使与针对手头下游任务专门化的预训练目标相比,MLM 目标通常也足以最大化模型的预测性能。
引用
@article{arxiv.2302.04048,
title = {Automating Code-Related Tasks Through Transformers: The Impact of Pre-training},
author = {Rosalia Tufano and Luca Pascarella and Gabriele Bavota},
journal= {arXiv preprint arXiv:2302.04048},
year = {2023}
}
备注
Paper accepted at ICSE'23