关于LLM(大型语言模型)是否能够推理的问题,在很多方面来说并不是关键问题。更有趣的问题是它们是否仅限于记忆/插值检索,或者它们是否能够适应超出已知的新奇事物。(它们不能,至少在你开始进行主动推断或在搜索循环中使用它们之前是这样。)有两种不同的你可以称之为“推理”的东西,除了ARC-AGI之外没有任何基准试图区分这两者。首先,是通过记忆和检索程序模板来解决已知任务,比如“解ax+b=c”——你可能在学校时记住了寻找x的“算法”。LLM*可以*做到这一点!事实上,这是它们*主要*的工作。然而,它们在这方面表现得非常糟糕,因为它们记住的程序是拟合训练数据的向量函数,通过插值进行泛化。这对于表示任何种类的离散符号程序是一种非常不理想的方法。这就是为什么LLM单独仍然难以进行数字加法的原因——它们需要接受数百万例数字加法的训练,但在新的数字上它们的准确率仅为约70%。这种“推理”方式与纯粹记忆一组问题的答案(例如3x+5=2,2x+3=6,等等)没有根本区别——只是同类问题的高级版本。它仍然是记忆和检索——应用于模板而不是逐点答案。另一种定义推理的方法是,能够*综合*新程序(从现有部分)以解决你从未见过的任务。例如,在从未学过如何解ax+b=c的情况下,仅仅知道加法、减法、乘法和除法就能解决问题。这就是你如何适应新奇事物的方式。LLM*不能*做到这一点,至少它们单独不能。然而,它们可以被纳入能够进行这种推理的程序搜索过程中。第二种定义是迄今为止更有价值的推理形式。这就像是班级后排那些不注意但通过即兴发挥考试得高分的聪明孩子,和那些花时间做作业但成绩中等、实际上完全不能偏离所记东西的孩子之间的区别。你会雇用哪一个?LLM不能做到这一点,因为它们非常局限于记忆程序的检索。它们是静态程序存储。然而,它们可以显示出一定程度的适应性,因为不仅存储的程序可以通过插值进行泛化,*程序存储本身*也是插值的:你可以在程序之间进行插值,或者在连续的程序空间中“移动”。但这只产生局部泛化,而不是任何真正理解新情况的能力。这就是为什么LLM需要接受海量数据的训练:使它们有用的唯一方法是让它们接触到*密集采样*的绝对所有已知和所有可能做的事情。人类不是这样工作的——即使是非常愚蠢的人也远比LLM聪明得多,尽管他们的知识少得多。