We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode How Machines Learn to Ignore the Noise (Kevin Ellis + Zenna Tavares)

How Machines Learn to Ignore the Noise (Kevin Ellis + Zenna Tavares)

2025/4/8
logo of podcast Machine Learning Street Talk (MLST)

Machine Learning Street Talk (MLST)

AI Deep Dive AI Chapters Transcript
People
K
Kevin Ellis
Z
Zenna Tavares
Topics
Kevin Ellis: 我认为,构建更智能的AI的关键在于结合基于规则的符号推理和基于模式的直觉学习。这两种方法的结合,能够有效解决复杂的难题,例如ARC挑战。此外,组合性和抽象性是构建复杂模型的关键,但同时也面临着组合爆炸和信息过载的挑战。我们需要构建能够探索、实验和构建世界模型的AI,就像人类学习新事物一样。 在DreamCoder论文中,我们使用了wake-sleep策略,让模型能够通过“做梦”来扩展知识,并在清醒阶段将这些知识整合到模型中。这使得模型能够适应分布变化,并更好地解决问题。 在与Zenna Tavares合作的论文中,我们比较了归纳学习和转导学习两种方法。归纳学习通过生成程序来解决问题,而转导学习则直接输出结果。这两种方法各有优劣,可以结合使用。 我们发现,在某些问题上,仔细思考并用语言表达解决方案会降低效率。因此,我们需要构建能够结合这两种方法的系统,并能够根据问题的性质选择合适的策略。 在未来的研究中,我们将继续探索如何构建更强大的组合性模型,并解决组合爆炸和信息过载的问题。我们还将探索如何构建能够从少量数据中学习抽象知识的模型,并将其应用于现实世界中的问题。 Zenna Tavares: 我认为,构建更像人类的AI的关键在于从更少的例子中学习更抽象的知识,并能够主动探索和实验,而不是被动接收大量数据。 组合性是一把双刃剑,它既强大又容易让人不知所措。我们需要构建能够有效引导搜索空间的模型,并学习组合语言的基本原子。 在构建世界模型时,我们需要避免构建那些硬编码大量知识表示和启发式的系统。我们应该构建能够像人类一样学习与新事物互动的系统,而不是通过大规模模仿学习。 在我们的研究中,我们使用了结合不同方法的组合方法,包括归纳模型和转导模型。归纳模型输出一个程序,转导模型直接输出结果。这两种方法各有优劣,可以结合使用。 在未来的研究中,我们将继续探索如何构建能够进行贝叶斯推理的系统,并从第一性原理出发构建智能机器。我们还将探索如何构建能够学习和使用抽象知识的系统,并将其应用于现实世界中的问题。

Deep Dive

Shownotes Transcript

你正在根据极少的数据即时构建模型,但你不是被动地接收数据。你必须主动去探究事物、推动事物、尝试各种方法。

组合性是一种双刃剑。我们在第一波符号人工智能浪潮中就看到了这一点,当时人们试图构建这种组合性产生式系统来解决问题。问题在于,你立即会遇到组合爆炸的问题,即你可以表示的事物数量呈指数级增长。你未必有任何方法能够引导自己穿过这个空间,找到那些在当前情况下可能或有意义的概念。

所以你可以想无数的事情,所以事情可能非常偏离分布。你既无比强大,又无比地被可能性所淹没。我们能否从第一性原理出发构建事物?你知道,我认为很难说什么是思考,什么不是思考。似乎思考的核心部分是一种循序渐进的过程。如果你要求人们仔细思考并用语言表达解决方案,他们实际上会做得更糟。

规模显然是正确的,对吧?学习显然也是正确的。我认为这是正确的,而且显然是正确的,即程序、编程语言是组合性的,对吧?我们通过理解各个部分,然后将它们组合在一起构建越来越复杂的部分,从而构建越来越复杂的程序。

我们人类所做的假设发展大多是这样的形式,无论是个人还是整个科学界都是如此。整个科学界共同寻找假设,然后我们在像这样的会议上共同修改它们。因此,我认为说我们应该构建具有这种改进过程的系统是很自然的。

试图将这一过程机械化的一大难题是,如何引导或强化良好的改进路径?我认为另一个重要的方面是,凯文提到的这种抽象层次结构,

我认为当前关于世界模型的讨论中一个被忽视的关键点是,并不存在单一的世界模型。你可以从多个不同的层次来理解事物。你可以为几乎任何事物构建多个不同的模型。这里有一个摄像头。我对这个摄像机的运作方式有一个模型,即我按下这个按钮,就会拍摄一张图像。但我也可以理解电路中电线的内部结构。所以我可以深入到摄像机的传感器。

所有这些都是不同的模型,它们对你需要用该模型做的事情很有用。我们想要避免构建那种像弗兰肯斯坦式的系统,我们在其中硬编码大量不同的知识表示和启发式方法。但在这些情况下,正如你所暗示的那样,需要聪明的人来观察世界,然后说,好的,这些是归纳偏置。让我把这些编码到系统中。

我们认为,日常科学的底层原理,例如我们如何形成假设,如何修正这些信念,如何采取行动来了解世界是如何运作的,与应用于真实科学的日常科学中的原理相同。因此,我们希望系统能够做到这一点,能够学习如何以一种不依赖于大规模模仿学习的方式与新的玩具、设备和界面进行交互,对吧?这就像思考。

我是本杰明·克鲁齐尔。我正在创办一个名为Tufa Labs的人工智能研究实验室。它由过去涉及机器学习的风险投资提供资金。所以我们是一个由一群高度积极主动和努力工作的人组成的团队。我们将要做的主要工作是尝试创建能够有效推理和长期推理的模型,尝试进行AGI研究。

一大优势是,由于我们起步较早,作为Tufa Labs的新成员,你将拥有高度的自由和高影响力。你可以在tufalabs.ai上查看职位信息。我想让机器以更像人的方式学习,特别是从更少的例子中学习更抽象的知识。我们最近一直在研究世界模型和试图主动发现符号知识的东西。

我对人们所做的一切都不感兴趣,但我特别感兴趣的是人们特别擅长的事情,但我们今天正在构建的人工智能往往不太擅长的事情。

因此,从几个例子中学习,泛化到非常不同的情况,学习你可以交流的知识,而不是仅仅嵌入到权重矩阵中,以及学习可以在权重矩阵和符号知识之间进行合作的东西。是的,你好,我是泽娜。我是Basis的联合创始人兼联席主任。我和凯文一起读研究生。我们有很多共同的兴趣,广泛地试图理解和构建智能。

在BASIS内部,我们把这作为目标,但我们也关心科学和社会问题。所以我有很多很多兴趣,在某种程度上,我已经建立了一个组织,这样我就可以做所有我认为令人愉快的事情。所以我认为从规模化方面有很多好的经验教训。我们确实想要能够利用我们拥有的新硬件的算法。

与此同时,这并不是全部。我认为我们个人的信念是,这不会带我们走完全程。而且,从实际角度来看,还有其他人显然正在努力承担这项重任。如果它确实能带我们走完全程,那么也许我们应该采取对冲策略,做一些利用我们拥有的惊人的GPU和惊人的预训练模型的事情,但也利用来自认知科学、经典人工智能等等的想法。扎伊纳布,人类是如何从例子中学习的?

我认为有很多可能的答案。你知道,我,你知道,在某种程度上

相信贝叶斯范式,对吧,那就是你对世界是如何运作的有一些信念。当你观察到例子时,你会将这些知识融入你对世界是如何运作的当前假设中。但这只是一个非常抽象的理论。问题是,这实际上是如何实现的?而且,你知道,现实情况是它可能是近似的。它可能是,你知道,我们并没有进行精确的贝叶斯推理。所以有一个很好的基础来思考你应该如何,你知道,一个理想的代理应该如何整合知识。

然后就是关于如何构建能够做到这一点的系统的实际问题,对吧?正如凯文所说,

我们非常不喜欢大规模深度机器学习,我们正在构建这些工具,我们正在使用这些工具,我想说的是,我认为我们所做的工作和我们想要做的工作之间的主要区别在于,我们能否从第一性原理出发构建事物,对吧?很多,你知道,当前的主流机器学习基本上是大规模模仿学习,这是因为它非常有效,对吧?它正在产生所有这些令人惊叹的工具

但从我的科学角度和工程角度来看,我们能否理解一些关于如何从头开始构建智能机器的原理?我认为有一些部分是正确的,不确定性、因果关系、一般的推理,但还有很多我们不知道的东西,对吧?所以,拥有一个研究项目的一部分就是试图找出这些缺失的部分。凯文,组合性的重要性是什么?什么是组合性?组合性在不同的情况下有很多不同的含义。我认为我们现在正在使用的组合性是指,你可能在一个情境中学到了一些原子知识,但你可以用这些小的知识片段构建更大的结构,以便推断到可能甚至超出分布的新情境。所以我认为这对于能够在环境中学习非常重要

不像完全陌生的世界。这不像你可以把自己放到一个完全陌生的世界中,然后立即变得完全胜任。但如果你在一个正在变化的世界中,但构建块是相同的,因果机制正在被重复使用,那么组合性和能够将知识分解成片段然后重新组合到新情境中的方法就至关重要。

非常酷。我的意思是,作为对这一点的补充,凯文,我看了你三个月前发布的精彩YouTube演讲,你引用了哈佛大学的伊丽莎白·斯佩尔克。她是一位心理学家,她说,拥有可以用先天语言表达的无限多个概念会导致组合性思维的诅咒。你能解释她是什么意思吗?是的,斯佩尔克很棒。

她指出的重点是,组合性是一种双刃剑。我们在第一波符号人工智能浪潮中就看到了这一点,当时人们试图构建这种组合性产生式系统来解决问题。问题在于,你立即会遇到组合爆炸的问题,即你可以表示的事物数量呈指数级增长。

而且你未必有任何方法能够引导自己穿过这个空间,找到那些在当前情况下可能或有意义的概念。所以你可以想无数的事情,所以事情可能非常偏离分布。所以你既无比强大,又无比地被可能性所淹没。

所以我认为我们现在看到的是,你可以通过学习来指导程序空间上的搜索来解决这种组合性诅咒。

并通过学习组合语言的基本原子并将它们视为神经网络。当我们设计能够导航组合空间的人工智能算法时,它是如何工作的?也许这与人类是如何做到这一点的相比如何?在我看来,组合语言最有趣的例子之一就是编程语言,对吧?所以我认为这是一种

这是正确的,而且显然是正确的,即编程语言是组合性的。我们通过理解各个部分,然后将它们组合在一起构建越来越复杂的部分,从而构建越来越复杂的程序。编程语言和自然语言之间的区别之一是,编程语言是严格组合性的,而自然语言则存在所有这些启发式方法,短语是你必须学习的东西。

但我们如何构建构建组合结构的系统?有很多方法。许多老式的方法都类似于从语法开始,扩展语法,搜索语法,并尝试通过搜索语法空间来找到程序。现在人们显然正在使用语言模型来生成程序和组合结构。所以有一种有趣的……

我想说的是,方法的范围,你知道,这是一个问题,即你将多少关于组合结构的语义知识融入你的模型中,或者它完全是根据例子进行数据驱动的。

我们都做过这两种工作,并且仍在继续做这两种工作。但正如凯文所说,挑战在于,如果你有一个组合结构,它通常是无限维的,这是一个非常难以搜索的空间。因此,你需要聪明的方法来尝试在这个广阔的空间中找到结构、程序或任何其他东西。

那么,凯文,有没有一种有原则的方法来找到一组可以组合在一起构建这些高级抽象的原始抽象?我认为某些原始基集可能严格优于其他基集。

举个简单的例子,正如安娜所说,组合性的最佳例子之一是编程语言。我认为编程语言随着时间的推移已经得到了改进。而且,让一种语言变得更糟很容易,对吧?我可以通过一百万种方式破坏Python。因此,显然,在组合系统之间一定存在某种偏序关系,其中一些优于其他一些。

但我认为在完全通用的情况下,这确实取决于你将要面对的问题和环境的类型。我认为你在这样一个事实中看到了这一点,即我们有大量的不同编程语言。我们实际上并没有

一种最好的编程语言,我们有一种帕累托最优解。在神经网络或类中,特别是神经网络是一种架构,对吧,它实现了一些算法。你可以在Python中实现一个算法,对吧?贝叶斯范式是一个规范模型。所以它说,一个理想的系统应该做什么?

基本上不考虑计算。你也可以说,如果你的计算能力有限,或者你必须考虑应该使用多少计算能力,那么理想的系统会做什么?所以我并不认为它一定是自下而上与自上而下的,至少在这个轴上是这样。

但你可以考虑组合方法,这些方法结合了不同类型的系统。凯文开始撰写的论文,我们联手合作完成,使用了多种方法的组合。所以凯文肯定还会详细介绍,但我们有一个归纳模型和一个转导模型。在Arc的情况下,归纳模型是一个程序,该程序将输入转换为输出。

就像一个Python程序,而转导模型则直接根据输入输出输出网格。

所以我认为考虑不同的轴很重要。一个是函数的表示是什么?是Python程序还是神经网络?另一个是在某种意义上,你正在寻找的事物的类型签名是什么?你是直接输出最终解决方案,还是输出一个可以应用于输入的函数?所以我们已经解释了

探索了这种可能性网格的一小部分,但我认为我们还可以考虑更多。阿迪尔,你想……所以我喜欢你把它描述成类型签名。从某种意义上说,解决问题的符号和神经方式的输入和输出通常非常不同。如果你试图解决一个纯转换器的问题,我的意思是,输入到输出,就像我们在转导模型中所做的那样,你不会构建这些中间假设。

当你拥有这些符号组合语言时,例如当你进行程序合成时,

你试图学习的事物的实际类型是不同的。当我们考虑比较神经方法和符号方法时,它们通常会混淆这些不同的因素。当我们做这项工作时,我们部分是在比较神经方法和符号方法,但也部分是在比较这两种不同的问题解决风格。一种是,你仔细思考一个问题,并认真思考一个明确的解决方法,一种你可以

也许可以用符号语言(代码或语言)表达的方法,然后将其与这种更直观、更隐含、更具转导性的预测方法进行对比。碰巧的是,将它映射到这种神经符号划分是很方便的。但你可以完全想象出归纳方法,这种方法会寻找描述如何解决问题的向量。事实上,有一些ARC团队做了这件事,而且它确实有效,这真的很酷。

正如泽娜所说,实际上存在各种可能性。我们正在尝试对解决这些归纳学习问题的不同方法进行非常仔细的研究。顺便说一句,有一篇很棒的论文。据我了解,有两个LAMA 80亿模型。一个是归纳模型。一个是转导模型。在一个例子中,你产生一个显式函数。你做类似的事情,你知道,测试时间推理。你用格林布拉特的方法来做。这是我的动词。我用的是瑞安·格林布拉特。我生成了大量的

示例程序并选择好的程序。然后你有了转导方法,你直接计算解决方案,但仍然通过增加测试示例来进行一些转导主动微调。集成方法是,你尝试查看是否有一个归纳函数有效,如果没有,则回退到转导。论文中有一个漂亮的维恩图,你展示了转导适用于某些类型的问题,归纳适用于其他类型的问题,

帮助我理解。有趣的是,这确实与认知科学中的一些经典发现有关,我们知道,对于某些类型的问题,如果你要求人们仔细思考并用语言表达解决方案,他们实际上会做得更糟。例如,如果你试图让人们推断一个有例外的规则,或者如果你让人们尝试做更多统计学习任务,例如学习不同符号之间的关联,

让他们思考一下并明确地用语言表达解决方案会降低性能。我们凭经验知道这是真的,托马斯·格里菲斯有一篇非常好的论文表明,大型语言模型也有类似的分裂。我认为我们在抽象推理语料库中重新发现了这一点。因此,我们发现,对于某些类型的问题,如果你让系统认真思考并仔细研究成千上万种不同的可能性并系统地测试它们,

这实际上比让系统模糊地给出答案更糟糕,因为转导归纳如此系统地扫描可能性与仅仅模糊地给出答案相比……因为你可以检查归纳的正确性

这意味着你可以系统地思考一段时间,如果你找不到任何看起来对你来说是好解释的东西,你可以依靠你的直觉。所以有一种非常自然的方法来集成或组合这两种方法。我们不需要一种方法来查看问题并决定你是否应该用符号明确地思考,或者你是否应该使用你的直觉,因为

我们可以验证符号假设的正确性。一种是思考,另一种不是思考吗?例如,如果我做了大量的转导主动微调和增强,并且我给出了一个亚符号的直观解决方案,而不是通过生成大量的显式函数来进行思考,那么一种是思考,另一种不是思考吗?我想这取决于你对思考的定义。你对思考的定义是什么?现在人们说思考就是O1所做的,所以也许这就是思考。

我认为很难说什么是思考,什么不是思考。似乎思考的核心部分是一个循序渐进的过程,在这个过程中,你经历某种内部心理计算,修正你的信念。我认为很难在它周围画一个强有力的圆圈。再说一次,我认为知识表示之间存在区别

在这种情况下,你可以有一个符号程序,也可以有一个纯粹的神经连接到系统,输出答案,与你产生的程序类型相比。同样,你可以组合和组合所有不同的可能性,

我们刚才谈到,当你使用这种术语中的归纳模型时,我们有一个输出Python程序的系统。然后我们可以使用这个Python程序来检查它是否与训练示例一致。这是一个非常强的信号,表明它是否将成为测试示例的有效解决方案。

这目前对我们的转导模型来说并不成立,对吧?但你可以想象一个这样的系统,对吧?在那里,你可以拥有神经网络的混乱,但你仍然能够检查它是否与示例一致。但关于这个问题,你知道,那是,

思考,我认为所有这些都是不同版本的思考。我认为有一种缓慢的、审慎的假设形成的思考概念,这可能并没有完全被我们在ARC中使用的任何方法完全捕捉到,并且可能更像O1正在做的事情,在那里你有一种可变时间的计算,其中

你不会一步一步地表达事情,而是理解你需要做多少才能回答一个问题,这有点像思考。也许一个更狭义的思考版本是推理,在那里你拥有纯粹的经典推理形式,在那里你有一些公理,你从中得出一些结论。然后你有了我们人类每天都在做的常识推理,以弄清楚如何过好我们的日常生活。

我想象有一种方法可以考虑一般的推理,这被广泛地解释为根据我们的知识形成信念,但允许我们像在经典形式主义中那样看到世界中的混乱。

在集成方法中,你对归纳进行了偏差。所以你首先想找到一个归纳解决方案,然后回退到转导。这是否暗示你认为函数版本有一些特别之处?我认为函数版本更正则化。就像它更难过拟合一样。

这并非不可能,但使用这些现代高级编程语言进行过拟合非常困难。它们的设计初衷就是表达通用计算。神经网络可以做到这一点。特别是,正如你所说,在大数据极限中,它们往往最终会学习开始真正捕捉你想要的东西的表示。

但这并不总是正确的,而且它们通常会在数据点周围进行插值。所以我认为,如果你能想出一个清晰的、明确可表达的描述,它实际上适用于你试图解决的问题,

那么这可能比仅仅使用基于向量的直观插值更能泛化。泽娜,有没有更好的方法,你知道,也许以一种有原则的方式,结合转导和归纳?有几种不同的方法。所以,再说一次,我认为你可以考虑的是,你是否可以有一个转导-归纳模型,其中底层转换表示类似于神经网络,但是……

你可以将其逐点应用于每个arc实例作为输入,对吧?这将使你能够通过在训练集上对其进行测试来获得可能更强的归纳偏差,即这是否是正确的示例。也许一个更有趣的,我不知道这是否更有原则,但更有趣的探索空间

是在表示方面。例如,正常的程序能给你带来什么?例如,你知道,从根本上来说,在某些情况下使用Python程序与神经网络相比有什么好处?什么是,例如,一个,你知道,一个神经网络的好处,呃,

在编码转换方面,对吧?所以我们谈到了一些关于神经网络可能捕捉转换的混乱部分的内容。在Arc的情况下,有些事情很难用Python程序来描述,对吧?如果你坐下来尝试编写一个程序,这实际上相当困难,因为只是发生了奇怪而复杂的事情。

因此,你知道,存在整个神经符号编程范式,即,好的,让我们采用一些神经组件,让我们采用一些经典的程序组件,并将它们组合在一起。但你可能会尝试自下而上地思考,例如,是否有办法从根本上重构编程语言,对吧?如果你把它们都看作是在所有可能的编程语言的海洋中的不同编程语言,我们已经在这个空间中接触到非常少量的语言,

还存在什么其他东西,对吧?我不知道,但我认为我们实际上还没有触及计算和程序的不同表示的表面。我们现在正在考虑的一部分是,我们能否找到不仅仅是更深入的集成,而是像,你知道,关于我们原则上想要从程序表示中得到什么以及我们不想要什么,对吧?

这很有趣。也许你可以详细说明一下,凯文。在DreamCoder论文中,我们很快就会讨论到这一点,它使用了DSL。当然,我们可以使用Python之类的语言。也许你可以争辩说,高级编程语言之间存在某种计算等价性,因为它们过于不完整。这些不同的表达方式之间有什么区别?

是的,在第一代人工智能中,有一句谚语,你无法学习你无法表示的东西。我认为,你知道,要补充一下斯波基早些时候的引言,如果你的计算语言爆炸得太厉害,也许你可以表示它,但在实践意义上,它实际上并不是可学习的。所以在DreamCoder和许多其他使用特定领域语言的语言中,你通常无法表示你在Python中可以做到的所有事情。

现在有一个简单的解决方法。你可以引入一种逃生舱,即你有一些原语可以升级你的DSL,你的特定领域语言,使其实际上是图灵完备的。然后,在某种形式的意义上,你实际上确实涵盖了你在Python中可以做到的所有事情,但随后这种组合性诅咒就会咬你一口。你实际上无法在实践意义上学习任何东西。所以在我看来,在使用这些DSL与Lambda演算之后,

对于我们真正关心的问题类型,Python实际上要实用得多。这在Arc中是正确的,我认为当我们构建LLM代理时也是正确的,我认为当我们拥有视觉问答系统时也是正确的。在软件工程语言的设计之间存在有趣的趋同进化,这导致它们趋同于对我们人工智能中许多

问题真正关心的东西非常有用的东西。它们并不完美。我认为在这篇转导归纳论文中,我们确实看到Python实际上并没有涵盖我们关心的所有内容,但它比Lambda演算好得多。是的,我认为认识到编程语言的演变非常重要。凯文在开始时就说过这一点,对吧?最初的编程语言

基本上就像,你知道,长长的指令流,对吧?然后我们加入了越来越多的结构形式。有一整个结构化编程运动。然后我们有了像,你知道,我们今天在现代软件工程中使用的各种不同的语言家族,你知道,像Python这样的非常主流的语言,也许不太主流的语言,但在其他圈子里很流行,比如Haskell和函数式语言。

所以我认为关键在于,除了表达计算(这并不难做到)之外,我们可以在许多不同的系统中表达计算,我们已经开始构建越来越多的系统来帮助我们构建更好的程序,对吧?类结构、类型结构、不同的模块化结构。它们使我们能够在编程语言中编码更多关于世界的信息,以及更多,你知道,更有用,对吧?所以如果你把这看作是一种进化,

首先,正如凯文所说,我们已经达到了一个相当不错的水平,但也存在改进的空间。我们可能不会期望在100年后,所有事情都和现在一模一样。因此,我认为一个有趣的问题是,我们如何期望编程语言的演变?然后,当你把人工智能本身也考虑进去时,预测就变得更加困难了。现在我们看到的是这些有趣的组合:

例如,ChatGPT调用Python,Python又调用ChatGPT,这似乎正处于设计空间的变革时期。对我来说,看看这将如何随着时间的推移而演变,是一件很有趣的事情。

是的,我想,我们是否应该在算法中构建某种元编程?所以,你知道,也许从一个迭代的过程开始,重写规则和改进假设,而不是试图立即找到最终答案?答案是肯定的,对吧?我认为很难,

很难提出一个论据来说明为什么这必须是真的,对吧?但至少直觉上,对我来说,似乎很难总是能够一次性写出完全正确的程序,对吧?因此,在构建一个

模型、假设或程序(取决于上下文)并用更多信息对其进行修改方面,具有一定的价值。而这些额外的信息可能是,哦,它在某些特定用例中不起作用,或者它不支持证据。我们人类所做的许多假设发展都是这种形式,无论是作为个人,还是作为整个科学界,对吧?整个科学界共同寻找假设,然后我们在像这样的会议上共同修改它们。

因此,对我来说,很自然地说,我们应该构建具有这种细化过程的系统。在试图机械化这一过程时,其中一件难事是如何引导或强化良好的细化路径?你如何说,“这种推理模式或这种细化模式或这种细化路径是好的路径,而另一条路径是坏的。”

现在,让我们以现代机器学习为例,人们大多是基于人类示例的强化来做到这一点,或者如果你有一个明确定义的目标函数,那么如果你通过推理路径找到了正确的解决方案,你可以将信号反向传播到正确的解决方案。但这并非总是如此。这并非总是可能的。因此,我认为一个重大的开放性问题是如何构建能够

推理的系统,而推理的一部分是完善假设,而我们没有一种明确定义的、易于计算的目标函数,我们可以在最后对其进行评估。我认为,如果你能解决这个问题,你就能,你知道,

做得很好。非常酷。凯文,你对此有什么想法吗?是的,我只是想强调扎娜刚才说的,这其中很多都取决于能够检查你是否朝着正确的方向前进。是的。所以在我们与扎娜一起进行的工作中,当我们试图学习世界模型或用于ARC任务的程序时,我们也看到了这一点,因为我们有一些数据需要拟合,我们可以检查我们对数据的拟合情况。

我认为你也可以在像O1这样的东西中看到这一点,据我所知,他们主要是在数学问题上训练它,你可以检查你是否得到了正确的答案。

这是一个很大的开放性难题,我不确定我在这里有什么好主意,如何在无法真正检查你是否正确的情况下做到这一点。所以我真的不知道该怎么做,但这似乎非常重要。有趣的是,当你试图学习一个世界模型时,你实际上可以检查你是否做对了。你可以查看你的数据,你之前看到的东西,你可以说,好吧,我的模型是否正确地预测了这些数据?

凯文,在DreamCoder论文中,你帮助开创了这种唤醒-睡眠微调策略,本质上是模型可以做梦。它可以扩展它所知道的东西,然后在清醒阶段,它可以将这些梦作为假设重新整合。这绝对令人惊叹。当然,你在新的转导论文中使用了稍微不同的方法。但是你能告诉我们那里的哲学吗?

是的,那里的哲学实际上与你在许多机器学习中看到的东西紧密相连,你基于由自上而下的过程产生的合成数据来训练自下而上的模型。因此,我们经常试图在人工智能中解决某种逆问题。例如在视觉中,我们试图查看图像,然后推断三维结构。

但是从三维结构推断图像的正向过程要简单得多。这是一个渲染函数。因此,在唤醒/睡眠中,你采用某种正向过程,你想象或梦想它可能正向运行的各种方式,然后你学习如何反向运行。

因此,对于学习函数或程序来说,这意味着你正在想象程序,你正在运行它们,然后你回顾性地说,好吧,我刚刚想象了这个东西,我做了这件事。因此,当我看到这种行为时,我应该推断出这种程序。唤醒睡眠除了在合成数据之上进行训练之外,还带来了什么好处,那就是它是一种在从你自己的合成数据中学习以及学习如何制作更好的合成数据之间的来回。

所以这不仅仅是大量梦境的大批量处理,然后从梦境中获得一些金钱。而是你实际上醒来,进入世界,试图解决问题,然后根据你正在解决的问题调整你的合成数据分布。这允许你适应分布变化。你可能会认为世界以某种方式运作,你有一些梦,你从这些梦中学习,但然后你醒来,看到世界是不同的。然后在下一个睡眠周期中,你的梦会发生变化,以更好地匹配世界。

因此,唤醒和睡眠周期之间存在一种合作,它们在这个合成数据的大批量处理中交织在一起。我还认为,在智能系统中,当然在所有人工智能模型中,都存在一个抽象的组成部分。这是一个迭代的扩展和压缩,扩展和压缩。我们甚至在神经网络中也看到了这一点。你实际上希望能够覆盖分布的更多部分。我认为这就是组合性发挥作用的原因,也是为什么用程序进行唤醒/睡眠是好的原因。

因为当你拥有一种组合语言时,你可以将你之前学习到的两个原子知识片段粘合在一起,这是一种你从未真正见过,但又似乎合理的组合,你可能会看到,你应该让你的神经网络为这种组合做好准备。所以我认为这不是你想防范的事情。你不想说,哦,我需要

严格地将我的梦与我的清醒体验相匹配,你实际上希望它们超越这一点。当然,有趣的是,在DreamCoder中,这是一个明确的过程。我想你实际上可以认为归纳-转导论文也是同样的事情,但它使用了混音和检索增强生成。而且,你知道,因为在DreamCoder中,存在库的概念,以及扩展知识的概念。现在这个过程变得稍微分散了一些。我的意思是,你能

概述一下吗?是的,是的。所以我们正越来越多地转向隐式地执行DreamCoder所做的事情的方法,但将它们构建在大型基础模型之上。因此,与其拥有一个系统随着时间推移学习的符号概念的显式库,

不如说它拥有过去知道很好的代码,并使用神经网络生成类似的代码。这实际上就是库学习所做的。它总是说,你知道,我过去写过一些代码,我将学习一些函数,这将允许我在未来编写类似的代码。只是现在它以一种更柔和、更概率的方式完成。所以你,所以我认为你实际上想同时做这两件事。

关于软件工程师如何编写可重用的库,有一些非常有价值的东西,但是现在用人工智能系统编写正确的库是很困难的。不仅用人工智能自动调试程序很困难,而且调试整个程序库也很困难。

因此,作为一种折衷措施,你可以使用上下文学习来近似你从库中获得的那种抽象学习。但最终,我认为它们是互补的。我们并没有放弃库。我们只是说,存在一种易于实现且效果相当好的中间地带。

我们想构建一个知识库,并且存在一个探索-利用困境。为了更好地表达,这个库有多少熵,我们保留多少?是的,我认为一种思考方式就像程序员一样,为什么要构建库函数?我认为有几个不同的原因。首先,通过拥有一个函数,它可以让你以更紧凑的方式表达你正在尝试编写的当前程序。所以我有一些共享的结构,我可以在我正在尝试解决的当前任务中以各种不同的方式重用它。但另一个相关的原因更面向未来。因此,人们构建库不是为了他们的当前程序,而是期望他们自己或其他人将来会使用该功能。

因此,我认为你或许能够思考,甚至可以正式确定何时以及为什么需要一个库。这类似于,期望当前和未来的用途,它将使我的生活更轻松。我现在正在缓存这个东西,但也许将来某个时候会用到。我们作为软件工程师非正式地这样做。我们构建我们认为其他人最终会使用的东西。

我认为大脑可能也会,你知道,

做类似的事情,以一种非常含糊不清的方式。我们正在构建我们期望能够使用并且希望将来某个时候使用的结构。我们有这种缓存的计算,我们可以在未来的某个时间点重用它。这就是我大致的思考方式。你甚至可以尝试将其形式化,并将其在某种理性决策理论中兑现。凯文,我们如何测试我们推断出的这些抽象是否代表现实世界中的因果关系?

你需要真正进入世界,你需要有一个处于环境中的代理,它需要测试其模型是否忠实地描述了真实的因果机制。因此,它需要有一个动作空间,能够进行干预等等。因此,当我们只是试图学习函数时,很难判断你的抽象是否正确,对吧?从某种意义上说,可能有很多等效的方式来描述相同的函数空间。

但是一旦你将你的代理置于一个世界中,它必须实现一系列目标,它必须计划并干预事物,

那么你实际上可以证伪这些假设。相反,在程序综合中,你不会证伪库。你只是说,这现在不太有用。也许以后会有用,但现在没用。相反,如果你的程序对世界如何运作做出了强有力的论断,那么你就可以说,你知道,这与真实的因果机制并不相符。

非常有趣。我的意思是,我们应该引入你的秋季论文,Zeno,但我认为你可以说像ARK这样的东西是非代理的。ARK在某种意义上是非代理的,因为它没有,你知道,这是一个回归问题,对吧?没有,比如,交互性。你可以尝试以一种内部代理的方式来解决它,对吧?当我解决ARK问题时,我直觉上感觉我正在进行一些思维实验,试图,你知道,看看那个,测试那个,你知道,形成这个假设。但该领域本身并不需要我采取

任何类型的行动序列。相反,现实世界中的大多数事情并非如此。现实世界中的大多数事情都需要你随着时间的推移与系统进行交互。典型的例子就像游戏,对吧?如果我在玩某种电子游戏,我正在采取一些行动序列来尝试探索它。因此,秋季论文,也就是,你知道,第一个学生是一个名叫Ria Das的研究生。这是我和Ria、Josh的联合论文。

那里的目标是构建一个系统,该系统可以在观察与电子游戏的交互后合成电子游戏的源代码。背后的想法或背景命题是这样做是一种科学,对吧?如果你可以观察一些动态,并且可以推断出这些动态背后潜在世界的源代码,那就是类似于理解,那就是类似于构建一个关于这个世界如何运作的模型。

因此,我们在那篇论文中所做的事情是为某种类型的

交互式游戏构建一个小的DSL,它们之所以不是游戏,是因为没有外部奖励函数。它只是一个系统可以与其交互的环境。从人类提供的这些游戏或这些环境的轨迹中,自闭症,你知道,合成方法推断你的底层代码。我们想要在那里探索的关键事情之一是你可能称之为潜在状态的东西,对吧?所以是关于世界的一些事情,但你无法直接观察到。

现实世界充满了这样的事情,对吧?几乎所有东西都有一些我们无法观察到的隐藏状态。而这种隐藏状态通常非常复杂,对吧?动态的,对吧?它最好用某种随着时间推移而演变的程序来描述。因此,关键的贡献之一是,我们能否除了整个完整程序之外,还能推断出这种隐藏的潜在状态?但也许回到之前关于抽象的观点,在那项工作中,你知道,我们推断出的程序或模型

不是抽象的,对吧?它们是关于世界的某种基本事实模型。我们并不认为这就是,你知道,思维,人类思维的工作方式,甚至可能的工作方式,对吧?比如必须有一些抽象。必须有一些现实的部分,我们从我们的模型中省略或丢弃。

因此,你知道,一个很大的问题是,如何推断抽象模型?你如何推断出省略了现实某些部分的模型,以便,你知道,成为一种实用且有用的东西?所以我们并没有在Autumn中真正探索这一点,但这正是我们想要探索的事情,而且不仅仅是我们,社区中的其他人也是如此。所以我们认为在抽象中,你知道,她站在世界的顶端……

一定存在某种抽象层次结构。当我们处理感知输入时,例如,我的意思是,我们如何浏览该抽象层次结构?关于人们如何以不同的抽象级别思考问题,一件有趣的事情是,抽象通常是针对每个问题即时定义的。没有一个基本事实的抽象。

世界给你提供数据,你可以做Sora或Genie类型的世界模型,你真正地模拟完整的数据,你捕捉所有的像素,或者你可以做我们提倡的那种事情,你故意丢弃一部分信息。当你这样做时,我认为问题就变得约束不足了。为了引入需要告诉你哪些抽象是有价值的额外约束,

最简单的方法,而且肯定有效的方法是引入奖励。因此,如果你在环境中给出一个奖励信号,那么你可以说,一个好的抽象塔,即使它在多个级别上,也是一个允许你计划以获得奖励的塔。

你可以在Mu0中看到这一点,他们正在学习一种抽象的世界模型,它不是完全生成的,它只是预测奖励、策略、价值等等。在我们最近做的一些工作中,我们有这些模拟的机器人环境,机器人与环境互动以使用工具或机制,它看到像素,然后它试图在这些像素之上定义一些抽象。

而这些抽象故意忽略了许多细节。这是由Yichao Liang领导的工作。它被称为Visual Predicator。而且,你知道,我采取了这种博物馆的视角,有人给你一个奖励信号。我认为真正有趣的是,即使你没有告诉别人奖励是什么,

人们仍然可以玩一个新的物体、一个新的网络应用程序或一个新的设备,并形成一个抽象模型。我们仍在思考这在程序综合环境中是如何工作的。我们现在正在计划的许多合作都在试图回答这个问题,但我认为这是非常开放的。如果你没有奖励,显然人类仍然可以弄清楚

抽象模型,正如Zenno所说,省略了许多细节。但这更棘手,它可能与某些关于内在动机的规范理论有关,或者它可能类似于你希望对各种可能的奖励函数具有鲁棒性。这里有很多可能性。但是,在那种情况下,有没有一种有原则的方法来检测哪个是最佳的抽象级别?也许吧。我发现相当引人注目的框架是

资源理性框架。这基本上是说,你应该尽你所能利用你所能利用的资源。所以这可能是一个略微复杂的陈述,但其想法是你有一些信念,一些关于模型的可能任务或用途的分布。并且你有一些计算约束。你不能永远运行东西。

因此,我认为你可以兑现这个问题的一种方式,比如当你知道何时应该选择正确的抽象或你知道应该构建什么样的抽象时,就是说,好吧,我又有一些关于我将如何使用这个模型的信念,需要允许我回答允许我执行的任务,这些任务会产生计算成本,所以我应该考虑所有这些事情,并做最优的事情。

我认为另一个重要的方面是,凯文提到了这种抽象塔,

我认为当前关于世界模型的讨论中被某种程度上忽略的一件关键事情是,不存在单一的世界模型。你可以从多个不同的层次来理解事物。你可以为几乎任何事物构建多个不同的模型。这里有一个相机。我对这个相机的工作方式有一个模型,即我按下这个按钮,就会拍摄一张图像。但我也可以理解电路中电线的内部结构。所以我可以深入到相机中的传感器。

所有这些都是不同的模型,它们对于你需要用该模型做的事情是有用的。除了物理学之外,没有一个单一的正确答案,对吧?因此,我认为我们的一个关键目标是说,好吧,让我们接受这种多样性,对吧,并尝试找到包含

多种不同模型的模型表示,对吧?所以我一直在使用这个术语“多结构”来捕捉这个想法。我们将看看这个术语是否,你知道,是否会流行起来。但无论你称之为什幺,我们都需要编码现实的多种不同模型以及这些模型之间的关系,对吧?作为一个人类建模者,比如说一个正式的科学建模者,比如说我正在模拟COVID,我可以说,嗯,

我不知道,比如头发颜色在我的COVID模型中并不重要,对吧?但是模型和现实之间的这种关系在我的脑海中被编码为一个科学家。我们希望这种关系存在于计算形式主义本身之中。在我看来,这是一件很难的事情

就像科学计算机科学问题一样,我认为还没有完全被探索过。也许它只会从扩展数据中出现。我不知道。这是一个关于我们是否必须构建这些东西,或者它们是否会自行出现的问题。我们如何自动化这种认知觅食的过程?所以我想我们想要避免的是,我们想要避免

构建某种像弗兰肯斯坦系统一样的东西,我们正在硬编码大量不同的知识表示和用于推理这些表示的启发式方法。相反,我们想要一些看起来更像从第一性原理进行理性分析的东西。

当你这样做时,你会立即遇到困难的计算问题。你会得到一个很大的搜索空间。即使在内循环中,评估模型或抽象有多好也可能很困难,因为你需要回顾性地说,好吧,这对于我期望的推理任务来说会好吗?

因此,计算问题是一个我认为最好插入学习到的神经网络的地方,这些神经网络对分数等等的日常常识有很好的直觉,可以提出它们。它可以说,你知道,这段代码在这种情况下可能会有价值。但在提出许多不同的替代方案时,正如你所说,格林布拉特风格的,

更像是一种启发式方法,这样我们仍然可以拥有这种第一性原理的方式来说,你知道,这将是我期望的各种事物的一组很好的抽象。但是然后我们仍然可以利用我们从预训练的神经网络中获得的先验知识。我想广义的问题是需要多少人工工程和播种?是的,所以我认为如果你看看,比如说,贝叶斯认知计算模型的历史,

其中很多是由心理学家和认知科学家(如乔什·特南鲍姆等人)完成的。表达一些先验知识并表明人类做的事情类似于根据数据进行近似后验贝叶斯推理,这有一个真正引人注目且强大的历史。

但在这些情况下,正如你所暗示的那样,它需要聪明的人来看世界,并说:“好吧,这些是归纳偏差。让我将这些编码到系统中。”我认为人工智能的苦涩教训是,当你能够做到时,你不应该编码明确的归纳偏差。如果你有大量的数据和大量的计算能力,这将相对于从数据中学习这些偏差而失败。

所以在我的脑海里,关于你需要先验知识并且你可以结合数据来修正你的信念,有一些明显正确的事情。再说一次,我认为贝叶斯理论是一个很好的规范理论。但这并不意味着你必须,你知道,

坚持明确编码这些归纳偏差的经典传统。因此,我认为存在一种潜在的范式,即说,好吧,让我们编码先验知识,但让我们尝试尽可能隐式地学习这些先验知识。你从哪里学习这些?好吧,

这可能是现代机器学习中标准范式的一种,你从大量的数据中学习这些偏差。它们可能是比互联网数据更丰富的数据,对吧?你作为人类所做的一切。我可以观察你并推断出你的一些信念。

因此,你可以想象比互联网数据更丰富的数据来源,这将使我们能够更接近人类拥有的归纳偏差。所以我认为这很棘手,正如凯文所说,实际上实现这些系统。你会遇到困难的计算问题。

但我确实认为,广义地说,对大量数据进行归纳推理以学习隐式归纳偏差,而不是显式手工编码,是一条有希望的道路。凯文,也许我们应该从这个开始。什么是抽象?当然,在不同的上下文中,它的含义不同。但总是有隐藏细节的元素。

所以在编程语言中,抽象通常与lambda表达式同义。所以它是一个函数,它有变量。

并且它忽略了这些变量取什么值。从某种意义上说,Lambda抽象是一种抽象。在有时被称为因果抽象和因果关系的东西中,它也是,正如我所说,两种不同因果模型之间的某种类比或关系。更抽象的一个是忽略细节但仍然保留底层因果模型某种本质的那个。

所以它是一个在不同情况下含义不同的词,但我们在所有这些中听到的类比是,有一些细节被隐藏了,但保留了一些本质。如果我们一开始就有一个更丰富的本体论会怎样?所以,你知道,我们正在使用这些,你知道,像对称性、旋转、平移等等。你知道,如果我们开始做一些银河大脑的事情,比如因果关系和时间,并在那里放入一些不同的基函数呢?你认为这会有提升吗?

我想目前我们放入的原语的一个特点是,它们直接对应于对ARC网格的转换。从概念上讲,我认为添加你所说的这些银河大脑原理会很酷,但它们在我们要构建的实际转换方面对应的是什么?

我认为对于新的ARC方法来说,一个真正有希望的领域正是模型中的抽象,比如说转换程序本身。那么我的意思是什幺呢?所以现在,我们的方法和许多方法都综合了类似于Python程序的东西,或者说是Python程序。然后我们将这个Python程序应用于输入以获得输出,对吧?

嗯,但是那个Python程序是完全形成的,它不是抽象的,它包含了所有的细节,对吧?你可以运行它,这很好,因为你可以运行它,对吧?你可以看看它是否有效。直觉上,当你解决一个ARC问题时,至少对我来说,我不能代表其他人,你首先会找到一些抽象的部分

规则,对吧?你就像,好吧,我知道这个物体转换成了另一个物体,但我不太确定实际的颜色转换是什么,对吧?例如。然后我可以从那里开始说,好吧,实际的颜色转换可能是什么?所以,你知道,从概念上讲,你可以把它想象成你在脑海中写了一个带有某些漏洞的程序草图,然后这会给你一个方向去尝试填补这些漏洞,对吧?你可能会以一种方式填写它们,进行评估,然后返回并说,这不太对。

我们目前还没有,就像就我们正在制作的实际方法以及其他人正在制作的实际方法而言,这些抽象的程序表示。我认为这是我们可以实际构建的东西,

ARC转换的表示,它并非所有细节都已填写,但作为通往完整解决方案的局部解决方案,它仍然很有用,因此我认为很多我认为有很多这种形式的潜在方法,我们丰富了知识表示,这与你说的大不相同,例如构建一种新的本体论思想,而是说我们可以实际抽象出我们当前的

表示,这可能是一件强大的事情。凯文,当你解决ARC难题时,你能谈谈你那种有意识的策略吗?是的,所以科学非常直观,我不能完全……

用文字准确地描述我正在做的事情,它可能更像是我只是对输入进行去噪,并想象一下在我无法看到的那些部分它应该是什么样子。所以有些事情绝对只是感知上的,很难准确地说出来,除非说,你知道,你只是有点看到,有点去噪。其他时候,这是一个非常系统的思维过程。我脑子里混杂着不同的看法。

我看看它是否看起来走在正确的轨道上。我有一些半形成的假设。这是一个比格林布拉特式地输出数千个程序更具感知性和更动态的过程,我的意思是,需要明确的是,我们也这样做。

所以我认为过度反省听起来有点危险,有点误导。但我认为,即使你看看人们犯的错误类型,它们也不完全像这些AI系统犯的错误类型。

这意味着我们构建解决方案的动态可能有一些东西,我们并没有真正用任何这些方法来捕捉。好吧,我想只是比较转导和归纳,我认为归纳的一个好处是它更具组合性。所以我可以将程序混合搭配在一起。我不直观地理解如果你组合转导模型会发生什么。感觉它不会组合得很好。

但我们可以将这个卷积程序视为函数式编程。就像数据流图或类似的东西。在我看来,将这些数据流过滤器作为算法中的第一类似乎是一个好步骤。是的,你可以想象几乎像迭代地应用归纳模型和转导模型一样,所有部分,确保类型匹配。

你也可以想象几乎像一种REPL风格的方法来尝试解决ARK,对吧?所以我认为,你知道,

给你一个Arc解决方案,还有一个Arc问题,你有一个REPL,就像一个解释器环境,然后你可以编写代码,编写评估器,检查,编写更多代码。因此,与其创建一个你运行的一个大型转换,不如以更循序渐进的方式进行,你不断分析当前的解决方案,编写更多代码,进行检查。所以我认为Arc有一些方法,我们正在追求其中一些,看起来更像这样。

你正在进行一个循序渐进的过程,每一步都在生成代码,该代码可以是普通的Python代码,也可以是类似转导的转换,最终得到最终的解决方案。

是的,我喜欢这个主意。我的意思是,我认为迭代中有一些强大的东西,在某种程度上改进解决方案真的很有魔力。你对此怎么看,凯文?我非常同意。所以我认为在某种意义上,

你可能不需要它那么多在ARC中,因为你一次只解决一个问题。但是如果你考虑一下在一个世界中的代理,它正在学习如何与许多不同的因果机制进行交互,那么你的代理需要随着时间的推移积累知识。它需要修正它的信念。

因此,如果你有一些更具因式分解的东西,就像你所说的DAG,或者任何更具组合性地分解知识的东西。所以它不仅仅是一个程序,而是许多相互合作的小程序。

那么我认为它在Arc中可能会更好,而且更接近你需要的东西,它可以随着时间的推移增长它的知识。所以Zenas,Arc的一些解决方案,我们有Greenblatt,当然我们还有其他人与Wending和Kevin一起。基本上,这是一个扩展,我们进行了大量的测试时间计算。我认为在你的论文中,凯文,你把它解释为摊销梦想

我想问题是,这样做大规模扩展和所有这些计算是否符合ARK的精神?这就是Cholet想要的吗?好吧,我认为我们必须问Cholet他想要什么。也许我们应该。但你认为他会说什么?我认为,你知道,Cholet多次说过ARK是一个不完美的机器。

基准。我认为有一些方法可以尝试解决ARK,这些方法不一定能带来你可能想要或Sholei可能想要的根本性见解。也有一些更根本的方法。我认为我们采取的方法是两者的混合,对吧?我们当然在里面有一些ARK技巧来尝试使其工作。当然,我们也在尝试追求一些根本性的想法。所以,你知道,就

这种不断扩展的视野而言,我认为你越试图专门针对Arc的特殊性并通过说“好吧,这是Arc问题的有用元素。让我们包含它。这是另一个有用的元素。”来构建DSL,我认为你越偏离Arc意图的本质,但这是一个悬而未决的问题,有多少是必要的,对吧?你需要归纳偏差来解决Arc。

它们必须来自某个地方。所以几个月前我问Francois Chalet,你认为仅仅从Arc中的例子中,一种表格栅格方法就能解决Arc吗?Arc数据集作为一个整体是否包含足够的知识、信息?他认为有。他认为,如果你以所有

ARC问题为条件,这就足以解决ARC。你不需要在互联网数据上进行预训练,但根据经验来看,最好的解决方案至少部分是在互联网数据上进行预训练的。所以是的,我认为ARC的理想解决方案应该是简单而优雅的,不需要大量的ARC相关技巧和窍门。

我认为一个可靠的方法来尝试实现这一点是

引入其他与Arc相关或符合Arc精神或捕捉相同内容但并非完全是Arc的问题,并强制使用在Arc和这个和那个上都能工作的解决方案,以对抗人类可能编码的Arc特定的领域技巧。但是凯文,如果你可以设计一个更好的Arc,你会怎么做?好吧,这就是我们正在努力做的。这很令人沮丧。

是的,是的。所以这是Zen和我正在做的这个新项目Mara的一部分。所以我们想要一些在很多方面符合Arc精神的东西。所以我们试图从极少的例子中学习一些东西,然后推广到新的情况,但你可以与某些东西进行交互。所以它不太像MDP。它不像强化学习。它更像是一个模型构建练习。

我认为这在某些方面使得生成合成问题变得更加困难,因为生成大量的合成交互环境有点棘手。你可以做到,我相信我们会尝试做到。

但这至少是一种引入强制函数的方法,这种函数会导致你不会过度拟合暗色。Zainab,从哲学上讲,转导和归纳对我来说就像珠宝一样。从表达能力的角度来看,函数空间是相同的。那么为什么我们在经验上看到这两类之间的差异呢?很多都归结于模型或转换的表示。

同样,我认为编程语言是思考这个问题的好方法,对吧?其中神经网络是程序中的一类程序,即神经网络程序类,对吧?而Python程序显然是一个程序。对于任何特定的表示,有些事情将更容易编码,而有些事情将更难编码。如果语言是通用的,那么一切都是可能的,对吧?但有些事情更容易,有些事情更难。

事实证明,至少在某些类别的Arc问题中,有些问题很容易编码为Python程序,而有些问题更容易编码为直接的神经转换。

但是同样,我认为重要的是要区分转导和归纳中的两个不同的区别。一个是我现在正在谈论的,即程序化表示。另一个是,你正在构建的对象的类型是什么,对象的类型签名是什么?你的系统是否生成一个函数,该函数以其输入和arc实例作为输入并输出一个arc实例?

或者它是一个函数,它以整个arc问题作为输入,然后直接产生解决方案,对吧?我认为,你知道,我们在提交中有点混淆了这两件事,但你可以将这两件事分开并探索不同的组合。我认为这将导致不同的权衡和不同的方式。所以,是的,你知道,我……

我认为也许更具体一点,我认为Python程序显然擅长表达循环、确定性计算,以及你可能甚至有无限或可变边界数量的计算,而转换器模型就像一个有限状态机模型,对吧?它有一次通过,对吧?它产生一个输出。并且有很多有趣的工作表明这对应于特定类别的计算,并且有一些你可以表达的东西,也有一些你不能表达的东西。

所以是的,我认为很多都取决于程序的表示。是的,很有趣。因为我认为,凯文,从哲学上讲,它们是二元对立的,但正如Zeno刚才所说,从计算的角度来看,一个是转换器,所以它是自动机类中的有限状态自动机,而Python程序是图灵完备的。

但它们从根本上是不同的。但有一个奇怪的转折点,这种有限形式的计算神经网络可以做的事情可以表达人类不知道如何编写的程序。是的。所以我对此并没有真正的理论把握。我不能。

从理论上证明为什么神经网络能够进行你知道在Python中很难进行的计算。这是一个经验事实。我,你知道,Python显然可以做神经网络会非常努力的事情,所以正如我在论文中所说的那样,我们发现了一些事情,比如你知道计数,或者我们需要系统地对每个对象做同样的事情,Python非常擅长这一点,然后

其他东西,很难真正从理论上证明这一点。我只能说根据经验,这绝对是事实。就像我们用不同的随机种子运行归纳转导模型一样。我们想确保这不仅仅是随机性的产物。它实际上只是经验上是这样的,有一些类型的arc问题,我认为还有许多其他类型的arc问题,原则上Python可以做到,但神经网络更适合这项工作。

我认为是你们俩,我不确定,但有一篇关于通过示例进行程序归纳的论文发表在NeurIPS上。我和Winding谈过这件事。你们俩都在上面吗?还是只有你凯文?是我和Winding。哦,太棒了。告诉我们关于这个。所以这篇论文在某种意义上是我们第一次尝试做一些像DreamCoder风格的唤醒睡眠一样的事情,但在现代LLM环境中。它所做的是从一些人工编写的程序开始。

大约10到100个。这隐式地定义了代码上的生成模型,因为你可以用这些示例程序提示LLM,然后它会编写类似的程序。这意味着我们基本上有一个前向模型。我们可以想象程序,运行它们,看看它们做了什么,然后基于我们生成的这些程序来训练程序合成器。

我们发现仅仅这样做对于程序敏感的问题就相当不错。坦率地说,它比我在博士期间所做的许多lambda演算要有效得多。它用神经机制取代了许多符号机制。这样做,它能够利用近年来我们在规模上取得的许多进步。

到目前为止我所描述的那些事情,我们制作合成数据,然后尝试在其上进行合成,这就是我们在ARC论文中获得归纳模型的方法。在与Wen Ding合作的论文中,我们还引入了一个完整的唤醒睡眠周期,它尝试解决问题,然后记住这些解决方案,然后它会梦到这些解决方案的变化。这意味着如果你的先验与你真正关心的内容不匹配,

所以想象一下,你只认为你需要编写简短的程序,但现实世界却有很长的程序。然后你可以在简短的梦境数据上进行预训练,然后去遇到更难的问题,解决其中的一些问题,然后在下一个睡眠周期中,你会将你的模型微调到这个新的数据分布。它没有Dreamcoder的库学习组件。它具有这种更柔和的神经上下文学习类型的生成模型。

但我们试图将这个唤醒睡眠周期引入程序合成,但以一种更现代、更可扩展的方式。所以我在这里看到的是实用主义盛行。所以连接主义者正在采用混合模型和神经符号等等。也许甚至像你们阵营的人一样,你们也正在拥抱连接主义。你对此有什么看法?所以我认为,正如凯文在开始时所说的那样,有

规模方面显然是正确的,对吧?学习方面显然也是正确的,对吧?就像一个连接的架构允许你从大量数据中学习。符号架构方面也显然是正确的,因为我们现代社会的大部分都是建立在其之上的,对吧?

我认为一般规范性智能原则也是正确的。因此,鉴于此,那么问题是什么?

你能把我们知道是正确的事情组合起来,以一种有意义的方式吗?我认为你从各种不同的方式看到了这一点,对吧?所以从,你知道,让我们说,你知道,大型实验室,对吧?就像,你知道,OpenAI,他们有,你知道,他们在大量数据上训练的大型模型。

同样,但他们周围有这些支架,这些模型调用Python来进行一些计算。为什么是这样?为什么这是一件聪明的事情?因为Python是一种有效的语言,用于进行特定类别的计算,对于大量事情来说,它比神经网络有效得多,对吧?所以他们做出了某种

商业决策,对吧,拥有这种混合系统是有用的,对吧?从另一个角度来看,对吧,你知道,有一种符号系统的历史,它,你知道,从另一个角度来看,我意识到,你知道,你不能通过一系列命题公式来模拟整个世界,对吧?现实世界比这要混乱和复杂得多。所以我们想进行良好的推理,但我们必须处理现实的复杂性。所以这立即导致

可以同时做这两件事的架构。所以我认为,世界的复杂性和我们对推理和学习系统所期望的东西,都导致了思想的融合。现在,我认为这种融合是一种组合,对吧?采用这些系统,

将它们连接在一起。我认为真正的问题是,我们能否做得更好?我们能否从头开始重新设计具有我们想要的功能的系统,但其架构可能与我们今天拥有的系统不同?是的,我对此非常兴奋。使用LLM构建系统,使用所有东西的最佳组件。Zener,你正在构建基础,你能告诉我Everyday Science项目吗?

是的,Project Mara是BASIS中的一个项目。我们在BASIS中有一些项目,但Project Mara是一个新项目,由我和Kevin领导。所以这是一个为期三年的项目,我们试图在此基础上构建我们今天讨论的许多想法。真正专注于……

我想是四个组成部分,对吧?这就是MARA的含义:建模、抽象、推理和代理或行动,对吧?所以,你知道,作为一种近似,你可以把它想象成

主动arc,对吧?就像我们可以构建模拟世界、抽象世界、用这些模型推理或推理以找到这些模型的系统,但它们以交互的方式进行,对吧?他们必须成为环境的一部分,并采取行动来了解该环境是如何工作的。所以我们构建它的方式是做两大类事情。一个是开发新的基准和新的问题来解决。

另一个是开发新的算法来解决这些问题。我们做的第一件事是采用现有的基准,即Arc,并尽我们最大的努力尝试解决它,对吧?我们很可能会继续这样做,但我们也在开发新的基准。因此,在这个构建你可能称之为通用Mara系统的高级目标中,对吧?一个你可以将其插入世界并采取行动来了解世界、构建内部模型的系统,

我们专注于一个更窄的子集,这就是我们所说的日常科学。同样,我们今天在各种情况下都讨论过这个问题,但直觉是,你知道,有真正的科学,对吧?这就是我们作为化学家、生物学家和计算机科学家所做的,你知道,了解物理世界和人工世界。但也有日常科学,我们作为普通人、成年人和儿童所做的,对吧?我们了解,你知道,我酒店里新的空调系统或新的微波炉,对吧,或新的玩具。

我们认为日常科学背后的原理,例如我们如何形成假设?我们如何修正这些信念?我们如何采取行动来了解世界是如何运作的?日常科学中与真实科学相同的原理。所以我们想要能够做到这一点的系统,能够学习如何以一种不是大规模模仿学习的方式与新的玩具、设备和界面进行交互,对吧?这就像思考,回到你之前的问题,对吧?

作为一种真正的方法,对人工智能来说是一种科学方法,即使它实际上并没有发现新的有用的科学。所以,是的,所以联合项目和ARP是我们最初或最初的输出,这个ARP解决方案,这个交易归纳模型。

我们才刚刚开始计划整个项目和组建整个团队。也许凯文可以给我们他对此的看法和解释。这非常像Arc,因为你正在从非常少量的数据中动态地构建模型。

但你并没有被动地接收数据。你必须走出去,戳东西,推东西,尝试一下。所以Zen和我都在认知科学系读研究生,我认为作为一个认知科学家,好吧,认知科学相关,从这个角度来看非常令人兴奋。就像这是人类在日常生活中所做的科学一样的事情。

但我认为它在实践中也很重要,因为我们越来越多地构建这些AI代理,无论是在数字世界还是物理世界中。只要它们

它们的先验与它们所处的环境很好地一致,但是当它们面临一个新的网页,或者如果你想象一个机器人必须弄清楚如何使用一种新型洗碗机并且必须尝试不同的按钮,那实际上是相当困难的。你需要学习的更抽象的知识,我认为这是一个非常令人兴奋的挑战。在我们离开之前,我的意思是,你们在寻找投资者吗?你们在寻找研究人员吗?

我们当然在寻找研究人员。如果你是一位研究科学家、研究工程师,并且你想从事一些与一些大型实验室正在做的事情略有不同的困难和有趣的问题,那么我们会联系你。投资者?

这有点复杂。当然,你知道,BASE是一个非营利组织,所以如果你想捐款,请随意,你知道,随意。但是你知道,这个项目是有资金支持的,而且,你知道,我们有一个雄心勃勃的三年计划。我们显然可以使其更雄心勃勃,但我认为这已经相当困难了。

但是是的,我们只是很高兴开始并快速行动,并找到最优秀的人一起工作。所以,其他的合作者,如果你正在做相关的事情,那将是一个很酷的连接领域。很荣幸能见到你们。非常感谢你们,并继续努力。这很有趣。感谢你们的邀请。