Self-Execution Simulation Improves Coding Models

该论文提出了一种结合监督微调与强化学习的训练方法,通过让代码大模型学习逐步模拟程序执行,使其具备自我验证和迭代修复能力,从而显著提升了在编程竞赛基准测试中的表现。

Gallil Maimon, Ori Yoran, Felix Kreuk, Michael Hassid, Gal Cohen, Pierre Chambon, Yossi Adi

发布于 2026-04-07
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文讲述了一个关于如何让 AI 程序员变得更聪明的有趣故事。简单来说,研究人员发现,现在的 AI 写代码时最大的弱点是:它往往“想当然”地认为自己写的代码能跑通,但实际上却经常出错,而且它自己很难发现这些错误。

为了解决这个问题,作者们给 AI 装上了一套"内心预演系统"(Self-Execution Simulation)。

我们可以用几个生动的比喻来理解这项技术:

1. 核心问题:AI 是个“盲目”的画家

想象一下,你让一个画家(AI)画一幅画(写代码)。

  • 以前的做法:画家画完一笔,就直接把画交给你看。如果画错了,他根本不知道,因为他没有“退后一步”去审视自己的作品,也没有能力在脑海里模拟颜料干了之后会是什么样子。
  • 结果:AI 经常生成一些看起来语法正确,但逻辑完全跑不通的代码。

2. 解决方案:教 AI 学会“在脑海里排练”

这篇论文的核心思想是:不要等代码跑起来(或者等人类检查)才知道对错,要教 AI 在写代码的同时,就在脑海里一步步“模拟运行”它。

这就好比:

  • 以前的 AI:像是一个只会背诵乐谱的机器人,它知道音符怎么排,但不知道弹出来是什么声音。
  • 现在的 AI:被训练成了一位**“内心钢琴家”**。它在按下琴键(写代码)之前,就能在脑海里清晰地听到下一个音符是什么,甚至能预见到如果按错了一个键,整首曲子会怎么“跑调”。

3. 他们是怎么训练的?(两个步骤)

为了教会 AI 这种“内心预演”的能力,研究人员用了两步走策略:

  • 第一步:看“解说员”的录像(监督微调)
    研究人员找来了很多真实的代码运行记录(就像足球比赛的录像),然后请一位“解说员”(另一个大模型)把这些录像翻译成大白话

    • 例子:不是给 AI 看冷冰冰的变量变化,而是告诉它:“看,这里变量 x 变成了 5,然后因为 x 大于 3,所以程序跳到了下一行……"
    • 这让 AI 学会了用人类的语言去理解代码是如何一步步运行的。
  • 第二步:玩“猜结果”的游戏(强化学习)
    给 AI 一段代码和输入,让它猜输出结果。

    • 如果猜对了,给奖励(加分)。
    • 如果猜错了,给惩罚(扣分)。
    • 通过成千上万次的练习,AI 变得越来越擅长预测:“如果我写这段代码,输入是 A,输出一定是 B。”

4. 这项技术有什么用?(两大绝招)

一旦 AI 学会了“内心预演”,它就能用两种新方法来提高写代码的水平:

绝招一:自我审查(Self-Verification)

  • 场景:AI 一次生成了 10 个不同的代码方案。
  • 以前:它可能随机选一个,或者选最短的那个。
  • 现在:它会在脑海里把这 10 个方案都“跑”一遍。
    • “方案 A 在测试 1 上会报错。” -> 淘汰。
    • “方案 B 在测试 2 上输出不对。” -> 淘汰。
    • “方案 C 看起来能完美通过所有测试!” -> 选中方案 C
  • 比喻:就像考试前,学生不再只写一个答案,而是先在心里把几个备选答案都算一遍,最后只把那个算出来肯定对的答案填上去。

绝招二:自我修复(Self-Fixing)

  • 场景:AI 写了一个代码,发现有个测试用例没过。
  • 以前:它可能会直接放弃,或者胡乱改。
  • 现在:它会进入“调试模式”。
    1. 模拟:它在脑海里运行代码,发现:“哦,原来在第 5 行,变量 i 没有加 1,导致死循环了。”
    2. 修正:它根据这个“模拟出的错误”,重新写代码。
    3. 再模拟:再次在脑海里运行,确认错误已修复。
  • 比喻:就像程序员在写代码时,脑子里有个“虚拟调试器”,能实时看到哪里卡住了,并立刻知道怎么修,而不需要真的把程序编译运行好几次。

5. 为什么这很重要?

  • 省钱省时间:真的去运行代码(特别是复杂的代码)需要服务器、需要时间,甚至需要搭建复杂的测试环境。而“在脑子里模拟”几乎不需要成本,速度极快。
  • 更可靠:实验结果显示,使用这种方法的 AI,在解决编程竞赛题目时,正确率提升了近 40%。它不再是一个只会“瞎蒙”的生成器,而是一个会“思考”和“验证”的工程师。

总结

这篇论文就像给 AI 程序员装上了一双"透视眼"。它不再只是机械地生成文字,而是学会了在生成代码的同时,在脑海里预演代码的运行过程。这让 AI 能够自己发现错误、自己筛选最佳答案,从而写出更高质量、更可靠的代码。

这就好比从“只会照猫画虎”的学徒,进化成了“心中有数、未雨绸缪”的资深工程师。

在收件箱中获取类似论文

根据您的兴趣定制的每日或每周摘要。Gist或技术摘要,使用您的语言。

试用 Digest →