代码模型应循序渐进地学习吗?面向真实软件工程任务的课程学习初步评估
软件工程
2025-02-07 v1 机器学习
摘要
基于学习的技术,尤其是先进的代码预训练模型,已在代码理解与生成方面展现出强大能力,能够解决多种软件工程(SE)任务。尽管结果令人鼓舞,但当前的训练方法可能并未完全优化模型性能,因为它们通常采用随机打乱的训练数据进行学习。近期研究表明,课程学习(Curriculum Learning, CL)通过基于合成代码难度进行增量学习,可以提升代码相关任务的性能。然而,在软件工程任务中,采用传统难度度量标准的课程学习有效性在很大程度上仍未被探索。在本研究中,我们探索了两种常规代码度量标准:代码长度和圈复杂度,用以确定难度级别。我们通过代码克隆检测和代码摘要任务,研究了预训练代码模型(CodeT5)在课程学习下的学习方式。我们在 CodeXGLUE 基准上的实证研究显示出与先前研究相反的结果,模型表现出灾难性遗忘和捷径学习的迹象。令人惊讶的是,模型性能仅在训练的前四分之一阶段就达到饱和,这可能表明模型的表征能力和/或任务固有难度存在极限。未来的工作应进一步探索针对更广泛的软件工程任务、使用不同代码模型的各种课程学习策略,以获得更全面的理解。
引用
@article{arxiv.2502.03806,
title = {Should Code Models Learn Pedagogically? A Preliminary Evaluation of Curriculum Learning for Real-World Software Engineering Tasks},
author = {Kyi Shin Khant and Hong Yi Lin and Patanamon Thongtanunam},
journal= {arXiv preprint arXiv:2502.03806},
year = {2025}
}
备注
Accepted by the 22nd International Conference on Mining Software Repositories (MSR 25)