Skip to main content
QUICK REVIEW

[论文解读] Learning code summarization from a small and local dataset

Toufique Ahmed, Prémkumar Dévanbu|arXiv (Cornell University)|Jun 2, 2022
Software Engineering Research被引用 6
一句话总结

本文提出对基础模型进行同项目微调以用于代码摘要生成,证明在相同项目上进行训练和测试可显著提升性能,优于跨项目方法。采用混合方法——先在多语言数据上预训练,再在项目特定代码上微调——在样本效率方面实现最先进结果,尤其在低数据设置下表现优异。

ABSTRACT

Foundation models (e.g., CodeBERT, GraphCodeBERT, CodeT5) work well for many software engineering tasks. These models are pre-trained (using self-supervision) with billions of code tokens, and then fine-tuned with hundreds of thousands of labeled examples, typically drawn from many projects. However, software phenomena can be very project-specific. Vocabulary, and other phenomena vary substantially with each project. Thus, training on project-specific data, and testing on the same project, is a promising idea. This hypothesis has to be evaluated carefully, e.g., in a time-series setting, to prevent training-test leakage. We compare several models and training approaches, including same-project training, cross-project training, training a model especially designed to be sample efficient (and thus prima facie well-suited for learning in a limited-sample same-project setting) and a maximalist hybrid approach, fine-tuning first on many projects in many languages and then training on the same-project. We find that the maximalist hybrid setting provides consistent, substantial gains over the state-of-the-art, on many different projects in both Java and Python.

研究动机与目标

  • 探究与跨项目训练相比,项目特定微调是否能提升代码摘要性能。
  • 通过探索样本高效微调策略,解决软件工程自然语言处理中标签数据有限的挑战。
  • 在真实的时间序列设置下评估同项目训练的有效性,以防止数据泄露。
  • 开发并测试一种优化样本效率的混合模型(GCBhybrid),适用于项目特定微调。
  • 评估即使高度预训练的模型(如PolyGlot)是否也能通过同项目微调获得进一步提升。

提出的方法

  • 采用时间序列评估协议:仅使用项目中过去代码样本进行训练,未来样本用于测试,以模拟真实世界部署。
  • 应用两阶段训练方案:在大规模多语言代码数据上预训练基础模型(如GraphCodeBERT、CodeT5),然后在项目特定数据上微调。
  • 提出GCBhybrid,一种经过修改的GraphCodeBERT模型,配备专用解码器,以在同项目微调期间提升样本效率。
  • 在18个Java和16个Python项目上比较多种训练策略:同项目、跨项目及混合微调。
  • 使用BLEU-4及其他标准指标评估摘要质量,通过仔细的数据集划分确保无数据泄露。
  • 利用CodeXGLUE基准,采用去重并预先划分的数据,以确保外部有效性并防止数据污染。

实验结果

研究问题

  • RQ1与跨项目训练相比,同项目微调是否能提升代码摘要性能?
  • RQ2在项目特定设置下,仅在单一项目上微调的模型是否优于在多样化、多项目数据集上训练的模型?
  • RQ3像GCBhybrid这样的样本高效模型是否能在仅使用单一项目有限标注样本的情况下实现优异性能?
  • RQ4对已达到最先进水平的模型(如PolyGlot)在项目特定数据上进行进一步微调是否能带来可测量的性能提升?
  • RQ5同项目训练与跨项目训练相比,在计算和数据效率方面存在何种权衡?

主要发现

  • 混合训练方法——先在多语言数据上预训练,再进行同项目微调——在多个Java和Python项目中持续显著优于最先进模型(如CodeT5)。
  • 同项目微调显著提升性能,即使应用于高度预训练的模型(如PolyGlot)也表明项目特异性可增强摘要质量。
  • GCBhybrid模型展现出高样本效率,可在有限训练数据下实现强性能,适用于低资源软件项目。
  • 表现最佳的模型(PolyGlot配合同项目微调)在统计上显著优于CodeT5,经配对非参数检验确认。
  • BLEU-4得分的平均提升超过2分的阈值,该阈值被认为对人类可检测性具有实际意义,表明结果具有实际重要性。
  • 同项目训练降低了计算成本并避免了数据泄露,相较于跨项目基准,提供了更真实且稳定的评估环境。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。