01 · PAPER IN ONE PAGEGuo et al. · arXiv:2608.30457v1 · 2026-08-31

先把几何推理切成有语义的事件,再问:改掉哪个事件会改变结局?

76.04九项 benchmark 无权平均准确率
+3.43 pp相对 trajectory-level GRPO
+15.16 ppGeoLaux-mini 上的最大增益
8.7 / 10博客作者个人兴趣程度

Code-CoT 把图像事实、构造和推导变成可定位的 event。CE-GRPO 从 event 前的共享 prefix 重采完整 future,用最终结果的差异给这个分叉点及其后果分配 credit。

来源:Abstract、Sections 1、4-601 / 17
02 · READING PRIMERone reward, many decisions

标准 GRPO 知道哪条完整回答更好,却不知道是哪一步让结果改变

QUESTION

读图、绑定对象、选定理、加辅助线、计算。

→
RESPONSE A

一连串 token 与隐含决策,最终答对。

→
TERMINAL REWARD

整个回答拿到同一个 group-relative advantage。

当第 2 步判断错了,后面 20 步只是沿着错误前提继续推。统一 credit 会把“错误来源”和“错误后果”混在一起。
来源:Introduction、Equation 3
03 · MOTIVATIONrepresentation gap + credit gap

要定位 credit,推理轨迹里先得有能被稳定寻址的语义单元

Representation gap

自由文本把对象绑定、角度判断、辅助构造等决定埋在句子里。token 边界不等于几何决策边界。

Credit gap

训练只看到最终正确与否,同一 advantage 覆盖整条 response,无法比较“同一前缀后的不同结构决定”。

credit-addressable reasoning = inference event boundary = training branch boundary
来源:Section 1;术语为作者提出
04 · CONTROLLED PRE-STUDYdiagram and code are complementary

代码不能代替图像;图像与外部生成代码一起输入时,六个模型都更好

Diagram only, I

模型直接读图。六个模型的平均准确率范围从 45.5 到 92.3。

Image + external code, I+C

六个模型全部提升,绝对增益为 0.7 到 18.4 个百分点。

Self-generated code only

三个开源模型比 external-code-only 低 11.7 到 16.6 个百分点,说明可靠生成代码本身就是瓶颈。

所以 Code-CoT 保留原图,让同一个模型自己生成代码,并用 SFT 明确教会这种协议。只写一个 prompt 的平均分反而从 67.95 降到 49.26。

来源:Table 1、Figure 2、Section 3
05 · REPRESENTATIONone response, six addressable regions

Code-CoT 把一次回答写成固定协议,而不是让模型自由发挥格式

<perception>行号化、可执行的 Matplotlib 图形代码
PLAN:一行 solution route
<think>一次完整 reasoning event
<action>reference / auxiliary / coordinate
<think>使用动作结果继续推导
<answer>恰好一个非空答案块
候选池只包含完整的 think/action block。perception、plan、answer 和无 tag 文本都不会被选为 branch point。
来源:Section 4.2、Appendix A.1
06 · EVENT SEMANTICSwhat each event changes

Event 类型决定它对当前几何状态做什么,也决定 checker 检查什么

Event作用主要 validity condition
think根据当前图、代码和前序事件推导有完整起止 tag;不直接作为 action-validity rate 的分子或分母
reference第一次使用视觉事实前,取回 perception 代码行行号存在、内容逐行匹配、最多 8 行
auxiliary添加连线、延长线、中点、圆或变量对象已存在;新对象有具体可执行代码;操作类型受支持
coordinate建立坐标系并给对象赋坐标调用 set_frame;没有省略号;坐标是具体值

结构有效的 response 至少有两个 action,因此 action-validity rate 的分母不会是 0。

来源:Appendix A.1、Table 8
07 · DATA CONSTRUCTIONsynthetic traces, programmatic filtering

18,302 条 SFT trace 不是人工逐步标注,而是两台强模型合成后过 checker

8 DATASETS

去除与评测集在 question 和 image 层面的重叠。

→
GEMINI 3.1 PRO

把图转成行号化 Matplotlib perception code。

→
DEEPSEEK-V4-PRO

结合问题和 code 生成 plan、events 与 answer;reference answer 只做静默一致性检查。

→
FILTER

结构、执行、grounding、action validity、最终答案全部通过才保留。

18,302SFT traces
11,450去重后的 RL 原始问题
3,270从初始 SFT policy 固定采集的 shared prefixes
来源:Section 4.3、Appendix A.2、Table 9
08 · REWARDno learned reward model

Reward 同时看最终答案、action 有效率和行为惩罚;协议结构坏了直接记 -1

R = -1, if structurally invalid
R = clip(correct + 0.3 × valid_actions / all_actions − penalties, -1, 1.3)

Correctness

选择题 exact option match;数值题允许 1% relative tolerance。

Action validity

reference、auxiliary、coordinate 分别由确定性规则检查。

Penalties

duplicated actions、repetitive generation 与 answer leakage。

最高 1.3:答案正确、所有 action 有效、没有触发行为惩罚。

来源:Equation 2、Appendix A.3
09 · CANDIDATE SELECTIONstructure decides where; entropy prioritizes

Selector 不提前断言哪个 event 关键,只挑两个值得试着分叉的位置

Think candidate

默认第一个完整 think。只有另一个 think 的 type-normalized entropy 高出 1 个标准差以上,才替换。

Action candidate

