探索课程学习在提升代码语言模型性能中的潜力
摘要
本文探讨了课程学习(Curriculum Learning, CL)在提升小型代码语言模型性能方面的潜力。尽管先前研究表明课程学习并不一定能提高语言模型的性能,但本文意外地发现,对于代码语言模型,精心设计的课程学习方法能显著提升其在代码执行任务上的准确性,尽管对代码完成任务的影响较小。研究通过训练多个具有100万参数的GPT模型来预测下一个令牌,并在代码完成和执行任务上进行评估。主要贡献包括提出一种结合软件代码度量的新颖代码难度评估指标,探索课程学习对代码语言模型的有效性,并引入一种新颖的课程学习计划,以提高小型解码器专用语言模型在代码执行任务上的性能。研究结果为代码语言模型的课程学习应用开启了更多研究之门。
原理
本文通过设计一种结合软件工程度量的代码难度评估指标(Overall Metric, OM),将生成的代码片段分为“简单”、“中等”和“困难”三个级别。基于这些级别,提出三种课程学习计划:顺序、增量和混合。这些计划通过逐步增加训练数据的难度,帮助模型逐步适应更复杂的代码结构。具体来说,顺序计划从简单数据开始,逐步过渡到困难数据;增量计划逐步引入更复杂的数据;混合计划则结合了简单和中等数据的较难部分,最后加入困难数据。通过这种渐进式的训练方法,模型能够更好地理解和执行代码,尤其是在处理复杂代码时表现出更强的能力。
流程
研究首先使用TinyPy Generator生成Python代码片段,然后通过Overall Metric(OM)评估这些代码片段的难度,并将其分为三个难度级别。接下来,模型根据不同的课程学习计划进行训练。最后,通过评估模型在令牌级和行级代码完成以及代码执行任务上的性能,与基线模型(所有难度级别的数据混合训练)进行比较。例如,在代码执行任务上,混合课程学习计划显示出最佳性能,显著优于基线模型。
应用
本文的研究成果表明,课程学习在提升代码语言模型性能方面具有巨大潜力,特别是在代码执行任务上。这一发现不仅适用于Python代码,还可能扩展到其他编程语言,为代码理解和生成领域提供了新的研究方向。未来,课程学习方法可能被广泛应用于各种代码智能任务,如代码补全、代码翻译和代码生成,从而提高软件开发的效率和质量。
