当前大模型 STEM 短板在于「视觉感知」,代码才是破局关键

1 阅读18分钟

大家好,我是一个在AI领域摸爬滚打了22年的老程序员。今天早上刷到CVPR 2026刚接收的一篇论文,标题直接戳中了我最近一直在思考的问题——"别卷推理了!当前大模型STEM短板在于「视觉感知」,代码才是破局关键"。

说实话,看到这个标题我差点把手里的咖啡洒在键盘上。因为就在上周,我还在跟团队的实习生吐槽:现在的大模型啊,纯文本数学题能解到IMO竞赛水平,但是一碰到带图的几何题,立马就变成了"睁眼瞎"。给它看一个简单的直角三角形,它能把斜边说成直角边;给它看一个立体几何的三视图,它能把正方体认成长方体;更离谱的是,给它看一张有六根手指的图片,它会坚定地告诉你"这是五根手指"。

以前我一直以为,这是因为大模型的推理能力还不够强。直到今天看到这篇上海交大和通义千问团队联合发表的论文,我才恍然大悟:原来我们都搞错了方向!大模型做不出带图的理科题,根本不是"脑子笨",而是"眼神差"。

一、大模型做不出理科题,真的是"脑子笨"吗?

先给大家讲个笑话。前几天我让GPT-5.4做一道初中数学题:"如图,在直角三角形ABC中,∠C=90°,AC=3,BC=4,求AB的长度。"结果它给我返回了一个非常详细的解答过程,从勾股定理的历史讲到公式推导,最后得出AB=5。我心想,这不挺厉害的吗?

然后我把题目里的文字去掉,只给它看一张画着直角三角形、标着AC=3、BC=4的图片。结果你猜怎么着?它告诉我:"根据图片显示,这是一个锐角三角形,边长分别为3、4、5,所以AB的长度是5。"

你看,答案虽然对了,但是它连直角三角形都认不出来!这就好比一个学生,考试的时候蒙对了答案,但是根本不知道题目在说什么。

这就是当前多模态大模型普遍存在的问题。它们在纯文本推理上已经达到了人类专家的水平,但是一碰到需要"看图说话"的STEM任务,就立马拉胯。

1.1 传统认知:推理能力是瓶颈

过去几年,整个行业都在疯狂卷大模型的推理能力。从GPT-4的思维链(Chain of Thought),到OpenAI的o1模型,再到DeepSeek R1的强化学习推理,大家都在想尽办法让大模型"更聪明"。

我们理所当然地认为,大模型做不出带图的理科题,是因为它的逻辑推理能力还不够强。只要把推理能力提上去了,视觉推理自然就会变好。

但是这篇CVPR 2026的论文,用非常严谨的实验数据,彻底推翻了这个认知。

1.2 CVPR 2026最新研究:感知才是真正瓶颈

研究团队做了一个非常巧妙的实验。他们把STEM视觉推理任务解耦成了两个独立的阶段:

  1. 视觉感知阶段:把图像转换成自然语言描述
  2. 推理阶段:只基于自然语言描述来解决问题

然后他们分别扩展这两个阶段的能力,同时保持另一个阶段的能力不变。比如,他们用同一个强大的推理模型,分别搭配不同能力的视觉感知模型;或者用同一个视觉感知模型,分别搭配不同能力的推理模型。

结果让所有人都大吃一惊:扩展感知能力带来的性能提升,始终比扩展推理能力要大得多!

举个具体的例子:当他们把视觉感知模型的能力从"差"提升到"好"时,整体解题准确率提升了23.5%;而当他们把推理模型的能力从"差"提升到"好"时,整体解题准确率只提升了8.7%。

这就意味着,在当前阶段,限制大模型STEM视觉推理能力的真正瓶颈,不是推理,而是感知。大模型不是"想不明白",而是"看不清楚"。

1.3 为什么我们之前会搞错?

这个结论之所以反直觉,是因为我们人类的感知能力太强了。对于我们来说,"看"是一件非常简单的事情,我们甚至不需要思考就能完成。所以我们自然而然地认为,对于AI来说,"看"也应该是一件简单的事情,难的是"想"。

但是事实恰恰相反。对于AI来说,"想"其实比"看"要容易得多。因为"想"本质上是在处理结构化的文本信息,而这正是大语言模型最擅长的事情。而"看"则需要处理非结构化的像素信息,这对于大模型来说,其实是一个非常困难的问题。

二、为什么"眼神差"会成为致命短板?

既然感知是瓶颈,那我们就来深入分析一下,当前大模型的视觉感知到底差在哪里?为什么会这么差?

