ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

仅用四分之一数据反超SOTA:几何推理大模型的结构化数据训练法

仅用四分之一数据反超SOTA:几何推理大模型的结构化数据训练法

1. “用更少数据,把几何推理做强”这个标题到底在讲什么事

先说实话,我第一眼看到这个标题时,最大的感受是“终于有人认真动几何推理这块硬骨头了”。大模型这几年在文本推理、代码生成、数学应用题上确实进步飞快,但一旦遇到平面几何、立体几何这类需要“看图+想空间关系+做辅助线”的任务,绝大多数模型的表现会迅速拉胯。原因不复杂:几何推理既要有符号层面的逻辑能力,又要有对图形结构的空间感知,还往往依赖图形和文字信息的对齐,这跟纯文本的“链式思考”完全是两个套路。

标题里那句“只需 1/4 的数据,性能却反超 SOTA”,真正想表达的信息是:与其无脑堆数据、靠加大规模硬灌几何样本,不如把训练数据的质量、覆盖结构和训练策略掰开揉碎重新设计。这里提到的“阿里、交大联手”,对应的是某个联合研究团队,具体人名、具体机构代号我们不需要过度关注,关键是这套方法代表了一种很值得借鉴的思路:用更少的标注成本,换来更强的几何推理泛化能力。

换句话说,这篇内容要解决的不是“怎么把模型做大”,而是“怎么让模型在有限数据下真正学会几何推理”。对从业者来说,这件事的意义在于:几何数据的标注非常贵,人工画图、写步骤、做辅助线验证,成本远超普通问答对;如果能在数据侧打开突破口,就能让中小团队也具备训练几何推理模型的可能性。

这篇文章适合谁看?一类是做多模态大模型、视觉语言模型训练和评测的算法工程师,另一类是研究数学推理、自动解题、智能教育产品的同学,还有一类是单纯对大模型能力边界感兴趣、想搞明白“为什么加了图模型还是不会做几何题”的技术爱好者。我会从问题拆解、方案思路、关键数据设计、训练策略、评测结果和实用避坑几个角度,把这件事讲透。

2. 几何推理为什么是大模型的老大难

2.1 几何题到底难在哪:不仅是“看题”,而是“看懂图”

先说一个很反直觉的现象:很多大模型在纯文本数学题上已经能拿到不错成绩,比如代数化简、方程求解、数列题,这类任务本质上可以归结为“符号序列到符号序列”的映射,模型只要学会了模式,就能一步步推出答案。但几何题不一样,它天然是两个模态的混合体:题目文字描述位置关系、长度关系、角度关系,而图形本身承载了空间结构信息。

举个例子,一道题说“在三角形ABC中,D是BC的中点,连接AD”,如果模型只读文字,它其实很难准确对应“D到底在哪条边上”“AD是哪条线段”“图形里还有哪些隐含关系”。人能做对,是因为我们同时在看图和文字,并且能在心里把辅助线画出来。大模型要真正做到这一点,就必须把视觉编码器和语言模型之间的对齐做得足够好,而不只是把图片“塞进”模型就完事。

还有一个隐藏难点是几何推理的“过程性”。最终答案往往只是一个数值或一个判断,但真正的推理能力体现在中间步骤:要不要做辅助线?哪个三角形全等?哪两个角相等?这些中间决策才是几何推理的灵魂。很多模型能蒙对答案,但中间过程一塌糊涂,这在评测里非常容易被忽视。

2.2 现有方法为什么效果有限:堆数据不是万能药

过去一段时间,业内对几何推理的主流解法就是“大力出奇迹”:收集大量几何题目,把题目文字和图形渲染成图片,配上标准答案和解析步骤,直接拿去微调多模态大模型。这个路线不是完全没用,但问题很明显。

