Self-Improving Code Generation via Semantic Entropy and Behavioral Consensus

📄 arXiv: 2603.29292v1 📥 PDF

作者: Huan Zhang, Wei Cheng, Wei Hu

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

发布日期: 2026-03-31

备注: Accepted in the 34th IEEE/ACM International Conference on Program Comprehension (ICPC 2026)


💡 一句话要点

ConSelf:基于语义熵和行为共识的自提升代码生成方法

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

关键词: 代码生成 自提升学习 语义熵 行为共识 偏好优化

📋 核心要点

  1. 现有代码生成方法依赖有监督微调或偏好优化,需要昂贵的外部资源,如强大的教师模型或可靠的测试单元。
  2. ConSelf提出代码语义熵来衡量问题难度,构建课程学习;并使用共识驱动的DPO,减轻自生成监督中的噪声影响。
  3. 实验表明,ConSelf在多个基准测试中显著优于基线方法,验证了其在无外部监督下提升代码生成能力的有效性。

📝 摘要(中文)

本文提出了一种名为ConSelf的自提升代码生成方法,旨在解决大型语言模型(LLMs)在缺乏高质量外部资源(如教师模型或可靠的测试单元)的情况下,如何提升自身代码生成能力的问题。ConSelf的核心思想包括:一是引入代码语义熵,通过评估程序行为的功能多样性来衡量问题层面的不确定性,从而构建更易学习的课程;二是提出共识驱动的直接偏好优化(Con-DPO),一种基于偏好的微调方法,通过行为共识来加权每个偏好对,从而减轻噪声自生成监督的影响。在多个基准测试和骨干LLM上的实验表明,ConSelf显著优于基线方法,验证了基于语义熵的课程构建和共识驱动的优化在无需外部监督的情况下改进代码生成的有效性。

🔬 方法详解

问题定义:论文旨在解决在缺乏高质量外部资源(如教师模型或测试预言机)的情况下,如何提升代码语言模型自身的代码生成能力。现有方法依赖于有监督微调或偏好优化,但这些方法需要大量标注数据或强大的教师模型,这在实际应用中往往难以获得。因此,如何利用模型自身的能力进行自提升是一个重要的挑战。

核心思路:ConSelf的核心思路是利用代码的语义信息和行为共识来指导模型的自提升过程。具体来说,首先通过代码语义熵来衡量不同问题的学习难度,构建一个课程学习体系,让模型先学习简单的、确定性高的任务,再逐步学习复杂的任务。然后,利用多个模型生成的代码样本,通过行为共识来筛选高质量的样本,并使用这些样本进行偏好优化,从而提高模型的代码生成能力。

技术框架:ConSelf的整体框架包括两个主要阶段:基于语义熵的课程构建和共识驱动的直接偏好优化(Con-DPO)。在课程构建阶段,首先使用模型生成多个代码样本,然后计算这些样本的语义熵,根据语义熵的大小对问题进行排序,构建一个从易到难的课程。在Con-DPO阶段,使用模型生成多个代码样本,然后计算这些样本之间的行为共识,根据行为共识的大小对样本进行加权,并使用加权后的样本进行偏好优化。

关键创新:ConSelf的关键创新在于提出了代码语义熵和共识驱动的直接偏好优化。代码语义熵能够有效地衡量问题的学习难度,从而构建一个有效的课程学习体系。共识驱动的直接偏好优化能够有效地利用多个模型生成的代码样本,通过行为共识来筛选高质量的样本,从而提高模型的代码生成能力。与现有方法相比,ConSelf不需要外部监督,能够利用模型自身的能力进行自提升。

关键设计:代码语义熵的计算方法是基于程序行为的功能多样性。具体来说,首先使用不同的输入运行生成的代码样本,然后观察代码的输出结果。如果代码的输出结果差异很大,则说明代码的语义熵很高,反之则说明代码的语义熵很低。Con-DPO的关键在于如何计算代码样本之间的行为共识。论文中使用了一种基于编辑距离的方法来计算代码样本之间的相似度,然后将相似度作为行为共识的权重。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,ConSelf在多个代码生成基准测试中显著优于基线方法。例如,在HumanEval数据集上,ConSelf的pass@1指标比基线方法提高了10%以上。此外,实验还验证了代码语义熵和共识驱动的直接偏好优化在提升代码生成能力方面的有效性。消融实验表明,去除语义熵或行为共识都会导致性能下降。

🎯 应用场景

ConSelf具有广泛的应用前景,可以应用于各种代码生成任务,例如代码补全、代码翻译、代码修复等。该方法尤其适用于缺乏高质量外部资源的场景,例如在低资源语言或特定领域的代码生成任务中。ConSelf的自提升能力可以降低对人工标注数据的依赖,从而降低开发成本,并加速代码生成模型的迭代。

📄 摘要(原文)

Improving the code generation capabilities of large language models (LLMs) typically relies on supervised fine-tuning or preference optimization, both of which require costly external resources such as powerful teacher models or reliable test units. However, in real-world scenarios, it is much harder to obtain reference solutions and test oracles than problem descriptions and test inputs. In this paper, we tackle a challenging yet realistic question: Can a code language model improve itself without access to a superior teacher and a test oracle? To answer this, we propose ConSelf, a self-improving approach built upon two key ideas. First, we introduce code semantic entropy, a novel metric that measures problem-level uncertainty by assessing the functional diversity of program behaviors, enabling a curriculum construction with the most learnable problems. Second, we present consensus-driven direct preference optimization (Con-DPO), a preference-based fine-tuning method that weights each preference pair by its behavioral consensus, thereby mitigating the impact of noisy self-generated supervision. Experiments on various benchmarks and backbone LLMs demonstrate that ConSelf significantly outperforms baselines, validating the effectiveness of semantic entropy-based curriculum construction and consensus-driven optimization in improving code generation without external supervision.