2.1 自然语言的"描述性失语"问题

研究团队指出了一个非常深刻的问题:自然语言在描述STEM领域的视觉信息时,存在着天生的"描述性失语"

什么意思呢?就是说,很多复杂的空间几何关系、精准的数值坐标、多面体中错综复杂的辅助线,根本无法仅凭自然语言来准确、完整地刻画。

比如,你能用自然语言准确描述一个正十二面体的结构吗?你能只用文字说清楚两个相交平面的二面角是多少度吗?你能精确地描述一个函数图像的拐点在哪里吗?

很难,对吧?而且即使你费尽九牛二虎之力描述出来了,也很容易产生歧义。比如"左边那个红色的大三角形",在一个复杂的几何图形中,可能有好几个符合这个描述的三角形。

这就是自然语言的局限性。它是模糊的、不精确的、容易产生歧义的。而STEM领域恰恰需要的是精确、严谨、没有歧义的描述。

2.2 现有评估体系的缺陷

除了自然语言本身的问题,现有的评估体系也存在着严重的缺陷。

目前主流的STEM视觉推理基准测试,比如MathVista、MathVerse和MathVision,都是通过最终的解题正确率来评估模型的能力。但是这个指标其实是把感知能力和推理能力混在了一起。当模型做错了一道题时,我们根本不知道它是因为"没看懂图"而做错的,还是因为"不会做"而做错的。

就像我之前举的那个直角三角形的例子,模型虽然给出了正确的答案,但是它其实根本没有看懂图。如果按照现有的评估体系,它会得到一个很高的分数,但这显然是不准确的。

2.3 真实案例:大模型的"视觉幻觉"有多离谱?

为了让大家更直观地感受一下大模型的视觉感知有多差,我给大家举几个真实的例子:

例子一:六指图片

这是最近在网上很火的一个测试。给大模型看一张有六根手指的图片,几乎所有的模型都会坚定地告诉你"这是五根手指"。

为什么会这样?因为在大模型的训练数据里,"人类有五根手指"是一个非常高频的常识。当它看到一张手指的图片时,它的大脑会自动用这个常识来"修正"它看到的视觉信息。它会想:"我明明看到了六根手指,但是所有的知识都告诉我人类只有五根手指,所以肯定是我看错了。"

这就是典型的"视觉幻觉"。大模型不是在"看图",而是在"猜图"。它的图像识别逻辑本质上是调取互联网上积累的海量记忆,用高频关联的知识来判断,而非真正分析眼前的视觉信息。

例子二:旋转几何题

波士顿大学在2026年4月发布的一项研究显示,当把一张几何图形旋转90度后,当前最先进的AI视觉模型的识别准确率会下降超过60%。

比如,给模型看一个正放的正方形,它能100%准确识别;但是把这个正方形旋转45度变成菱形,它就有30%的概率认不出来;如果再旋转90度,它的识别准确率会进一步下降到40%以下。

这对于人类来说是不可想象的。我们无论从哪个角度看一个正方形,都能一眼认出它是正方形。但是对于AI来说,旋转后的图形就变成了一个完全陌生的东西。

例子三:立体几何

立体几何是当前大模型的重灾区。几乎所有的模型在面对立体几何的三视图、截面图、展开图时,都会表现得像一个从未接受过任何几何教育的学生。

比如,给模型看一个正方体的展开图,问它折叠后哪两个面是相对的。这个问题对于一个小学生来说都不难,但是对于当前最先进的多模态大模型来说,准确率还不到30%。

三、CodePercept:用代码重塑视觉感知

既然自然语言不适合用来描述STEM领域的视觉信息,那我们应该用什么呢?

上海交大的研究团队给出了一个非常漂亮的答案:用代码

他们提出了一种全新的范式——CodePercept(代码驱动的视觉感知),用可执行的Python代码作为视觉感知的媒介,彻底解决了自然语言的"描述性失语"问题。

3.1 核心思想:代码是比自然语言更精确的描述媒介

为什么代码适合用来描述视觉信息?因为代码有三个天然的优势:

  1. 精确性:代码是精确的、没有歧义的。一行代码是什么意思,就是什么意思,不会有任何模糊的地方。
  2. 可执行性:代码是可以运行的。如果代码是正确的,那么运行它就能得到精确的结果。
  3. 结构化:代码是结构化的。它可以清晰地表达复杂的逻辑关系和空间结构。