第一,标注成本高。几何题的解析步骤需要人工逐步写清楚,每种图形结构还要保证正确性,一个高质量几何样本的成本往往是普通问答对的几倍甚至十几倍。第二,数据分布不均衡。真实数据集里,三角形、四边形、圆这几类常见图形占了大头,但考试里真正拉开差距的是那些需要做辅助线的中高难度题,这类样本恰恰最少。第三,模型容易“背题”。如果训练数据里图形结构雷同、问法单一,模型会记住浅层模式,遇到稍微变一下图形位置或条件顺序的题就崩,这不是推理,是记忆。

所以标题里“只需 1/4 数据”的潜台词是:现有方法的数据利用效率太低了。并不是数据越多越好,而是数据里的“有效信息密度”不够,模型没有在训练中真正建立起“图形结构感知+逻辑推理”的能力。

2.3 几何推理能力的可迁移性被忽视了

我在实际评测中还发现一个现象:某个模型在训练集来源的题库上表现不错,但换一个出题风格、图形渲染方式完全不同的数据集,成绩立刻下降。这说明模型学到的不是通用几何能力,而是某个题库的“方言”。这种情况在真实落地场景里非常致命,因为教育产品的题目来源五花八门,图形风格、文字表述、难度分布都不一样。

标题里强调“性能反超 SOTA”,SOTA 指的应该是同期在标准几何推理基准上表现最好的方案。要做到“数据少了还能反超”,就意味着方法一定在可迁移性、数据覆盖、训练目标设计上有本质改进,而不是简单地把同样数据换一种格式再喂一遍。这一点也是我读这个工作最感兴趣的部分。

3. 核心思路:从“堆数据”转向“结构化覆盖”

3.1 数据量不是关键,数据的信息密度才是

整篇工作的核心假设其实可以用一句话概括:几何推理模型的性能,更多取决于训练数据对“几何结构空间”的覆盖程度,而不是取决于样本总数。这里说的“覆盖”不是简单的题目数量多,而是指数据是否覆盖了足够多样的图形类型、条件组合、辅助线模式、问题目标。

打个比方,你要训练一个人认识世界上的猫,给他看 10 万张同一个品种、同一个角度、同一个背景的猫照片,他可能最后只会识别“那种姿势的猫”。但如果你给他看 1000 张不同品种、不同角度、不同光线、不同环境下的猫,他反而能建立更抽象的“猫”概念。几何数据也一样:同样的样本量,如果结构重复度高,模型只是在重复记忆;如果结构差异大、关键关系变化丰富,模型被迫去抽象更通用的规律。

所以“用 1/4 的数据反超 SOTA”并不是什么魔法,而是证明了数据设计比数据规模更值得投入。对做实际项目的团队来说,这个结论非常有指导意义:与其花大价钱买数据、标数据,不如先想清楚“我到底需要覆盖哪些几何结构”。

3.2 用“结构标签”组织数据,而不是用“题目来源”组织数据

传统做法里,数据通常是按题库来源或者题目难度分桶的,训练时随机采样。但这个团队的做法更接近“结构化组织”:给每条几何样本打上结构标签,比如图形类型是三角形还是圆,涉及的核心关系是“中点+垂直”还是“角平分线+平行”,解决方案是否依赖辅助线,辅助线属于哪个大类。

有了这套标签之后,训练数据的采样就不再是均匀随机,而是按结构类别进行平衡采样。这样做的好处非常直接:模型在训练时能稳定看到各种结构组合,不会因为某个结构在数据里出现太少而被忽略,也不会因为某个结构出现太多而导致过拟合。

我觉得这套思路最妙的地方在于,它没有引入特别复杂的模型架构创新,而是在数据层面做了“精细化管理”。数据标签的获取成本也不高,因为每一道几何题的解析过程里其实天然包含了这些信息,只要做一次结构化的后处理就能得到。

3.3 图形渲染质量直接决定视觉编码的上限

几何推理离不开对图形的理解,所以图形怎么渲染、怎么从题目文字中提取坐标信息,就成了一个容易被忽视但至关重要的环节。很多公开数据集里的几何图形是简单的黑白线条图,线段粗细、标注位置、图形比例都并不规范,甚至有些图形和文字条件对不上,这些问题会直接污染视觉编码器的学习。

