先锋 趋势 方法 投研 作者
ARC Prize 2024 获奖算法【Daniel Franzen 与 Jan Disselhoff】
返回节目精读

ARC Prize 2024 获奖算法【Daniel Franzen 与 Jan Disselhoff】

摘要

  • 真正拉开差距的是推理架构,而非模型规模:独立运行的 LLM 得分约 41分,搜索与外部评分则将官方成绩抬升至 53.5分。 据报道,一次 56.5分的运行因未能在截止时间前完成而失效。对投资者而言,结论很直接:针对测试时算力的精细工程优化,可以从开放、相对小型的模型中释放大量价值——「两种方法结合得非常好」。

  • 测试时训练把每道 ARC 任务的 3个示例转化为临时的、任务专属的课程。 旋转、翻转、颜色变换和示例重排扩充了稀缺数据;逐任务单独训练效果同样好,但在 Kaggle 的限制下,批量处理任务比逐个训练更快。团队当时「严重受限于数据」,但对称变换让每个示例都变成了这个一维 LLM 眼中的新样本。

  • Daniel Franzen 的深度优先搜索,让候选生成比随机采样或束搜索覆盖更广、成本更低。 它只遍历概率高于测试阈值的输出路径,阈值从约 10%降至 1.77%,只存储「恰好一条路径」,并提前剪掉不可信分支;将阈值从 10%降至 1%,测得的成绩也只从 70%升至 71%。更强的模型甚至可能比预期更省算力,因为它更快做出明确判断,也能更激进地剪枝。

  • 系统通过 16种变换视角分别审视候选答案,并把模型缺乏 2D 不变性的弱点变成了优势。 汇总对数概率、实质上是将各视角得分相乘,比直接相加原始概率更有效,因为错误答案可能从多个角度看起来都合理,却会在某个揭示问题的旋转视角下只得到 0.01%的得分。他们的标志性做法,是「利用 LLM 在 2D 任务上并不完美这一事实」。

  • 模型专门化成为核心,最终系统移除了通用语言能力。 Llama 3.2 3B 的实力大致与测试过的 8B 相当,但运行更快;最终 ARC 模型的词表被削减至约 140个 token:数字、换行和特殊标记,以及输入/输出前缀——由于这项能力已被删除,「它无法」用语言执行思维链。对于固定预算,Jan 认为更小的模型可以让运营者「生成更多、评估更多、过滤更多」。

  • 模型接触相关 ARC 概念的程度,对表现有实质影响。 论文报告称,模型在一部分留出的评估数据上达到约 72%,但如果训练时排除评估集任务,表现就会下降。陌生的计数和尺寸估计问题尤其困难。获胜团队称这一方法是「一个有点投机的解法」,并认为相较于更面向 AGI 的方法,LLM「对这项竞赛来说过于强大」。

  • 实验更支持有针对性的适配,而不是一味增加权重规模,但整个过程仍然高度依赖算力。 训练从 2至4小时的运行,延长到 2天,最终在一块 NVIDIA H100 上跑了 8天;困难的 ARC 数据集到手时只剩 4天,8块 H100 支撑了最后一天的尝试。LoRA 秩高于 128,甚至完整微调,都没有带来明确收益;分层 LoRA 架构则让预训练 ARC 模型保留了一个「安全毯」。

精读

1. 一维 LLM 直接学会了二维网格

  • Franzen 和 Disselhoff 将每种颜色表示为一个 token,把每一行网格按顺序序列化后直接输入 LLM——没有程序搜索或其他预处理,也没有符号化中间表示。一位获胜者最初的直觉是,这「看起来很疯狂」,因为模型必须在完全一维的运行方式下推断二维结构。

  • 原始语言模型几乎毫无用处:它可能无休止地输出句末 token、格式错误的行,或无法组成有效网格的数字。在官方 ARC 数据集上训练,并尝试 Re-ARC 几乎无限量的生成样本后,Llama 3.2 3B 达到约 10%-20%;多种推理技巧可以将评估数据上的成绩推向 20%-25%。

  • 他们的模型路线从 8B 扩展到 12B,随后又退回 Llama 3.2 3B,因为小模型「基本与 8B 模型一样强」,同时为更多 Kaggle 计算留出了空间。临近截止时间时,他们又切回了一款未披露名称的大模型。

  • 显式加入尺寸、坐标,甚至 2D 位置编码,几乎没有带来改善。模型只是学会了识别换行边界和正确的行长度:「它就这样正常工作了。」

