A Code Comprehension Benchmark for Large Language Models for Code

📄 arXiv: 2507.10641v1 📥 PDF

作者: Jayant Havare, Saurav Chaudhary, Ganesh Ramakrishnan, Kaushik Maharajan, Srikanth Tamilselvam

分类: cs.SE, cs.AI, cs.CL

发布日期: 2025-07-14

备注: 10 Pages, 5 Figures


💡 一句话要点

提出代码理解基准,通过微调提升大语言模型在代码语义理解任务上的性能

🎯 匹配领域: 支柱二:RL算法与架构 (RL & Architecture) 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 代码理解 大语言模型 微调 代码语义 基准测试

📋 核心要点

  1. 现有大语言模型在代码任务中表现出色,但缺乏深层次的代码语义理解能力,导致在代码调试等任务中表现不佳。
  2. 论文提出通过大规模数据集微调大语言模型,使其专注于学习和提升代码的语义理解能力,而非仅仅是语法模式。
  3. 实验结果表明,经过微调的模型在代码理解任务上性能显著提升,例如QWQ-32B模型准确率从70%提升至83.47%。

📝 摘要(中文)

大型语言模型在代码生成和代码补全等编码任务中表现出令人印象深刻的能力,这得益于它们在大量代码数据上的训练。然而,这些模型主要通过预测下一个token来学习代码的表面语法模式,并不能保证它们具备代码理解能力,即捕捉代码语义的能力。因此,这些模型在需要更深层次语义理解的任务(如代码调试和代码优化)中表现不佳。为了解决这个问题,本文提出使用大规模数据集对这些模型进行微调,专门用于代码理解任务,使它们能够对代码语义有更强的理解。通过在一系列代码理解任务上评估三个不同规模的代码模型,结果表明,在相关下游任务上进行微调后,模型性能得到提高。例如,QWQ-32B模型的准确率从70%提高到83.47%。DPO微调的Codestral-22B在主观性评分任务上实现了87.66%的最高微观准确率。

🔬 方法详解

问题定义:现有的大型语言模型虽然在代码生成和补全方面表现出色,但它们主要依赖于对代码表面语法模式的学习,缺乏对代码深层语义的理解。这导致它们在需要理解代码意图的任务,例如代码调试、优化和主观性判断等任务中表现不佳。因此,如何提升大语言模型对代码语义的理解能力是一个关键问题。

核心思路:论文的核心思路是通过专门针对代码理解任务的大规模数据集对大语言模型进行微调。通过这种方式,模型可以学习到更深层次的代码语义信息,而不仅仅是语法规则。这种微调策略旨在弥补现有模型在代码理解方面的不足,使其能够更好地处理需要语义理解的代码任务。

技术框架:论文的技术框架主要包括以下几个步骤:首先,构建一个包含多种代码理解任务的大规模数据集。然后,选择不同规模的大型语言模型作为基础模型。接着,使用构建的数据集对这些模型进行微调,使其专注于代码语义理解。最后,在一系列代码理解任务上评估微调后的模型性能,并与原始模型进行比较。

关键创新:论文的关键创新在于提出了一个专门用于评估和提升大语言模型代码理解能力的基准。该基准包含多种代码理解任务,可以全面评估模型对代码语义的理解程度。此外,论文还验证了通过微调可以有效提升模型在这些任务上的性能,证明了该方法的有效性。

关键设计:论文的关键设计在于数据集的选择和构建,以及微调策略的制定。数据集需要包含足够多的代码理解任务,并且任务的难度要适中,能够有效区分不同模型的理解能力。微调策略需要根据不同的基础模型进行调整,以达到最佳的性能提升效果。论文中使用了DPO(Direct Preference Optimization)等微调方法,并针对不同的模型进行了参数调整。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,通过在代码理解任务上进行微调,大语言模型的性能得到了显著提升。例如,QWQ-32B模型的准确率从70%提高到83.47%。DPO微调的Codestral-22B模型在主观性评分任务上实现了87.66%的最高微观准确率。这些结果表明,微调是提升大语言模型代码理解能力的有效方法。

🎯 应用场景

该研究成果可应用于提升代码自动调试、代码优化、代码安全分析等领域。通过提高模型对代码语义的理解,可以开发出更智能的代码助手,帮助开发者更高效地编写和维护代码,并减少代码中的错误和漏洞。未来,该技术还可能应用于自动化代码审查和代码生成等任务。

📄 摘要(原文)

Large Language Models have shown impressive capabilities in coding tasks like code generation and code completion, as they have been trained on a large amount of code data. Also, since one of the core pretraining objectives is Next Token Prediction, these models tends to learn surface-level syntactic patterns in code. However, this does not guarantee code comprehension ability i.e. the ability to capture the semantics of the code. In our opinion, this is the reason why these models often underperform on tasks that require deeper semantic understanding, such as code debugging and code optimization. To address this, we propose fine-tuning these models specifically for code comprehension tasks using large-scale datasets, enabling them to develop a more robust understanding of code semantics. We evaluate three code models of varying sizes on a suite of code comprehension tasks designed to assess semantic understanding beyond surface-level syntactic pattern matching. In particular, we analyze performance on the Subjectivity Grading Task and observe that model performance improves after fine-tuning on relevant downstream tasks. The most significant improvement is seen in the QWQ-32B model, where accuracy increases from 70% to 83.47%. A similar or explainable trend is observed across other models, clearly indicating an enhancement in code comprehension ability. Among the models studied, the DPO-fine-tuned Codestral-22B achieves the highest micro-accuracy of 87.66% on the Subjectivity Grading Task.