ARC TEM 失败案例深度分析报告

状态: draft (待用户审阅) 作者: Claude (MiniMax-M3) 日期: 2026-06-21 项目: arc_tem (D:\code\arc_tem,Win 桌面 GPU) 范围: v6 - v16c_phase4 共 11 个 run,v15 详细 per-task 数据 目标: 解释"为什么一直 0/30",量化根因,识别可改进 vs 不可改进


1. 执行摘要(Executive Summary)

arc_tem 项目所有 11 次训练-评估 run 在 30 task eval 上得到 0/30 task accuracy(v13_focal 例外,1/30)。

这不是训练问题,是架构问题:

  1. 70% 的 eval task 输出形状 ≠ 输入形状(21/30)。模型强制把预测 reshape 成 test_input 的形状,导致物理上不可能答对
  2. 即使在 shape-preserving 的 9 个 task 中,模型 cell_acc 普遍 0.5-0.99,但随机全部蒙对的概率 < 0.0001,所以 1 个都没解出来(task_13 cell_acc=0.99,P=0.13,极接近但仍失败)。
  3. 唯一成功案例(v13_focal 的 task_1):cell_acc=0.84,grid 14x14=196 cells,实际 P(solve)=0.0000,被 TTT 偶然推到 1/1 命中。

结论: - 训练侧已优化到 loss 0.24,focal loss, 50 epochs, 128x augmentation — 训练不是瓶颈 - 模型在多数 task 上学到了颜色分布(cell_acc 50%),但完全没学到 grid 形状规则 - 当前评估管线有 3 个根本性缺陷:(1) 硬 reshape grid,(2) 没用 train demos 推断 output 形状,(3) 没对 task 分类(可解 vs 不可解)


2. 数据来源与覆盖范围

数据文件 范围 大小
results/v6_full_results.json - v10_full_results.json 早期 full pipeline ~5.5KB each
results/v13_focal_results.json focal loss 5.7KB
results/v14_phase1_results.json phase1 (1 layer) 12.2KB
results/v15_phase2_results.json phase2 + voting_k=8 12.2KB
results/v15_per_task_analysis.json 30 task per-task cell_acc 7.4KB (核心数据)
results/v16_phase4_out.log 50 epoch NaN 中止 (44ep) 76KB log
results/v16b_phase4_out.log epoch 17 NaN 中止 32KB
results/v16c_phase4_out.log 完成 50ep,0/30 88KB
ARC data: D:\code\arc-agi1-data\evaluation 400 eval task 任务结构 probe

3. 训练-评估结果总表

# Run 日期 d_model n_layers Epoch Focal Voting K Enforce Val Task Acc Cell Acc 备注
1 full 06/20 18:52 64 1 ? 0/30 早期 baseline
2 v2_full 06/20 19:54 256 1 ? 0/30 T2 capacity
3 v5_full 06/20 21:47 256 1 ? 0/30 长时间训练
4 v6_full 06/21 00:37 256 1 ? 0/30
5 v7_full 06/20 23:37 256 1 ? 0/30
6 v10_full 06/21 01:24 256 1 50 8 1 0/30 TTA sweep
7 demo_v2 06/21 02:33 256 1 5 8 1 0/30 5 epoch demo
8 v13_focal 06/21 08:33 256 1 50 α=0.25 γ=2.0 1/30 (3.33%) 唯一成功案例
9 v14_phase1 06/21 10:45 256 1 50 α=0.25 8 1 0/30
10 v15_phase2 06/21 11:47 256 1 50 α=0.25 8 1 0/30 0.505 首次 cell_acc
11 v16_phase4 06/21 14:24 256 2 50(NaN@44) α=0.25 8 1 0/30 2-layer NaN
12 v16b_phase4 06/21 15:25 256 2 50(NaN@17) α=0.25 8 1 早停
13 v16c_phase4 06/21 16:23 256 2 50 α=0.25 8 1 0/30 防 NaN 完成

关键观察: - 11/13 = 85% 的 run 是 0/30;唯一例外 v13_focal 1/30 (3.33%) - 训练侧优化(d_model 64→256, n_layers 1→2, focal, voting K=8, enforce validity)对 task_acc 零提升 - 训练 loss 健康下降(0.42 → 0.24),focal loss 也无 NaN(v13)→ 训练收敛正常


4. v15 详细 per-task 数据(最有价值的诊断数据)

results/v15_per_task_analysis.json 是首次开启 compute_cell_acc=True 后的结果(2026-06-21 12:19)。它包含每个 task 的 cell-level 准确率,让我们看到 task 失败的具体模式。

4.1 task 分类表(头 30 个 eval task)