这个团队在数据处理流程里,显然对图形渲染做了严格质量控制:根据文字条件重新生成标准几何图形,确保图形中线段、角度、标记都准确对应题目描述;图形渲染风格尽量统一,避免模型去学“渲染风格”这种无关特征;对需要做辅助线的题目,在训练数据的参考答案里明确区分“原始图形”和“添加辅助线后的图形”,让模型能理解辅助线是一种解题手段,而不是图形本身的属性。

这一点我特别认同。因为多模态模型很容易被视觉特征带偏,如果图形里有些无关的装饰性元素反复出现,模型可能会把它们当作解题线索,这在评测时可能看不出来,但换到真实题目上就会失效。

3.4 训练目标上做文章:让模型“先想清楚,再下笔”

光有好的数据还不够,训练目标的设计同样关键。这个团队在微调阶段没有简单粗暴地让模型“输入题目+图,直接输出答案”,而是把推理过程拆成了可监督的中间步骤。

具体做法是采用类似“两阶段生成”的策略:第一阶段让模型输出基于图形和文字条件的结构化解析,比如识别图形类型、列出已知条件、写出需要证明的目标;第二阶段才让模型生成具体的推理步骤和最终答案。这么做等于把“审题”和“解题”两个认知环节分开,模型必须先证明自己理解了题目结构,才能进入下一步。

这个设计的好处非常明显:审题阶段如果出错,后续步骤必然跑偏,这种显式约束会逼着模型把视觉感知和文本理解对齐。相比之下,一步到位的端到端生成虽然训练简单,但模型很容易跳步,而跳步恰恰是几何推理里最常见也最难查的错误来源。

4. 实操拆解:数据构建、训练流程与关键细节

4.1 数据构建流程的分步说明

抛开论文式的抽象表述,落到实际工程里,这套数据构建流程可以拆成下面几步。

第一步,收集原始几何题目。来源可以是公开题库、教材习题、在线评测平台的题目,不需要限定单一来源,但需要确保题目带有可解析的图形描述或者可以在本地重新渲染。

第二步,对题目做结构化信息抽取。把自然语言描述的几何条件转成结构化字段,例如“三角形ABC”“D是BC的中点”“AD垂直于BC”这类信息,整理成统一的中间表达。这一步可以直接用大模型辅助完成,但一定要做人工抽检,因为几何条件里“中点”“垂直”“平行”“角平分线”这些关系一旦抽错,后面全部白做。

第三步,根据结构化信息重新渲染图形。我建议用可编程的几何绘图工具来渲染,不要直接截图原题图片。重新渲染的目的有三:保证图形和文字条件严格一致、统一渲染风格、方便之后叠加辅助线。

第四步,给样本打结构标签。这一步是数据管理的核心,需要标记图形类型、参与的核心元素、涉及的核心关系、辅助线模式、问题目标类型。标签粒度越细,后续采样控制的自由度越高。

第五步,生成推理过程的参考答案。这里要特别注意,参考答案不能只给最终结果,必须包含完整的中间推理链。如果条件允许,还可以为同一道题生成多份不同风格的解答过程,比如一种用全等三角形证明,另一种用相似三角形证明,这样能提升模型对多路径推理的鲁棒性。

第六步,按结构标签做平衡采样,构造训练集。建立训练集时,不要简单随机采样,而是设定每个结构类别的目标样本数或比例,再从中挑选代表性样本。如果某个类别的原始样本不够,可以通过条件微调、图形变换等方式做数据增强。

4.2 数据增强的几种实用手段

数据增强是“用更少原始数据达到更好覆盖”的关键手段,但这个领域跟图像分类的随机裁剪、翻转还不太一样,必须保证增强之后几何关系仍然成立。