比如,要描述一个直角三角形,用自然语言你可能需要说"这是一个直角三角形,直角在左下角,两条直角边分别长3和4,斜边在右上角"。但是用代码,你只需要写:

import matplotlib.pyplot as plt

# 绘制直角三角形
plt.plot([0, 3], [0, 0], 'b-', linewidth=2)  # AC边
plt.plot([0, 0], [0, 4], 'b-', linewidth=2)  # BC边
plt.plot([3, 0], [0, 4], 'b-', linewidth=2)  # AB边

# 标注边长
plt.text(1.5, -0.3, 'AC=3', ha='center')
plt.text(-0.3, 2, 'BC=4', va='center', rotation=90)

# 标注直角
plt.plot([0.2, 0.2], [0, 0.2], 'k-', linewidth=1)
plt.plot([0, 0.2], [0.2, 0.2], 'k-', linewidth=1)

plt.axis('equal')
plt.show()

这段代码不仅精确地描述了直角三角形的形状、大小、位置,还标注了边长和直角。而且最重要的是,它是可执行的。运行这段代码,你就能得道一个和原图一模一样的直角三角形。

这就是代码的力量。它可以用最精确、最严谨的方式,描述任何复杂的视觉信息。

3.2 两大创新任务

基于这个核心思想,CodePercept提出了两项开创性的训练任务,系统性地提升大模型的视觉感知能力:

任务一:代码驱动的描述生成(Code-Grounded Caption Generation)

传统的视觉语言模型是通过"图像→描述"的方式来训练的。但是正如我们之前所说,自然语言描述是模糊的、容易产生幻觉的。

CodePercept的做法是:先把图像转换成可执行的代码,然后再用代码来生成描述。也就是说,训练流程变成了"图像→代码→描述"。

这样做的好处是,代码成为了图像描述的"绝对真理"。所有的描述都必须基于代码中的确凿事实,比如坐标、数量、形状等。这就彻底消除了传统视觉语言模型固有的数字和几何幻觉。

比如,当模型看到一张有六根手指的图片时,它会先生成代码:fingers = 6,然后再基于这个代码生成描述:"这张图片显示了一只手,有六根手指。"这样它就不会再犯"把六根手指说成五根"的错误了。

任务二:STEM图像到代码转录(STEM Image-to-Code Translation)

这是CodePercept最核心的创新。它直接训练模型生成能够忠实再现原始图像的可执行Python代码。

这个任务的原理非常简单但极其强大:只有当模型完全理解了视觉信息时,它才能生成正确的代码来再现原始图像

如果模型看错了图像中的任何一个细节,比如把直角看成了锐角,把3看成了4,把正方型看成长方形,那么它生成的代码运行后就会得到一个和原图不一样的结果。这样我们就能非常准确地判断模型的感知能力。

这就好比老师让学生照着黑板上的图形画一遍。如果学生画得和黑板上的一模一样,那就说明他看懂了;如果画得不一样,那就说明他没看懂。

3.3 ICC-1M:百万级三元组数据集

为了训练CodePercept模型,研究团队构建了一个规模庞大的高质量数据集——ICC-1M。这个数据集包含了100万个"图像-描述-代码"三元组,覆盖了代数、几何、物理、化学、生物等几乎所有STEM领域。

这个数据集的构建过程非常严谨,采用了三大创新流水线:

  1. 图像复现:将现有的STEM图像精准转化为可执行的Python代码
  2. 图像多样化:提取种子图像的核心STEM原理,并在不同的视觉语境中重新实例化,确保生成极其丰富的新颖图像
  3. 立体几何合成:专门针对当前多模态大模型在立体几何空间关系上的短板,开发了基于模板的立体几何代码生成流水线

所有的数据都需要通过严苛的三阶断质量控制:图像质量检查、代码质量检查、图码一致性验证。这确保了训练信号的绝对精准。

3.4 两阶段训练策略

CodePercept采用了两阶段的训练策略,逐步提升模型的能力:

第一阶段:监督微调(SFT)

在这个阶段,模型同时学习"图像→描述"和"图像→代码"两个任务。因为代码本质上是一种格式话的描述,所以联合优化这两个任务可以让模型建立起强大的视觉感知能力。

第二阶段:强化学习(RL)

鉴于代码生成的容错率极低,研究团队引入了GRPO强化学习算法来专门优化代码生成。模型不仅需要拿到"格式奖励"(语法正确),还要通过更严苛的"内容执行奖励"和"图码相似度奖励"。

在不断的自我试错中,模型的代码生成能力会实现指数级的跃迁,从而带动视觉感知能力的大幅提升。