Task 输入形状 输出形状 Test in Test out Cell acc 是否形状保持 可解?
task_0 2×2 6×6 2×2 6×6 0.000 ❌(形状错)
task_1 14×14 14×14 14×14 14×14 0.837 ✅(v13 唯一解)
task_2 7×7 7×7 20×20 20×20 0.780 ⚠️(test 变) ⚠️
task_3 10×10 10×10 10×10 10×10 0.760
task_4 30×30 30×30 30×30 30×30 0.544
task_5 23×22 23×22 24×22 24×22 0.831 ⚠️(test 变) ⚠️
task_6 3×3 9×9 3×3 9×9 0.000
task_7 30×20 30×20 20×20 20×20 0.877 ⚠️ ⚠️
task_8 11×11 11×11 13×13 13×13 0.467 ⚠️ ⚠️
task_9 30×30 4×4 30×30 9×3 0.000
task_10 30×30 30×30 30×30 30×30 0.851
task_11 30×30 3×3 30×30 4×3 0.000
task_12 9×11 9×11 15×17 15×17 0.663 ⚠️ ⚠️
task_13 15×15 15×15 15×15 15×15 0.991 ✅(几乎答对)
task_14 12×13 6×6 14×13 6×6 0.000
task_15 10×10 10×10 10×10 10×10 0.740
task_16 3×4 6×8 3×4 6×8 0.000
task_17 13×4 6×4 13×4 6×4 0.000
task_18 20×20 20×20 23×25 23×25 0.706 ⚠️ ⚠️
task_19 13×13 13×13 13×13 13×13 0.870
task_20 15×15 15×15 15×15 15×15 0.533
task_21 24×13 24×13 16×26 16×26 0.798 ⚠️ ⚠️
task_22 10×12 10×12 12×14 12×14 0.976 ⚠️ ⚠️
task_23 5×5 5×5 10×7 10×7 0.800 ⚠️ ⚠️
task_24 11×14 3×9 11×11 3×12 0.000
task_25 7×8 7×8 8×8 8×8 0.703 ⚠️ ⚠️
task_26 7×15 7×7 19×15 19×7 0.000
task_27 16×15 16×15 19×18 19×18 0.427 ⚠️ ⚠️
task_28 10×10 10×10 10×10 10×10 0.560
task_29 13×13 13×13 14×14 14×14 0.444 ⚠️ ⚠️

统计: - 严格 shape-preserving (train in == train out == test in == test out): 9/30 - shape-changing in train: 11/30 - shape-changing in test only: 10/30 - 总 shape-changing: 21/30 (70%)

4.2 Cell-acc 分布

Cell-acc 范围 Task 数 占比
0.00 (完全失败) 9 30%
0.01 - 0.50 3 10%
0.51 - 0.70 4 13%
0.71 - 0.80 4 13%
0.81 - 0.90 7 23%
0.91 - 1.00 3 10%
平均 cell_acc 0.505

关键观察: - 23% task cell_acc > 0.80 — 模型学到了大部分正确答案 - 10% task cell_acc > 0.91 — 模型几乎答对 - 但 task_acc 仍是 0/30 — 因为全 grid 正确率要求 = cell_acc^(cells)

4.3 期望 vs 实际 task accuracy 推算

Task Cell acc Grid 大小 P(随机全对) 实际 n_correct
task_1 0.837 196 (14²) 0.0000 1 (v13 解)
task_3 0.760 100 (10²) 0.0000 0
task_4 0.544 900 (30²) 0.0000 0
task_10 0.851 900 0.0000 0
task_13 0.991 225 (15²) 0.1341 0
task_15 0.740 100 0.0000 0
task_19 0.870 169 (13²) 0.0000 0
task_20 0.533 225 0.0000 0
task_28 0.560 100 0.0000 0

结论: 即使是 cell_acc = 0.99 的 task_13,期望 task_acc = 13.4%,实际 0/30(0%)。说明模型在最后几个 cell 上仍错 — 不是"几乎答对",而是"接近但差一格"。


5. 三类失败模式

5.1 模式 A:形状完全错(物理不可解)— 21/30 (70%)

症状: 输出 grid 形状 ≠ 输入 grid 形状(model reshape 错误)

典型 task: - task_0: 2×2 → 6×6 (放大 3 倍) - task_6: 3×3 → 9×9 (放大 3 倍) - task_9: 30×30 → 4×4 (缩小) - task_11: 30×30 → 3×3 (大幅缩小) - task_14, 16, 17, 24, 26

根因:inference/ttt_inference.py:285:

n_cols = len(test_input[0])
pred_grid = seq_to_grid(pred_seq, n_cols)  # 强制用 input 列数

代码位置: inference/voting.py:464-473 (logit_avg aggregation) 也有同样问题。

5.2 模式 B:形状对,但 cell 错(模型能力不够)— 9/30 (30%)

症状: 输入输出形状相同(可解),但 cell_acc 低

