- 简介自然语言生成代码是大语言模型(LLMs)最成功的应用之一。然而,这些模型会产生“幻觉”:它们输出的内容可能在语法上正确,但在事实上却是错误的。在没有现有正确实现(即“预言”或参考答案)的情况下,我们能否衡量所生成程序的正确可能性有多高? 本文中,我们提出了一种错误度量标准,称为“不连贯性”(incoherence),它可以在没有预言的情况下高效地进行估计,并提供一个误差的下界,即该自然语言描述下LLM生成的程序是错误的概率。我们的实验显示了这一方法的卓越效果。对于一般的代码生成任务,基于不连贯性的方法可以自动识别出约三分之二的错误程序,且没有出现误报。实际上,基于预言的LLM评估可以被基于不连贯性的评估可靠地替代。特别是,我们发现通过预言判断程序是否正确的LLM排名(pass@1指标),与通过不连贯性判断程序是否正确的LLM排名之间具有高度一致性。
-
- 图表
- 解决问题论文试图解决如何在没有正确程序作为参考(即无oracle)的情况下,量化大语言模型(LLMs)生成代码的错误概率问题。该问题对于提升代码生成系统的可靠性具有重要意义,属于当前研究中的前沿问题。
- 关键思路论文提出了一种名为“incoherence”(不一致性)的度量方法,用于评估LLM生成代码的错误概率。其核心思想是通过多次独立生成同一任务的代码,并统计生成结果之间的不一致性来估计程序的错误下界。相比传统依赖测试用例或正确实现(oracle)的方法,这种方法无需任何先验正确程序即可进行评估。
- 其它亮点1. 提出的incoherence方法能够在没有oracle的情况下识别约三分之二的错误程序,且未报告假阳性案例。 2. 实验表明,基于incoherence的LLM排名与基于pass@1(即生成一次就通过测试的比率)的排名高度一致,说明其可有效替代传统基于oracle的评估方式。 3. 方法具有高效性和通用性,适用于各种编程语言和不同LLM架构。 4. 实验基于多个实际代码生成任务展开,验证了方法的有效性和泛化能力。 5. 该工作为未来减少对测试用例或正确实现的依赖提供了新思路,值得在更多任务和模型中深入探索。
- 1. Evaluating Large Language Models for Code Generation: A Benchmark Study 2. Program Synthesis with Large Language Models 3. Self-Consistency as a Principle for Unsupervised Evaluation of Code Generation 4. Testing Generated Code with Learned Properties 5. Pass@K Evaluation for Code Generation: A New Benchmark Metric
NEW
提问交流
提交问题,平台邀请作者,轻松获得权威解答~
向作者提问

提问交流