我见过几种比较有效的增强方式。第一种是图形等比例缩放和旋转,旋转角度要谨慎,某些几何题依赖方向感,比如“在AB上方作一点C”,旋转后可能让位置关系变模糊,所以更稳妥的做法是只做整体缩放,或者保持关键方向不变。第二种是条件等价的文字改写,比如把“D是BC的中点”改写成“BD=DC”,图形不变,但文字表达不同,这样可以增强模型对条件表述的鲁棒性。第三种是结构组合增强,把一道三角形中点题和一道垂线题合并成一道更复杂的综合题,这需要确保题目本身可解且条件不冲突,工程量比较大,但收益明显。

在实际项目中,增强后的每一条样本都应该跑一遍“可解性校验”,最简单的方式是用一个规则几何求解器或者人工抽检,确认增强后的图形条件和题目描述一致。这个环节不能省,因为错误样本的污染在小数据集上会被放大。

4.3 训练流程与关键超参数设计

训练方面,整个方案不需要从零训练模型,而是基于一个已经具备基础视觉理解和数学能力的多模态大模型做微调。这个选择本身就有讲究:从头训练一个多模态模型需要的数据量和算力都太大了,而且底层的视觉编码能力不一定比现有开源模型强;在成熟底座上做微调,可以集中资源让模型“学会几何推理的结构化思维”。

微调阶段的核心设计是分阶段训练。第一阶段用较少的训练步数、较高的学习率让模型快速适应几何数据的输入格式,同时重点优化“审题解析”部分的损失;第二阶段降低学习率,用更多步数做全流程的指令微调,让模型把审题、推理、答案输出连贯起来。我建议第一阶段大约占总训练量的 40%,第二阶段占 60%,具体比例可以根据数据规模做微调。

这里有个细节值得展开:训练时要把“审题解析”和“最终答案”作为两个独立的损失项分别计算,而不是只对整体序列计算一个交叉熵。为什么要分开?因为两部分的监督信号性质不同,审题解析更依赖视觉理解和条件抽取,最终答案更依赖逻辑推理和步骤组织,分开计算损失可以更精准地反馈到模型的不同能力维度。

还需要注意训练数据里“辅助线过程”的呈现方式。训练时可以设计一种特殊的输入格式,比如在生成推理链之前先插入一段辅助线思考,用特殊标记把“我打算添加一条辅助线,连接点E和点F”这类内容包起来。这样模型在推理时会更明确地意识到辅助线是一个可选操作,而不是图形中默认存在的东西。

4.4 评测时容易踩的坑

评测几何推理模型,只看 final accuracy 是远远不够的。我在实际操作中至少会关注三个维度。

第一,过程正确率。最终答案对了但过程错误,或者过程对了但最终答案计算错误,这两种情况性质完全不同。建议把模型的推理过程拆成多个子步骤,用规则判断每一步是否合理。第二,辅助线能力。在评测数据里单独划分一个“必须添加辅助线才能解答”的子集,这个子集的得分直接反映模型最核心的几何推理能力。第三,跨题库泛化。训练时用 A 题库,测试时加入来自 B 题库和 C 题库的题目,比较模型在不同出题风格下的表现差异。

我在做类似项目时经常发现,一个模型在训练题库上准确率很高,但一到全新题库就明显下降,这说明它可能记忆了大量原题模式,而不是真正掌握了可迁移的几何推理能力。因此在实验报告里,跨题库泛化指标的说服力往往比单一基准分数高得多。

5. 方法对比与适用边界

5.1 对照实验应该怎么做才有说服力

如果要在自己的项目里复现并验证这套方法的有效性,我的建议是至少跑三组对照。

第一组是“全量数据随机采样”,模拟传统堆数据路线,把所有可用数据不区分结构地随机采样,用相同模型底座、相同训练配置做微调。第二组是“1/4 数据随机采样”,从全量数据里随机抽 1/4,同样微调,用来证明“光减少数据是不够的”。第三组是“1/4 数据结构化平衡采样”,也就是本方法的核心做法,从全量数据里按照结构标签精心挑选 1/4,同时配合分段训练目标。

从逻辑上讲,只有第二组和第三组对比时,才能把性能差异归因于“数据组织方式”而不是“数据量”。如果第三组在多个评测维度和多个随机种子下都稳定优于第二组,甚至可以接近或超过第一组,那“数据效率提升”的结论才算真正站稳。

