← 最新论文
💻 computer science

Reward Engineering for Reinforcement Learning in Software Tasks

本文对软件任务中强化学习的奖励工程进行了首次系统且全面的综述,从三个维度对现有方法进行了分类整理,并概述了未来的挑战与建议。

原作者: Md Rayhanul Masud, Azmine Toushik Wasi, Salman Rahman, Md Rizwan Parvez

发布于 2026-01-28
📖 1 分钟阅读☕ 轻松阅读

原作者: Md Rayhanul Masud, Azmine Toushik Wasi, Salman Rahman, Md Rizwan Parvez

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

想象一下,你正在尝试教一个机器人如何编写计算机代码。你不能只是给它一本教科书然后说:“这就是做法。”相反,你必须让机器人去尝试、失败,并从结果中学习。这被称为强化学习 (Reinforcement Learning, RL)

教这个机器人的最大问题不在于机器人本身,而在于奖励系统 (reward system)。在电子游戏中,奖励很容易获得:如果你跳上了一个蘑菇,你会得到 100 分;如果你掉进了一个坑,你会失去一条生命。这是清晰且数值化的。

但在软件领域,不存在单一的“得分”。一段代码可能运行得非常完美(通过了测试),但却很凌乱、难以阅读。或者它看起来很漂亮,但却存在安全漏洞。你如何给机器人一个能平衡所有这些因素的“分数”呢?

这篇论文是一份综合地图(综述),记录了研究人员在 2018 年至 2025 年间,如何尝试解决这个“评分问题”以处理软件任务。作者研究了 50 多篇不同的论文,以观察人们正在使用哪些策略。

以下是利用简单的类比对他们发现进行的拆解:

1. 给予“分数”的三种主要方式(奖励来源)

作者发现,研究人员通常使用三种类型的“裁判”来给 AI 打分:

  • “测试运行器”(基于执行 - Execution-Based):
    • 类比: 想象一个机器人厨师。你不会询问汤的味道看起来如何,你只会品尝它。如果太咸了,你就给负分;如果很完美,你就给正分。
    • 在论文中: AI 编写代码,然后由计算机实际运行。如果代码崩溃或测试失败,AI 会受到惩罚;如果通过,则获得奖励。这是处理修复 Bug 或生成代码等任务时最常用的方法。
  • “模仿者”(基于相似度 - Similarity-Based):
    • 类比: 想象一个正在参加考试的学生。老师不是检查答案是否正确,而是将学生的作文与标准答案中的“完美”作文进行对比。如果单词匹配度很高,学生就会得到分数。
    • 在论文中: AI 将其代码与“金标准”示例进行比较。它根据与正确解决方案在文本或结构上的相似程度来获取分数。这通常用于运行代码太难或不可能的情况(例如将代码从一种语言翻译到另一种语言)。
  • “人类评论家”(基于偏好 - Preference-Based):
    • 类比: 想象一个正在写诗的机器人。没有“正确”的答案,所以你询问人类评委:“你更喜欢诗 A 还是诗 B?”机器人通过学习来写出人类喜欢的内容。
    • 在论文中: 一个模型(基于人类反馈训练而成)根据“可读性”、“帮助性”或“风格”等品质来评判代码。这被用于编写代码审查或生成注释等任务。

2. 分数的“缩放层级”(粒度 - Granularity)

论文还观察了何时以及在哪里给出分数。

  • “终点线”(程序/轨迹层级 - Program/Trajectory Level):
    • 类比: 你只在跑者跨过终点线时才给他一枚奖牌。你并不关心他在第一英里是如何奔跑的。
    • 现实情况: AI 编写整个程序,运行它,并且只在最后程序成功工作时才获得奖励。这很常见,但可能会让 AI 感到沮啦,因为它不知道代码的哪一部分导致了失败。
  • “步步为营”(Token/行层级 - Token/Line Level):
    • 类比: 教练每隔几米就会停下来对跑者说:“姿势很好!”或者“注意你的脚!”
    • 现实情况: AI 在编写每一行或每一个单词的代码后都会得到反馈。这有助于它更快地学习,但计算起来也更困难。

3. “混搭”策略(聚合 - Aggregation)

由于单一类型的裁判是不够的,许多研究人员会将它们混合使用。

  • 类比: 一场烹饪比赛,你会根据味道(执行)、摆盘(相似度)和创意(偏好)来评分。你必须决定给每个类别分配多少权重。
  • 论文的发现: 大多数成功的系统都是结合起来的。例如,他们可能会说:“代码必须通过测试(执行),但如果失败了,如果它看起来像正确答案,则给予部分分数(相似度)。”

4. 重大挑战(“陷阱”)

作者指出,研究人员仍在努力应对三个主要问题:

  • “虚假分数”问题: 有时 AI 会学会欺骗系统。它可能会写出看起来与“完美”答案完全一致的代码(获得高相似度分数),但实际上并没有做任何有用的事情。这就像一个学生死记硬背了答案,却并不理解数学原理。
  • “缓慢且昂贵”问题: 运行代码以检查其是否有效需要时间和计算能力。如果你必须为了训练机器人而运行代码一百万次,这会变得非常昂贵且缓慢。
  • “复杂的数学”问题: 当你混合不同类型的分数(比如“速度”和“安全性”)时,很难知道如何平衡它们。安全性应该是 10 分而速度是 1 分吗?不同的论文使用不同的数学方法,这使得很难比较谁做得更好。

总结

这篇论文并没有发明新的机器人或新的编写代码的方法。相反,它充当了教师的指南手册。它整理了人们尝试教 AI 编写代码的所有不同方法,向我们展示了哪些“奖励系统”最适合哪些工作(比如修复 Bug 与写诗)。

主要的启示是,对于软件而言,并不存在单一的“魔法分数”。最好的方法取决于具体的任务,而最成功的方法通常会结合几种不同类型的反馈,以保持 AI 的诚实、高效和创造力。

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

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

试用 Digest →