Majority Voting for Code Generation

📄 arXiv: 2604.15618v1 📥 PDF

作者: Tim Launer, Jonas Hübotter, Marco Bagatella, Ido Hakimi, Andreas Krause

分类: cs.LG

发布日期: 2026-04-17

备注: ICLR 2026 Test-Time Updates (TTU) Workshop


💡 一句话要点

提出基于运行时行为共识的功能多数投票方法,提升代码生成性能

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

关键词: 代码生成 大型语言模型 功能多数投票 运行时行为 测试时强化学习

📋 核心要点

  1. 现有代码生成方法在复杂任务中表现不足,难以保证生成代码的正确性和可靠性。
  2. 提出功能多数投票(FMV)方法,通过运行时行为共识从多个生成结果中选择最优解。
  3. 实验表明,FMV在LiveCodeBench上显著提升了代码生成性能,且计算开销可控。

📝 摘要(中文)

本文研究了功能多数投票(FMV),这是一种基于功能共识的代码生成方法,利用大型语言模型生成多个代码,并通过在测试输入上的运行时执行签名来识别代表性解决方案。研究发现,FMV是一种有效的测试时推理策略,在LiveCodeBench上显著提高了性能,且计算开销不大。此外,本文扩展了功能共识的效用,并将其应用于无标签测试时强化学习的聚合策略。实验表明,这提高了holdout任务上的pass@1指标,但没有发现超出基础模型性能上限的自我改进的证据。

🔬 方法详解

问题定义:论文旨在解决大型语言模型在代码生成任务中,单个模型生成结果可能存在错误或不准确的问题。现有方法通常依赖于增加模型规模或训练数据,但忽略了利用多个生成结果之间的共识来提高代码质量。

核心思路:论文的核心思路是利用多个代码生成结果在测试用例上的执行行为,通过“功能多数投票”的方式选择一个最能通过测试的代表性解决方案。这种方法基于一个假设:即使单个生成结果可能包含错误,但多个结果中大概率存在一个或多个能够正确解决问题的代码。

技术框架:FMV方法包含以下几个主要阶段:1) 使用大型语言模型生成多个候选代码;2) 在预定义的测试输入上执行每个候选代码;3) 记录每个代码的执行签名(例如,输出、返回值、异常等);4) 使用执行签名作为特征,通过某种共识机制(例如,多数投票)选择一个代表性的代码作为最终结果。对于测试时强化学习,FMV被用作聚合策略,将多个agent的策略进行融合。

关键创新:该方法的核心创新在于利用代码的运行时行为作为选择标准,而不是依赖于代码的语法结构或语言模型的置信度。这种方法能够有效地识别出在功能上正确的代码,即使这些代码在语法上可能存在差异。此外,将FMV应用于测试时强化学习也是一个创新点。

关键设计:关键设计包括:1) 如何定义和提取代码的执行签名,使其能够准确反映代码的行为;2) 如何设计共识机制,例如,如何处理执行签名不一致的情况;3) 如何选择合适的测试输入,使其能够有效地覆盖代码的各种功能。论文中可能还涉及一些超参数的设置,例如生成代码的数量、测试输入的数量等。

🖼️ 关键图片

fig_0
fig_1

📊 实验亮点

实验结果表明,FMV方法在LiveCodeBench代码生成任务上取得了显著的性能提升。具体而言,该方法能够在不显著增加计算开销的情况下,大幅提高pass@1指标。此外,FMV在测试时强化学习中的应用也显示出一定的潜力,尽管未观察到超出基础模型性能上限的自我改进。

🎯 应用场景

该研究成果可应用于自动化软件开发、代码修复、程序合成等领域。通过提高代码生成的准确性和可靠性,可以降低软件开发的成本,提高开发效率。此外,该方法还可以用于教育领域,帮助学生更好地理解和掌握编程技能。

📄 摘要(原文)

We investigate Functional Majority Voting (FMV), a method based on functional consensus for code generation with Large Language Models, which identifies a representative solution from multiple generations using their runtime execution signatures on test inputs. We find that FMV is an effective test-time inference strategy, substantially boosting performance on LiveCodeBench without a large compute overhead. Furthermore, we extend the utility of functional consensus and apply it as an aggregation strategy for label-free Test-Time Reinforcement Learning. We demonstrate that this increases pass@1 on holdout tasks, but find no evidence of self-improvement beyond the base model's performance ceiling.