这里要特别提醒一个细节:随机采样很容易因为随机种子不同而产生较大波动,所以每组实验最好跑 3 个不同随机种子,报告平均值和方差。结构标签平衡采样因为已经固定了类别比例,方差通常会明显小于随机采样,这也是结构化数据组织的额外好处之一。

5.2 这套方法适合哪些场景

从场景角度看,这套方法最适合三类情况。

第一类是智能教育产品里的自动解题、错因分析功能。教育场景对推理过程的正确性要求极高,不能只看答案,结构化训练目标天然契合这种需求。第二类是几何题库自动生成和质量控制,可以用结构标签作为题目查重和难度分级的重要依据。第三类是数学推理模型的通用能力提升,虽然这次聚焦几何,但“结构化覆盖+分阶段推理训练”的思路完全可以迁移到其他结构性强、依赖多步推理的任务上,比如物理题、算法题。

5.3 需要保持清醒的边界

这套方法不是万能的,我对它的边界也做了一些思考。首先是数据质量的上限问题,如果原始题目本身包含错误条件、矛盾描述,再好的采样策略也无能为力。其次是辅助线的自动评估仍未完全解决,目前更多是靠规则和人工抽检,很难做到大规模自动判断“辅助线是否最优”。最后是少数异形结构的问题,比如某些竞赛题会涉及复杂的轨迹问题、多圆相交问题,这类样本即使经过增强也可能非常稀少,模型的泛化能力仍然受限。

在实际落地时,我的建议是把这套方法当作数据基础设施来建设,而不是一次性实验。先建立一个带结构标签的几何题库管理流程,后续每个新项目都可以在这个基础设施上低成本复用,这比每次重新造数据高效得多。

6. 常见问题与排错经验

6.1 训练数据怎么处理才能避免“图形与文字不对齐”

我踩过最典型的坑是:原始题目本身的插图就没法用,要么是扫描件清晰度不够,要么是图形里缺了一条关键线段,要么是图形标注的字母和文字描述对不上。这类脏数据只要在训练集里混进 1% 到 2%,就足以让模型在对应结构类别上出现明显波动。

我的建议是把“图形条件一致性校验”做成数据流程里的强制环节,而不是可选项。具体做法是:根据结构化字段重新渲染图形,然后用程序自动检查渲染结果里的线段数量、点坐标是否与结构化字段一致。这一步可以在批量处理里跑,只有通过校验的样本才进入训练集。对于特别复杂的图形,再叠加人工抽检,抽检比例至少 5%。

6.2 训练不收敛或 Loss 震荡怎么排查

如果发现训练过程中 loss 不下降或者剧烈震荡,我一般会按以下顺序排查。

第一步,检查数据里是否存在“超长推理链”样本。几何题的推理链长度差别很大,有的只要三四步,有的要十几步,如果混在一起不处理,模型会被极端长度的样本干扰。我建议按推理步骤数量对样本分桶,训练时控制每个 batch 里不同长度样本的比例。

第二步,检查“审题解析”和“最终答案”两个损失项的权重是否合理。如果最终答案的损失权重太高,模型可能直接跳过审题过程去“猜答案”,表现为训练 loss 下降很快但过程正确率很低。如果审题解析的损失权重太高,模型则可能过于保守,输出冗长但无效的解析。一般来说,最终答案的损失权重可以略高,但差距不宜超过 2 倍。

第三步,检查学习率是否过高或过低。几何推理微调对学习率比较敏感,我在实际项目中通常使用线性预热加余弦衰减,峰值学习率控制在通用指令微调的 50% 到 70% 左右,这样既能快速适应新任务,又不会破坏底座模型已有的基础能力。

6.3 模型“会做训练题,不会做新题”怎么解决

这是泛化能力不足的典型表现。我通常会先看训练数据里的结构覆盖率,如果某个结构类别在训练集里只出现几十条样本,那模型大概率只能记住这几条题目的表面模式。解决办法不是简单加数据,而是先算一下每个结构标签的样本分布,找出覆盖率明显偏低的类别,然后针对这些类别做数据增强。

