论文
CODEBLOCK:学习以正确的粒度监督代码
CODEBLOCK: Learning to Supervise Code at the Right Granularity
摘要
代码 LLM 的监督 微调 通常对所有响应词元应用统一的交叉熵损失,隐含地假设每个词元都提供同样有用的学习信号。最近的 词元级 选择方法通过仅监督高价值词元来挑战自然语言 SFT 中的这一假设。然而,这种逐点选择可能会破坏代码的语法结构和程序依赖性,从而使监督分散在不完整的代码单元中。在 30K 代码指令-响应对的实验中,在相同的 10% 词元预算 下,监督完整的编码块比之前监督独立词元的方法将平均性能提高了 11.7 个百分点。受这一观察的启发,我们提出了 CodeBlock,这是一种结构感知的稀疏监督框架,它使用完整的、解析器对齐的编码项作为监督的基本单元。 CodeBlock从高质量的代码指令数据构建编码项,使用GCE估计其监督效用,GCE对低概率词元更鲁棒,并使用数据流到达和桥接信号进一步调整其监督优先级。在训练过程中,完整的响应被保留作为上下文,而损失仅应用于选定的监督单元。实验表明,在所有五个模型设置中,仅对约 6.9% 的响应词元进行部分监督始终优于全词元 SFT,这表明有效的代码 SFT 不仅取决于识别高价值监督,还取决于以适当的结构粒度分配监督。