我最早被这个问题击中,是在一个深夜。我把一道带图的几何题丢给 GPT-4V——三角形,一条辅助线,标注了 30 度和 45 度角,问另一个角多少。模型答错了。我把同样的题目去掉图,改成纯文字描述——它秒对。

你可能会说,这有什么稀奇的,模型不擅长看几何图呗。但我想追问的是:为什么?多一个模态而已,为什么数学推理能力就像被砍了一截?带着这个疑问,我翻了不少论文,最后发现,这件事远比"视觉能力弱"四个字复杂。
模型不是在看图,它是在"猜"图
先说一点你可能没想到的:多模态大模型看到的那张图,跟你看到的根本不是同一张。图像会被缩放到固定尺寸(例如 224×224 或 336×336),再切成 16×16 的 patch,每个 patch 通过视觉编码器变成一个向量。也就是说,模型的眼睛是一层纱窗——纱窗的网格越粗,细节丢得越多。
数学题恰恰是最依赖细节的任务。角度符号、下标、小数点、根号上的横线、图表里的刻度——这些信息在像素级别上往往只占几个 patch。缩放之后,2 和 3 混在一起,小数点和乘号糊成一团。视觉编码器输出的向量里,可能已经丢失了关键信息。
MathVista 论文里有一个很扎心的现象:模型在图表题上经常把坐标轴刻度读错,然后在错误数值上做逻辑严密的推理——推理过程越有条理,错得越离谱。因为错不在推理,在"看"这一环。
读文字题是"读题",读图像题是"翻译题"
| 维度 | 文字题 | 图像题 |
|---|---|---|
| 关键信息形式 | 数字、符号是离散 token | 数字、符号是像素 |
| 输入模型前的失真 | 几乎没有 | 缩放、patch 化、颜色压缩 |
| 错误来源 | 推理过程出错 | 视觉提取错 + 推理再错 |
| 模型能自查吗 | 可以重读题干 | 通常不知道自己看错了 |
纯文字题目里,每个数字都是一个明确的 token。模型在做注意力计算时,可以精确地把它和其他数字区分开。但图像题里,"数字"只是像素块,没有天然边界。视觉编码器要做的不是识别,而是从像素分布中估计出一个数值——它可能给出概率最高的答案,但概率高不等于正确。
错一个数字,崩掉一道题
数学推理是链式的。你提取的每一个数值,都会进入后续的每一步计算。如果一个角度被读成了 23 度而不是 28 度,后面所有推导都基于这个错误值,最终答案毫无意义。
更麻烦的是,模型并不会告诉你"我不确定这里读的是 28 还是 23"。它会在错误的输入上,自信地给你一个完整的解题过程。这在纯文字题里几乎不会发生——文字题的输入符号是精确的,模型出错只会错在逻辑推导。而图像题的错误会出现在"输入"环节,这还没到计算,就已经污染了。
我之前一直以为,多模态模型就像人一样,看到一张图,大脑里同时有视觉和语言两个系统协同工作。直到我读了 Vision Transformer 的实现,才意识到它其实是一条流水线:图像先被冻结成一个固定尺寸的网格,每个格子变成一个向量,然后像文字 token 一样排列起来。
也就是说,模型并不是"看见"了图,而是拿到了一张被压缩过的描述卡。这张卡上面写着什么,取决于视觉编码器——而视觉编码器是在 ImageNet 上做物体分类训练出来的,它知道什么是猫、什么是狗,却不太懂小数点和坐标轴。
数字不会说谎,但基准会
在 MathVista 基准上,GPT-4V 的整体准确率不到 50%,而同一代模型在纯文本数学基准(如 GSM8K)上常常能到 80% 以上。差距不是百分之几,而是几十个百分点。
MathVista 是目前比较权威的多模态数学基准,包含几何图、图表、函数图像、3D 图等。它的结论很一致:所有多模态模型在图像题上的表现,都比纯文本数学任务差一大截。这说明问题不是某一个模型的问题,而是范式问题。
为什么视觉编码器和数学天然不对付
- 训练目标错位:CLIP 类编码器学的是"图像和文本语义对齐",它擅长把图概括成一句话,而不是把图里的数字精确读出来。你想让它读坐标轴刻度?它更擅长说"这张图展示了人口增长趋势"。
- 空间关系编码粗糙:几何题的"平行""垂直"需要精确的线条方向判断。视觉编码器对局部纹理敏感,但对全局几何关系不敏感。
- 高分辨率被丢弃:为了控制计算量,图像会缩到很小。但数学图表里的微小符号需要高分辨率细节。增大图像尺寸的话,计算复杂度又爆炸性上升。
- 训练数据不足:可用的图文数学数据远远少于纯文本数学数据。模型没见过多少高质量的图表题。
现在的人在想什么办法?
我看到的几类路线,其实都有点"退而求其次"。
- 提高视觉分辨率:比如把图切开,分区域多次输入,或者用更大的视觉编码器。有效果,但计算开销翻倍,而且没有从根本上解决"像素到符号"的难关。
- 先转成文本再推理:像 DePlot 那类工作,先让模型把图表转成表格或数据描述,然后用纯文本数学推理。这个方法在图表题上成绩还行。说明一个道理:当前的视觉编码器并不适合做精确数学,绕开它反而更可靠。
- 专门进行视觉数学指令微调:收集视觉数学题对模型做微调,确实能提升。但泛化性差,换个题型就失效。
你可能会问,为什么不能直接用 OCR 把数字全部提取出来?这里有个关键:几何题不是只有数字,还有空间关系,比如角度、对称、旋转。这些关系用文字描述会变得又长又歧义。所以完全转文字也有天花板。
看清了,才能想清
所以,"看图片做数学题更难"的本质是什么?不是模型数学能力弱,而是视觉前端把数学信息弄丢了大半。多模态数学推理的瓶颈在"看清"而非"想清"。
想象一下,你让一个数学天才戴上一副高度近视的眼镜去做题。他能推导,但他看到的数字全是模糊的。他会犯很多低级错误——不是因为他不会算,而是因为他看错了。这就是当前多模态模型的状态。
但只要把数字清晰呈现在它面前(比如先 OCR,或者用高分辨率),它的推理能力立刻回来了。所以,不要认定多模态模型"不会数学"。它只是还没能"看清数学"。未来如果出现真正能精确理解像素细节的视觉编码器,这块短板可能会大幅缩短。而在此之前,你问它带图的数学题,它确实更容易翻车。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/1160.html