程序代码中的错误理解:用于多标签分类的 LLM-DL 组合的系统研究
Error Understanding in Program Code: A Systematic Study of LLM-DL Combinations for Multi-label Classification
摘要
编程是 CS 和 SE 的核心技能,但识别和解决代码错误对于从业者来说仍然具有挑战性。 LLM 在 NL 理解方面表现出了卓越的能力,但是代码专用的 LLM 在与 DL 序列解码器配对时如何表现,以及这种管道的哪个组件驱动性能,仍然没有得到充分的探索。本研究对用于源代码多标签错误分类 (MLEC) 的 LLM-DL 组合进行了系统评估。八个经过微调的 LLM,包括 CodeT5、GraphCodeBERT、CodeT5+、UniXcoder、RoBERTa、具有缩小学习率范围的 RoBERTa、PLBART 和 CoTexT,与 GRU、LSTM、BiLSTM 和 BiLSTM 集成,并在真实的 Python 代码错误数据集上具有附加注意机制解码器。由此产生的 32 个模型变体经过 Optuna 调整,并在全面的多标签指标套件上进行评估。在单次评估中,CodeT5+ GRU 表现最好,加权 F1 得分为 0.8243,平均准确率为 91.84%,精确匹配准确率为 53.78%,汉明损失为 0.0816,一次错误为 0.0708。为了确定这种性能的根源,种子控制的基线和成分消融添加了配对显着性测试。编码器选择的影响最大:在共享相同线性分类头的四个编码器中,加权 F1 分数范围为 0.7846 到 0.8263,按代码专业化排序。在 CodeT5+ 上,线性头比匹配种子下的 GRU 混合算法高出 0.0040 加权 F1 (p = 0.0013),同时训练速度提高约 24%。最大池化优于均值池化和注意力池化,并且尽管存在大量标签共现,但显式建模标签交互并不能改善加权 F1。这些结果将编码器质量(而不是解码器复杂性)确定为 MLEC 的主要杠杆,并支持开发用于编程教育和 SE 的可扩展自动反馈工具。