1. 视觉推理的困境与几何AI的探索
几何问题一直是AI领域的硬骨头。去年我在研究大模型解数学题时发现一个有趣现象:同样的几何题,模型有时能给出完美解答,有时却连基本图形关系都搞错。这种不稳定性并非源于模型"看不懂图",而是缺乏可操作的中间结构。
传统几何解题中,人类会通过辅助线、标记角度等中间步骤构建思维脚手架。比如证明三角形全等时,我们会先找对应边角关系,再逐步推导。但大模型缺乏这种结构化的工作记忆,导致推理过程容易"漂移"——前一秒刚画的辅助线,下一步就忘了用途。
这种现象在认知科学中称为"空间工作记忆不稳定"。就像你试图心算三位数乘法时,中间结果不断遗忘,不得不反复回溯。对AI而言,几何图形中的点线面关系就是需要暂存的中间状态。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. CodePlot-CoT的技术实现路径
香港大学团队提出的CodePlot-CoT方案颇具工程智慧。他们不强迫模型在隐空间维持图形记忆,而是将中间状态外化——让模型用matplotlib代码实时生成图像:
- 文本解析阶段:模型理解题目描述的几何关系
- 代码生成阶段:输出如
ax.plot([A[0],B[0]], [A[1],B[1]])的绘图指令 - 图像渲染阶段:执行代码生成带辅助线的图形
- 多模态推理阶段:结合新图像继续解题
这种"思考-画图-再思考"的循环,相当于给模型配备了草稿纸。在Math-VR数据集(17.8万道题)上测试显示,这种方法使视觉一致性提升37%,推理准确率提高22%。
关键突破:将易失的视觉记忆转化为可重复执行的代码表示。就像建筑师用CAD图纸代替脑海中的想象,确保设计意图精确传递。
3. 几何推理的本质矛盾
但这种方法暴露了更深层的问题。当模型写出ax.plot([C[0],D[0]], [C[1],D[1]])时,它只是在坐标系中连接两点,而非进行几何构造。二者的本质差异在于:
| 特征 | 坐标绘图 | 几何构造 |
|---|---|---|
| 操作对象 | 像素坐标(x,y) | 抽象几何元素 |
| 关系判定依据 | 视觉测量 | 公理推导 |
| 有效性范围 | 特定坐标实例 | 所有符合条件的情况 |
例如证明"三角形内角和180度"时:
- 坐标验证法:随机画100个三角形测量(CodePlot-CoT思路)
- 几何证明法:通过平行线公理推导(人类数学思维)
前者是经验归纳,后者是演绎推理。这就是为什么CodePlot-CoT在简单题表现良好,但遇到需要创造性构造的奥数题就束手无策。
4. AlphaGeometry的对比启示
Google DeepMind的AlphaGeometry采用了完全不同的路径:
- 使用符号引擎表示几何对象及其关系
- 基于公理系统进行自动推导
- 仅在必要时调用神经模型进行构造建议
其核心优势在于维护了严格的数学语义。当系统声明"作AB的垂直平分线"时,它不是在画近似垂直的线,而是在创建满足∀P∈l, PA=PB的几何对象。
这种差异在解题步骤中尤为明显:
CodePlot-CoT的输出
python复制# 画看起来像角平分线的线
angle_bisector = ax.plot([A[0],D[0]], [A[1],D[1]])
AlphaGeometry的输出
prolog复制construct_bisector(A,B,C,D) :-
angle(A,B,C,Theta),
Theta2 is Theta/2,
rotate_vector(B,A,Theta2,D).
后者保证了无论图形如何变形,D始终是∠ABC的平分线上的点。
5. 缺失的中间层:几何对象语言
两种方案之间缺失的关键层,是既能保持数学严谨性,又便于神经模型操作的表示方式。我认为理想的几何AI应该具备:
- 对象化表示:将点、线、圆等作为一等公民
- 约束保持:自动维护"垂直""相切"等关系
- 构造历史:记录每个对象是如何生成的
例如在证明弦切角定理时,模型应该这样工作:
geometric复制Circle O = Circle(center=O, radius=r)
Point A = PointOnCircle(O)
Point B = PointOnCircle(O)
Line l = Tangent(O, at=A)
Point C = PointOn(l)
Angle θ = Angle(B,A,C)
// 自动保持属性:∠BAC = 1/2 arc(AB)
这种表示既避免了坐标系的局限性,又比纯符号系统更易于神经模型处理。我在开发的Dino-GSP项目就尝试实现这种范式:
- 使用几何原语(如
PerpLine、AngleBisector)替代具体坐标 - 每个操作都扩展可证明的约束集
- 允许基于视觉的启发式搜索与符号验证结合
6. 实践中的挑战与解决方案
实现这种几何对象语言面临三大技术挑战:
挑战1:神经-符号接口设计
- 方案:限定输出为预定义的几何构造指令集
- 示例:将"作高"映射到
FootOfPerpendicular(P, LineAB)
挑战2:动态约束维护
- 方案:集成几何约束求解器(如GCLC)
- 案例:当用户拖动三角形顶点时,自动保持中线关系
挑战3:模糊视觉到精确构造的转换
- 方案:两阶段处理(视觉估计+符号验证)
- 实现:先用CNN识别疑似平行线,再用定理证明器验证
一个成功的教学应用案例是GeoGebra的AI组件:
- 学生手绘粗略图形
- 系统识别几何特征并转化为精确构造
- 基于构造历史生成证明大纲
7. 未来发展方向
几何AI的进步需要跨学科协作:
-
认知科学:研究人类几何思维中的中间表示
- 发现:专家解题时会构建"关系图"而非"视觉图"
-
程序合成:开发几何专用的DSL
- 趋势:结合自然语言与形式化语法(如LaTeX+GeoCode)
-
教育科技:开发增量式学习系统
- 创新:允许从具体实例逐步过渡到抽象证明
最近MIT提出的"L几何"语言展示了有趣的可能:用机器学习预测构造步骤,用符号引擎确保正确性。这种混合方法在IMO测试题中达到65%的解决率,远超纯神经或纯符号方法。
8. 给开发者的实践建议
对于想尝试几何AI的团队,我的经验是:
- 从具体问题切入:先专注某一类几何题(如圆幂定理)
- 设计中间表示:定义20-30个基本构造指令
- 构建验证环境:集成图形渲染与定理证明器
- 收集双模态数据:同时记录视觉标注和形式化证明
工具链推荐:
- 可视化:Manim/Matplotlib
- 符号引擎:GeoLogic/GCLC
- 神经模型:微调CodeLlama+CLIP
关键是要避免"坐标陷阱"——不要将几何问题降维成数值计算。记住:好的几何AI应该像数学家一样思考,而不是像测绘员一样测量。
