ARC 是为了测试一般求解器中的分布推理和常识而开发的基准。它被专门设计为:
- 大多数人都可以轻松解决
- 不适合任何类型的强力求解器(例如尝试解决方案的每种排列)
- 无法通过死记硬背来解决
ARC 的设计者以创造性的方式实现了上述目标:通过开发包含视觉谜题的问题,参与者必须找到一种算法来解释在多个演示中看到的对称性。然后他们必须将该算法应用于最终输入。这听起来很复杂,但实际上却很直观——大多数孩子都能完成 ARC 题。
法学硕士被定位为通用求解器,因此最近我们一直在尝试应对这一挑战。然而,为了使 ARC 能够通过纯语言模型来解决,您必须删除问题的视觉“线索”。
更具体地说,我们以 ARC GitHub 上的测试问题为例。人类看到的是这样的:
虽然完全相同的问题被输入到这样的语言模型中:
{“火车”:[{“输入”:[[0, 0, 0, 0, 5, 0, 0, 0, 0], [0, 0, 0, 0, 5, 0, 0, 0, 0 ], [0, 0, 0, 4, 5, 0, 0, 0, 0], [0, 0, 0, 4, 5, 4, 4, 0, 0], [0, 0, 3, 3, 5, 0, 0, 0, 0], [0, 0, 0, 3, 5, 0, 0, 0, 0], [0, 0, 0, 3, 5, 3, 3, 3, 0], [0, 0, 0, 3, 5, 0, 0, 0, 0], [0, 0, 0, 0, 5, 0, 0, 0, 0], [0, 0, 0, 0, 5, 0, 0, 0, 0]], "输出": [[ 0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 4], [0, 0, 4, 4], [0, 0, 3, 3], [0, 0, 0, 3], [0, 3, 3, 3], [0, 0, 0, 3], [0, 0, 0, 0], [0, 0, 0, 0]]}, {"输入": [[0, 0, 0, 0, 5, 0, 0, 0, 0], [0, 0, 0, 2, 5, 0, 0, 0, 0], [0, 0, 0, 2, 5, 2, 6, 0, 0], [0, 0, 0, 2, 5, 0, 0, 0, 0], [0, 0, 0, 2, 5, 2, 2, 2, 0], [0, 0, 6, 6, 5, 6, 0, 0, 0], [0, 0, 0, 2, 5, 0, 0, 0, 0], [0, 2, 2, 0, 5, 2, 0, 0, 0], [0, 0, 0, 2, 5, 0, 0, 0, 0], [0, 0, 0, 0, 5, 0, 0, 0, 0]], "输出": [[0, 0, 0, 0], [0, 0, 0, 2], [0, 0, 6, 2], [0, 0, 0, 2], [0, 2, 2, 2], [0, 0, 6, 6], [0, 0, 0, 2], [0, 2, 2, 2], [0, 0, 0, 2], [0, 0, 0, 0]]}, {"输入": [[0, 0, 0, 0, 5, 0, 0, 0, 0], [0, 0, 0, 0, 5, 7, 0, 0, 0], [0, 0, 0, 8, 5, 0, 0, 0, 0], [0, 0, 0, 8, 5, 0, 0, 0, 0], [0, 7, 8, 8, 5, 0, 0, 0, 0], [0, 0, 0, 0, 5, 8, 8, 0, 0], [0, 0, 0, 8, 5, 0, 0, 0, 0], [0, 0, 0, 8, 5, 0, 0, 0, 0], [0, 0, 0, 0, 5, 8, 7, 0, 0], [0, 0, 0, 0, 5, 0, 0, 0, 0]], "输出": [[0, 0, 0, 0], [0, 0, 0, 7], [0, 0, 0, 8], [0, 0, 0, 8], [0, 7, 8, 8], [0, 0, 8, 8], [0, 0, 0, 8], [0, 0, 0, 8], [0, 0, 7, 8], [0, 0, 0, 0]]}], "测试": [{“输入”:[[0, 0, 0, 0, 5, 0, 0, 0, 0], [0, 0, 0, 1, 5, 0, 0, 0, 0], [0, 0, 0, 1, 5, 1, 0, 0, 0], [0, 1, 1, 1, 5, 1, 1, 1, 6], [0, 0, 0, 6, 5, 6, 6, 0, 0], [0, 0, 0, 0, 5, 1, 1, 1, 0], [0, 0, 0, 1, 5, 0, 0, 0, 0], [0, 0, 0, 1, 5, 1, 6, 0, 0], [0, 0, 0, 0, 5, 6, 0, 0, 0], [0, 0, 0, 0, 5, 0, 0, 0, 0]], "输出":
(注意:周围可能有一些提示脚手架)
这使得问题变得更加困难。虽然遇到上述文本问题的聪明的程序员确实可能会在足够的时间内解决它,但我认为大多数人都无法解决它。如果您想从命令行界面解决此类问题,可以执行以下一组示例步骤:
- 识别格式为JSON并解析
- 请注意,输入和输出都是网格,并且输入和输出的网格大小存在某种模式。
- 使用一些漂亮的打印库打印网格
- 认识到数字存在某种模式
- 开发一种重现观察到的模式的算法
- 将算法写成代码
- 验证该算法适用于所有提供的示例
- 将算法应用于最终输入,提交结果
(5) 是真正棘手的一点。当您用彩色框显示网格时,它会变得容易得多,但我不会低估仅使用文本找到对称性的难度。凡人,包括我自己,不需要申请。
o-3
今天,OpenAI 发布了即将推出的推理模型“o-3”的一些细节。除了非常令人印象深刻的数学和编码结果(这比 ARC 重要得多,但我无法对此发表评论,因为它早已超出了我在这两个领域的能力),据透露,o-3 达到了新的状态ARC 测试集上的艺术分数。
如果它通过操作 UI 来做到这一点,那就真的很酷,但它实际完成的方式对我来说更令人印象深刻:o-3 通过此评估的文本版本获得了这些分数。 o-3 这样做的方法是集思广益解决方案,然后用自己的想法测试这些解决方案。它会一遍又一遍地这样做,直到找到可行的解决方案。有时它也会思考“放弃”和“猜测”以及其他不可思议的人类事物。
我想在这里指出一些非常重要的事情:
- 使用强化学习学习推理的规模不断扩大
- 推理模型在 CoT 中构建和验证算法方面变得越来越好
- 通过对极少数示例的训练,有明显的证据表明域内泛化
我想指出的是,我目前没有以任何方式参与构建或部署 o 系列模型。我只是对我的同事所取得的成就感到敬畏!