AI News HubLIVE
站内改写2 分钟阅读

CODEBLOCK:以正确的粒度学习监督代码

CODEBLOCK是一个结构感知的稀疏监督框架,用于代码大语言模型的微调。它选择结构完整的代码块而非孤立令牌进行监督,在六个代码生成基准测试中,仅使用1.9%的监督令牌就达到了更强的平均pass@1指标。

来源arXiv Machine Learning作者: Zhijie Deng, Ling Li, Jinlong Pang, Kaiqin Hu, Qi Xuan, Zhaowei Zhu, Jiaheng Wei

在代码大语言模型(LLM)的监督微调(SFT)中,传统方法通常对所有响应令牌应用统一的交叉熵损失,这隐含地假设每个令牌提供同等有用的学习信号。然而,对于代码而言,这种假设并不成立,因为代码的结构完整性至关重要:一个分号或少了一个括号都可能导致程序错误。近期的研究在自然语言领域通过仅监督高价值令牌来挑战这一假设,但直接将令牌级掩码迁移到代码领域会破坏语法和语义连贯的程序单元。

为了解决这一问题,来自研究团队(Zhijie Deng等)在论文《CODEBLOCK: Learning to Supervise Code at the Right Granularity》中提出了一个结构感知的稀疏监督框架——CODEBLOCK。该框架的核心思想是选择结构完整的代码证据,而不是孤立的令牌。具体而言,CODEBLOCK首先通过质量筛选获得高质量的指令-响应对,然后利用抽象语法树(AST)将代码响应划分为语法连贯的编码项(coding items)。这些编码项可以是表达式、语句、函数定义等。接着,通过聚合核心逻辑令牌上的广义交叉熵来估计每个编码项的效用。核心逻辑令牌是指那些直接影响程序行为的令牌(如运算符、变量名、关键字)。然后,CODEBLOCK利用数据流分析技术,计算每个编码项的数据流可达性和桥接信号。可达性信号衡量一个编码项是否能够从程序入口点到达;桥接信号则衡量它是否连接了不同的程序依赖路径。这些信号共同用于重排序,优先选择那些传播或连接重要程序依赖的代码块。在训练过程中,完整的响应仍然作为上下文可用,但损失仅应用于选中的代码项和信息丰富的自然语言令牌(如注释、错误信息等)。

实验在六个代码生成基准测试上进行,包括HumanEval、MBPP等常见基准。结果表明,使用仅1.9%的监督响应令牌,CODEBLOCK实现了比全令牌SFT以及有竞争力的选择基线更强的平均pass@1指标。这一成果表明,针对代码的结构特性设计监督粒度,可以在大幅减少训练计算量的同时提升模型性能。该研究为代码LLM的高效微调提供了新的思路,尤其适用于资源受限或需要快速迭代的开发场景。此外,该论文已提交至arXiv(arXiv:2606.18286),于2026年6月10日提交,作者包括Zhijie Deng等七位研究者,论文主题涵盖机器学习(cs.LG)。该工作可能对未来的代码生成模型训练产生重要影响。