← 最新论文
🤖 machine learning

How Robustly do LLMs Understand Execution Semantics?

该论文通过代码变换与输入扰动评估大语言模型的代码理解鲁棒性,发现尽管开源推理模型表现相对稳定,但前沿模型 GPT-5.2 在扰动下表现出显著脆弱性,且多数模型在处理异常输入时性能大幅下降,从而揭示了当前模型对代码执行语义理解的局限性并验证了扰动评估方法的价值。

原作者: Claudio Spiess, Prem Devanbu, Earl T. Barr

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

原作者: Claudio Spiess, Prem Devanbu, Earl T. Barr

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

这篇论文就像是在给现在的顶级人工智能(AI)程序员做一场"压力测试",看看它们到底是真的“懂”代码,还是只是在“背答案”。

想象一下,你有一个超级聪明的学生(AI),它做数学题能拿满分。但如果你把题目里的数字稍微改一下,或者把公式的写法换一种(但意思完全一样),它还能做对吗?如果题目里有个陷阱会导致计算崩溃,它能提前告诉你“这里会出错”吗?

这篇论文就是由加州大学戴维斯分校和伦敦大学学院的研究团队做的,他们专门测试了 AI 在这些情况下的表现。

以下是用大白话和比喻对这篇论文的解读:

1. 核心问题:AI 是“真懂”还是“死记硬背”?

现在的 AI 写代码很厉害,但这可能只是因为它见过太多类似的代码,学会了“套路”(模式匹配),而不是真的理解了代码背后的逻辑(语义)。

  • 比喻:就像一只鹦鹉,它能完美复述“苹果是红色的”,但如果你把“苹果”换成“梨”,它可能就不懂该怎么描述了。研究者想知道,AI 是那只鹦鹉,还是真的理解水果的科学家?

2. 测试方法:给 AI 出“变态题”

研究者没有只让 AI 做原题,而是用了三种“折磨”AI 的方法:

  • 方法一:改输入数据(就像换考题数字)

    • 保持代码不变,但把输入给 AI 的数据稍微改一点(比如把数字 5 改成 5.1,或者把列表里的元素顺序打乱)。
    • 比喻:就像老师问“如果我有 3 个苹果,吃了 1 个剩几个?”AI 答对了。然后老师问“如果我有 3.1 个苹果,吃了 1 个呢?”或者“如果我有 3 个苹果,但其中一个烂了不能吃呢?”
    • 结果:很多 AI 在原版题目上得分很高(99%),但一旦题目稍微变个样,分数就暴跌。特别是那个号称最强的 GPT-5.2,在原版题上几乎满分,但稍微改改输入,准确率就掉了 20% 多!这就像是一个优等生,换个考场环境就懵了。
  • 方法二:改代码写法(就像换句式)

    • 保持代码逻辑不变,但把写法换一下。比如把 for 循环改成 while 循环,或者把变量名从 x 改成 my_var
    • 比喻:就像让你用“虽然……但是……"造句,你写对了。然后让你用“尽管……可是……"说同一件事,你却不会了。
    • 结果:大部分开源模型(如 DeepSeek 系列)表现比较稳定,但 GPT-5.2 再次“翻车”,对这种表面上的写法变化非常敏感。有趣的是,一个较小的模型 GPT-5 Nano 反而比它的“大哥”更抗揍,更稳健。
  • 方法三:增加决策点(就像增加迷宫的岔路口)

    • 测试代码运行过程中需要做出多少次判断(比如 if 语句、循环次数)。
    • 比喻:走迷宫。如果只有一条直路,AI 能走到头;如果路上有 10 个岔路口,每个路口都要做选择,AI 就容易迷路。
    • 结果:代码里的判断越多,AI 猜对结果的可能性就越低。这说明 AI 在处理复杂的逻辑链条时,容易“脑子打结”。

3. 最大的发现:AI 怕“报错”

这是论文最有趣的部分。

  • 现象:当代码运行会出错(抛出异常,比如除以零、列表越界)时,AI 的表现特别差。
  • 比喻:如果题目是“计算 10 除以 2",AI 能算对。但如果题目是"10 除以 0",AI 往往会假装没看见,强行编一个答案,或者完全懵圈。
  • 原因:研究者发现,是因为提示词(Prompt)没写清楚。原来的题目只让 AI 算出结果,没告诉它“如果出错了要告诉我”。
  • 补救措施:研究者给 AI 加了一句指令:“请仔细检查类型,如果代码会报错,请告诉我报了什么错。”
    • 效果:这一招立竿见影!AI 识别报错的能力从 15% 飙升到了 80% 以上。
    • 副作用:但是,这个新指令让 GPT-5.2 在正常题目上的表现反而变差了。它变得太敏感,有时候明明没错,它却非要“自作聪明”地报错。这就像是一个过度谨慎的保安,明明大门开着,他却非要说是锁着的。

4. 总结与启示

  • 结论:目前的顶级 AI(包括 GPT-5.2)在代码理解上并不像我们想象的那么稳健。它们更像是在“猜”答案,而不是真正“理解”逻辑。一旦环境稍微变化(输入变了、写法变了、或者要处理错误),它们就容易崩溃。
  • 启示
    1. 不要盲目信任:在调试代码或维护旧项目时,不能完全依赖 AI 的预测,尤其是当输入数据或代码结构发生微小变化时。
    2. 提示词很重要:告诉 AI“要注意报错”和“注意类型”,能极大提升它的表现。
    3. 小模型也有大智慧:有时候,经过特殊处理(如量化)的小模型,比那些巨大的模型更稳定、更不容易“犯糊涂”。

一句话总结
现在的 AI 程序员就像是一个记忆力超群但缺乏常识的“做题机器”。在标准试卷上它能拿满分,但只要题目稍微变个花样,或者遇到“陷阱题”,它就很容易露馅。我们需要更小心地使用它们,并学会用更好的“指令”来引导它们。

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

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

试用 Digest →