四、惊艳的实验结果

CodePercept的实验结果可以用"震撼"两个字来形容。

4.1 8B模型超越72B模型的解题能力

在传统的STEM视觉推理基准测试中,基于Qwen3-VL-8B架构的CodePercept-S1模型,竟然超越了比它大9倍的Qwen2.5-VL-72B模型,优势达到了6.2%。

这是什么概念?这就好比一个小学生,打败了一个大学生。而且这个小学生只用了不到十分之一的"脑力"。

更令人惊讶的是,CodePercept-8B-S1的表现甚至逼近了Claude-Opus 4.1-Thinking和GPT5-Thinking等闭源前沿模型的水平。要知道,这些闭源模型的参数量都是万亿级别的,而CodePercept只有80亿参数。

4.2 STEM2Code-Eval:最严格的视觉感知评估

为了更准确地评估模型的视觉感知能力,研究团队推出了一个全新的基准测试——STEM2Code-Eval。这个基准包含了1000张经过人工精校的STEM图像,要求模型直接生成Python代码来100%还原原始图像。

在这个最严格的测试中,经过强化学习优化的CodePercept-8B-R1模型斩获了63.56分的佳绩,比基座模型提升了3.92分,全面碾压了Seed 1.6-Vision和Qwen3-VL-Plus等超大参数规模的旗舰模型。

这个结果有力地证明了:用代码驱动的视觉感知范式,比单纯增加模型参数的方法,要高效得多

五、这对我们开发者意味着什么?

CodePercept的出现,不仅仅是一个新模型的诞生,它更宣告了多模态大模型发展的一个全新方向。对于我们开发者来说,这意味着什么呢?

5.1 未来多模态模型的发展方向

过去几年,多模态大模型的发展主要遵循"大语言模型+视觉编码器"的范式。大家都在拼命地增加模型的参数量,提升语言模型的推理能力。

但是CodePercept告诉我们,这个范式已经走到了瓶颈。未来的多模态模型,必须从底层重构视觉能力,用代码逻辑来重塑视觉感知。

这意味着,未来的多模态模型将不再是"会看图的语言模型",而是"会思考的视觉模型"。它们将能够像人类一样,真正地"看"懂世界,而不是仅仅"猜"懂世界。

5.2 代码能力的重要性再次凸显

CodePercept的成功,再一次证明了代码能力在AI时代的核心地位。

以前我们说,代码是程序员的饭碗。现在我们可以说,代码是AI的眼睛。没有代码,AI就只能是一个"睁眼瞎"。

这对于我们开发者来说,是一个巨大的机遇。因为我们拥有AI最需要的能力——代码能力。只要我们能够把自己的代码能力和AI技术结合起来,我们就能在AI时代立于不败之地。

5.3 如何快速跟上AI技术的发展?

AI技术的发展速度实在是太快了。今天还是最先进的技术,明天可能就过时了。很多开发者都感到焦虑,不知道该如何跟上这个快速变化的时代。

我的建议是:系统学习,实战为王

不要只看碎片化的博客和视频,那样你永远只能学到一些皮毛。你需要一个系统的、完整的学习路径,从基础原理到最新的实战技术,一步一个脚印地学习。

在这里,我给大家推荐一个非常好的学习资源:captainbed.cn。这个网站是由一个拥有二十多年AI实战经验的资深开发者创建的,系统地教人工智能技术,从基础原理到大模型、智能体、AIGC、自动驾驶等最新的实战技术都有。

这个网站最大的特点是通俗易懂,接地气。它不需要你有高深的高数和编程基础,只要你上过高中,就能学。而且每小节后面都提供了实战编程代码,让你边学边练,快速掌握。

我自己也经常上这个网站学习,每次都能有新的收获。如果你想系统地学习AI技术,跟上时代的发展,那么这个网站绝对是你的不二之选。

结语

今天,我们正站在AI发展的一个关键转折点上。过去几年,我们见证了大语言模型的崛起,它们已经能够像人类一样思考和交流。但是,它们还不能像人类一样"看"懂世界。

CodePercept的出现,为我们打开了一扇新的大门。它告诉我们,用代码驱动的视觉感知,是解决大模型STEM短板的关键。只有给大模型装上基于代码逻辑的"火眼金睛",真正的复杂推理之门才会被彻底叩开。

作为开发者,我们是这个时代的幸运儿。我们拥有AI最需要的能力,我们也将是AI时代最大的受益者。让我们一起努力,学习AI技术,掌握AI技术,用代码创造更美好的未来!