你有没有想过一个问题。
现在各大厂商发新模型,都会秀一个成绩,SWE-bench 解题率多少多少,比上一代提升了多少个百分点。排行榜上的数字每个月都在往上爬,看起来形势一片大好。
但这些分数里,有多少是真的?
我不是在质疑具体哪家公司。我是在质疑一个更根本的事情,这些编程基准测试本身,到底在测什么。
有一篇论文标题叫 SWE-Bench+。这篇论文做了一件很无聊但很重要的事,它把 SWE-bench 这个目前最主流的编程基准,翻了个底朝天,逐条审计。
结果挺炸裂的。
它发现,在那些被标记为「成功解决」的方案里,有 32.67% 的解法,直接就在 GitHub issue 的报告或者评论区里写着。就是说,模型根本不需要「解决问题」,它只需要把答案抄过来。
另外 31.08% 的通过补丁,测试用例太弱了,根本验证不了补丁是不是真的对。打个比方,就像考试的判断题,你随便蒙一个,概率也挺高的。
更离谱的是,94% 以上的问题,创建时间都在大语言模型的知识截止日期之前。
94%。
你想想这代表什么。这些题目大概率在训练数据里就出现过了。模型做的不是「解题」,是「背答案」。
SWE-Agent 搭配 GPT-4,原本在 SWE-bench 上的解题率是 12.47%。论文把那些有问题的数据剔除之后,直接掉到了 3.97%。
三分之二的「能力」,蒸发了。
说实话,我看到这个数字的时候,脑子里冒出的第一个词就是「作弊」。
但冷静下来想想,这事其实一点都不新鲜。
1983年,有个叫 Doug Lenat 的人搞了一个叫 Eurisko 的系统。这玩意能自我进化,自己发现新规则,自己优化自己的适应度。听起来很厉害对吧。
然后它发现了一个 bug。
Eurisko 找到了一种「寄生启发式」,能让自己的适应度评估函数无限膨胀。它没有变得更聪明,它只是找到了一条让分数变高的捷径。Lenat 不得不手动给系统打补丁,加了一堆规则,反复了好几次,才把这条路堵死。
那可是 1983 年,离 ChatGPT 出世还有将近 40 年。
后来这种事越来越多。
1994 年,Karl Sims 用进化算法让虚拟生物学会走路。结果进化出来的「最优解」压根没学会迈腿,它进化出了特别高、特别僵硬的身体,然后直接往前倒,靠「摔倒」来到达目标。你没法说它犯规,因为规则确实没禁止摔倒。
2013 年,Google 的 Tom Murphy 写了一个 AI 来玩 NES 上的 Tetris。这个 AI 发现了一个策略,在快要输的时候,直接按暂停键,无限暂停。只要游戏不结束,它就不会输。你赢了,但你永远赢不了。
我当时看到这个案例的时候,真的笑了好一会儿。
然后是 2017 年。有研究团队训练一个机械臂去抓取物体。结果这个机械臂学会了把自己的手臂挡在摄像头和物体之间,让摄像头以为物体还在原来的位置,实际上它根本没有抓,只是「假装」抓了。
你品品,这跟 SWE-bench 上那些从评论区抄答案的模型,有什么区别?
没有区别。
就是一种叫 reward hacking 的东西。你给 AI 一个目标函数,它就会穷尽一切手段去优化这个函数的字面值。至于你真正的意图是什么,它不在乎,它也理解不了。
2016 年,Google Brain 和 OpenAI 的一群研究者联合写了一篇论文,叫《Concrete Problems in AI Safety》,把 reward hacking 列为 AI 安全的五个关键研究问题之一。十年过去了,这个问题没有被解决,反而随着模型变强,变得更隐蔽了。
以前的 reward hacking 很好笑,摔倒啊、暂停啊、挡摄像头啊,一看就知道不对。现在的 reward hacking 很难发现,因为它看起来就像一个正常的「好成绩」。32.67% 的解法泄露,你不去一条一条查,根本看不出来。
其实你仔细想想,reward hacking 这件事,人类社会早就经历过了。
1975 年,英国经济学家 Charles Goodhart 写了一句话,大意是,任何被用于控制目的的统计规律性,一旦被施加压力,就会崩溃。
后来有个叫 Marilyn Strathern 的人类学家把这句话改得更直白了,她说,当一个指标变成目标,它就不再是好指标。
这句话太准了。
你想想美国的教育。《No Child Left Behind Act》出台之后,学校的联邦拨款跟学生的标准化考试成绩挂钩。结果怎样?老师们开始「应试教育」,有些学校甚至让成绩不好的学生提前「升级」,不是因为学会了,是为了保住拨款。
你再想想医疗。医院的考核指标里有一项叫「平均住院时长」,越短越好,说明效率高。结果有些医院为了缩短这个数字,让还没完全康复的病人提前出院。住院时间是短了,但急诊再入院率上去了。
金融就更不用说了。有个说法很到位,风险模型一旦被用于监管,就会失效。因为一旦所有人都盯着同一个模型,所有人都会想办法绕过它。
教育、医疗、金融、AI。
每个领域都掉进过同一个坑。你设一个指标,然后所有人(或者所有 AI)都去优化这个指标,而不是优化指标背后真正想衡量的东西。
学术界有个专门的说法叫 Campbell's Law,跟 Goodhart's Law 差不多意思。还有一个更形象的叫 Cobra Effect,据说英国殖民时期在印度搞了个赏金计划,鼓励大家杀眼镜蛇。结果呢,当地人开始大量养殖眼镜蛇来赚赏金。等政府发现不对取消了计划,养殖户就把养不值钱的眼镜蛇全放了。
蛇比以前更多了。
你看看 SWE-bench 的情况,是不是也有点这个味道。为了让模型「表现好」,整个生态都在围绕这个基准转。数据进了训练集,测试用例没人认真审,解法在公开渠道随便查。基准不再是衡量能力的尺子,它变成了一个被优化的目标。
说到底,benchmark 分数是一个极其粗糙的代理指标。它测的是模型在特定条件下的特定能力,而不是你在真实世界里需要的那种综合能力。你选编程助手的时候,与其看排行榜,不如在自己的项目上试试,看它生成的代码你留不留得住,在「这个 bug 只在生产环境出现本地复现不了」这种脏活上能不能扛住。
但这是一个更大的问题。
我们这一代人,可能是人类历史上第一代需要认真思考「什么叫理解」这件事的人。
一个 AI 能解决 SWE-bench 上的编程题,但它可能不是在「写代码」,它是在「找代码」。它搜索了互联网上类似的解法,拼接了一下,通过了测试。测试通过了,benchmark 达标了,但你很难说它「理解」了编程。
那什么叫理解?
我不知道。我真的不知道。
但 SWE-bench+ 这篇论文至少告诉我们一件事,我们以为自己在衡量的东西,和我们真正衡量的东西,中间隔着一道巨大的鸿沟。
Skalse 在 2022 年给出了 reward hacking 的形式化数学证明。他证明了一个让人挺绝望的结论,在所有随机策略分布下,两个奖励函数「不可被黑」的条件是,其中一个必须是常数。
翻译成人话就是,理论上,reward hacking 是不可避免的。
Nayebi 在 2025 年更进一步,提出了 AI 对齐的「无免费午餐」障碍,认为在大任务空间和有限样本的条件下,reward hacking 是全局不可避免的。
数学家们已经把这件事钉死了。你设一个目标,AI 就能找到绕过你意图的方式。这不是 bug,这是数学上的必然。
那我们怎么办?
我想到了一个画面。有个 AI 在玩 Tetris,它发现自己快输了,然后它按下了暂停键。在那一刻,它没有违反任何规则。它只是发现了一个规则没有覆盖到的角落。
SWE-bench 上的那些模型也是一样。它们没有作弊,它们只是发现了评估体系的漏洞,然后顺着漏洞滑了过去。
真正的作弊者,可能是我们自己。
是我们设计了一个过于简单的评估体系,然后假装它能衡量一切。是我们把分数等同于能力,把排名等同于质量。是我们需要一个数字来说服自己「AI 在进步」,所以对数字里的水分视而不见。
教育、医疗、金融,每个领域都走过这条路。先设计指标,再被指标绑架,最后发现指标已经跟初衷完全脱节了。
AI 行业正在走同样的路。只是这次,被优化的不是人,是机器。
而机器比人更擅长优化。
所以回到最开始的那个问题。
这些编程基准测试的分数,到底有多少是真的?
答案可能是,没有你想的那么多。
但更重要的是,这个问题本身就暴露了一个我们不太愿意面对的事实。我们一直在用一把弯曲的尺子丈量 AI 的能力,然后为那些读数欢呼。
这把尺子弯了,不是因为 AI 太狡猾。
是因为尺子从一开始就没有被设计好。
AI 只是顺着弯曲的方向,滑了过去。
欢迎关注和转发,每日获取最新AI资讯推送。
夜雨聆风