2. 测试时训练把 3个示例变成局部课程

  • 整条流程包含两个训练阶段:先在公开的 ARC 衍生数据上进行长时间预训练,再在推理阶段利用每个未见任务所提供的示例进行微调。团队隐藏其中一个示例的输出,让模型根据其余示例训练并恢复该输出,随后预测真正的挑战输出。

  • 主持人提出了一个合理的质疑:「这算作弊吗?」他们的回答是:在完全看不到其他评估任务的情况下,对每道任务分别训练,效果同样好;之所以批量处理多个任务,是因为反复重新训练会消耗 Kaggle 固定的运行时间。

  • 每道任务只有约 3个示例,数据增强承担了主要工作。旋转、翻转、有效的颜色变换以及示例重排,都能在保留底层规则的同时,对缺乏不变性处理能力的文本模型制造新颖感;更激进的检查方式,例如将适合的任务压缩为黑白图,仍然太慢或未能完成。

3. 深度优先搜索找到了普通采样遗漏的答案

  • 贪心生成会反复选择概率最高的 token,随机采样则产生过多无用变体,束搜索还会为每条 beam 消耗内存。Daniel 定制的深度优先搜索则把 token 预测视为一棵树,枚举路径概率高于阈值的完整输出。

  • 实现只保存一条活跃路径,一旦某个分支不再有希望就立即放弃。在 10%的阈值下,概率质量意味着最多只有 10条符合条件的路径,因此计算量具有弹性但有上限,候选数量通常也少得多。

  • 实际阈值从 10%降到了 1.77%。理论上搜索至 1%可以返回 100条路径,但测得的成绩只从 70%升至 71%,同时在 Kaggle 上变得无法负担——这为测试时搜索展示了一条异常清晰的边际成本曲线。

  • 嘉宾不愿将这一方法直接推广到散文生成:ARC 只有 10个可能的下一答案 token,且只有一个正确答案;语言则存在许多有效路径,必须按答案汇总这些路径的概率。不过,他们仍预计路径选择对 o1 或 o3 等推理模型会更重要,因为错误的中间代码或数学步骤可能让最终结果偏离正轨。

4. 16种视角让自评分变得可靠

  • Ryan Greenblatt 等人的代码生成系统拥有一项重大优势:生成的程序可以在示例上实际运行。直接预测像素则没有可执行的校验机制,Franzen 和 Disselhoff 只能得到约 10-20个候选答案,也无法形式化保证其中外观最好的那个就是正确答案。

  • 他们的解决方案,是在问题的 16种增强视角下分别给候选答案评分,计算模型在每个视角下的概率并汇总得分。加入对数概率——等价于将概率相乘——比直接相加原始概率更能选出好答案。

  • 这一机制本质上是一个「最弱环节」检验。正确答案可能从未获得特别高的分数,但通常能在每个视角下保持合理;错误答案则可能在多个旋转视角下表现出色,却在暴露其不一致性的角度下坍缩至 0.01%。

  • 主持人发现了一个表面上的矛盾:训练阶段教模型学习旋转变体,但评分却从旋转不一致性中受益。嘉宾称这是一个权衡——生成阶段应当从各个方向获得改善,但不完美的模型仍然按从左到右、从上到下的顺序处理信息。旋转会改变证据到达的顺序,让模型注意到例如某一行在一个不可能为空的像素处结束。

