论文

面向代码偏好优化的函数级执行反馈

Function-Level Execution Feedback for Code Preference Optimization

模型训练偏好优化

摘要

过程监督已改进了数学推理,其中间步骤天然可表达为思维链。然而在代码生成中,过程监督仍未被充分探索,因为没有标准的步骤概念。监督可以指向行、推理轨迹或程序状态,导致不清楚该标注和优化什么。我们提出STEP-KTODER,一个代码偏好优化框架,把步骤定义为分解的多函数程序中的模块级函数,并通过自动生成的单元测试赋予二元正确性标签。我们的方法提供了逐步KTO的一种代码专属实例化,将函数级过程监督与针对完整程序的结果级反馈相结合。我们在HumanEval(+)、MBPP(+)、BigCodeBench和LiveCodeBench上评测,显示STEP-KTODER优于仅结果级的KTO和DPO。进一步分析表明基于执行的标签必不可少:LLM作为评审的标注系统性高估函数失败,污染正样本步骤标签,并使下游偏好优化退化。代码见:https://github.com/inechnech/STEP-KTODER。

面向代码偏好优化的函数级执行反馈:论文配图
图1:Step-KTOder 框架概览。参考解 y⋆ 被分解为模块级函数 s1,…,sn,并为每个函数生成函数级单元测试。候选补全针对这些测试进行评估,得到指示局部正确性的步骤标签 zi,同时从数据集提供的测试套件获得结果标签 o。所得带标签数据用于以联合目标训练模型,该目标结合结果级 KTO(ℒout)与函数级监督(ℒstep),强化局部正确的函数并惩罚局部错误的函数。