另外也要检查“问题目标类型”的覆盖。同一道图形,可能问“求角度”“证明相等”“判断位置关系”,如果训练数据里“求角度”占了绝大多数,模型对“证明类”问题的推理能力就会弱很多。我建议训练集在不同问题目标类型上的分布尽量均衡,比例差距最好控制在 3 倍以内。

6.4 辅助线相关评测怎么设计才合理

辅助线是几何推理的试金石,但它的评测设计非常讲究。我的经验是把评测题目按“是否需要辅助线”和“辅助线难度”进行分层。最简单的是“直接可解”类,不需要辅助线,主要考察基础感知和条件抽取能力;中等的是“单条辅助线”类,比如连接两点、做一条垂线,考察常见的解题套路;最难的是“多条辅助线或非标准辅助线”类,这类题目往往需要创造性思维,对模型的训练覆盖要求极高。

评测结果输出时,最好分别报告这四个层级的准确率和过程正确率,而不是只给一个总分。因为一个总分可能会掩盖模型“会做基础题但不会做难题”的严重缺陷,这种信息丢失对产品选型和后续优化都非常不利。

7. 我对这套思路的个人体会与后续扩展

7.1 数据组织方式比模型结构更值得投入

做了这么多年模型训练,我越来越觉得一个道理:在小规模团队里,与其把精力全部花在改模型结构、堆算力上,不如先把数据组织方式做扎实。这套几何推理方案给我的最大启发,是“先想清楚能力瓶颈在哪,再去设计数据”,而不是“先收集一堆数据,训完再看效果”。

很多人以为数据工作就是“洗数据、去重、格式化”,但几何推理这个例子说明,数据工作完全可以做到“结构感知”和“能力定向”。你给模型看什么样的数据组合,模型就会形成什么样的能力偏好,这个因果关系在训练里非常直接。所以在项目立项阶段,我就会先画一个“能力维度 x 数据覆盖”的矩阵,把每一步训练计划和这个矩阵对齐。

7.2 后续可以怎么扩展

从实际项目角度,我觉得这套方法至少有四个扩展方向。

第一个是把结构标签体系扩展到其他数学分支,比如解析几何、向量几何、三角函数应用题。虽然这些分支的图形结构和辅助线模式不同,但“结构化覆盖+分阶段推理”的底层思路是通用的。第二个是把“审题解析”和“最终答案”的两阶段训练目标迁移到物理题、算法题等更长链条的推理任务上。第三个是引入更复杂的图形组合和动态几何条件,比如点在运动过程中形成的轨迹,这类数据对空间理解能力的提升会有很大帮助。第四个是尝试用自动化的方式生成结构标签和辅助线标注,降低人工成本,让这套方法能够扩展到更大规模的题库。

7.3 最后几个非常实际的建议

如果要复现这类项目,我最后想给几点具体建议。第一,不要一开始就追求数据规模,先把 200 到 500 条高质量、带完整结构标签的样本做出来,把训练流程跑通,再逐步扩充。第二,把评测集固定下来,任何数据改动、训练策略改动都能在同一套评测集上快速对比,防止“调参调到过拟合评测集”而不自知。第三,在训练过程中持续记录不同结构类别上的分项准确率,一旦发现某个类别掉点,立刻排查对应数据是否有新引入的噪声。

提示:小数据集上,训练样本顺序对最终效果的影响会被放大。我习惯在每次实验前固定数据 shuffle 种子,同一组实验至少跑两次,用结果稳定性作为数据质量的重要信号。这在别人看来可能过于谨慎,但正是这种细节让“数据效率”类方法的结论更可信。

我个人的体会是,几何推理这块硬骨头,真正的突破口往往不在模型结构,而在数据设计和训练目标设计上。只要你愿意在数据侧多花一点心思,即便资源有限,也完全有机会用更少的数据做出更强的模型。这也是这类研究真正值得业内人士反复咀嚼的地方。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进