以下是用简单语言和日常类比对该论文的解读。
核心难题:“稀有语言”的鸿沟
想象一下,你正在教一位天才学生(人工智能)如何编写代码。这位学生在 Python 或 JavaScript 等流行语言方面是大师,因为它们有数百万本书籍和示例供其阅读。
然而,当你要求这位学生用 Prolog 或 Lisp(较旧的、基于逻辑的语言)编写代码时,他们却感到吃力。为什么?因为这些语言就像稀有的方言。可供 AI 阅读的书籍(训练数据)非常少。如果没有足够的示例,AI 就开始猜测。它可能会写出看起来正确但实际上无法运行的代码,或者编造出不存在的规则。
解决方案:通过“做”来学习(而不仅仅是阅读)
这篇论文的作者决定停止试图给 AI 喂更多的书。相反,他们教导 AI 通过试错来学习,并使用一位能立即检查工作的“教练”。
他们使用了一种名为 GRPO(组相对策略优化)的方法。这就像一场烹饪比赛:
- AI 被要求解决一个数学应用题。
- 不是只给出一个答案,AI 同时尝试烹饪四种不同的解决方案。
- 一位“裁判”(计算机解释器)运行所有四个解决方案。
- 裁判给出评分:“这个完美运行(+1 分)”,“这个有语法错误(-0.5 分)”,或者“这个给出了错误答案(-1 分)”。
- AI 学习哪种“食谱”效果最好,并尝试在下次多制作这类食谱。
秘密武器:“推理收缩”问题
起初,研究人员试图用标准规则来教导 AI。他们告诉 AI:“不要偏离你通常的说话方式太远。”这就像一位严厉的老师告诉一个有创造力的学生:“要死守课本上的例子。”
他们发现了一个他们称之为**“推理收缩”**的问题:
- 发生了什么:AI 变得不敢深入思考。它开始给出非常简短、简单的答案,这些答案看起来安全,但实际上是错误的。它不再尝试解释其逻辑,因为害怕犯错。
- 解决方法:研究人员移除了那位“严厉的老师”(一项名为 KL 惩罚的技术规则),并添加了一条新规则:“告诉我你的故事。” 如果 AI 在给出代码之前写出了更长、更详细的思考过程,他们就会给它额外的分数。
结果:从“一般”到“大师”
通过让 AI 思考更长时间,并消除偏离常态的恐惧,结果非常显著:
- 黑马获胜:一个较小的 AI 模型(70 亿个“脑细胞”)通过这种新方法训练后,在解决逻辑谜题方面变得比更大、更著名的模型(如 700 亿个细胞的模型)更出色。
- 成功率翻倍:对于最难的逻辑任务,AI 的成功率翻了一番以上。
- 适用于其他语言:他们在 Lisp(另一种稀有语言)上测试了这种方法,效果同样显著。AI 从“还可以”变成了“卓越”。
类比:“解释器”即老师
通常,AI 从人类编写的示例中学习。但对于稀有语言,没有足够的人类示例。
这篇论文的突破在于使用计算机解释器本身作为老师。
- 想象一下你在学习杂耍。与其观看大师杂耍的视频,不如你一直尝试杂耍。
- 如果你掉了球,地板(解释器)会告诉你:“哎哟,失败了。”
- 如果你让球保持在空中,地板会说:“干得好!”
- AI 不是通过死记硬背一本书来学习语言规则,而是通过感受计算机的“地板”告诉它什么行得通、什么行不通。
总结
这篇论文表明,对于困难且稀有的编程语言,你不需要更大的 AI 或更多的书籍。你只需要一种更聪明的练习方式:让 AI 尝试多种解决方案,让计算机立即评判它们,并鼓励 AI 详细地梳理其步骤。这将一个 struggling 的学生转变为顶尖的优等生。
技术摘要:从推理到代码:针对低资源语言的 GRPO 优化
问题陈述
在低资源编程语言(如 Prolog、Lisp)中生成准确且可执行的代码,仍然是大语言模型(LLM)面临的一项重大挑战。尽管模型在 Python 等高资源语言上表现卓越,但由于公共训练数据的匮乏,它们在逻辑编程领域持续遭遇失败。这种数据稀缺导致了特定的失败模式:幻觉生成不存在的谓词、将命令式控制流强加于声明式范式之上,以及对合一(unification)和回溯(backtracking)的处理不当。标准的监督微调(SFT)不足以解决问题,因为它依赖于稀缺的人工编写示例,且未直接针对执行正确性进行优化。
方法论
本文提出了一种利用可验证奖励的强化学习(RLVR)框架,该框架利用执行驱动的反馈来训练小规模大语言模型(Qwen2.5-Coder 系列,参数量从 0.5B 到 7B),而无需依赖大量人工策划的数据集。
核心框架
- 算法:作者采用了组相对策略优化(GRPO),这是一种策略梯度算法,消除了对独立价值函数网络的需求(不同于 PPO)。GRPO 通过估计某个输出相对于从同一提示词采样的一组同伴输出的优势,从而降低了计算开销。
- 训练循环:系统将 Prolog 解释器(通过 PySwip)直接集成到训练循环中。LLM 根据自然语言提示(具体来自 GSM8K 数据集)生成代码,解释器执行该代码以提供真实正确性信号。
- 奖励系统:多目标奖励函数聚合了四个信号:
- 格式奖励:对遵循严格 XML 模板(
<reasoning>、<code>、<query>)的行为给予惩罚或奖励,确保代码可提取。如果查询错误地嵌套在代码块内,则施加特定惩罚。
- 正确性奖励:基于执行结果:
- +1.0:与真实结果完全匹配。
- -1.0:逻辑错误(执行但结果错误)。
- -0.5:语法错误(编译或执行失败)。
- -0.1:超时或无输出。
关键技术干预
作者识别出一种被称为**“推理收缩”**的失败模式,即在使用 Kullback–Leibler(KL)散度惩罚的标准 GRPO 训练中,7B 模型会退化为短小、死记硬背的输出模式,导致准确率随时间下降。为解决这一问题,他们引入了两项关键修改:
- 移除 KL 散度:消除 KL 惩罚允许策略进一步偏离监督基线,使模型能够内化独特的逻辑编程范式。
- 长度感知奖励:增加了一种特定的奖励机制,以鼓励在目标 token 长度范围内进行推理链,防止模型截断其推理过程。
主要贡献
- Prolog 的新最先进水平:证明了基于执行反馈的 RLVR 可以弥补极端数据稀缺,利用 7B 参数模型在 GSM8K 数据集上建立了 Prolog 代码生成的新基准。
- GRPO 动态的系统性消融:识别出“推理收缩”是逻辑编程中 KL 正则化强化学习的特定失败模式,并刻画了放宽此约束有益的条件。
- 超越算术的泛化能力:展示了改进效果可迁移至 20 个多样的 Prolog 任务(Rosetta Code)和 GSM-Symbolic 基准,其中零样本准确率提升了一倍以上。
- 跨语言有效性:在 Lisp 上验证了该方法,证明了解释器驱动的强化学习在不同类型的低资源语言家族中均有效。
结果
实验在 GSM8K 数据集上进行,并在 Rosetta Code 和 GSM-Symbolic(P1 和 P2 变体)上进行了评估。
- GSM8K 性能:
- 优化后的 Qwen2.5-Coder-7B(零样本、无 KL、长度约束)实现了 0.882 的 pass@4。
- 在 One-shot 设置中,相同配置达到了 0.893,优于 PROPER(Mistral-7B,0.72)、Llama 3.3 70B(0.839)和 Qwen2.5-Coder-32B(0.873)。
- 若不移除 KL,7B 模型会出现性能漂移,从 0.814 的基线下降至 0.672。
- GSM-Symbolic:
- 在具有挑战性的 P2 数据集(需要更深层的符号操作)上,7B 模型的零样本 pass@4 从基线的 0.298 提升至 0.673。
- Lisp 性能:
- 该方法将 Lisp 的零样本 pass@4 从 0.572 提升至 0.876。然而,与 Prolog 相比,移除 KL 约束在 Lisp 上带来的增益较为温和,这表明“非正则化”训练对于高度专业化、低资源语言最为关键。
- Rosetta Code:
- 7B 模型几乎将其零样本基线翻了一番,达到了 0.46 的 pass@4。
意义与主张
本文认为,对于具有确定性语义的形式语言,解释器本身可以作为主要的训练信号,替代当前方法所依赖的稀缺人类数据。通过将符号系统不仅仅视为工具,而是视为通过执行轨迹监督神经网络的“教师”,作者提供了一种严谨、自动化的监督机制。
该工作声称提供了一条稳健、可适应的路径,以增强低资源语言的代码生成能力。它表明,弥合神经直觉与符号严谨性之间的差距并不需要巨大的规模或海量数据集,而是需要将学习目标转向通过强化学习最大化执行正确性。作者得出结论,该方法使模型能够尊重目标语言的语法和逻辑,更接近编程的“圣杯”:用户陈述问题,计算机通过可验证的逻辑代码解决问题。
每周获取最佳 machine learning 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。