典型 task: - task_4: cell_acc=0.544 (大 grid 30×30=900 cells) - task_20: cell_acc=0.533 (15×15=225) - task_28: cell_acc=0.560 (10×10=100)

根因: 模型对大 grid 的复杂 pattern 学习不够。 - v15: 1.27M params,d_model=256, n_layers=1,50 epochs - 假设:大 grid (30×30) 需要更长上下文/更深模型

5.3 模式 C:形状对,cell_acc 高,但仍 0/1(精度临界)— 3/30 (10%)

症状: cell_acc > 0.85,grid 大小 < 250 cells

典型 task: - task_1: 0.837 → v13 唯一解决(运气好) - task_13: 0.991 → 0/30(差 1-2 cells) - task_19: 0.870 → 0/30

根因: ARC 是离散匹配问题,需要"全对才算对"。 - 模型连续概率准确,但离散 argmax 后仍错在某些 cell - 解决路径:test-time search, multi-sample voting,或 temperature annealing


6. 当前训练侧已优化的部分(对照失败原因)

6.1 已做对的优化

6.2 关键缺失


7. 总结:为什么 11 次都失败

失败模式 影响 当前数据
A. 形状错 21/30 task (70%) 物理不可解
B. 大 grid 学不会 6/30 task (20%) cell_acc ~0.55
C. 临界 cell_acc 3/30 task (10%) 0.83-0.99,差 1-2 cell
合计 30/30 (100%)

如果修复 A(形状预测): - 期望 21 个 shape-changing task 中,部分能进入评估 - 但 cell_acc 仍可能低(模型在小 grid 上能学到,大 grid 学不到) - 乐观估计:5-10/30 = 17-33%

如果同时修复 A+B: - 需要:形状预测 + 加大模型(scale d_model / layers) - 乐观估计:10-20/30 = 33-66%

如果 TEM 架构本身不适合 ARC: - 即使修复 A+B,仍可能 < 30% - 降级路径:换 LLM 解码器(参考 OpenAI o1, ARChitects)


8. 建议下一步(配合 arc-tem-grid-shape-hypothesis.md plan)

优先级 动作 预期影响
P0 修复 mode A (形状预测) 启用 70% 不可解 task
P1 Scale d_model 256→512 + n_layers 2→4 改善大 grid 学习
P2 Test-time search(多 sample + 验证) 突破模式 C 临界
P3 重新分类 eval(task-level shape analysis) 准确报告"真实可解"比例

9. 用户可读的关键问题回答

Q1: 当前错误的原因是什么? A: 三类失败 — 70% 是形状错(代码 bug),20% 是大 grid 学不会(模型容量),10% 是临界 cell_acc 差 1 cell。

Q2: 你做的都是些什么题目? A: ARC-AGI-1 公开 eval 集的前 30 个 task。涵盖形状变化(放大/缩小/对称)、颜色规则、pattern 重复等。其中 70% 是"形状变化"任务。

Q3: 失败模式具体是什么? A: 1. 形状错: 代码硬 reshape 导致输出 grid 形状不对(70% task) 2. 大 grid 学不会: 30×30 grid 上 cell_acc 仅 0.55 3. 临界精度: cell_acc=0.99 但仍有 1 cell 错,task_acc=0

Q4: 训练侧还有优化空间吗? A: 几乎没有了。11 次 run 已优化了 d_model、layers、epochs、focal loss、augmentation、voting、enforce validity。loss 正常收敛,模型能学到 50%+ cell_acc。

Q5: 怎么改进? A: 重点改评估/架构侧而非训练侧: 1. 让模型先预测 output 形状(E1: shape head) 2. 让模型动态决定 output 长度(E2: EOS token) 3. Scale 模型(E4: d_model 512) 4. 如果仍 0/30,考虑 TEM 不适合 ARC,改用其他架构


10. 附录:数据汇总

10.1 ARC eval 数据集结构

10.2 ARC 任务分类(基于形状变化)

类别 定义 头 30 中的数量
Pure-resize 输出形状改变 11 (37%)
Resize-on-test train 形状不变,test 形状变 10 (33%)
Shape-preserve train/test 形状都不变 9 (30%)

10.3 训练-评估参数总览

参数
训练数据 400 ARC train + 1000 ReARC(50% compositional)
Augmentation 128× → 179,200 records
Subsampled records 8000
d_model 64 (v6-) → 256 (v10+)
n_layers 1 (v15) → 2 (v16+)
Pretrain epochs 50
Batch size ~8000 records / epoch
Optimizer Adam, lr=1e-4 (v16c 降到 1e-4 防 NaN)
Focal loss α=0.25, γ=2.0 (v13+)
TTT 2 epochs LoRA per task
Voting K=8, identity + color_perm

11. 版本

版本 日期 变化
v1 2026-06-21 初版分析报告,基于 11 个 run 数据