← 最新论文
💻 computer science

A Systematic Methodology for Evaluating Failure Independence in LLM-Generated Code

本文引入了一种评估大语言模型生成代码在失败独立性方面的系统性方法,揭示了尽管异构模型提供了一定的多样性,但它们的实现过程经常共享根源问题并在相同的测试用例上失败,从而违反了有效 N 版本编程所要求的独立性假设。

原作者: Rodrigo Pato Nogueira, Karthik Pattabiraman, Marco Vieira, João R. Campos

发布于 2026-07-07
📖 1 分钟阅读☕ 轻松阅读

原作者: Rodrigo Pato Nogueira, Karthik Pattabiraman, Marco Vieira, João R. Campos

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你正在建造一座至关重要的桥梁。为了确保它不会坍塌,你决定雇佣五个不同的工程团队来设计完全相同的支撑梁。这个想法是:如果 A 队犯了错,B 队可能会做对;如果 C 队也做对了,你就可以采纳多数人的意见。这被称为N 版本编程(N-Version Programming)。这种安全网依赖于一个巨大的假设:这些团队足够独立,以至于它们不会犯下完全相同的错误。

几十年来,我们一直知道人类团队往往无法通过这项测试。他们阅读相同的蓝图,使用相同的教科书,最终会导致相同的错误。但现在,我们有了大语言模型(LLMs)——这些 AI 系统可以瞬间且廉价地编写代码。人们曾寄希望于,既然这些 AI 彼此“不同”,它们或许可以成为一支完美的独立工程师团队,以不同的方式出错,从而让我们始终可以信任多数派。

这篇论文提出了一个简单而关键的问题:这种希望是真实的吗? 这些 AI 模型究竟是独立出错,还是都会被同一根隐形的香蕉皮绊倒?

实验:一场“代码奥林匹克”

研究人员设计了一个大规模实验,就像一场代码奥林匹克竞赛:

  • 运动员: 他们使用了 12 种不同的 AI 模型(包括来自大型科技公司的,以及开源的,有些很聪明,有些则稍逊一筹)。
  • 项目: 他们给这些 AI 提供了 224 个不同的编程问题来解决。
  • 规则: 他们要求 AI 使用 5 种不同的编程语言(如 Python、C++、Java)编写解决方案,并尝试了 3 种不同的提问方式(简单的提示词、分步推理,或“发挥创意”的提示词)。
  • 裁判: 他们不仅观察代码本身,还通过数千个测试用例运行代码,以观察代码在哪里崩溃。

研究结果:“回声壁”效应

以下是他们的发现,通过简单的概念进行了解析:

1. “同一个大脑”问题(结构多样性)

当研究人员观察代码本身时,他们发现,如果你要求某一个特定的 AI 模型针对同一个解决方案写五次代码,它每次写的代码几乎都完全一样。这就像要求一个人就同一个话题写五篇不同的文章;他们很可能会使用相同的词汇和句子结构。

  • 比喻: 如果你要求五个人画一只猫,他们可能会画出不同的品种。但如果你要求同一个人画五次猫,他会画出五只一模一样的猫。
  • 结果: 为了获得看起来不同的代码,你必须使用不同的 AI 模型。使用同一个模型并配合不同的“提示词”(指令)并没有起到什么作用。

2. “共同盲点”(行为多样性)

这是最重要的部分。即使代码看起来不同,研究人员还是检查了代码在哪里失败了

  • 比喻: 想象五位驾驶员正在进行试驾。驾驶员 A 和驾驶员 B 可能驾驶不同的汽车,采取略微不同的路线,但他们两人都在同一时刻撞上了同一个坑洼。
  • 结果: 这些 AI 并不独立。它们经常在完全相同的测试用例上失败。即使使用了 12 个不同的模型,它们也倾向于在同样的逻辑陷阱中跌倒。如果一个 AI 在某个特定的数学问题上失败了,另一个 AI 也极有可能在同一个问题上失败。

3. 安全网上有漏洞(可靠性增益)

研究人员尝试使用“多数投票”策略(如果 5 个 AI 中有 3 个说答案是 X,我们就采纳 X)。

  • 结果: 这确实有一点帮助,但远没有达到理论预期的效果。
    • 如果这些 AI 真正是独立的,那么结合五个模型理应让系统趋于完美。
    • 然而实际上,提升幅度不到预期的一半
    • 残酷的真相: 没有任何一种组合模型的方法,能比仅使用单个最强的 AI 模型本身更可靠。这个“安全网”有太多的漏洞,因为所有人都在同一个洞里摔倒。

4. 它们为什么失败?(故障分析)

研究人员深入挖掘了 AI 失败的原因。他们发现,即使错误在表面上看起来不同,但往往源于相同的根源

  • 比喻: 一个 AI 可能因为忘记检查数字是否为负数而失败,而另一个 AI 可能因为对大数字感到困惑而失败。但两者实际上都是因为在以同样的方式理解“边界”的概念上存在缺陷。它们共享相同的“推理弱点”。
  • 结果: 这些 AI 并非在犯随机错误;它们是在根据其训练方式进行系统性错误

总结

论文得出结论:目前的 AI 模型并不具备足够的独立性,不足以用于那种依靠多数投票来捕捉错误的“安全网”系统中。

  • 使用不同的模型会有一定帮助: 混合使用模型比重复使用同一个模型要好。
  • 改变语言或提示词几乎没有帮助: 要求 AI “发挥创意”或者把语言从 Java 换成 Python,并不能阻止它们犯下同样的错误。
  • “独立性”假设破灭了: “不同的 AI 会以不同的方式出错”这一观点,目前只是一个神话。它们往往会一起出错。

简而言之: 如果你正在构建一个关键系统,并想着:“我只要问五个不同的 AI,然后取多数人的意见就行了”,这篇论文警告你:不要这样做。 它们很可能会在同样的地方出错,到那时,你所拥有的安全性并不比只向最聪明的单个 AI 询问一次要高。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →