We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode Francois Chollet - ARC reflections - NeurIPS 2024

Francois Chollet - ARC reflections - NeurIPS 2024

2025/1/9
logo of podcast Machine Learning Street Talk (MLST)

Machine Learning Street Talk (MLST)

AI Deep Dive AI Insights AI Chapters Transcript
People
F
François Chollet
主持人
专注于电动车和能源领域的播客主持人和内容创作者。
Topics
François Chollet: 本次ARC竞赛结果表明,单纯依靠扩大模型规模和数据量无法实现AGI,需要结合系统2推理能力,例如程序合成和测试时训练等方法。他认为人类认知是直觉和推理的混合,深度学习模型需要用符号元素增强,而非完全替代。他详细阐述了两种推理方式:一种是记忆和应用,另一种是面对新事物时重新组合认知构件。他认为深度学习模型的关键在于能否适应新事物,并预测未来编程将广泛采用从输入输出对编程的方式。他还展望了未来需要一种全新的架构来实现终身分布式学习,AI实例并行解决问题,并从中抽象出新的构建块。他分析了ARC竞赛中两种主要方法:深度学习引导的程序合成和测试时训练,并比较了这两种方法的优缺点。他认为测试时训练虽然提高了泛化能力,但其监督并非完全由人类完成,仍然属于挑战范围之内。他还探讨了人类如何适应新事物,认为人类可能并非通过梯度下降来适应新事物,而更接近于函数组合。他认为可以通过改进架构来克服Transformer的局限性,但自主适应新事物需要一个完全自主的架构搜索或生成机制。他还分析了2020年和2024年ARC竞赛的结果,指出基准测试存在缺陷,部分测试集容易被蛮力破解,并解释了ARC2的开发目标,以及如何改进评估方法以避免信息泄露。他深入探讨了程序归纳和基于LLM的转导方法,指出两者解决的是不同的任务集,感知型任务更适合转导方法,而算法型任务更适合程序归纳方法。他还建议将归纳和转导方法结合,先尝试归纳,如果失败再使用转导。他认为使用相同的模型解决不同类型的ARC任务,可以学习到更好的表示,并起到正则化的作用。他还介绍了Clement Bonnet提出的学习程序潜在空间的方法,并在测试时进行梯度下降搜索,并建议将潜在程序解码回符号形式,进行局部离散搜索。他认为深度学习引导的程序合成方法更有效,并建议将程序视为算子图,而非简单的标记序列。他还指出人类解决ARC难题的方式是先建立一个模型,再用这个模型来约束搜索空间,从而减少搜索的必要性。他还探讨了大型语言模型在程序合成中的作用,认为大型语言模型可以用来指导搜索过程,而不是仅仅生成代码。他分析了测试时计算量与性能之间的关系,指出两者存在对数关系,比较不同系统时需要考虑计算预算。他还探讨了人类在解决复杂问题方面的效率,认为未来的AGI也需要达到同样的能效水平。他还讨论了编程语言的选择,认为无论使用何种编程语言,都应该能够从数据中学习函数,并将其转化为可重用的构建块。他还阐述了其对人类认知和意识的理解,认为人类的认知是模糊模式识别的迭代过程,而意识是保证这一过程自洽性的机制。他还认为所有系统2处理都涉及意识,因为显式的逐步推理需要意识,而无意识的认知过程缺乏自洽性。最后,他还谈到了他未来的研究方向,将专注于程序合成,特别是规划引导的程序合成,并认为需要不断开发新的基准测试来推动AGI的发展。 主持人: 引导话题,提出问题,并对Chollet的观点进行总结和补充。

Deep Dive

Key Insights

What was the accuracy improvement in the ARC-AGI Prize competition in 2024?

The accuracy in the ARC-AGI Prize competition in 2024 rose from 33% to 55.5% on a private evaluation set.

What are the two main approaches that succeeded in the ARC-AGI Prize competition?

The two main successful approaches were deep learning-guided program synthesis and test-time training, where models directly predict solutions based on task descriptions.

Why is test-time training considered a breakthrough in generalization power?

Test-time training allows models to fine-tune on demonstration pairs at inference time, unlocking higher generalization levels and enabling accuracy improvements from below 10% to over 55%.

What is the significance of the logarithmic relationship between compute and accuracy in AI benchmarks?

The logarithmic relationship indicates that while more compute can improve performance, better ideas provide significantly more leverage, as seen in solutions achieving 55% accuracy with $10 of compute versus $10,000.

What are the key differences between induction and transduction in ARC tasks?

Induction involves writing programs to map input to output grids, while transduction directly predicts output grids. Induction is formally verifiable, whereas transduction relies on guessing, making induction more reliable for generalization.

What is the role of consciousness in system 2 reasoning according to François Chollet?

Consciousness acts as a self-consistency mechanism in system 2 reasoning, ensuring that iterated pattern recognition remains consistent with past iterations, preventing divergence and hallucination.

What is François Chollet's view on the future of programming with AGI?

Chollet envisions a future where programming is democratized, and users can describe what they want to automate in natural language, with the computer generating the necessary programs iteratively through collaboration.

What is the main flaw in the ARC benchmark, and how is ARC-2 addressing it?

The ARC benchmark is flawed due to task redundancy and overfitting. ARC-2 addresses this by increasing task diversity, introducing semi-private test sets, and ensuring difficulty calibration across evaluation sets.

What is the role of deep learning-guided program synthesis in François Chollet's approach to AGI?

Deep learning-guided program synthesis combines intuition and pattern recognition with discrete reasoning, allowing models to iteratively construct symbolic programs through guided search, which Chollet believes is closer to how humans reason.

How does François Chollet define reasoning in the context of AI?

Chollet defines reasoning in two ways: applying memorized patterns (e.g., algorithms) and recomposing cognitive building blocks to solve novel problems. The latter, which involves adapting to novelty, is more critical for AI advancement.

Shownotes Transcript

我一直都不是纯粹的符号主义者。如果你回顾我最早的著作,是的,我们需要程序合成,我说的是我们需要深度学习引导的程序合成。我们需要将直觉和模式识别与分步推理和搜索结合到单个数据结构中。在过去的八年左右的时间里,我反复说过,

人类认知实际上是直觉和推理的混合体,只依靠其中一种是无法取得很大进展的。你需要向量空间、深度学习模型通常提供的连续抽象,以及图和离散搜索提供的更离散的符号抽象。那么,为什么你的批评者认为你是一个符号主义者,而你显然不是呢?

好吧,我不确定。我从事深度学习已经很久了,基本上是从2013年开始的。我从大约2014年开始大力宣传深度学习。那时这个领域还很小。特别是有了Keras,我认为我在普及深度学习、使其尽可能多的人都能使用方面做了不少工作。

我一直都是深度学习的支持者,对吧?当我开始思考深度学习的局限性时,我并没有考虑用完全不同的东西来取代深度学习。我考虑的是用符号元素来增强深度学习。你对推理的定义是什么?我并没有对推理的单一定义。我认为这是一个相当有含义的术语,你可以用它来表示许多不同的含义。但至少有

两种方式,我看到这个术语的使用方式,它们实际上是相当不同的。例如,如果你只是,比如说,记住一个程序,然后应用那个程序,你可以说这是一种推理形式。比如,在学校里,你学习数字相乘的算法。当你学习这个算法时,当你考试时,你实际上是在应用这个算法。这是推理吗?我认为是的,这是一种推理形式。

而且这是一种大型语言模型和深度学习模型特别擅长的推理方式。你正在记住一个模式,在这个时候你正在提取模式并重新应用它。但另一种推理形式是,当你面对你从未见过的事情时,你必须重新组合、重新组合你能够访问的认知构建块,也就是你的知识等等,形成一个全新的模型,并在运行中这样做。这也是推理。

但这是一种非常非常不同的推理方式,它内化了非常不同的能力类型。因此,我认为关于深度学习模型,特别是大型语言模型的一个重要问题不是它们能否推理?总有一些意义上它们是在进行推理。更重要的问题是它们能否适应新事物?因为有很多不同的系统可以记住人类提供的程序,然后重复使用它们。

更有趣的是,它们能否在运行中想出自己的程序、自己的抽象?广义地说,我认为从输入-输出对进行编程将成为未来一种广泛使用的编程范式,这将对任何人都是可访问的,因为你不需要编写任何代码。你只是指定你希望程序做什么,然后计算机就会自行编程。

顺便说一句,如果你所说的内容有任何歧义,而且总会有歧义,对吧?特别是如果指令是由非技术用户提供的。

好吧,你不必担心,因为计算机会要求你澄清。它会告诉你,“好的,所以我根据你告诉我的内容创建了最合理的程序,但这里和那里有一些歧义。那么这个输入呢?目前我的输出是这样的。看起来对吗?你想改变它吗?”当你改变它时,你知道,迭代地,你正在与计算机合作创建这个正确的程序。

我们需要构建一种全新的架构来实现这一点吗?是的,我认为我们将需要一种全新的架构来实现终身分布式学习,在那里你基本上有很多相同的 AI 实例并行地为不同的人解决许多不同的问题。

寻找问题之间的共同点和解决方案之间的共同点。每当他们发现足够的共同点时,他们就会将这些共同点抽象成一个新的构建块,这个构建块会回到系统中,使系统更强大、更智能。我想我现在明白了。所以你正在构建一个全球分布式的 ARC,基于我们找到了一个好的 ARC 解决方案。

好吧,我不能告诉你我们到底在构建什么,但这将会很酷。是的,听起来很酷。你对 O1 如何工作的理论是什么?好吧,你知道,我们只能推测。我不确定它到底是如何工作的。但似乎正在发生的事情是,它正在可能的思维链空间中运行一个搜索过程。

试图评估树中的哪些分支效果更好,如果当前分支不起作用,则可能会回溯和编辑。

它最终得到这个非常长、不成熟且可能接近最佳的思维链,它基本上代表了一个描述模型应该做什么的自然语言程序。在这个创建程序的过程中,模型正在适应新事物。因此,我认为像 O1 这样的东西在你可以用这些系统实现的泛化能力方面是一个真正的突破。

MLST 由 SenseML 赞助,SenseML 是专门针对 AI 工作负载优化的计算平台。你可能已经看过我们上个月与他们的 CEO 和联合创始人 Gennady 进行的采访。

他谈到了 Centermel 上的一些优化,只有他们才做过这些优化,这使得它比竞争对手快得多。无论如何,如果你有兴趣使用 Centermel 进行黑客攻击,我将在未来几周内与他们的工程师之一进行直播。因此,请随时参加直播,你可以向他们的团队提出任何问题

2forAI Labs 是一个非常非常令人兴奋的新研究实验室,它刚刚在苏黎世成立。他们正在寻找优秀的 ML 工程师加入他们的团队。这是一个非常小的团队。非常令人兴奋。他们正在做一些事情,例如测试时间计算、推理时间缩放。他们希望让模型进行推理,做我们多年来在 MLST 上一直在谈论的这个令人惊叹的系统二的事情。如果这听起来像你,请访问 2forLabs.ai。

我通常喜欢这个节目。我认为它就像机器学习的 Netflix。好吧,你将了解 Arc 2。你将了解我们从 2024 年运行 ArcPrize 竞赛中学到了什么。也许你会了解我对抽象生成和如何实现 AGI 的一些当前想法。你还会发现 Francois 接下来会做什么?好吧,一点点。一点点。一点点。

太棒了。Francois Chollet,很荣幸再次邀请你参加节目。非常感谢你。非常感谢你邀请我。所以我们现在已经到了 ArcAGI 奖的结尾,你刚刚发布了一份关于它的技术报告。但是你能回顾一下这场比赛吗?

好的。我认为我们学到了很多东西,总的来说这是一次巨大的成功。我认为,你知道,在 2024 年,我们已经看到了围绕 AI 的叙事发生了巨大的转变,以前,你知道,主流的叙事是

我们可以只对更多数据训练更大的模型,你知道,100 倍大的模型,100 倍的数据,并获得基本上是 GI 的东西。而最近,在过去一年左右的时间里,

人们已经意识到,实际上我们将需要类似于系统 2 的推理,这并不是仅仅从对更大数据集进行预训练的更大模型中自然产生的东西,你需要

以某种方式添加到系统中。当然,你可以使用测试时间搜索。你可以使用程序合成。你可以使用这些技术来做到这一点。我认为 ArcPrize 确实是这种叙事转变的一部分。这也是 ArcPrize 受欢迎的原因之一,许多团队参与其中,许多人都在谈论它,并将其用作衡量我们是否可能已经实现了 DGI 的参考,顺便说一句,这并不是

ARC 的预期用途。它并非旨在成为我们是否拥有 DGI 的指标。它只是旨在成为一种工具,一种研究工具,它能让你思考应该关注哪些问题,哪些方向。而且

它之所以成功,真正的原因是存在对这种东西的潜在需求。许多人都有这种直觉,是的,像普通的 LLM 不会互相接近,我们需要更多的东西,要么作为 LLM 的替代品,要么作为某种围绕它们的超结构来实现系统 2。

这种直觉在流传。我认为很多人只是抓住 Arkrise 作为他们直觉正确的具体标志。

ARC 奖有两个版本。一个是计算受限的,另一个是主要的。你能回顾一下这两个版本在参赛作品方面的区别吗?当然。我们在 Kaggle 上进行了主要的比赛赛道,这仅限于自包含的提交。

原因主要是因为我们需要保持私有测试集完全私密,对吧?因此,我们不能通过 API 将其发送到第三方服务器。因此,在这个赛道上,人们实际上提交的是笔记本,这些笔记本必须在不到 12 小时的时间内在虚拟机上运行,而虚拟机只有一个 P1 的 GPU。因此,这相当于每次提交大约 10 美元的计算量。

然后我们有了公共排行榜,这是针对前沿模型的。它是在一组不同的任务上进行评估的,因为当然,我们不能在私有测试集上进行评估,这只会将私有测试集泄露给第三方服务器。因此,它是在一组全新的任务上进行评估的,我们称之为半私有测试集。

测试集。所以它是私密的,因为它没有在任何地方发布,所以它不是公开的。但它也不是完全私密的,因为我们实际上是通过 API 将任务数据发送给 Anthropic 等公司。排行榜上的每个提交都可以使用高达 10,000 美元的 API 积分。所以这是 1000 倍

计算价值比私有排行榜高。而且在每个任务的基础上,实际上要少一些,因为我们在更多任务上进行评估。我们在公共评估中的 400 个任务和半私有评估中的 100 个任务上进行评估,这才是我们真正关注的。

因此,在每个瓦片的基础上,大约是 200 倍的计算量。真正引人注目,坦率地说,相当令人震惊的是,你在公共排行榜上看到的得分与你在私有排行榜上看到的得分是一致的。在两种情况下,我们都大约在 55% 左右。这告诉你,实际上

这不仅仅是向基准投入更多计算。计算实际上是思想的倍增器。当然,如果你有无限的计算能力,你可以通过蛮力搜索等非常愚蠢的方式来解决基准问题。但是有更好的想法

真的会让你在计算方面获得更大的杠杆作用,对吧?这就是为什么我们最终会得到计算成本为 10 美元的解决方案,其性能达到 55%。与此同时,计算成本为 10k 美元的解决方案却做着完全相同的事情。它们只是效率不高。

那么,哪种方法最成功,在各方面都适用?实际上,有两种方法效果很好。一种是深度学习引导的程序合成,这实际上是我个人最喜欢的方法,也是我多年来一直在倡导的方法。因此,现在大多数人都在使用大型语言模型进行深度学习引导的程序合成。他们使用大型语言模型来生成代码,使用大型语言模型来迭代地调试代码。

有些人试图使用来自 DSL 的构建块来进行深度学习引导的程序。我认为这是一种非常未被探索的方法,但我认为它应该是一种有效的方法。

另一种方法是测试时间训练,你将使用大型语言模型直接尝试根据任务描述预测解决方案。你正在查看一组演示对,然后你正在查看一个输入网格,你正在直接尝试生成输出网格,这是一个我们称为转导的过程。

与归纳相反,例如程序合成、程序归纳,你试图编写一个程序来将输入网格映射到输出网格。

在转导中,你只是试图直接预测输出网格。当然,如果你尝试使用大型语言模型来做到这一点,并且你停留在经典的深度学习范式中,在这个范式中,你有一个大型模型,它是在大量数据上进行预训练的,然后在推理时它是静态的,你实际上只是运行该模型,如果你停留在该范式中,你实际上无法适应任何有意义数量的新事物,对吧?

你只能记住模式,在测试时提取并重新应用你记住的模式。为了超越这一点,人们开始使用测试时间训练,其思想是,你首先预训练这个基本模型,它了解 arc,了解 arc 任务,

在推理时,对于你看到的每个新任务,你将尝试对基本模型进行微调,在演示基础上进行微调,基本上尝试将潜空间中包含的知识重新组合成一个适应当前任务的新模型。

如果你不这样做,如果你不进行测试时间自适应,那么基于大型语言模型的模型、转导模型,它们的准确率将低于 10%,大约如此。但是,如果你开始进行测试时间训练,那么你将解锁更高水平的泛化能力,你可以达到 50%、55%,甚至很快就能达到 60%。

所以一个大问题是这是否符合挑战的精神。我对此做过一些采访,即具有主动微调的转导,你获取测试实例,进行一些数据集生成,一些增强,你对模型进行微调,你做得很好。当然,作为一种广泛推广到许多任务的方法,

这很好,但问题是它仍然需要人工监督。因此,你从一开始就在你的智力衡量标准中强调,我们需要开发人员感知的泛化,这仅仅意味着我们不能让一个人类监督者为每个下游任务专门化事物。我们需要创建一个系统,该系统本身可以泛化到系统开发人员不知道的任务。因此,根据这个标准,你是否认为它不符合 ARC 的精神?

不,我认为这是一种完全合理的方法来应对挑战。我还认为,它代表了泛化能力和这些模型适应以前从未见过的事物的能力的重大突破。而且我认为我们正在谈论的监督并不是真正由人类完成的。

你使用演示对来微调模型。这实际上相当自主。当然,这需要由了解任务格式的人员进行编程,但程序归纳类型的方法也是如此。因此,我认为这非常符合挑战的精神,此外,我认为它确实展示了泛化方面的合法突破。

那么,继续讨论合法性问题,我的意思是,我们可以进行某种主动推理,这是有道理的。当然。因此,我们总是在适应新事物,构建新模型等等。那么,转导主动微调与我们所做的事情有什么区别呢?

好吧,我不确定我们到底做了什么。当然,我们正在进行主动推理。这到底意味着什么?我们正在利用哪些算法、哪些数据结构?我们不知道。所以我不能告诉你有什么区别。我会说一件事。所以当你使用大型语言模型进行测试时间训练时,你正在让……

梯度下降过程进行知识重组。因此,为了适应新事物,有必要以某种方式重新组合你所拥有的知识。你可以做很多不同的事情来实现这一点。你可以进行程序搜索,对吧?其中适应新任务的事物是一个程序,你正在通过搜索过程构建这个程序。你也可以

像 OpenAI 的 O1 模型所做的事情类似于此,你实际上是在思维链空间中进行搜索,你正在写下这个思维链,它基本上是模型要执行的自然语言程序。你正在通过 AlphaZero 风格的搜索过程,例如树搜索过程来进行此搜索。

所以这是一个方法。你也可以只使用离散程序搜索来编写程序。程序是模拟当前任务的工件。或者你可以尝试修改模型的权重,修改模型的表示,以创建一个适应任务的新模型。在这种情况下,适应任务的工件是模型本身。这就是测试时间训练所做的,它通过梯度下降来实现。

好吧,我的看法是,我认为人类不会通过专门使用梯度下降来重新组合他们所知道的知识来适应新事物。我认为,我认为我们表示知识的水平,尤其是在解决 arc 难题的背景下,在本质上更抽象、更具象征意义。

我们组合知识的方式更接近函数组合,而不是你通过梯度下降所能实现的方式。总的来说,我认为不建议尝试使用梯度下降来代替编程过程。所以我实际上更喜欢 O1 系统所做的事情,而不是尝试进行测试时间训练。

我们稍后会谈到 01,但有些人非常看好这种转导方法。我认为你和我同意,它在原则上不起作用的原因是语言模型只是有限状态自动机。它们甚至在原则上都没有这种组合泛化能力,对吧?但我们知道有证据表明,变压器本身无法执行基本的复制和计数等操作。

有些人看好,因为他们认为我们可以改进架构,以便它可以执行这些操作。然后,在未来,转导方法可能会起作用。我的意思是,你会排除这种可能性吗?

不,我认为这是完全有可能的。正如你指出的那样,即使有大量数据,也有许多算法任务你无法训练变压器来执行。或者即使你可以,它也会学习一个泛化能力不太好的解决方案。它会在输入与训练分布非常接近的情况下工作,如果你尝试一个与训练分布相差很远的输入,它就会失败。

而且,好吧,那些认为我们可以克服这些限制的人说,我们可以进行架构调整。好吧,你知道吗?他们是正确的。就像,总是可以获取一个深度学习模型,修改架构以在其内部烘焙一些关于你试图解决的算法问题的强大结构先验。

现在你可以实际使用梯度下降来找到一个可以泛化的解决方案。但是这种方法的工作方式是,有效地要求一位人类工程师首先理解当前的任务,并将这种理解,这种符号理解,转换为更好的架构,一个在某些重要方面与问题的因果结构同构的架构。

因此,当然,你知道,如果你想自主地适应新事物,你不能仅仅要求人类工程师介入并编写你的架构,对吧?这个过程必须完全自主。所以问题是,你能否创建一个架构搜索或架构生成机器,它将获取一个问题,识别

问题结构的关键元素,你需要将这些元素烘焙到你的架构中,然后生成架构。如果你能做到这一点,那么当然,也许你可以利用它来实现强大的泛化能力。但我认为这个问题至少与一般情况下的问题解决一样困难。

是的,事实证明它也过度拟合了。所以你知道,在公共排行榜上,我们在公共评估集上进行评估,但我们也在这个半私有评估集上进行评估。我们这样做的原因是为了测试过度拟合。一些解决方案可能会过度拟合到公共评估。对于他们的解决方案来说,情况确实如此。他们在半私有集合上的得分低了大约 10 个百分点。而其他解决方案

特别是基于程序合成的解决方案,根本没有出现这种下降。它们实际上在这两个集合上的得分完全相同。所以这告诉你,无论他们做了什么,在某些重要方面都过度拟合了他们拥有的数据。我们也可以谈谈这个吗?所以你说,当你将所有原始 Kaggle 2020 竞赛结果的集合放在一起时,它达到了大约 49%。没错。告诉我更多信息。

好的,所以在 2020 年 Kaggle 上的第一次 ArcHGI 竞赛中,单个提交的最高分只有 20%。所以那是获胜者 IceCuber。他只是在做基本的蛮力程序枚举。但是如果你查看了比赛中的所有提交,并将它们组合在一起,你会看到 49% 的高分。

直到最近,这仍然是当时的最新技术。这又是四年前的事了。这告诉你,大约有一半的私有测试集很容易被蛮力破解,因为当时在 2020 年的比赛中的每个参赛作品都在进行某种蛮力程序枚举。这不是 HDI。这不是我们正在寻找的那种解决方案。

因此,能够大规模地进行这种操作可以让你获得 49% 的事实,这是一个非常强烈的信号,表明基准存在缺陷。

好吧,今天,你知道,如果你看看 2024 年的比赛,任何单个提交的最新技术大约是 55%,对吧?所以你可以说,好吧,我们离解决基准问题还差得很远,因为标准是 85%。我们也知道人类可以解决非常接近 100% 的问题。如果我向你展示私有测试集,你可能会做到 97%、98%、99% 之类的事情。

如果你将 2024 年比赛中提交的所有内容组合在一起,你会得到 81% 的高分,对吧?这非常接近我们正在寻找的目标。而且我认为,你知道,

今年比赛中尝试的任何东西在有意义的意义上都与 AGI 相差甚远。所有内容的集合仍然与 AGI 相差甚远。它只是表明规模,只是蛮力计算规模,最终会破解挑战。这真正说明的是基准存在缺陷,现在它接近饱和。

我们需要其他东西。这就是为什么我们正在开发 ARC2。所以 ARC2 并不是一个全新的想法。它并不是对我们在 2024 年获得的结果的反应。

我最早在 2022 年初公开宣布 ARC2,所以很久以前了。当时,这是一种对 2020 年竞赛结果的反应,当时我知道基准存在缺陷,在任务多样性方面不够多样化。并非每个任务都是独一无二的。存在一定程度的冗余。

它可能不够具有挑战性。所以我想要做 V2。因此,早在 2022 年,我就与达沃斯的 Lab42 合作,开始众包大量新任务。从那时起,我们一直在不断创建更多新任务。

我们开始过滤它们,试图分析哪些对人类来说很难,哪些对 AI 来说很难。我们还收集了很多人类测试数据。我们雇佣了人们来实际尝试解决这些问题。这会给你很多信息,关于他们对不同任务使用了多少次尝试。

有多少人解决了多少次任务。你可以将这些信息转换成一种面向人类的难度等级。然后你可以尝试将其与 AI 可以做什么进行交叉关联。我们将于明年年初发布 Arc 2。它将解决 Arc 1 的所有缺陷。所以它将会有稍微更多的数据,

它将利用三个集合。这将是公共评估,当然。这将是半私有评估,这将是私有评估。Kaggle 上前几次比赛的一个问题是,我们一直在重复使用

在每次比赛中都使用相同的私有测试集,并且每当有人提交时,他们都可以立即看到他们在私有评估上的得分。因此,这实际上可能导致随着时间的推移,关于私有测试集的信息泄露。事实上,有非常有据可查的技术,关于你如何能够开始重建,给定足够的提交,你如何能够开始重建内容。

优先级值。所以我们想在明年的比赛中避免这种情况。我们这样做的方式是,显然,我们将在比赛期间对半优先级值进行评估。因此,当你提交某些内容时,你会得到你的半优先级值分数。只有在比赛结束时,为了创建最终排行榜,我们才会实际在完全私有的测试集上运行提交。

如果你这样做,另一件好事是,这使你能够在 Kaggle 排行榜和所有前沿模型的公共排行榜之间进行直接的苹果与苹果的比较。当然,计算量不会相同,但分数将是苹果与苹果的比较。你将能够说,好吧,所以 Minds AI 在这个测试集上的得分与,我不知道,像 OnePro 或其他什么东西一样好,你知道。

所以你知道 Kaggle 2021 的 49% 是你取的总和。

首先,哪些方法更依赖蛮力?我认为,从一种角度来看,在解空间中存在指数级的组合,这当然与马赛克模式有关。但是,在组合空间中,它可能是可通过蛮力解决的。但我们也开始看到,归纳和转导方法可以解决不同类型的问题。也许当你也进行人工评估时,人类可以解决不同类型的问题。并且所有这些都是重叠的维恩图。你怎么看待这个问题?

是的,这实际上是2024年竞赛中最有趣的发现之一,即程序归纳和使用深度学习模型(通常是大语言模型)进行转导,会导致解决大量不同的任务集。这让我感到惊讶,但事后看来,这是有道理的,特别是如果你开始研究这项任务。

并分析是什么使它们不同,有些任务本质上是感知性的。它们实际上是模式认知问题。这是你擅长使用转导方法解决的类型任务。

还有一些任务本质上更具算法性,更离散。你无法基于模式识别提供简单的解决方案,但写下算法来产生解决方案却很容易。反过来,如果你看看

非常具有感知性的难题,为它们编写解决方案程序非常非常具有挑战性,对吧?因为程序必须形式化许多对我们来说很直观的感知概念,但实际上很难用程序的形式表达,对吧?就像想象一下

尝试识别,让我们举一个Arc之外的例子。例如,尝试识别字母A。如果你只是在看字母,

你可以立即看到它。如果你有预训练知识,字母形状的预训练视觉知识,这是一个微不足道的问题。你只需要识别字母。这正是你所做的。这是模式识别。但如果你试图写下一个算法,它将接收一个手写的A并告诉你,你知道,一个手写的字母并告诉你它是否是A,例如,这实际上是一个极其困难的问题。

是的。对此我有几点想法。首先,关于Kevin Ellis的论文,归纳转导论文,也许出于政治原因,感觉他们想找到一个归纳的显式函数。因此,在他们的集成方法中,他们首先通过绿化来搜索归纳函数,然后他们转向转导。想到的是,仅仅因为我们无法编写一个识别数字的Python程序,

当然,这样的Python程序可能存在,我们不应该考虑让模型生成这样的程序吗?也许他们做不到的原因是因为没有类似的东西在分布中。我认为之所以困难是因为我们正在讨论一个结构上连续的输入空间,其中

决策边界模糊,基本上。所以你谈论的是一个从根本上来说是模式识别问题的问题,而神经网络本身就是一个很好的数据结构来解决这类问题,而离散符号程序则不是。所以我真的认为这取决于你正在研究什么问题。有些问题向量空间是正确的数据结构,而有些问题符号离散程序是正确的数据结构。

我想一个有趣的思想实验是,一定存在一个Python程序可以执行MNIST模型所做的工作。最简单的程序表示是什么?它仍然会非常复杂吗?我认为程序最简单的表示看起来很像公司正在做的事情,老实说。是的,我认为这就是关键,不是吗?因此,无法将其分解成更简单的版本。

是的,我认为这确实取决于问题的性质。对于某些问题,程序合成就是一个坏主意,对吧?感知问题肯定属于这一类。反过来,对于某些问题,试图使用模式认知机器就是一个坏主意。本质上是算法的问题。你认为我们如何有效地结合归纳和转导方法?

好吧,Kevin Ellis和他的团队在他们的论文中所做的方法基本上是,他们从归纳开始,然后在它不起作用时转向转导。我认为这是一个非常聪明的策略,因为归纳实际上是可以形式化验证的。你可以尝试在你能够访问的演示对上运行你的候选程序,看看,首先,它是否运行等等。

它是否得到了正确的结果?如果它做到了,你可以对它会泛化有相当高的信心。而当你进行转导时,更像是你在猜测答案可能在哪里。

你实际上没有任何方法来验证这是一个正确的猜测。所以你可以做的一件事就是增加样本量。我可以做出许多独立的猜测,然后你可以看看哪些答案出现得最频繁。但你基本上是在假设

错误的猜测都是由于不同的原因而错误的。所以你最终会得到不同的错误答案。但正确的猜测都是由于正确的原因而正确的。因此,正确的答案将更频繁地出现。但实际上,你没有办法——

确保100%你的猜测是正确的。因此,从归纳开始要聪明得多,因为这样你就可以对你的解决方案是正确解决方案有高度的信心,然后在它不起作用时再回退。所以基本上,归纳是你应该优先选择的方法,你只应该在它不起作用时才使用转导。

我们应该认为它们是完全不同的吗?假设你使用共享模型进行归纳和转导,你认为两者之间可能存在一些交叉吗?

绝对的。事实上,这是比赛中一些人尝试过的事情。他们使用所谓的OmniARC方法,团队使用同一个模型来解决一系列不同的与arc相关的任务,包括编写程序,以及解释程序、进行转导、生成更多输入。

等等。所以所有这些不同的任务都使用一个单一的模型,这确实会导致学习你在ARC中找到的概念的更好表示。你能给我更多关于这方面的直觉吗?从某种意义上说,你可以让网络

同时考虑符号版本和解空间?基本的直觉是,如果你从不同的角度看待同一个问题,你更有可能找到问题的真实形状。如果你的选择的数据结构是神经网络,这尤其正确,因为神经网络有这种倾向,会抓住

嘈杂的统计规律。如果你只使用,你知道,一个,如果你只针对一个问题并且只使用一种输入模式,你更有可能过度拟合该问题中的噪声元素。但是,如果你强制相同的表示在问题的许多不同视图中工作,它就会充当

首先,你会获得关于问题的更好信息,对吧?因为存在一些知识转移,在诸如尝试预测输出等级和尝试生成更多输入等级之间存在一些信息交换,对吧?但它也充当了一种正则化机制,你可能使用一种模式学习到的噪声将与你使用另一种模式学习到的东西相抵消。

Clement Bonnet(我认为他的名字是)的另一种方法是更好地搜索潜在空间。不一定进行绿化,而是在你提出预测之前实际上搜索潜在空间相当长的时间。你怎么看待这个问题?是的,这实际上是我个人最喜欢的提交给比赛的论文之一。这是一个非常非常有创意的想法,你将学习……

程序的潜在空间。然后在测试时,当然在测试时你需要对当前的问题进行一些适应,你需要对你的知识进行一些重新组合。

虽然有些人使用测试时训练,有些人使用搜索。而Clement Bonnet和他的同事Mark Farley现在正在做的是非常有创意的。所以他们正在学习这个程序的潜在空间。然后在测试时,他们在潜在程序空间中进行梯度下降,基本上是在潜在程序空间中移动并找到实际上最匹配任务的空间点。

我认为这是一个好主意。我认为有很多方法可以改进这个想法,但它对测试时适应是一个非常非常有创意的看法,它不是搜索,也不是微调。所以我非常喜欢它。你还会称这个过程为思考吗?思考是一个二型过程,还是你也会称之为思考?

这是一种测试时搜索的形式,只是它不是离散搜索。它基于梯度下降。所以当然,我不明白为什么你不能用它来实现某种形式的二型处理。是的。我想知道这是否打破了与人类思维的类比,即它正在进行感知性思考。

这是一个非常有趣的类别。它在潜在空间中进行思考,是的。所以我认为改进该过程的一种方法是,你也可以尝试将你的潜在程序解码回符号离散形式。然后你可以开始围绕解码后的程序进行局部离散搜索。这种方法的好处是你能够实际运行程序并验证它们是否有效。

只要你停留在潜在空间中,即使你在潜在空间中进行这种梯度下降引导的搜索以找到最佳点,

这代表了一个目标程序,你非常局限于猜测。你无处可以断言潜在空间告诉你的内容与实际情况相符。因此,能够解码回真实的程序空间并运行这些程序将是对系统的一个非常好的补充。

这种方法有什么潜在的问题吗?所以我想如果潜在结构相当同质并且模式易于找到,它可以改进吗?

你的确切意思是什么?所以他在这潜在空间上进行梯度搜索,找到一些最佳位置,然后从那里进行推理。但如果它是一个相当凸的空间,它不会很好地工作,但如果它是一个非常异质的空间,它就不会很好地工作,对吧?当然。为了能够进行梯度下降,你需要一个相对平滑的表面。但我认为这就是他们使用VAE的原因。

我不确定他们是否尝试过直接学习程序嵌入空间,其中一个点是一个程序。事实证明,这不是他们在做的事情。他们正在使用VAE。原因是,当你使用VAE时,你正在学习更结构化、更平滑的潜在空间。我认为这是使测试时梯度下降起作用的关键。

那么ARC中还有哪些未探索的途径呢?也许更好的提问方式是,如果你自己花一年时间研究ARC,你会做什么?

我会进行深度学习引导的程序合成。而且你知道,我认为人们今天进行深度学习引导的程序合成的方式是错误的。所以每个人都在利用大型语言模型,这当然是有道理的,因为这些是非常强大的工具,包含许多可用于任何问题的有用知识。我们已经投资了数十亿美元来创建这个工具。所以不使用这些工具,

感觉你错过了很多力量。

但我认为将程序合成仅仅视为逐个标记的代码生成并不是正确的方法。我认为思考程序的正确方法是将其视为运算符图,而程序合成基本上是一个树搜索过程。我认为你最好尝试使用深度学习模型,特别是大型语言模型。

来指导这个研究过程。今天很少有人尝试这样做,但我认为这将更接近正确的方法。另一件事是,人们今天没有做,但应该做的是,你知道,如果你看看人类如何解决arc难题,他们不会尝试

他们脑海中有很多不同的解决方案程序。他们只尝试几个。我认为人类有能力首先用他们的东西描述一个模型,并使用这个模型基本上描述例如网格,例如,就它包含的对象及其属性而言。

以及它们与其他对象的关系,特别是因果关系。因此,你可以使用这些描述性模型来约束搜索空间,当你最终查看输入到输出程序时,这就是我们

我们只需要考虑少数几个程序就可以找到正确的程序。从这个意义上说,可能可以对任务进行足够的建模,以几乎使搜索变得无关紧要,几乎完全消除对搜索的需求。你刚才说的太有趣了。我们应该思考一下。

首先,本周我采访的大量人,尤其是在神经进化领域,例如,在Jeff Klune手下,他们中的许多人都在关注大型语言模型,因为他们说我们需要衡量趣味性或新颖性。大型语言模型,因为它们是在世界上所有数据上训练的,它们非常非常出色地捕捉了我们的本能,我们的直觉等等。所以它们是生成程序的好方法。但是

但你却说仅仅生成程序并不是一个好主意。进化的下一步是指导搜索。我认为我们开始看到大型语言模型在许多商业软件中的这种启蒙。例如,应用程序中的原始大型语言模型只是你有一个聊天机器人,你只需将其放入其中。现在像Cursor这样的东西,例如,它们正在公开低级API,并且它们正在使用工具使用等等。大型语言模型实际上……

指导应用程序中的低级API交互。因此,你主张在这里进行类似的演变,其中大型语言模型实际上指导离散搜索过程,而不仅仅是生成代码。没错。其想法是……

通过这个迭代离散搜索过程创建你的程序,你实际上有能力对你的程序图进行有针对性的修改,我认为如果你只是将程序视为一系列标记,这将非常难以实现。此外,你正在改变你做出附加决策的空间的性质。

而人群只是表示程序的自然数据结构。程序不是一系列标记。

我们看到的另一件事是中间解决方案。Kevin Ellis,他做了这个叫做“混音”的事情,你拥有100个手工制作的解决方案。对于每一个任务,你都有一个可以生成新实例的生成器。所以你知道,他们可以生成精灵和布局等等。然后他们做了这种扩展,他们使用检索增强生成,它正在进行一种隐式的库学习形式。它就像将所有解决方案混合在一起。这是否是你在谈论的中间步骤?

不完全是。我认为这是一条单独的途径。其想法是,是的,为了使大型语言模型在数据集上表现良好,你需要向它们展示尽可能多、尽可能密集的arc空间采样。当然,没有很多可用的arc任务,所以你必须创建新的任务。创建新任务很容易,就是利用大型语言模型来排序

例如,在训练集中找到的程序化概念,然后将它们混合成新的任务。但最终,这会导致非常严重的过度拟合,这正是我们在他们的解决方案中看到的。因为已经发生了一些有趣的演变,即使是Kevin,

在Dreamcoder中有一个明确的清醒和睡眠的概念,你知道,在做梦,在他关于这个的新工作中,你知道,通过示例对学习示例,他使这个梦境睡眠过程变得隐式,并且感觉我们可能可以通过提出代理或隐式版本来实现一些相同的东西,是的,是的,是的

你感兴趣的ARC还有其他途径吗?顺便说一句,我认为你与Symbolica的George谈过话,他有一种程序验证方法,他说他和你讨论过。

是的,所以我们讨论的是,你向我描述的基本上是这个想法,即使用符号过程将问题定义、任务转换为深度学习架构,然后训练深度学习架构。我认为这是一个非常非常有创意的方法。据我所知,我不认为还有其他人正在做类似的事情。

我非常好奇他会用它做什么。听起来很吸引人。是的,绝对的。你认为,你知道,只是谈论基准测试,我们是否需要将计算预算纳入基准测试?

是的,绝对的。我认为这将是未来非常紧迫的需求,特别是明年ARC的公开排行榜,因为使用测试时计算(如测试时搜索、测试时训练等)总是可以以更多计算为代价来提高性能。通常你会在测试时看到计算和性能之间的对数关系

这意味着如果你想在两个系统之间进行苹果与苹果的比较,你必须查看计算预算。你只能比较使用相同计算量的系统,对吧?而且……

例如,如果你查看OpenAI的O1模型,除非你将自己限制在一定的计算量内,否则你实际上无法为其在ArcGIS上分配一个固定分数。总是可以通过向问题中投入更多计算来对数地提高你的性能。当然,这对O1来说是正确的,但在此之前,这也适用于蛮力程序搜索系统,

假设你拥有正确的DSL,那么极其粗糙的基本蛮力程序枚举可以以人类水平解决所有问题。它只需要数亿美元的计算才能以这种方式破解整个数据集。老实说,这是一个极其低效、极其愚蠢的想法。但理论上,这是可能的,对吧?

从哲学上讲,你认为执行任务所需的计算量之间总存在相应的比例关系吗?我的意思是,当我们使用语言和认知工具时,我们可能认为我们没有使用计算,但宇宙为了这些事物出现而可能消耗了大量的计算。所以在某种程度上,我们真的有可能压缩我们使用的计算量吗?

我认为可以。我认为人类非常高效地利用计算,你可以在以下事实中看到这一点,例如,你正在对困难的任务进行排序。你可以对整个私人测试集进行排序,并且只消耗几卡路里。你可以说好吧,但这是因为你知道

我们大脑执行的每个操作只使用极少的能量。如果你比较晶体管和神经元,例如,这根本不是真的。你会发现神经元比晶体管要消耗更多的能量。碰巧的是,我们正在设法使用相对较少的神经分化来解决极其困难的问题。

与目前的AI相比,我们只是非常节能。当我们达到相同的能效水平时,我们将拥有AGI。你对使用Python(一种图灵完备的语言)之类的编程语言与在这些方法中使用DSL的看法是什么?

好吧,我认为使用DSL,例如Arc,例如,从根本上来说是有限制的。无论你做什么,无论你使用什么基础语言,你都应该能够从

你拥有的数据中学习你正在应用的函数。事实上,你应该能够将其作为一个终身学习的过程。因此,每当你找到一个新的任务并解决它时,在这个过程中,你将能够提出有用的抽象,也许是与你过去看到的问题相关的抽象。所以你会想要

将其转换为可重用的函数、可重用的构建块,并将其存储起来,以便下次遇到类似问题时,你可以重新应用相同的构建块并节省计算,例如,用更少的步骤解决同样困难的问题。所以无论你做什么,你都想要学习。

你将要使用的语言。当然,这可能意味着学习DSL,也可能意味着使用类似Python的东西,但在其中,越来越多地编写高阶函数、类和其他可重用的构建块来丰富你的语言。

我想知道你是否正在软化你的立场。你发推文说,高度模糊的模式匹配如果迭代足够多次,可以渐近地转化为推理。甚至有可能人类基本上就是这样做的,但这并不意味着这是进行推理的最佳方式。这是你立场的转变吗?与什么立场相比?我认为这不是转变。嗯……

我想这表示,首先,我们有可能以这种方式思考。我认为我们确实如此,是的。哦,有趣,因为我认为由于对事物的拼写键视图,你会认为我们进行这种高级推理,而我们不进行模糊匹配。我认为人脑中的基本认知单元实际上是模糊模式认知。这是你所做的核心事情。然后当你……

做一些更类似于推理或计划的事情时,当你基本上进行二型处理时,这种缓慢、逻辑的、循序渐进的处理,你真正做的是迭代地应用你的直觉,但以结构化的形式。

顺便说一句,这正是深度学习引导的程序合成所要做的,这是我自2017年以来一直在倡导的方法。当你进行深度学习引导的程序合成时,你在做什么?你正在构建一个程序,所以基本上是一个图

运算符,但你正在逐步构建,在每一步中,当你选择编辑图中的什么内容、添加什么内容、做出什么分支决策时,你都在应用你的直觉,你都在应用深度学习模型提供的猜测,对吧?所以你正在迭代地猜测以创建这个高度结构化、符号化、离散的

工件,即这个程序。当你运行这个程序时,这个二型系统,我认为这基本上是人类如何实现二型系统的方式,那就是我们正在迭代地猜测,迭代地应用模糊模式识别来构建实际上是符号性质的工件。例如,假设你正在下国际象棋。

当你心中计算时,你正在逐步展开一些动作,但你只会对棋盘上的少数动作这样做。你如何选择要查看的动作?你正在应用模式认知。然后当你……

模拟未来一步时,你不会模拟整个棋盘,你将专注于某些区域。同样,这是模式识别。顺便说一句,有时任何类型的模式识别本质上都是猜测,所以它可能在某些方面是错误的。有时在下国际象棋时,你正在计算,你对棋盘未来状态的一些直觉是错误的,然后你走棋,然后你意识到,哦,糟糕。对吧?所以我认为这基本上就是人类如何实现这个东西的方式。所以这不是我立场的转变。我已经思考这些想法很久了。事实上,这是我目前最喜欢的关于如何解释意识的理论的基础。这是这个想法

好吧,为了让像二型系统这样的东西从迭代模糊模式识别中产生,迭代序列需要高度自洽。你添加的每一件事,你都需要仔细检查它是否与之前的内容相符。如果你只是迭代地进行模式匹配,

没有任何防护措施,你基本上是在幻觉,你在做梦。顺便说一句,这正是你在梦境状态下发生的事情。你只是反复直觉接下来会发生什么,但完全不考虑一致性,与过去的自洽性。

我认为这就是为什么大脑中任何类型的深思熟虑的逻辑处理都需要涉及意识,都需要涉及意识。意识是这种……自洽性检查。

这是迫使你的直觉的下一个迭代,这个模式认知过程,与之前发生的一切保持一致的过程。实现这种一致性的唯一方法是通过这种来回循环,这种循环有点像将过去

带入现在,将你对未来的预测带入现在。所以你目前有一个这种枢纽点,你正在关注的东西。而这个枢纽点基本上就是你的意识。所以意识是迫使迭代模式识别转化为实际上像推理一样的东西,实际上是自洽的东西的过程。

是的,所以我认为问题是你没有改变你的立场。这只是人们理解你的立场的问题。所以

所以我认为人们将系统二分法,你知道,像符号主义者一样认为它都是这个离散的世界。然后是另一种选择,你知道,连接主义方法是它都是模糊匹配。我从未完全属于符号主义阵营。如果你回顾我最早关于是的,我们需要程序合成的著作,我说我们需要深度学习引导的程序合成。我们需要将直觉和模式与认知结合起来

与离散的逐步推理和搜索结合到一个单一的数据结构中。而且我已经非常非常反复地说了大约八年了,

人类认知实际上是直觉和推理的混合体,你只依靠其中一种是不会走得太远的。你需要向量空间、一般深度学习模型提供的连续抽象,以及图和离散搜索提供的更离散的符号抽象。那么,为什么你的批评者认为你是一个符号主义者,而你显然不是呢?

好吧,我不确定。我从事深度学习已经很长时间了,基本上是从2013年开始的。我从大约2014年开始大力宣传深度学习。那时,这个领域还很小。特别是有了Keras,我认为我已经做了很多工作来推广深度学习,使其尽可能多的人都能使用。

我一直都是个深度学习的人,对吧?当我开始思考深度学习的局限性时,我并没有考虑用完全不同的东西来取代深度学习。我考虑的是用符号元素来增强深度学习。所以你也在这条推文中评论过,你刚才谈到了意识。你认为所有 2 系统的处理都涉及意识。是的。更详细地解释一下你的意思。

因此,任何明确的分步推理都需要涉及意识。反过来,如果你正在无意识地运行任何认知过程,它就不会有这种强大的自我一致性保证。它更像是一个梦,一种幻觉。

基本上,这个想法是,如果你只是反复猜测,除非你有这种强大的自我一致性保证,否则你最终会偏离方向,最终会发散。意识基本上是自我一致性的护栏。这就是为什么你不能没有意识就拥有一个系统。你对推理的定义是什么?

我并没有对推理有一个单一的定义。我认为这是一个相当有含义的术语,你可以用它来表示许多不同的含义,但我至少看到了两种使用该术语的方式,它们实际上是相当不同的。例如,

如果你只是,比如说,记住一个程序然后应用那个程序,你可以说这是一种推理形式。例如,在学校里,你学习的是数字相乘的算法。那么,你学习了这个算法,然后考试的时候,你实际上是在应用这个算法。这是推理吗?我认为是的。这是一种推理形式。

而且这是大型语言模型和深度学习模型特别擅长的那种推理。你正在记住一种模式,在这个时候你正在提取模式并重新应用它。但是另一种推理形式是,当你面对你从未见过的事情时,你必须重新组合、重新组合你能够访问的认知构建块,也就是你的知识等等,形成一个全新的模型,并在运行时这样做。这也是推理。

但这是一种非常、非常不同的推理方式,它可以实现非常不同的能力。因此,我认为关于深度学习模型,特别是大型语言模型的一个重要问题不是“它们能否推理?”在某种意义上,它们总是在进行推理。更重要的问题是“它们能否适应新事物?”因为有很多不同的系统可以记住人类提供的程序,然后重新确定它们的优先级。

更有趣的是,它们能否在运行时提出自己的程序、自己的抽象?对于一个系统来说,提出自己的抽象意味着什么?

要开始提出抽象,首先,你需要解决新问题。解决新问题意味着你从一些知识基础、一些构建块开始。然后你面临一个新的任务,你将它们重新组合成任务的模型,然后你应用这个模型,它起作用了。在这个过程中,

当你解决许多问题时,你会开始注意到你拥有的构建块的一些重组模式经常发生,对吧?当你开始注意到这一点时,那么,这意味着你可以标记它们,并且

将它们抽象出来,将它们重构为更可重用的形式。然后,你可以将这种可重用的形式添加到你能够访问的构建块集中。因此,下次你遇到类似的问题时,你将能够用更少的步骤、更少的精力来解决它,因为你可以访问适合该问题的更高级别的抽象。有没有办法衡量推理的强度?

所以,再说一次,你需要首先精确地定义你所说的推理是什么意思。我认为你可以定义,例如,你可以精确地定义泛化能力,这基本上是你能够适应的新颖程度。是的,这很有趣,因为我认为你根据性能来定义它,就像我的模型有多好一样。

另一种描述方法是,让我们想象一下,我们将推理纯粹定义为遍历演绎闭包,也就是将我们已经拥有的知识以新的配置组合在一起,然后我们在这个解决方案空间中取得飞跃,因为我们找到了一种真正非常有效的新的模型。有没有一种内在的方法来衡量模型的类型,而不是它的泛化能力?

不,我认为你真的必须观察模型做了什么。你不能仅仅检查模型并告诉你它在推理方面有多强大。因此,没有这种内在的形式,这是好的推理?例如,给定两个问题的模型,哪个模型更好?你能仅仅查看它们并判断哪个更好吗?我认为这在很大程度上取决于目标,对吧?你不能真正评估……

例如,一个像模拟事物一样的模型,如果你没有想要用它做的事情。但是如果你有一个目标,那么你只需要看看实现该目标所需的因果因素是什么。然后,最好的模型可能是保留这些因果因素的最简单的模型。弗朗索瓦,你接下来做什么?好吧,我几周前刚离开谷歌。所以我正在和一个朋友一起创办一家新公司,一个新的研究实验室。

是的,所以我现在还不能分享太多,但我们将要处理程序合成,特别是规划引导程序合成。我们目前正在组建团队。太棒了。你正在寻找加入的人吗?是的。

告诉我更多。你允许告诉我们什么?所以,是的,我的意思是,我可以告诉你的是,你知道,我一直在谈论其中的一些问题,比如获得 AGI 的最佳方法,关于深度学习引导的程序合成,关于……

围绕 RKGI 的 RKGI 方法,但 RKGI 之后的下一个基准可能是什么。所以在谷歌工作期间,我的全职工作是开发 Keras,我一直都在考虑这个问题。现在我觉得是时候全身心地投入到研究问题上了。让研究不再是一个副业,而是主要的事情。

重点是创建新的基准还是超越基准?我认为两者都是。我非常相信这样一个观点,即你需要与问题一起共同发展解决方案。这实际上也是最初创建 ArcGIS 的动机,是为了提出正确的挑战,迫使你关注正确的问题,关注实现人工智能强大泛化的主要瓶颈。

所以我认为,你知道,ArcGIS 不是最后一个基准。当然,ArcGIS 将会有一个 V2 版本,但这也不会是最后一个基准。我认为我们将始终需要新的基准,探索对人工智能来说很难而对人类来说很容易的新事物。如果你在你自己的基准上工作,这在任何意义上都是作弊吗?

我不这么认为。基准旨在作为研究工具。它就像 ArcHGI 一样,它并不是真正意义上的二元指标,告诉你“哦,我们有 HDI 吗?”它实际上是一个研究工具。这是一个挑战,它迫使你关注正确的问题,这种问题会

将你的注意力引向正确的问题,并帮助你取得进展。所以你可以说 ArcGIS 基本上是通往 EGI 的指南针。它不像 EGI 的测试。

而且,你知道,ARK 有多种可能的解决方案。例如,因为你知道私有测试集中有什么,所以你可以直接将答案放进去。但我不会以任何方式参与 ARK 奖。我的意思是,显然不会。我反正也在运行 ARK 奖,所以我为什么要回答它呢?但在这种泛化范围内,有一个登月计划,即追求极端泛化,或者还有一个低于此的等级。你要去哪里?

我想构建 AGI。我想构建具有与人类同等能力的东西。那意味着什么?你认为你可以用这种 AGI 实现什么样的东西?最明显的事情是解决编程问题,对吧?如果你解决了 AGI,那么你就可以

向计算机描述你想要什么,计算机就会为你构建它。如果它真的是 GI,那么它将扩展到与你可以使用人类软件工程师相同的复杂性水平,相同的基于代码的复杂性水平。而且它可能也不会止步于此。当你开始到达那里时,你认为人类在软件工程中的作用是什么?

好吧,我们会看到的。我认为当这项技术准备好时,我们将开始创建全新的工具、全新的界面来使用这项技术。我们距离它还很远。我们谈论的是一些还不存在的东西。我认为前沿模型,甚至 O1,都还没有达到那个水平。现在,程序员非常技术化。

你认为将来编程可能会被民主化吗?我认为是的。我认为将来,任何人都应该能够根据他们自己对所面临问题的领域专业知识来开发自己的自动化流程。每个人都应该能够编程,不是真正意义上的编写代码,而是向计算机描述他们想要自动化什么以及如何自动化,计算机就会这样做。

软件中的一件大事是在不同规模上解决复杂性问题。这当然是你整个职业生涯都在做的事情。你认为我们是否总是会遇到这个问题,即我们总是处于这种难以置信的复杂性的边界上?你这是什么意思?好吧,就像,即使我们使等级结构中的一两个步骤民主化,我们难道不还是会一直构建非常复杂的软件吗?

是的,很可能。但我们的想法是,我们将能够将这种复杂性卸载到外部复杂性处理人工智能。

因此,我们将进入一个未来,在这个未来中,我们将不再以任何方式理解正在运行的代码。绝对的。我认为在很大程度上,这已经是事实了。如果你查看任何相当大的代码库,就没有哪个单一的软件工程师真正理解所有内容。由于我们对正在做的事情的理解支离破碎,我们总是受到限制,只要我们对系统的顶级目标和约束有很好的把握,这就足够了。

那么,代理的来源应该在哪里呢?因为你知道你正在描述一个盲人摸象式的挑战,大量的开发人员对系统的一小部分有自己的看法。但是当我们有了 AGI 版本时,这会如何改变呢?总的来说,我认为从……

输入/输出对进行编程将成为未来一种广泛的编程范式,这将对任何人来说都是可访问的,因为你不需要编写任何代码,对吧?你只是指定你希望程序做什么,然后计算机就会自己编程。顺便说一句,如果你所说的内容有任何歧义,而且总会有歧义,对吧?特别是如果指令是由非技术用户提供的,

好吧,你不必担心,因为计算机会要求你澄清。它会告诉你,“好的,所以我根据你告诉我的内容创建了最合理的程序,但这里和那里有一些歧义。那么这个输入呢?目前我有这个输出。看起来对吗?你想改变它吗?”当你改变它时,你知道,迭代地,你正在与计算机合作创建这个正确的程序。

因此,这些未来的系统将以程序合成作为核心组件,一个明确的组件。但是人类将如何与之交互呢?我们是否仍然会用自然语言、手势和图像等来描述呢?它可以是自然语言。它也可以只是在屏幕上绘制界面元素。它可以是……

你总是可以尝试生成正在生成的程序的高级表示,该表示处于非技术用户可以可视化和理解的级别。例如,我可以向用户显示一种数据流图,以获取有关它的输入。

非常酷。因此,超大规模大型语言模型的一个特点是,从某种意义上说,它并不那么困难,因为它们只需要,就像一个 CDN 一样。它们只是复制所有权重并将它们移动到各个地方。你描述的东西非常复杂。它可能有点类似于一个全球分布式数据库,其中技能程序在所有不同的节点之间移动等等。我们需要为此构建一种全新的架构吗?

是的,我认为我们将需要一种全新的架构来实现终身分布式学习,在这个架构中,你基本上有很多相同的 AI 实例并行地为不同的人解决许多不同的问题,并寻找问题之间的共同点。

以及解决方案之间的共同点。每当他们发现足够的共同点时,他们就会将这些共同点抽象成一个新的构建块,这个构建块会回到系统中,使系统更强大、更智能。我想我现在明白了。所以你正在构建一个全球分布式的 ARC,基于我们找到了一个好的 ARC 解决方案。好吧,我不能真正告诉你我们正在构建什么,但它会很酷。是的,听起来很酷。

你认为像 OpenAI 这样的公司将如何开始不仅整合测试时间推理,而且还将你的一些想法切合实际地整合到他们的系统中?例如,前沿模型如何整合程序合成?好吧,我认为像 O1 这样的东西已经在做了。当你查看 O1 可能正在做的事情时,它正在编写自己的自然语言程序

描述它应该做什么,并且它正在执行这个程序。它编写这个程序的方式是通过一个非常复杂的搜索过程。所以这已经是自然语言空间中的程序合成了。

还有其他方法可以利用程序。你可以在潜在空间中使用程序,有点像 Clément Bonnet 和朋友们正在做的那样。你也可以只生成实际的程序,为什么要用自然语言呢?有时,你可能想使用实际的编程语言。所以我认为我们肯定看到了一个

转向越来越多的测试时间计算,这将加速。这是一个非凡的趋势,它不是。关于转导主动微调,那

那在架构上有点困难,不是吗?因为我的模型总是在被微调。所以我可以想象他们可能会构建一些类似于 Docker 的东西,其中有基础层,然后是我的微调层,以及另一个微调层。它非常分散。因此,在实际的前沿模型中应用测试时间训练的难度不在于基础设施。所以目前的服务器基础设施绝对没有设置好,这是肯定的。

用于进行每任务微调。但是你可以为它重新设计它。主要的瓶颈实际上是任务格式。只有当你拥有非常清晰的输入和目标时,你才能进行测试时间训练。你基本上需要输入/输出对,对吧?对于大多数提示,你都没有。对于 Arc,很明显,但对于大多数问题,你都没有。非常酷。你对 O1 如何工作的理论是什么?

好吧,你知道,我们只能推测。我不确定它是如何真正工作的。但似乎正在发生的事情是,它正在 Parseval 思维链的空间中运行一个搜索过程,试图评估树中的哪些分支效果更好,如果当前分支不起作用,则可能会回溯和编辑。

它最终得到了这个非常长、不成熟且可能接近最优的思维链,它基本上代表了一个自然语言程序,描述了模型应该做什么。在这个创建程序的过程中,模型正在适应新事物。

所以我认为像 O1 这样的东西在你可以用这些系统实现的泛化能力方面是一个真正的突破。就像我们远远超出了经典的深度学习范式一样。所以一种我认为你同意的观点是,在推理时存在某种主动控制器。所以它实际上是在隔离的方式下进行多条轨迹。是的,它正在进行搜索。

好的,因为有些人认为在训练时存在过程监督等等,但在推理时,这一切都只是一个前向传递。不,这当然不可能,因为在测试时所花费的计算量。它在测试时非常明显地正在进行搜索。

我认为它在训练时被训练成重现当前问题最好的可用思维链,基本上就像 AlphaZero 风格的训练一样。但它也在测试时在思维链空间中进行搜索。这在显而易见的迹象中是显而易见的,这就是它正在扩展的计算量,例如标记的数量和延迟。

还有其他迹象表明这种事情正在发生吗?例如,它可能探索了一个特定区域,然后在整合之后,它现在消失了。所以当你与模型交谈时,它就像忘记了它的一部分想法一样。是的,老实说,这有点太具体了。我没有关于 Oran 正在做什么的内部信息,所以我只能推测。好的。

所以像 Noam Brown 这样的人,他们对这种新的测试时间缩放定律非常看好。当然,我喜欢 O1Pro。我认为它真的非常好。从质量上来说,这是一个很大的改进。你对此怎么看?当然。所以测试时间缩放定律基本上是这种观察结果,即如果你扩展更多的计算量,如果你搜索得更远,你就会看到精度相应的提高。

顺便说一句,这种关系是对数关系。因此,精度随着计算量的增加而对数增加。虽然这并不是

真正的新事物,例如,每当你进行测试时间搜索时,你都会看到这种关系。例如,如果你正在进行蛮力程序搜索,你就会发现你解决问题的能力会随着计算量的增加而对数增加。如果你有更多的计算量,你就可以在可能的程序空间中搜索得更远,并且你可以对数地找到更多的解决方案。所以每当你进行任何类型的测试时间搜索时,你都会看到这种关系。

你目前的常用模型是什么,你用它做什么?在大多数情况下,我使用的是 Gemini Advanced。实际上,我刚刚开始使用新的 Gemini Flash,也就是最新的那个。我也是。所以我正在为 Gemini Advanced 付费。我也在使用 Cloud 3.5。我认为它非常适合编程。所以我正在使用这两个。你使用大型语言模型进行编程的工作流程是什么?

我在编程时并没有太多地使用大型语言模型,但是通常,如果我目前面临一个我认为可能适合大型语言模型的问题,我会打开我的浏览器并提示大型语言模型,并要求它提供一个执行 X、Y、Z 的函数。虽然它通常在第一次尝试时并不真正有效,但在进行一些调试和调整之后,我认为它是一个很大的省时器。

你在编程时看到了哪些类型的故障模式?你的意思是 Alalamps——好吧,所以故障模式根据你使用的模型而有所不同。我认为总的来说,SNES 3.5,接近 3.5 个站点是最好的一个。但有时,你可能会——

完全没有理由存在的代码,例如未使用的变量或代码做出的未经传入数据验证的假设。因此,很明显,代码是根据统计可能性生成的。没有努力使其自洽,使其正确,事先尝试执行它等等。

所以我认为实际上还有很大的改进空间。你可以想象未来的基于大型语言模型的软件开发人员助手实际上会在你提示它们时执行所有这些操作,实际上会为你编写代码,然后在实际向你展示之前尝试自己调试它。你对大型语言模型代理系统有什么看法,这些系统现在非常流行?

对,所以,你知道,代理已经流行了一段时间了。人们开始谈论代理是未来某事,就像,你知道,大约两年前,大约一年半前。到目前为止,代理并没有真正流行起来。所以代理有一些……所以这里根本的问题是大型语言模型并不完全可靠。你知道,如果你查看大型语言模型的一次前向传递,那基本上……

你可以将大型语言模型视为一台猜测机器,对吧?它做出的猜测比随机猜测要好得多,这很明显。它们是非常有用的猜测。它们在方向上是准确的,但它们有一定的出错概率。

当你查看代理工作流程时,你正在将许多这样的猜测链接起来。因此,你最终不会到达你想要到达的地方的可能性会随着你这样链接更多猜测而急剧增加。所以这是最大的瓶颈。代理不可靠。它们只是没有足够的自主性。所以人们说,有了更好的模型,这个问题就会得到解决。

我认为这是一个经验性问题。我正在等待看看代理工作流程何时真正开始工作。我认为我们今天还没有达到那个水平。

我对这一点的立场已经稍微软化了一点。我同意,因为存在歧义问题,它们被误导了。当你将它们链接起来时,它们被严重误导了。但是,拥有更多计算能力确实有一些好处。所以我采访了撰写 AI 科学家论文的那些人。当然,如果你使用 Claude Sonnet 3.5 并说,为我生成一篇完整的论文,它将是难以置信的平庸。它只是一个草图。

他们所做的是将其分解成许多代理工作者,这些工作者只是,你知道,在谷歌地图的类比中,只是不断放大、放大、放大很多很多次。它产生了明显更好的结果。是的,这是有道理的。我认为这基本上符合我们之前讨论过的关于

2 系统类似于具有强大护栏的迭代 1 系统的想法。护栏非常重要。因此,在这种情况下,上层结构由人类程序员提供。人类程序员正在将问题分解成正确的问题,并且有点像以正确的方式协调整个事情。然后每个子问题实际上都可以通过猜测和产生足够好的猜测来解决。

太棒了。ARC v2 什么时候推出?明年年初,大概。所以我们目前正在完成人类测试。正如我提到的,每个谜题都将由一群我们知道可以解决的人来解决,并且我们有一些数据可以判断它对普通人的难度有多大。目标是拥有三个难度校准的集合。因此,如果你在公共评估中获得分数,

并且你没有过度拟合该数据集,你可以非常有信心,你将在其他两个集合中获得非常相似的分数。当你用人类进行测试时,你知道,你在你的智力衡量标准中写到了这一点,你知道,智力的一种观点是存在这个 G 因子,而另一种观点是它非常专业化。你的实验是否揭示了,你知道,一群人在所有任务中都表现得相当好,或者你是否看到了巨大的专业化?

不,绝对是这样,有些人就是更聪明,他们只是更擅长解决 R 任务。你确实在人类测试数据中看到了这一点。那么长尾呢?你是否在任务类型中看到了专业化,或者它是否相当平坦?我认为它相当平坦。我的意思是,你要么擅长它,要么不擅长。有趣。弗朗索瓦·肖莱,很荣幸邀请你参加节目。非常感谢你。非常感谢你邀请我。很高兴。