CodeMind: A Framework to Challenge Large Language Models for Code Reasoning

2024年02月15日
  • 简介
    仅仅依靠测试结果来评估大型语言模型(LLMs)的代码合成能力可能会导致不公平的评估或者促进具有数据泄漏的模型。作为替代方案,我们引入了CodeMind框架,旨在评估LLMs的代码推理能力。CodeMind目前支持三种代码推理任务:独立执行推理(IER)、依赖执行推理(DER)和规范推理(SR)。前两个任务评估模型对任意代码或模型可以正确合成的代码的执行输出进行预测。第三个任务评估LLMs实现指定期望行为的程度。我们使用CodeMind在两种不同的编程语言的五个基准测试中对九个LLMs进行了广泛的评估,结果显示,LLMs可以公平地理解控制流结构,并且通常能够推理输入如何演变为输出,特别是对于简单程序和它们可以正确合成的程序。然而,它们在代码复杂度、非平凡逻辑和算术运算符、非原始类型和API调用等方面的性能下降。此外,我们观察到,虽然相关,规范推理(对于代码合成至关重要)并不意味着执行推理(对于更广泛的编程任务,如测试和调试至关重要):基于测试结果对LLMs进行排名可能与代码推理不同。
  • 图表
  • 解决问题
    评估大型语言模型在代码合成方面的能力时,仅依赖测试结果可能导致不公平的评估或者促进数据泄露的模型。该论文提出了CodeMind框架,用于评估LLM的代码推理能力。
  • 关键思路
    CodeMind框架支持三个代码推理任务:独立执行推理(IER)、依赖执行推理(DER)和规范推理(SR)。通过在两种不同的编程语言中使用五个基准测试和九个LLM的广泛评估,CodeMind显示LLM可以公平地理解控制流结构,并且通常能够推理输入如何演变为输出,特别是对于简单程序和它们可以正确合成的程序。然而,它们在具有更高复杂性、非平凡逻辑和算术运算符、非原始类型和API调用的代码方面的表现下降。此外,作者观察到,虽然规范推理(对于代码合成至关重要)与执行推理(对于更广泛的编程任务,如测试和调试)相关,但并不意味着它们相同:基于测试通过排名LLM的结果可能与代码推理不同。
  • 其它亮点
    论文提出了CodeMind框架,用于评估LLM的代码推理能力。CodeMind支持三个代码推理任务:独立执行推理(IER)、依赖执行推理(DER)和规范推理(SR)。作者使用五个基准测试和九个LLM进行广泛评估,发现LLM可以公平地理解控制流结构,并且通常能够推理输入如何演变为输出,特别是对于简单程序和它们可以正确合成的程序。但对于具有更高复杂性、非平凡逻辑和算术运算符、非原始类型和API调用的代码,LLM的表现下降。作者观察到,虽然规范推理(对于代码合成至关重要)与执行推理(对于更广泛的编程任务,如测试和调试)相关,但并不意味着它们相同。
  • 相关研究
    最近的相关研究包括:1. CodeBERT: A Pre-Trained Model for Programming and Natural Language Processing;2. GraphCodeBERT: Pre-Trained Neural Models for Graph-Structured Source Code;3. CodeXGLUE: A Machine Learning Benchmark Dataset for Code Understanding and Generation。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论