5. 专门化胜过语言迁移,却加深了对概念的依赖

  • 团队移除了几乎整个词表,只保留约 140个 token,包括数字 0-9、换行符、特殊 token 以及输入/输出前缀。这节省了惊人的 RAM,也消除了提示词和语言化思维链:最终网络只能输出 ARC 表示。

  • Token 化被视为算法的一部分。复合数字 token 会让输出几何变得不稳定,因此他们移除了除单个数字、行标记、特殊 token 和前缀之外的所有内容。他们用乘法作类比:OpenAI 几乎把所有 3位数都做成了 token,因此计算两个 3位数的乘法,就需要记住大约 100万组乘法关系。

  • 论文报告称,模型在留出的评估数据切片上达到约 72%,但如果训练期间没有出现相关评估任务,表现就会下降。嘉宾将其称为「概念泄漏」:在 flood-fill 任务上训练不会直接迁移到计数任务,但接触计数和其他概念,可能帮助模型重新组合这些想法,以应对新的挑战。

6. ARC 巨大的输出空间掩盖了少数真正关键的决策

  • ARC 约 30×30的尺寸上限,是围绕人的可靠性设计的。主持人指出,这似乎也构成了 LLM 能正确处理的上限;如果尺寸达到 50×50或 60×60,参赛者可能不会再使用 LLM 直接生成。他还提到,o3 的错误率会随解题规模扩大而上升。

  • 理论上的像素空间夸大了实际搜索问题。背景通常很简单;在移动物体任务中,只要模型从正确位置开始生成物体,后续内容往往都能正确完成。

  • 在一次中间阶段的采样分析中,只要 3次选择概率第二高的 token,就能解决 80%的挑战。真正困难的是从约 900个 token 中识别出哪 3次选择最重要——「我们需要做出的决策数量……低得出奇」。

  • DFS 通过枚举所有概率足够高的路径,解决了长随机输出带来的部分问题,而不是只走一条随机轨迹。这并不意味着 100×100网格可以轻松扩展,但它解释了为什么观测到的复杂度远低于组合式输出空间所暗示的规模。

7. 固定算力偏好小模型、LoRA 与选择性遗忘

  • 在固定预算下,大模型并不一定更好:参数越多,适配所需时间越长,留给生成、评估和过滤的循环就越少。一款约 32B 的模型经过有限测试后没有带来有意义的提升,但团队也提醒,他们没有足够时间对其进行充分调优。

  • 模型规模还会与搜索产生非线性互动。更强的模型每次前向计算需要更多算力,但它分配概率时更果断,因此 DFS 可以更早剪枝;最终的大模型只「多花了一点时间」,并没有像普通采样所暗示的那样按模型规模倍增。

  • 持续适配显示出明显上限:在单个任务上,或最多 50个任务的批次上进行测试时训练都有效,但覆盖全部 400个评估任务的训练反而降低了表现。嘉宾猜测,这可能是 LoRA 容量有限或发生遗忘所致——新示例可能要求模型牺牲较早任务的专属知识,而不是无限累积知识。

  • 他们先将第一阶段 ARC 预训练 LoRA 合并进基础权重,再挂载另一个 LoRA 用于测试时训练。秩高于 128以及一次完整微调试验都没有带来实质差异;权重衰减则可以把第二个适配器拉回 ARC 预训练基础,为不受约束的更新提供了一个「安全毯」。

8. 更好的评估释放了进展,也暴露出结构化错误

  • 增强式自评分带来了最大的离散跃升之一,成绩从约 30分升至 37分。候选排序变得可信后,Daniel 的 DFS 便能以较低成本提供大量高质量备选;两者结合,使团队得以使用更大模型、更多变换,并最终取得 53.5分的官方成绩。

  • 训练从 2至4小时的实验,扩展到 2天,最终在一块 H100 上运行 8天。困难的 ARC 数据集出现时,距离截止只剩约 4天,Lambda Labs 提供了 8块 H100 用于多 GPU 训练。团队在最后一天提交,但 56.5分的模型没能及时完成。

  • 失败通常具有结构性,而不是随机发生。计数和尺寸估计任务会生成数量庞大的候选集;在一个颜色变换任务中,第二优答案采用了正确的概念变换,却朝着错误方向执行。即使是错误答案,也往往只是填错区域或放错物体——这正是团队得出「LLM 只是比我们聪明」这一结论的依据,也说明算法层面的改进为何最终败下阵来。