在所有 action 中选 type-normalized entropy 最高者。15% 概率把一个候选换成随机 event,保留探索覆盖。

训练只使用 selector 返回的第一个 candidate;离线验证才同时评估两个。只有从该 prefix 采样出的 sibling futures 得到不同 reward,它才在操作上被称为 critical event。
来源:Equation 4、Appendix A.4
10 · CE-GRPObranch at s_c, score complete futures

局部 credit 不是局部打分:它从局部位置分叉,仍用完整 future 的终局 reward

固定 prefix zc

保留 image、question,以及 candidate event 开始前的全部 response。prefix 作为 assistant prefill,只做条件,不进入 loss。

↗
→
↘
continuation 1:重写 event 并完成答案,R = 1.3
continuation 2:答案错误但动作有效,R = 0.3
continuation 3:tag 或代码无效,R = -1

G=4 个 future 共享同一状态。它们的标准化 reward 只更新重新生成的 event 与 suffix。reward 全相同则方差为 0,本组不更新。

来源:Equations 5-7、Appendix A.3-A.5
11 · END-TO-END PIPELINEredrawn from Figure 3
Code-CoT 与 CE-GRPO 五步训练流程
根据原论文 Figure 3、Sections 4.1-4.4 重绘
12 · CONCRETE CASEwhere one wrong structural assumption changes everything
CE-GRPO 在等腰三角形问题上的正确和错误分支
根据原论文 Figure 5、Appendix C.1 重绘:错误分支 AD=12;正确分支 AD=3√17
13 · RELATED WORKrepresentation and optimization must share the same unit

现有工作通常只解决“结构化表示”或“细粒度 credit”中的一边

路线推理单元credit / supervision本文声称的差异
PAL / ToRA程序或 tool call主要优化完整解题行为Code-CoT 的 event 同时成为分支和 credit 单元。
AlphaGeometry / GDP / GeoTikzBridge形式语言或解析结果常见为外部或两阶段表示CE-GRPO 在单次 response 内保留图像、生成代码并继续推理。
CodePlot-CoT / MathCanvas代码生成图像或视觉 action用于增强中间推理本文额外把 typed event 接到 RL grouping state。
VinePPO / SPO / high-entropy tokenstate、segment 或 token细粒度 advantage本文先用几何语义结构定边界,再用 type-normalized entropy 排预算。
GPO / SRPO / CFPO / GRPO-MAcritical step、reset 或 branch反事实 future / thought advantageCE-GRPO 不需要 process label、critic 或 task-specific reward;边界由 Code-CoT tag 确定。
来源:Section 2、Appendix B.2;差异为作者定位
14 · EVALUATION CONTRACTnine fixed test sets, heterogeneous judges

九项 benchmark 用各自固定 test set;headline 是九项 accuracy 的无权平均

测试规模

MathVerse 3,940;VisOnlyQA 485/295;GPS 216;Geometry3K 589;PGPS9K 1,000;GeoQA 754;GeoLaux-mini 330;MM-Math 996。

答案 judge

Gemini-3.1-Pro-Preview 与 Gemini-2.5-Pro 独立判断 prediction 是否等价于 reference;分歧时重复,直到一致。

严格成功

Code-CoT response 必须恰好有一个非空 <answer>;未闭合或格式无效直接算错。主结果使用 greedy decoding。

论文没有报告双 judge 的初始一致率、重复次数、人工 adjudication,也没有给主结果误差条。
来源:Appendix B.1、Table 11、Table 13
15 · MAIN RESULTSthe average hides task-specific reversals
CE-GRPO 与三类基线在九项 benchmark 上的准确率
根据原论文 Table 2 重绘;CE-GRPO - Trajectory GRPO 由表中数值复算
16 · ABLATIONS AND DIAGNOSTICSwhat supports the mechanism

结构找到“哪里分叉”,entropy 让同样预算更有效;但证据主要是离线统计与最佳 checkpoint

Random prefix
72.48
Entropy only
72.83
Structure only
74.26
Structure + entropy
76.04
0.222 → 0.287随机到结构+entropy 的 Crit.@2
85k → 75k结构到组合 selector 的 tokens / critical event
+3.77 pp/eventCE 相对 trajectory GRPO 的 margin slope
来源:Table 5、Table 14、Figure 4;selector ablation 取各 variant 最佳 validation checkpoint
17 · TAKEAWAYSpromising mechanism, incomplete reproducibility

最值得带走的是“表示与 credit 共用同一种边界”;最需要补的是可复现性和独立评测

证据支持到这里

  • CE-GRPO 平均 76.04,比 trajectory GRPO 高 3.43 pp。
  • GeoLaux-mini、MM-Math 这类长依赖任务增益更大。
  • code fidelity 从 55.21 提升到 80.43,render success 到 99%。
  • 推理仍是一条单次 response,没有 test-time branching。

目前不能确认

  • 官方仓库只有 README,没有代码、数据、checker 或 checkpoint。
  • 主结果没有 run-to-run 方差;训练硬件与 rollout 数并非全线一致。
  • SFT trace 与 code fidelity judge 都依赖强闭源模型。
  • 只在几何任务验证,能否迁移到一般多模态或 coding reasoning 尚未证明。
博客作者兴趣度 8.7 / 10。它给 credit assignment 提供了一个干净的工程接口,但公开仓库尚不足以让第三方复现关键结论。
来源:Sections 5-7、Appendices A-C、官方 GitHub revision a6b03dc