CodePercept:基于代码的视觉STEM感知增强方法 CodePercept: Code-Grounded Visual STEM Perception for MLLMs
通过可执行代码作为感知媒介,系统性提升多模态大模型在STEM领域的视觉理解能力
前置知识
MLLMs(多模态大语言模型)
多模态大语言模型是能够同时处理文本、图像等多种模态输入的大规模语言模型。典型代表包括GPT-5、Gemini、Qwen-VL系列等。这些模型通过视觉编码器(如ViT)将图像转换为token序列,与文本token一起输入到大型语言模型中进行联合推理。在STEM领域,MLLMs需要理解复杂的数学图表、几何图形、科学示意图等,并进行精确的视觉推理。
本文的核心研究对象就是MLLMs在STEM视觉任务中的感知瓶颈问题,理解MLLMs的基本架构和工作原理是理解本文方法的基础。
Scaling Analysis(扩展性分析)
扩展性分析是一种系统性的实验方法,通过独立地扩展系统的不同组件(如本文中的感知模块和推理模块),观察各组件扩展对最终性能的影响。这种方法能够帮助研究者识别系统中的真正瓶颈——即哪个组件的扩展能带来更大的性能提升。在本文中,作者将STEM视觉推理解耦为感知(图像到描述)和推理(描述到答案)两个阶段,然后独立扩展每个组件。
这是本文的核心研究方法论,通过这种分析作者发现了感知是真正的瓶颈,而非推理能力,这一发现直接指导了后续的方法设计。
Code-Grounded Perception(基于代码的感知)
这是本文提出的核心范式,指使用可执行的Python代码作为视觉感知的中间表示和验证手段。与传统的自然语言描述不同,代码能够精确地指定几何坐标、颜色值、空间关系等视觉属性,避免了自然语言描述中的模糊性和幻觉问题。例如,描述一个三角形,自然语言可能会产生歧义,而代码可以直接指定三个顶点的精确坐标。
这是本文的核心创新点,作者认为代码是比自然语言更精确的视觉描述媒介,能够从根本上解决STEM视觉感知中的准确性问题。
GRPO(Group Relative Policy Optimization)
GRPO是一种强化学习算法,是DeepSeek-R1中提出的策略优化方法的变体。与传统的PPO不同,GRPO不需要单独训练一个价值模型(critic),而是通过在同一输入上采样一组输出,计算组内相对优势来进行策略优化。具体来说,对于每个输入,模型生成G个候选输出,计算每个输出的奖励,然后通过组内标准化得到优势估计,最后使用PPO风格的裁剪目标来更新策略。
本文在第二阶段训练中使用GRPO来优化代码生成质量,理解这一算法有助于理解本文的训练策略和奖励设计。
Hallucination(幻觉)
在多模态大模型中,幻觉指的是模型生成与实际视觉内容不符的描述或推理结果。在STEM领域,这表现为:错误的数量统计(如将3个点说成5个)、错误的空间关系描述(如将左右关系说成上下关系)、错误的几何属性(如将直角说成锐角)等。幻觉是限制MLLMs在STEM领域应用的关键问题之一。
幻觉问题是本文要解决的核心挑战,作者提出用代码作为ground truth来消除描述中的幻觉。
研究动机
当前MLLMs在STEM视觉推理任务中表现不佳,但根本原因一直不明确。当模型在数学、物理、化学等STEM领域的视觉问题上失败时,研究者无法确定这是由于视觉感知能力不足(无法准确理解图像内容)还是推理能力不足(无法基于理解进行正确推理)。现有研究主要集中在提升推理能力上,包括冷启动数据策划、强化学习、单模态推理数据迁移等方法,但这些努力可能没有抓住问题的本质。此外,现有的视觉感知评估方法存在严重缺陷:大多数基准测试使用问题解决准确率作为感知能力的代理指标,但这只能反映模型对问题相关信息的理解,而非全面的视觉理解能力。一个典型的例子是,即使模型能正确回答一个几何问题,它可能仍然对图像中的其他重要视觉元素存在误解。
本文的目标是本文的目标是通过系统性的扩展性分析,明确识别MLLMs在STEM视觉推理中的真正瓶颈,并提出一种基于代码的感知增强方法来解决这一问题。具体来说,作者希望:(1)通过独立扩展感知和推理组件,量化各自对最终性能的贡献;(2)如果感知确实是瓶颈,则开发一种有效的感知增强方法;(3)建立一个直接评估视觉感知能力的基准测试,而不是依赖问题解决准确率作为代理指标。
与已有工作不同的是,本文的独特切入角度在于提出了'代码即感知'的范式。与现有方法试图通过更好的描述或更强的推理来提升性能不同,作者认为可执行代码是比自然语言更精确的视觉描述媒介。这一观点基于一个关键观察:STEM图像(如几何图形、函数图像、电路图等)本质上是结构化的、数学化的,其精确的空间关系和数值属性很难用自然语言准确描述,但可以完美地用代码来表示。例如,一个复杂的多面体几何问题,用自然语言描述辅助线的构造几乎是不可能的,但用代码可以精确指定每个点的坐标和连线关系。这种范式转换不仅提供了更精确的描述,还提供了可验证的评估手段——通过执行代码并比较渲染结果来验证感知的准确性。
核心方法
CodePercept的整体思路可以概括为三个层次:首先通过扩展性分析发现问题(感知是瓶颈),然后提出代码作为感知的媒介(核心创新),最后通过数据构建、训练策略和评估基准来实现这一范式。具体技术路线是:从公开的STEM种子图像出发,通过三条并行的管道(图像复现、图像多样性、立体几何合成)构建大规模的图像-代码对数据集ICC-1M。然后利用这些数据训练模型执行两个代码相关的感知任务:代码锚定的描述生成(用代码作为ground truth来生成准确的自然语言描述)和STEM图像到代码翻译(直接训练模型生成可执行的重建代码)。训练分为两个阶段:监督微调(SFT)和强化学习(RL),分别优化描述生成和代码生成能力。
本文的核心创新在于将可执行代码引入视觉感知流程,与现有方法形成本质区别。传统方法通常采用'图像→自然语言描述→推理'的流程,但自然语言在描述STEM视觉内容时存在两个根本性问题:(1)教师模型(如GPT系列)容易产生幻觉,特别是在空间定位、数量关系和元素交互方面;(2)许多STEM图像存在'描述性失语'现象——复杂的精确数值和空间关系无法被自然语言准确表达。CodePercept提出的解决方案是用代码作为中间表示,形成'图像→代码→描述'的新流程。代码的优势在于:它是可执行的,可以通过渲染来验证正确性;它是精确的,可以指定确切的坐标、颜色、尺寸等参数;它是结构化的,自然对应STEM图像的结构化特征。这种方法不仅提供了更准确的描述,还建立了一个可验证的评估体系。
方法步骤详情
CodePercept方法包含以下关键步骤:(1)图像-代码对构建:从STEM公开数据集出发,通过三条管道生成图像-代码对。图像复现管道FIR将现有STEM图像分解为描述→代码→渲染的流程;图像多样性管道FID从种子图像提取科学原理,然后生成K个多样化的代码变体;立体几何合成管道FSG使用参数化模板生成立体几何图像。(2)统一质量控制:使用MLLM对生成的图像质量、代码质量和图像-代码一致性进行三重验证。(3)代码锚定的描述生成:先生成自然语言草稿tdraft,然后通过代码分析提取可靠的视觉事实tcode,最后通过保留原始语言风格的精细化编辑生成最终描述tnew。(4)STEM图像到代码翻译:先生成解释性的代码草稿cdraft,然后利用ground-truth代码c作为参考进行精细化,生成既有解释性又正确的最终代码cnew。(5)两阶段训练:第一阶段SFT使用ICC-1M数据集联合优化图像描述和图像到代码翻译两个任务;第二阶段RL使用GRPO算法专门优化代码生成,通过格式奖励rfmt、执行奖励rexec、代码奖励rcode和图像奖励rimage的组合来指导优化。
技术新颖性
本文的技术新颖性体现在多个方面:(1)范式创新:首次提出用可执行代码作为视觉感知的中间表示和验证手段,这与传统的自然语言描述范式有本质区别。代码不仅是描述工具,还是验证工具——通过执行代码并比较渲染结果来验证感知的准确性。(2)数据构建创新:设计了三条互补的数据生成管道,特别是图像多样性管道能够从种子图像抽象出科学原理并重新实例化,以及专门为立体几何设计的模板合成管道,解决了现有MLLMs在生成立体几何代码时的根本性缺陷。(3)训练策略创新:提出代码锚定的描述生成方法,通过代码分析和执行追踪来消除自然语言描述中的幻觉,同时保持语言的自然性和教学性。(4)评估创新:提出STEM2Code-Eval基准,要求模型生成可执行代码来重建原始图像,提供了确定性的、可验证的感知能力评估,而不是依赖问题解决准确率作为代理指标。(5)奖励设计创新:在RL阶段设计了多维度的组合奖励,包括格式奖励、执行奖励、代码相似度奖励和图像相似度奖励,全面评估代码生成的质量。
实验结果
本文的实验结果验证了三个核心发现:(1)感知确实是STEM视觉推理的瓶颈。在MathVision数据集上的扩展性分析显示,扩展感知能力(从4B到72B的captioner模型)比扩展推理能力(从4B到235B的solver模型)带来更大的性能提升。这一发现颠覆了现有研究主要关注推理能力的做法。(2)基于代码的感知增强方法显著有效。在6个STEM推理基准上的问题解决评估中,CodePercept-4B-S1相比Qwen3-VL-4B-Instruct平均提升2.8%,CodePercept-8B-S1平均提升3.0%,CodePercept-32B-S1平均提升2.7%。值得注意的是,CodePercept-8B-S1甚至超越了参数量大得多的Qwen2.5-VL-72B(提升6.2%),并接近Claude-Opus 4.1-Thinking和GPT5-Thinking等前沿模型的性能。(3)在STEM2Code-Eval基准上的图像重建评估中,CodePercept-4B-S1相比基线提升10.6分,CodePercept-8B-S1提升12.3分,CodePercept-32B-S1提升17.5分。经过RL阶段后,CodePercept-4B-R1达到61.44分(提升7.35),CodePercept-8B-R1达到63.56分(提升3.92),CodePercept-32B-R1达到75.80分(提升22.92),超越了包括Seed1.6-Vision和Qwen3-VL-Plus在内的多个超大模型。(4)消融实验证明了三个数据生成管道的逐步有效性(60.91→62.15→62.75),以及代码锚定描述相比直接描述的显著优势(提升2.0分)。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| STEM视觉推理(6个基准平均) | 问题解决准确率(%) | CodePercept-8B-S1: 63.32 (Qwen3-30A3-Thinking solver) | Qwen3-VL-8B-Instruct: 60.36 | +3.0% |
| STEM视觉推理(6个基准平均) | 问题解决准确率(%) | CodePercept-32B-S1: 71.13 (Qwen3-235A22-Thinking solver) | Qwen3-VL-32B-Instruct: 67.50 | +3.6% |
| STEM2Code-Eval图像重建 | 综合分数 | CodePercept-8B-R1: 63.56 | Qwen3-VL-8B-Instruct: 47.37 | +16.19 |
| STEM2Code-Eval图像重建 | 综合分数 | CodePercept-32B-R1: 75.80 | Qwen3-VL-32B-Instruct: 52.88 | +22.92 |
| MathVision | 准确率(%) | CodePercept-8B-S1: 66.45 (Qwen3-235A22-Thinking solver) | Qwen3-VL-8B-Instruct: 59.67 | +6.8% |
局限与改进
尽管本文取得了显著成果,但仍存在以下局限性:(1)数据构建依赖于现有的STEM种子数据集,这些数据集主要来自Mulberry-SFT和GRAMMAR,可能无法覆盖所有STEM领域和难度级别。特别是,对于高度抽象或需要领域专业知识的STEM图像(如高级物理、化学结构式等),当前的数据构建管道可能不够充分。(2)代码锚定的描述生成方法虽然能减少幻觉,但仍然依赖于MLLM的代码分析能力。对于非常复杂的代码(如深层递归、复杂变换),LLM直接分析仍然困难,需要依赖执行追踪来辅助。(3)STEM2Code-Eval基准虽然提供了直接的感知评估,但只包含1000个样本,且主要集中在数学、物理、化学和电气工程领域,可能无法全面代表STEM视觉感知的所有方面。(4)RL阶段的奖励设计中,代码奖励rcode和图像奖励rimage都依赖GPT-4o进行评估,这引入了外部模型的偏见和成本。(5)论文没有详细讨论计算成本和推理效率。使用代码作为中间表示会增加推理的计算开销,特别是在需要执行代码进行验证的场景下。(6)作者承认模型在处理'描述性失语'的图像时仍有改进空间,特别是对于需要精确数值描述的复杂STEM图像。
独立分析的弱点
基于对论文的深入分析,我认为存在以下可改进的弱点:(1)数据多样性不足:当前的数据构建主要基于公开的STEM训练数据,这些数据可能存在分布偏移。未来可以通过收集更多真实世界的STEM图像(如教科书、科学论文中的图表)来扩展数据覆盖范围。(2)代码生成的鲁棒性:当前方法生成的代码可能在不同环境下(如不同的matplotlib版本、不同的系统字体)产生不同的渲染结果。可以考虑添加环境一致性的约束或使用更稳定的渲染方式。(3)评估维度单一:STEM2Code-Eval主要评估图像重建的视觉相似度,但没有评估代码的效率、可读性和教学价值。可以考虑添加代码质量的多维度评估。(4)缺少与其他感知增强方法的对比:论文没有与知识蒸馏、数据增强等其他感知增强方法进行系统对比,难以判断代码方法的相对优势。(5)RL阶段的样本选择:当前使用固定的10k样本进行RL训练,但这些样本可能不是最有价值的。可以考虑使用课程学习或主动学习策略来动态选择训练样本。
未来方向
本文为未来研究开辟了多个方向:(1)扩展到更多STEM领域:当前主要在数学、物理、化学和电气工程上验证,可以扩展到生物学(如细胞结构图)、地球科学(如地质图)、计算机科学(如算法流程图)等领域。(2)多模态代码生成:当前只生成matplotlib代码,可以扩展到其他可视化库(如plotly、bokeh)甚至3D渲染库(如Three.js),以支持更丰富的STEM可视化。(3)交互式感知:将代码生成与交互式可视化结合,允许用户通过修改代码参数来探索不同的视觉表示。(4)感知-推理联合优化:虽然本文发现感知是瓶颈,但更好的方法可能是联合优化感知和推理,让两者相互促进。可以考虑端到端训练,让推理损失反向传播到感知模块。(5)可解释性增强:代码作为中间表示天然具有可解释性,可以进一步利用这一特性来增强模型的可解释性,让用户能够理解模型的感知过程。(6)少样本学习:探索如何利用少量高质量的图像-代码对来快速适应新的STEM领域。
复现评估
本文在可复现性方面做得相对较好:(1)代码开源:作者在GitHub上提供了代码(TongkunGuan/Qwen-CodePercept),包括数据构建、训练和评估的完整流程。(2)数据可用:ICC-1M数据集包含1M个图像-代码-描述三元组,STEM2Code-Eval包含1000个经过人工验证的样本,这些数据应该可以公开获取。(3)训练细节充分:论文详细描述了SFT和RL的训练超参数,包括学习率、批大小、训练epoch数、GPU数量等。SFT使用32个A100 GPU训练1个epoch,RL使用相同硬件训练1个epoch。(4)基线对比全面:论文对比了多个开源和闭源模型,包括GPT-5、Claude、Gemini等前沿模型,以及多个开源模型如InternVL、MiniCPM等。(5)潜在挑战:完全复现可能需要大量的计算资源(32个A100 GPU),这对于大多数研究团队来说是一个障碍。此外,部分评估依赖闭源模型(GPT-4o用于代码评分,Gemini用于图像评分),这可能影响评估的可复现性。
论文图表
该图展示了将STEM视觉推理解耦为感知(图像到描述)和推理(描述到答案)两个阶段的实验设计和结果。左图显示独立扩展感知组件(使用不同规模的captioner模型,从4B到72B)时在MathVision数据集上的性能变化,右图显示独立扩展推理组件(使用不同规模的solver模型,从4B到235B)时的性能变化。两条曲线对比表明,扩展感知能力带来的性能提升始终大于扩展推理能力。
这是整篇论文的立论基础,通过这个扩展性分析实验,作者确立了感知是STEM视觉推理的真正瓶颈,从而为后续的代码感知增强方法提供了动机。