← 最新论文
🤖 AI

Function-Level Execution Feedback for Code Preference Optimization

该论文介绍了 STEP-KTODER,这是一个代码偏好优化框架,它将步骤定义为具有来自单元测试的二元正确性标签的模块级函数,证明了这种基于执行的过程监督显著优于仅基于结果的方法,同时避免了由 LLM-as-a-judge 标注导致的标签损坏。

原作者: Idris Nechnech, Sehwan Kim, Jimin Seo, Yeongoon Kim, Minhae Oh, Sangwoo Hong, Jungwoo Lee

发布于 2026-08-26
📖 1 分钟阅读☕ 轻松阅读

原作者: Idris Nechnech, Sehwan Kim, Jimin Seo, Yeongoon Kim, Minhae Oh, Sangwoo Hong, Jungwoo Lee

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

在人工智能领域,模型之间正日益出现一种分歧:一种是只能给出答案的模型,另一种则是能够理解通往答案之路径的模型。多年来,研究人员一直在训练计算机程序解决数学问题,其奖励机制不仅针对最终的数字,还针对其过程中每一步逻辑推理。这种被称为“过程监督”(process supervision)的方法,已帮助机器在推理能力方面取得了显著进步。然而,在编写计算机代码方面,这种方法一直难以实现。与自然分解为一系列计算步骤的数学题不同,一段软件程序通常是由指令交织而成的复杂网络,很难准确判定究竟哪一行是对的,哪一行是错的。如果一个程序无法运行,传统的训练方法通常会将整个输出视为失败,即便其中百分之九十的代码都是完美的。这种粗略的反馈让机器只能在黑暗中盲目猜测究竟是哪一部分工作需要修正。

来自首尔大学和建国大学的研究团队开发出一种新方法,通过将问题分解为易于管理且可测试的部分,来教导这些模型如何编写更好的代码。他们将这种方法称为 STEP-KTODER。该方法不再将整个程序作为一个单一单元进行评判,而是教导模型将程序视为一系列独立的函数,即执行特定任务的小型、自包含的工具。研究人员将一个正确的解决方案拆解成这些独立的函数,然后自动生成一组简单的检查机制,类似于质量控制检测员对机器的单个零件进行测试,以查看每个函数在独立运行时是否工作正常。这使得他们能够给模型提供精确的反馈:“这个特定的函数是正确的,但那个是错误的”,而不是仅仅说“整个程序都失败了”。

研究人员在几个用于衡量人工智能编写代码能力的标准挑战赛上测试了这种方法。他们发现,通过使用这些细粒度的、基于执行的检查,他们的模型性能比仅关注最终结果的旧方法有了显著提升。事实上,在最困难的编程挑战中,这种新方法相比之前的最佳技术,性能提升了近百分之二十七。这项研究还揭示了一个关于如何评估代码的关键洞察:仅仅要求一个强大的语言模型去猜测一段代码是否正确是不够的。当研究人员尝试用另一个 AI 的判断来取代这种自动化的、基于执行的检查时,结果反而变差了。判别 AI 往往过于严苛,会将正确的代码错误地标记为损坏,从而干扰了训练过程。这证明了,教导模型理解正确步骤价值的唯一可靠方法,就是实际运行代码并观察其是否有效。

这一发现的核心在于研究人员如何处理编程中混乱的现实情况——即一个程序即使内部某个部分存在缺陷,仍可能通过所有的最终测试。在过去,这类矛盾往往会被忽略或抹平。然而,该团队发现这些冲突实际上具有价值。通过保留那些“整体程序运行成功但特定函数失败”的情况,他们为模型提供了一堂细致入微的课程:一个程序可以整体上是成功的,但仍包含需要修复的错误。这种方法让模型能够学习强化其表现良好的代码部分,同时精准针对表现不佳的部分,就像一名技师知道具体该拧紧哪颗螺栓,而不是直接更换整个发动机。

这项工作为使人工智能在复杂任务中更加可靠提供了一条切实可行的路径。通过从孤立地评判最终产物,转向关注构成产物的各个独立组件的正确性,研究人员可以引导这些系统进行更有效的学习。研究表明,对于代码生成而言,最有效的监督来自于代码本身的运行与测试,而非来自第二方的意见。这种从基于结果的反馈向基于过程(且植根于实际执行)的反馈的转变,为机器学习编程技艺提供了一种更清晰、更直接的方式。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →