Code:儿童黑客:构建更多具有人类特征的学习模型 2 实现(metaprimitives)

科技   2024-09-04 09:02   上海  

    Symbolic metaprogram search improves learning efficiency and explains rule learningin humans

符号元程序搜索提高了学习效率并解释了人类的规则学习

https://www.nature.com/articles/s41467-024-50966-x

用于重现图表和结果所需的代码已存储在开放科学基金会数据库中,网址为:https://osf.io/gq2hj/






摘要:

在人的一生中,人类似乎学习了各种规则,比如应用类别标签、遵循程序和解释因果关系。这些规则通常算法丰富,但尽管如此,它们还是在数据和计算极少的情况下被习得。基于程序学习的符号模型成功地解释了许多领域的规则学习,但随着程序复杂性的增加,性能迅速下降。如何将符号规则学习方法扩展到模拟人类在具有挑战性的领域的表现仍然不清楚。在这里,我们展示了在元程序空间上的符号搜索——即修订程序的程序——显著提高了学习效率。在一个包含100个算法丰富规则的行为基准上,这种方法比替代模型更准确地拟合了人类学习,同时也使用了少几个数量级的搜索。为了匹配人类中位数表现所需的计算与人类思考时间的保守估计一致。我们的结果表明,类似元程序的表示可能帮助人类学习者高效地习得规则。

介绍:

人类在一生中获得各种各样的概念,其中许多可以用规则来很好地描述,即在某种心理语言或思维语言中的符号表达1。例如,类别学习可以被描述为学习一条规则,该规则基于它们的个体特征接受或拒绝潜在的类别成员2-5。同样,程序学习可以被描述为获取一条规则,以确定哪些行为应该按什么顺序组合在一起6-8。理论学习也可以被描述为获取一个规则网络,解释各种因果关系9-11。人类规则学习确切的范围尚不清楚:即使他们能够描述各种各样的概念12,13,规则学习的理论也面临许多挑战14-16。此外,实际上有多少概念是用规则来表示的,这通常是一个难以回答的经验问题,如在关于人类如何处理英语过去时构造的辩论中所见17,18。即便如此,规则仍然是人类认知景观的一个重要部分。


此外,人们学习的许多规则在算法上都很丰富。它们超越了联想配对甚至简单的逻辑或算术公式,编码了一系列具有各种算法内容的步骤19。例如,儿童学习的基础知识算术规则需要模式匹配、条件推理、迭代、递归、维护状态和缓存部分结果。除了逻辑和数学,这些复杂的规则还出现在游戏玩法、社会推理、食品准备和自然语言理解等多样化的领域。

关于人类如何习得算法丰富规则的理论不仅需要解释任务表现,还必须捕捉人类学习的其他标志。虽然有很多,但这里我们关注三个。首先,表示应该是可解释的,支持我们在人类中看到的组合、解释、共享和重用1,20-23。其次,学习也应该可以从人们实际遇到的稀疏数据中进行24,25。第三,学习应该只需要适度的计算和搜索,与人类思考时间和认知资源的限制一致25,26。

一种规则学习理论将思维语言视为一种精神编程语言,学习通过构建类似程序的表示进行。例如,概念LIFT可能是一个简单的程序,结合了CAUSE、GO和UP的原语,大致意思是“使其上升”27。这种方法使人类学习类似于程序归纳28——发现程序以解释数据。人类学习新规则,就像计算机程序员编写新程序一样,流畅地操作广泛的计算空间,并似乎能够从稀疏数据中高效地构建可解释的结构19。符号程序通过将复杂计算分解为离散和语义有意义的部分——即更简单的计算——提供可解释的假设,这些假设支持模块化解释、重用和共享29。程序归纳模型通常也是数据高效的,从相对较少的观察中学习。人类学习已经在许多领域被建模为程序归纳,包括结构发现30、数字习得31、规则学习32、物理推理33、记忆34和文化传递35。它们甚至已经被应用于看似对基于程序的方法有抵抗力的领域,如知觉学习36-39、语言学习40-42和运动学习43,44。

尽管取得了成功,程序归纳模型面临着一个根本性的障碍:搜索的难题。可能程序的空间在程序长度和原始操作符数量上呈指数级增长;目前尚不清楚如何缩小搜索空间以防止组合爆炸45。虽然连续权重和可微误差函数将基于梯度的搜索扩展到任意复杂的神经网络46,但对符号程序的高度不连续空间并没有有效的搜索方法。对有效搜索机制的需求如此强烈,以至于它被假设为游戏47和童年48背后的驱动力,这突显了程序归纳模型缺乏这种能力的严重性。

为了帮助解决这个问题,本文关注一类可能帮助人们高效搜索类似程序内容的表示的假设。更具体地说,我们假设除了对象级内容,人们直接将复杂的推理形式纳入他们的假设。我们预测这样做会通过简化相关假设49并使它们更容易找到来重塑归纳偏差。

这一假设并不符合经典的Marr层次50。它提出了一个不是关于一般计算问题或特定表示的理论声明,而是关于一类表示,即介于计算和算法层次之间的声明。虽然许多算法层次的细节,如特定的搜索算法、特定领域,甚至个别元原语的内容,对我们的主张来说都不太重要但我们假设算法概念学习确实涉及一个不能涉及太多步骤的串行搜索过程。这些是对人类思维的算法层次约束,我们寻求与它们一致的算法。

因此,我们在一个名为 MPL(元程序学习器)的模型中实例化了这一假设,该模型将修正程序的元程序纳入其表示语言中。我们将 MPL 与人类,以及最近和经典的基线,在一个包含100个程序归纳问题的基准上进行测试


在描述 MPL 之前,我们先介绍任务领域并概述我们的基准。该领域包括列表函数51–54,学习者在这里会遇到成对的输入和输出数字列表的数据集。为了了解在该领域的学习如何类似于程序归纳,考虑列表函数 F,其中:

简短的观察让大多数人得出一个强有力的假设。他们注意到输出中的值连续出现两次,这表明有复制的过程。每个输入元素也以相同的顺序出现在输出中。这些特征共同暗示了一个迭代过程,比如:按出现的顺序重复每个元素两次。这个规则似乎没有强有力的竞争者,这种感觉在看到更多的例子后会增强:


在我们的实验中,人们可以看到多达十一个例子,但几乎所有的参与者在三个例子之内就习得了这个规则。程序归纳模型可能会假设学习者用类似下面的程序来表示它:


有些人可能会注意到,输出包含输入元素的一个子集,但似乎没有明显的模式。与 F 不同的是,在没有更多数据的情况下很难形成强有力的假设:

即使在研究了这些例子之后,许多人仍然感到困惑。大约有一半的参与者从未为G习得规则;其他人通常需要三到五个例子。那些确实习得规则的人可能会注意到几个不太可能的巧合。首先,G并不简单地将每个输入映射到相同的输出。其次,输入长度变化,但输出总是有六个元素。第三,许多但不是所有输入元素都出现在输出中(也许G使用某种测试或洗牌操作符来过滤元素)。第四,共享元素的顺序不同,所以过滤似乎不太可能。第五,输入中固定位置的元素被复制到输出中的固定位置。元素1变成元素3,2保持2,3变成1,5保持5,7变成6。最后,输出元素4总是4。

每个观察都通过对比数据中共享的结构来识别一个简单的模式。将它们结合起来就得到了规则:元素3、2、1、数字4,然后是元素5和7。虽然这个规则可以解释数据,但它看起来不寻常。尽管如此,我们仍然可以将其建模为以下程序:

它再次使用λ来创建一个绑定xs的函数,(λ xs ...)。从内部到外部处理剩余的表达式,(take 7 xs) 取前七个元素,(cut 6 ...) 移除第六个,(replace 4 4 ...) 将第四个替换为4,(swap 3 1 ...) 交换第一个和第三个。组合一些简单的操作可以表示一个不太可能的概念,但仍然可以从稀疏数据中学习。


像其他经典领域,如数值函数55-58和布尔函数2,3,5,49,59,列表函数可能表面上看起来抽象,专注于人类认知的一个小角落,但它们非常适合对人类如何学习规则进行实证研究和建模。数字和序列在人类学习研究中都有悠久而富有成效的历史8,37,60-63。实际上,列表函数对于测试概念学习中的程序学习模型特别有用,这些模型现在已经被用来解释数十个领域中的规则学习11,12,19,27,30-44。它们提供了一个通用且控制良好的环境,其中问题在难度和算法内容(该领域是图灵完备的)上差异很大,并且可以轻易地在人类和机器中进行测试。事实上,许多问题与日常任务有很强的相似性,例如筛选垃圾邮件(过滤);计算书架上的书(将单独的项目折叠成复合结果);按字母顺序排列名字列表(按标准排序);装饰一盘杯子蛋糕(在一系列项目上映射转换)。然而,类比并不意味着我们声称这些任务是等同的。在更自然的情况下,特定的上下文知识效应64可能有助于学习,但我们的结果(包括补充说明8中描述的复制)表明,在这个领域,像许多其他领域一样,人们可以迅速从稀疏数据中习得并应用规则。特别是,人类在我们任务上的表现远远高于偶然,本身就很有趣。


我们通过构建一个包含100个列表函数的基准来研究人类和机器的概念学习,这些函数在可学习性上差异很大(见图1)。该集合包括F和G,因此上述讨论与整个基准相关。我们在构建这个基准时的主要目标是收集函数:展示人类学习难度的广泛变化(即不受地板/天花板效应的支配);可以用一小套原语描述;并且足够容易学习,以至于程序归纳模型的表现不会受到地板/天花板效应的支配。


此外,测试我们的假设需要问题,我们可以比较那些包含和不包含结构化推理表示的解决方案。因此,大多数基准问题都强调MPL (MetaProgram Learne)在搜索期间可以利用的推理技术。我们将MPL在这一基准上的表现与人类规则学习的领先替代解释进行了比较。

基于在类似程序的表示上进行学习的思想,我们的概念学习方法借鉴了人类程序员技术的三个核心见解19。


首先,大多数程序学习模型在由对象级原语组成的程序上进行搜索,例如等式(5)和(10)中的head和take。假设搜索操作符是完全参数化的,程序也可以使用在搜索期间产生它们的决策来描述。这些决策描述了如何构建程序,即通过重复产生它的搜索过程。虽然这个过程通常在搜索算法中是隐含的,但程序员经常明确考虑它,讨论转换及其效果——例如,将迭代替换为递归或将重复的代码提取到共享函数中——除了实际代码之外。


第二,许多搜索算法应用单一的通用操作符,例如从语法中枚举或从分布中采样。一些偏向于迄今为止发现的最佳假设:考虑马尔可夫链蒙特卡洛的接受/拒绝步骤65;粒子滤波的重采样66;或遗传编程的锦标赛67。即便如此,低效的学习依赖于积累小的、通常是随机的、局部的变化。相比之下,人类程序员可以灵活地结合数百种结构化的技术来修订程序68。许多技术针对特定问题并指定依赖于上下文的解决方案,就像分层规划中的高级动作69一样。

第三,许多搜索算法在不考虑可用数据的情况下开始,例如从字典序第一个程序或随机样本开始。这种假设驱动的学习独立于数据生成提议70。这些方法非常通用,但必须偶然发现相关结构,而不是从数据中推断出来。相比之下,数据驱动的学习直接将输入/输出对归纳为程序,使用某种推理技术,例如用于检测循环结构。它最小化了搜索,但需要强烈的假设,这些假设严格限制了可以从什么数据中学到哪些程序。人类编程技术在许多方面都超越了这两种方法:它们通常旨在暴露潜在结构,并且可以灵活组合以应用于几乎任何问题。因此,它们可以直接根植于需要解释结构的数据(例如,“递归数据可以这样重写”或“如果数据包含带有细微差异的重复,也许可以将这些差异抽象掉。”)。

鉴于这些观察,我们假设人们扩展了对象级原语的语言,增加了称为元原语的结构化转换模式。一些元原语可能简化重复的结构;其他可能为了进一步分析或编码例外情况而记忆数据。在这种观点下,原语和元原语可以自由组合成称为元程序的表达式,它们结合了对象级内容和结构化转换。元原语操作在原语构建的结构上,所以元程序总是可以被评估以产生没有元原语的程序。也就是说,元原语提供了表达某些程序的替代方式,转移了归纳偏差,使它们更容易被描述。

虽然引入新的对象级原语也会转移归纳偏差49,71,但元原语可以捕捉与对象级原语不同种类的偏差。特别是,对象级原语不能利用它们参数的内部结构;它们必须将这些参数视为黑盒。相比之下,元原语是程序转换,因此可以根据这种内部结构改变它们的行为。例如,MPL模型包括一个名为AntiUnify的元原语,其主要作用是向程序中引入变量。这样做有很多方法,考虑它们所有方法将需要漫长的搜索。然而,AntiUnify使用输入程序的结构来决定在哪里引入变量,而不需要额外的搜索。也就是说,AntiUnify使用其参数的结构来忽略只使用对象级原语的方法否则必须考虑的搜索空间的部分。

元原语因此利用了上述所有三个洞见。首先,它们使程序转换成为语言的一个明确部分,而不是将它们仅隐含地作为搜索操作符。其次,正如语言通常包含许多原语一样,它们也可以包含许多元原语,每个元原语表达不同的程序操作第三,如果一些元原语可以记忆数据,其他元原语可以从这些数据中提取信息,并通过引入不同类型的归纳偏差,比单独使用原语更有效地学习。通过编码类似于数据驱动搜索的搜索操作符,并将它们嵌入到假设驱动的学习者的语言中,元原语或许结合了两种方法的最佳特性。


为了评估这些想法,我们实现了MPL,这是一个符号学习者,它通过纳入元原语来扩展传统的程序归纳方法。我们旨在调查元原语方法的有用性,而不是对任何特定的元原语提出强烈主张。这里实现的特定元原语(表1;补充说明2)因此捕捉了由归纳逻辑编程72、分析归纳73、自动定理证明74和软件工程中的重构技术68启发的相对简单的推理模式。实际上,一些元原语比其他元原语做了更多的工作,但每个元原语都描述了关于程序结构的推理操作。

基于程序归纳的概念学习模型通常使用与被研究概念密切相关的语言,其原语(和元原语)也是如此。例如,这可以在数字31,75、逻辑49,76和几何37,77等领域的最近工作中看到。这种主张并不是说这些有限的语言构成了学习者的全部心理词汇,也不是说研究的领域是唯一一个人类能够学习的领域。也不是说计算原语(或元原语)的存在就足以解释人类学习,或者说任何现有模型足以解释所有人类学习。它们而是案例研究,将一组合理的原语和学习动态与特定领域的人类学习者进行比较。我们在引入元原语时采取了相同的方法。


元原语对于处理列表函数很有用,因为它们捕捉了对列表特定或对程序总体推理有用的推理模式(例如,结构映射、组合、泛化的简单形式),类似于人类代码操作技术。以前的学习系统将这些操作符直接嵌入到搜索算法中,并以刻板的模式应用它们。显式元原语使MPL比以往的模型具有更大的灵活性。


图2A-C说明了MPL使用F的情况,前面已经描述过。给定例子(图2A),MPL学习了一个元程序(图2B),结合了原语——即空程序,ε——和元原语。MemorizeAll将数据直接添加到程序中,使它们的潜在结构可供其他元原语使用。Recurse假设涉及某些有限变换的线性递归结构(例如,列表的元素级变换、一元数字、字符串)的规则本身可以递归地分解为更简单的规则。在这里,它通过对比和展开输入/输出列表,捕捉了人们观察到的每个输入元素解释两个连续输出元素的现象。这一变化揭示了潜在的结构,但引入了许多新规则。AntiUnify在这里很有帮助。它使用反统一——一种重要的程序合成技术78,79——来计算最不一般的概括,系统地将规则间的共享结构对齐到一个单一的一般规则中。例如,比较F[1∣[3, 9, 7]] ≈ [1, 1∣(F[3, 9, 7])]和F[3∣[9, 7]] ≈ [3, 3∣(F[9, 7])]揭示了一个共同的结构:第一个元素重复两次,其余的列表递归处理。AntiUnify通过类似地对齐共同结构并概括差异,发现了一个相应的规则,F [x ∣ y] ≈ [x, x ∣ (F y)]。

因为元原语代表程序转换,应用一系列元原语会产生中间结果,然后是一个既能解释数据又可以应用于新输入的最终程序(图2C)。因为MPL可以自由混合原语和元原语,它也可以直接学习程序,例如在可用元原语不适用的问题上。

图2D-F重复了G的过程。虽然G用英语描述很复杂,但它的元程序比F的还要简单。由于缺乏递归结构,G可以使用结构对齐单独描述。在使用MemorizeAll编码数据后,调用AntiUnify就足够了。然而,产生的程序比F的程序更复杂。MPL对这种复杂性很敏感,这有助于解释为什么G比F更难学习。虽然元程序很简单,但是产生的程序的复杂性需要观察足够多的数据。

为了平衡简单性和拟合度,MPL将学习建模为在元程序上的贝叶斯后验上的MAP推断。精确计算后验是不可行的;MPL使用马尔可夫链蒙特卡洛(MCMC)方法对程序进行近似,扩展到元程序空间。蒙特卡洛方法作为理性过程模型而著称,用心理学上合理的方法是解决计算层面的问题。这种方法可能看起来会遭受我们之前确定的通过小的、局部的变化进行低效学习的问题。然而,通过元程序进行搜索有助于解决这个问题。因为元原语可以编码任意的程序转换,即使是小的变化也可能对最终程序产生大的、非局部的影响。


结果

我们将MPL与多种符号、神经和神经符号学习模型进行了比较,即Fleet42、Enumerate71、Metagol81、RobustFill82和Codex83(有关每个模型的额外动机和细节,请参阅方法部分)。除了Codex,所有模型都使用类似的原语(表1),这些原语适应了它们的计算范式(例如,lambda演算、一阶逻辑、术语重写);Codex使用Python编程语言。只有MPL使用元原语来构建元程序,这是其核心假设。至关重要的是,这些元原语代表了操纵原语的结构化方式;它们改变了归纳偏差,但没有改变MPL的理论表达能力。如果给定足够的时间,每个模型都会找到解决方案(如果存在的话)。那么关键问题就是解决方案能多快被找到,以及在表示语言的组合基础上添加元原语是否提高了找到高质量解决方案的速度。


本文评估元原语作为解释人类如何迅速习得复杂规则的一个解释。因此,我们关注习得速率,如果在第n次试验中学习者在所有≥n次试验中给出正确响应,则认为规则在第n次试验中被习得。在这些实验中,参与者通过观察输入列表、键入并提交预测输出,然后观察正确的输出来完成一次试验。因为完美表现是对学习的严格测试,我们还检查了平均准确性。在这些指标上,人类列表函数学习为模型学习者提供了一个具有挑战性的目标(补充说明3)。54%的功能在八次试验内被≥50%的人类学习者习得。鉴于任何单一试验的偶然表现大约是1 in 10^30,这个值是高的。50%的功能至少被一个人在一次试验后习得,75%在两次试验后习得,完全99%在八次试验内习得。只有2%的功能在八次试验内被所有参与者习得。平均人类准确性讲述了一个类似的故事。平均而言,它相对于偶然性是高的(平均值 = 0.521,95% CI [0.479, 0.559];SD = 0.202,95% CI [0.180, 0.221]),并且对于个别功能,范围从0.042到0.868。补充说明8报告了复制的类似结果。


考虑到参与者相对较低的编程经验水平,他们的表现可能特别令人印象深刻。在我们样本中的392名参与者中,有259名(66%)提供了他们之前编程经验的可解释的自由响应声明。其中,151人(58%;平均准确性 = 0.49)表示没有之前的编程经验,另外27人(10%;平均准确性 = 0.50)表示对社会编程概念有所了解,也许还有简单的网站构建。43人(17%;平均准确性 = 0.50)报告通过入门课程或构建几个网站接触编程。只有38人(15%,平均准确性 = 0.53)表示有显著的学术或专业编程经验(另见补充说明8)。


图3A在大搜索预算的情况下比较了人类与模型。只有MPL (500K) 和 Fleet (500K)——之所以这样命名是因为每个模型每次试验进行500K次搜索步骤——在这个设置中很好地解释了人类行为。图3B比较了每个功能模型和人类的平均准确性;同样,只有MPL (500K) 和 Fleet (500K) 捕捉到了人类的水平表现。相比之下,Enumerate、Metagol 和 RobustFill 未能达到人类的准确性水平,表现在人类的25百分位以下,并且与人类平均准确性显著偏离。Codex 占据了中间地带,习得的功能数量大约与25百分位的人类相当,并且与人类平均准确性的偏离程度类似。

Fleet 和 MPL 都实现了程序上的马尔可夫链蒙特卡洛(MCMC),这是一种随机爬山形式,它根据新假设相对于当前假设的得分概率性地接受新假设——通常是对当前假设的增量更新。因此,它们通过通常只接受小的、有益的变化来鼓励快速改进。相比之下,Enumerate 和 Metagol 使用穷尽搜索算法。随着目标程序变得更加复杂,必须考虑呈指数级增长的更简单的程序。我们数据集中的大多数功能对于它们来说太复杂了,即使有数千万次搜索步骤也无法发现。RobustFill 既不是穷尽搜索也不是爬山,而是生成独立的样本(基于训练数据),这对于低概率程序极其低效。Codex 也生成条件独立的样本,但其显著更大的训练集和更复杂的架构帮助它超越了 RobustFill。

尽管MPL (500K) 和 Fleet (500K) 都表现良好,但它们之间存在重要差异。例如,两个模型都未能正确预测一小部分独特功能的单次试验(MPL = 12, Fleet = 13)。对于 Fleet 来说,这些包括由长描述长度主要特征的递归和非递归问题混合。对于 MPL 来说,没有一个涉及非递归结构推理(例如索引、交换、移除元素)。像 Antiunify 和 Variablize 这样的元原语使 MPL 在这些问题上比 Fleet 有优势。相反,所有十二个都涉及递归。Recurse 元原语捕获了有限形式的递归(见补充说明2),十二个中的十一个使用了 MPL 没有相关元原语的递归模式。没有适当的元原语,这些问题的解决方案很难发现。虽然人类在其中一些问题上挣扎——使用输入列表的前两个元素来指定剩余元素的子列表的平均人类准确性仅为4.2%——但其他问题,如计算最大元素、计算元素之和和反转元素,人类平均准确性远高于50%。更一般地说,MPL 在产生非递归问题的非递归解决方案方面非常准确;MPL (500K) 在97.0%的运行中这样做。它在为递归问题产生递归解决方案方面准确度较低;MPL (500K) 仅在34.4%的运行中这样做。

只有 Fleet (500K) 和 MPL (500K) 匹配了人类在从稀疏数据中获取可解释假设时的表现。现在我们考虑人类学习的另一个重要方面:搜索效率。人类认知是资源受限的25;许多形式的推理用少量搜索步骤就可以很好地建模26。MPL 和 Fleet 在用更认知合理的资源近似人类行为方面有所不同。在固定的数据集上,MPL 比 Fleet 学习得更快。图4A中的每条细曲线绘制了在给定步骤中通过搜索发现的最佳假设的后验概率(即不是生成函数的后验概率,两个模型都从未访问过)对于 Fleet 或 MPL 的一个100个功能中的一个。它还绘制了在所有100个功能上平均这些分数的平均值(粗曲线)。由于两个模型在相同的功能上进行了测试,并且最终搜索了相同的程序空间(即 MPL 的元程序编译成 Fleet 搜索空间中的程序),这些曲线展示了模型相对于彼此的搜索效率。值得注意的是,对于 MPL,在五千次搜索步骤时发现的最佳假设的平均后验概率高于 Fleet 在五百万次搜索步骤时的概率,这表明 MPL 比替代模型更快地发现数据的简洁描述。图4B和C绘制了每次试验5K次搜索步骤的习得率和平均准确性,仅为之前预算的1%。Fleet 的习得率急剧下降,而 MPL 的习得率是大预算时看到的≥84%。MPL 也通过双尾配对样本威尔科克森符号秩检验(V = 874, p < 0.001, 效应量 = 0.39, 95% CI = [0.176, 0.634])可靠地更接近每个功能的平均人类准确性。MPL 仍然是这项任务的好模型参与者(补充说明4);补充说明5包含了个别模型所犯错误的更多细节以及模型之间准确性的相关性。


尽管 MPL (5K) 表现良好,但5000次搜索步骤可能接近人类在这项任务上的上限。人类响应时间的中位数是14.7秒,而75百分位数是29.5秒。如果人们反应缓慢并且搜索异常迅速,比如说每一步5-10毫秒(例如通过并行考虑假设或使用非常浅的神经元网络84),他们可能需要大约3000-6000步。然而,如果每一步需要500-1000毫秒,人们可能只基于30-60步做出反应,这对于基于搜索的程序学习模型来说是非常少的。尽管比 MPL (5K) 差,但 MPL (500)、MPL (50) 甚至 MPL (20) 的学习率仍然落在人类表现的范围内(见图5A)。在仅仅5次试验,每次试验10步(即总共50次搜索步骤)之后,MPL 超过了 Metagol、Enumerate 和 RobustFill 的表现(见图3A)和 Fleet (5K) 的表现(见图4C),所有这些都消耗了数量级的更多搜索(另见补充说明5)。

MPL 利用了这样一个观点,即推理过程或元程序可能比它产生的程序更简单。如果是这样,抽样元程序的概率通常应该高于直接抽样相关程序的概率,这将有助于解释 MPL 与替代模型相比的高性能。我们发现82.8%的元程序至少和它们对应的程序一样简单(见图5B;另见补充说明6)。

MPL 在元程序上而不是程序上进行搜索,但它的先验(方法中的等式 (12))对元程序复杂性(即推断程序的成本)和程序复杂性(即表示程序的成本)都敏感。两个组成部分都是必要的——仅对这两个组成部分中的一个敏感的损伤显著地表现不佳(见图5C)。程序先验鼓励泛化并阻止记忆。元程序先验可能帮助 MPL 为有用的元原语分配信用,从而更有效地搜索。

讨论

本文使用自然数列表上的函数来测试这样一个假设:人们通过组合对象级操作符和称为元原语的结构化程序转换来高效学习类似程序的表示。这种方法不仅考虑了对象级内容的复杂性5,49,76,还包含了产生内容的推理过程。这一理论的一个实现,称为MPL,在测试领域内独特地实现了人类水平的表现,同时捕捉到了本文强调的人类学习的特征:可解释的假设;数据效率;和计算效率。MPL通过以下方式实现这一点:(1)在建模语言中明确表示程序转换,而不仅仅是在搜索算法中隐含地表示;(2)结合多种程序转换,而不仅仅是一种;以及(3)直接从数据中提取潜在结构,而不是偶然发现它。即便如此,MPL只是朝着更类人模型迈出的第一步;我们没有考察其他重要特征,如神经合理性或直接推广到相关任务的能力。

这些结果揭示了简单性与学习之间关系的细微差别。在其他条件相同的情况下,人们通常更喜欢更简单的解释85,86,并发现它们更容易获得5。因此,经典的程序学习模型将心理复杂性与对象级简单性紧密联系起来。然而,简单性是依赖于语言的87——不同的原语影响语言的归纳偏差,因此也影响它解释学习的效力49,71。同样,不同的公理系统可以为同一个定理产生长度截然不同的最短证明88。MPL的元原语提出了一种评估简单性的方法,这种方法超越了对象级内容,包含了结构化推理。这些推理重塑了归纳偏差,容易描述某些概念,但对其他概念却不太适合。元程序通常比程序更短,因为它们可以用已经包含相关结构的观察数据来描述概念。跟踪元程序和程序复杂性的模型比只跟踪其中一个的模型更好地解释了人类学习,这表明学习对多种简单性都敏感。

除非另有说明,这里报告的所有模型都使用与MPL相同的原语,并在相同的程序集上进行搜索。我们故意使用了一个最小的DSL,它可以很容易地在各种模型上实现。例如,我们没有在DSL中包含任何高阶函数,因为包括Fleet在内的许多模型缺乏轻松实现这些函数的类型系统。这里的关键是,MPL发现的任何程序也可以被其他模型发现,包括Fleet。

区分MPL的是它使用元原语,尽管重要的是要注意MPL的成功依赖于具有特定的元原语(并且可能添加有害性能的元原语)。一小组元原语极大地重塑了我们富有表现力的对象级原语集所给定的初始归纳偏差。对于这里研究的问题,这种归纳偏差的变化显著提高了解释人类表现的能力。不同的原语几乎肯定会产生不同的结果(例如,如果我们将目标函数作为原语添加,或者甚至如果我们从表1中的原语转移到补充表2中的原语,所有模型的性能可能会大大提高)。更严格地比较具有不同组合的原语和元原语的语言——就像以前只对原语做过的那样49——是未来工作的一个有价值方向。

元原语似乎很可能仍然有用,因为它们可以对它们参数的内部结构敏感,而对象级原语则不能。这种敏感性可以让元原语通过忽略在句法上有效但与其参数的内部结构不一致的假设来有效地剪枝搜索空间。当搜索从观察或记忆数据开始时——这些数据已经包含了需要解释的结构——这种剪枝效果有时可以允许搜索快速组合元原语,从数据反向推理到一个简洁的生成程序。这种方法克服了传统假设驱动学习者的不足(它们必须主要靠偶然发现相关结构)和数据驱动学习者(它们通常应用固定的推理模式)的不足。

我们并不是说只有使用元原语才能为特定任务编码正确的归纳偏差,而是说元原语提供了一种有价值且灵活的方式来编码一系列类人的归纳偏差,规则学习模型可以轻易利用这些偏差。一些元原语,如AntiUnify,非常通用。一个模型将需要许多额外的原语和架构变化来补偿它的损失。其他的,比如我们有限的Recurse操作符,可能只需要几个原语或对类型系统的改变。更一般地说,当程序的句法结构中的某种模式证明了以一种明确的方式转换该程序是合理的,元原语可能会表现出色。当参数的内部结构与搜索过程基本无关时,原语可能会表现得最好。

我们模型比较中的多样化算法表明,有许多方法可以利用组合,例如修改子树和使用组合规则来限制搜索。未来的工作可以更系统地描述组合可以如何通知搜索以及每种方法如何影响性能。甚至更一般地说,精确描述采用组合与非组合表示的含义将是有用的。

本文通过在计算通用的列表函数领域中实现的示例展示了元原语的前景。然而,无论是广义上的程序归纳还是这里介绍的具体技术,都不局限于列表函数。我们专注于一个包含100个问题的基准,强调MPL在搜索期间能够利用的计算模式的有限多样性;这使得我们可以通过比较有无元原语描述的解决方案来测试我们的假设。未来的元原语模型应该通过形式化额外的推理技术并将它们与人类行为联系起来,来解决更广泛的问题。这可能包括这里研究的元原语的更复杂版本,如一个捕获更通用的折叠类计算的版本,或者一个捕获具有潜在状态的递归的版本。此外,虽然Memorize和AntiUnify捕获了一般的推理模式,但Recurse和Compose专注于只对有限类别的列表函数最有用的转换。因此,元原语既不是专门针对特定领域的,也不是通用的,它们的使用可以扩展到明确纳入特定领域的分析,模拟众所周知的知识效应64。开发一个能够执行人们可以执行的许多形式的计算推理的通用模型,很可能是一项大规模的合作努力,涉及多种类型的实证和计算实验。我们在这里的目标是朝着这样一个模型迈出初步且必然有限的一步。我们不会对发现人类使用比MPL更复杂的推理技术感到惊讶。然而,如果我们发现人类不灵活地结合关于数据的推理技术来显著提高学习速度,我们会感到很惊讶。

未来的模型可以超越小型且不变的模型语言,更好地匹配人类庞大且主要是通过学习获得的认知储备45,63。随着时间的推移扩展模型语言的算法71开始捕捉这种动态,但还需要更多的工作。例如,目前还不清楚如何模拟人类明显创造真正新颖符号的能力89。最后,儿童不仅仅收集原语;他们能够适当地在它们之间做出选择,并能解释他们的选择90。MPL的随机搜索可以通过包含额外的分析合成53,91,92和基于模式的推理93-95的元素来扩展,以类似的方式行为。这项工作将有助于将程序学习提炼成一个全面的正式账户,以解释独特的人类学习。

方法

列表函数

我们手动创建了一个包含250个列表函数的基准测试集,旨在广泛变化学习难度和算法内容。每个函数都可以用一个丰富的特定领域语言(DSL)来表达,该语言嵌入在类型化的lambda演算中。Lambda演算是一个图灵完备的形式主义,它将计算建模为函数抽象和应用96。它在计算机科学中扮演着基础性的角色,并且经常出现在计算学习模型中97-99。我们的语言配备了一个Hindley-Milner类型系统100,它为程序的语义正确性提供了句法保证。直观地说,类型系统排除了语义上无意义的程序(例如,取数字3的第二个元素),同时允许所有语义上有意义的程序。补充表1描述了类型系统,补充表2描述了语言原语。

补充表11列出了我们数据集中的250个列表函数。

84个函数仅使用数字0-9;其余的也使用10-99。模型比较涉及概念c001-c100。这些函数中很少有需要超出计数和基本算术的数值能力。这些函数通常更专注于结构操作,如插入、交换或删除元素。完整的250个函数数据集旨在作为评估人类学习者和未来学习形式理论的基准;生成它们的语言包含比模型学习者可用的语言更多的原语,这在正文中有描述。前100个函数可以用这个更小的语言来表达,使它们更便于现有计算模型进行形式分析。这个100个函数的子集在人类学习和表达它们所需的算法能力方面仍然有很大的变化,包括条件、递归、算术和基于模式的推理。

为了为每个函数生成输入/输出对,我们随机生成了一百万组11个输入/输出对,并根据每个函数的自定义评分函数选择了最佳组合。输入和输出被限制为包含0到15个元素。每个函数的评分函数总是偏爱输入和输出长度的变化,列表元素的变化,独特的输出数量高,以及输入和输出相同的示例数量少。然后,每个函数的评分函数也针对给定概念的相关特征进行了定制。例如,一个索引第三个元素的概念可能会偏爱有三个或更多元素的输入,而一个使用第一个元素作为索引的概念可能会偏爱第一个元素小于或等于列表长度的列表。在选择一组示例后,我们生成了五千个随机排序,并根据以下标准选择了得分最高的排序:将每个概念的评分函数应用于前五对,将每个概念的评分函数应用于最后六对,第一个示例的输入是否与输出不同,以及5和第一个输入长度之间的距离。

实验程序

我们报告了涉及人类参与者的行为实验的结果。我们的程序符合所有相关的伦理规定,并得到了在麻省理工学院进行该研究的机构审查委员会的批准。

参与者提供了知情同意书,并收到了参与的固定费用7.50美元,以及每个正确回答的0.01美元奖金。这项研究没有预先注册。

补充图1显示了行为范式的代表性显示。参与者同意与计算机玩一个猜谜游戏,并开始通过查看游戏的说明。在简短的理解检查之后,参与者完成了110次试验——每轮11次试验,共10轮,当前轮次在屏幕上清楚地指示。在每一轮中,计算机选择250个列表函数中的一个作为将输入列表转换为输出列表的规则。对于每位参与者,函数是随机选择的;在实验进行时,实验者和参与者都不知道正在测试的函数。每个函数接受一个自然数列表作为输入,并返回一个自然数列表作为输出。列表可以包含0-99作为元素,并且包含0-15个元素。为了帮助参与者学习规则,计算机呈现了一系列试验。每次试验开始时,计算机会显示一个新的输入列表,并要求参与者预测与输入相关的输出,通过在文本框中输入他们预测的响应。参与者被告知他们的工作是猜测规则,并使用它尽可能正确地响应计算机的查询。参与者需要键入整个列表,并且必须无误地键入,他们的回答才会被认为是正确的。每次预测后,计算机会揭示正确的输出,结束试验。输入、输出和参与者的预测在实验的剩余时间内都保留在屏幕上,以减少工作记忆负荷;参与者可以在任何未来的试验中回顾它,包括后续轮次的试验。该范式因此鼓励在线学习,试图减少长期记忆需求,并更准确地测量逐次试验的概括49。屏幕底部的进度指标告知参与者他们的性能和剩余试验的数量。在每轮结束时,计算机要求参与者输入他们认为计算机一直在使用的规则的自然语言描述。实验以一个简短的人口统计调查结束。没有使用统计方法来预先确定样本大小,但我们的样本大小与之前出版物49中报告的类似。

参与者

总共有498人提供了知情同意并参加了在Amazon Mechanical Turk上使用PsiTurk(https://psiturk.org)托管的实验。虽然我们试图定义易于学习的概念,但并非所有参与者似乎都做出了真诚的努力。这种情况在在线实验中很常见。基于试点数据,我们排除了完成实验的参与者:用时少于20分钟;正确回答少于10次;或在超过20次试验中给出相同回答。这排除了106名参与者,这是我们原始样本的一个显著比例,引发了任务可能过于困难的担忧,也许是由于其抽象的表述。在排除的参与者中,平均任务时间为51.7分钟(95% CI [46.1, 57.8]),平均正确回答次数为10.2次(95% CI [7.6, 13.1]),最常见的回答出现的次数平均为20.3次(95% CI [17.3, 23.7])。在106名被排除的参与者中,只有4人在实验后的调查中提到了任务难度。相比之下,有72人提供了一些积极的评论,表示喜欢这项任务或觉得它吸引人。为了加强我们发现的可信度,我们进行了一个针对性的复制,重点关注模型比较中的100个函数(补充说明8)。为了提高参与者的参与度和数据质量101,我们通过Prolific(https://prolific.co)而不是Amazon Mechanical Turk招募参与者,并根据Prolific的政策,根据中位时间要求提供补偿。关键的是,我们只使用我们原始排除标准排除了一名复制参与者,并且发现结果与我们原始样本相似(复制样本的平均准确性实际上显著更高)。总的来说,这些结果表明任务既不过于抽象也不过于困难。它们反而表明,排除标准并不是排除单一统计分布的低端,而是将一小部分没有做出真诚努力的参与者与一个更大的真诚参与者分布分开。

我们分析了剩余392名参与者的数据,其中平均任务时间为78.3分钟(95% CI [75.1, 81.9]),平均正确回答次数为50.9次(95% CI [49.2, 52.7]),最常见的回答出现的次数平均为6.0次(95% CI [5.6, 6.3])。这一组参与者的年龄从18.6岁到69.4岁不等(中位数:39.2岁),其中253名为男性,132名为女性,2名为其他性别(自我报告;5人未回应)。性别和性别并未包含在研究设计中,也未出现在任何报告的分析中。我们没有积极评估语言技能,但要求参与者流利地说英语。参与者的工作时间为72分钟,获得了8.00美元的中位补偿。参与者发现任务困难但吸引人,平均自我报告的难度评级为4.9,平均自我报告的参与度评级为5.9,两者都在7点的李克特量表上。

因为每位参与者完成了10轮试验,我们为每个列表函数收集了大约16名参与者的数据。我们392名参与者中有3人被随机分配到我们不在本文中分析的函数;本文分析了剩余389名参与者的结果。

模型程序

每个模型都完成了我们数据集中前100个列表函数的所有11次试验的5次运行。与人类一样,学习以在线方式进行。对于每次试验1 ≤ i ≤ 11,前i-1次试验的正确输入/输出对作为训练数据提供,同时提供了试验i的输入。试验i的正确输出作为测试数据保留。因此,在第一次试验期间,训练集是空的,就像人类参与者一样。除了Metagol之外的每个模型都从试验i结束的地方开始试验i+1,重用1到i次试验的计算来热启动试验i+1。Metagol的设计使得在线学习困难,因此它独立处理试验。在试验i的搜索周期结束时,每个模型选择最佳假设并用它来预测当前输入的输出。每个模型都使用了一个类似的DSL(即表1中的原语),并根据每个模型特定的表示格式进行了轻微修改(例如,lambda演算,Prolog,术语重写)。

在资源丰富的模拟中,MPL和Fleet每次试验完成了500,000次搜索步骤(总共5,500,000次),其他模型每次试验搜索了10分钟。分配给其他模型的更大预算允许Enumerate每次试验采取超过一百万次步骤,Metagol采取超过十亿次步骤。RobustFill每次试验大约采取了10,000次步骤,但也从额外三天的训练神经网络中受益于推断的摊销。在资源受限的模拟中,除非另有明确说明,否则MPL和Fleet每次试验完成了5000次搜索步骤。在批量模拟(图4A)中,MPL和Fleet对每个分析的函数完成了五次运行。对于每次运行,它们观察了目标函数可用的前十个输入/输出对,并完成了五百万次搜索步骤。

比较模型

枚举。Enumerate71使用一种称为穷举搜索的穷尽和符号技术。它按描述长度的顺序考虑假设,返回与观察到的数据一致的第一个假设。这种方法可能看起来不可行,但它将学习与描述长度等简单性度量紧密联系起来,就像人类在某些领域所做的那样5。它也是这次比较中最简单的算法,可以非常快速地执行。

我们使用了DreamCoder71中的高性能枚举算法。这个模型执行类型导向的自顶向下基于语法的枚举,大约按先验概率的降序进行。也就是说,它将类型系统视为程序的语法,并从请求的类型开始,迭代列出所有匹配给定类型的程序,从最短的开始。枚举以深度优先的方式进行,有一个迭代加深的外部循环:它首先枚举描述长度在0-Δ范围内的程序,然后是Δ-2Δ,然后是2Δ-3Δ,依此类推,直到试验结束。Δ被设置为1.5纳特;每项任务使用一个CPU,没有离线训练或参数学习。为了适应在线学习,枚举使用了一个简单的赢留输变策略102。当被要求进行预测时,它使用第一个正确解释所有先前观察到的输入/输出对的程序。如果它预测的输出也是正确的,它将继续使用该程序在后续试验中进行预测。如果预测的输出是错误的,它将选择第一个正确解释所有先前观察到的输入/输出对加上在做出预测后揭示的新观察对的程序。假设程序会终止,基于语法的枚举也保证会发现最简单的可能解决方案103(Levin搜索104在非终止程序上执行类似操作)。

随机搜索。Fleet42是随机和符号的。它从平衡简单性与数据拟合的贝叶斯后验中进行抽样,这与学习作为随机搜索的心理学理论一致105。这种方法解释了人类在布尔概念49、计数例程31和亲属系统106等领域的学习。它是MPL的先驱,但缺乏语言中的元原语和先验中对元程序的敏感性。

由于精确抽样是不可行的,Fleet使用了一个高性能的Rational Rules算法76实现,用于程序的MCMC。这种技术通过随机选择一个节点并从语法中重新生成它来提出对整个子树的更改。我们的模型还使用了并行退火方案107,其中五个链自适应地间隔,以具有有效的提议接受率。最高温度被设置为试验次数加一,最低温度被固定为1.0,这意味着最低温度链理论上从目标后验中抽样。链之间的交换每秒钟提出一次,温度每30秒适应一次。由于当前实现的限制,Fleet语法不包括lambda抽象。Fleet是明确的贝叶斯。在这些模拟中,它使用了基于语法的先验和基于字符串编辑距离的似然(将列表视为字符字符串),它以10^-4的概率从列表末尾删除每个字符,然后以相同的概率附加均匀随机字符。为了支持在线学习,每次新试验都在前一次试验中具有最佳后验的假设上开始。

证明驱动搜索。我们使用了Metagol54,81,108,这是一个使用Prolog元解释器来归纳Prolog程序的ILP归纳逻辑编程系统。像Enumerate一样,Metagol也是穷尽和符号的,但它将学习建模为约束满足。它通过递归构建一个紧凑的一阶逻辑证明来学习,该证明包括数据和任务约束的编码。它建立在使用布尔公式109或一阶子句72学习程序的技术之上。这种方法积极地剪枝已知与数据不一致的假设,并在许多领域成功学习,包括与列表函数类似的数据转换任务110。它也被用来模拟人类在反复接触一个领域时归纳偏差的转变111。

Metagol使用元规则,或程序模板,来限制证明可以采取的形式。元规则是高阶子句,Metagol的目标是找到高阶变量的替换。决定对于给定任务使用哪些元规则是一个未解决的问题112,113。补充表3显示了这项工作中Metagol模拟使用的八个元规则。Metagol还通过谓词发明引入了更长的子句,类似于引入lambda抽象。Metagol通过部分构建和评估程序来工作,当部分程序未能覆盖正面示例或错误地覆盖负面示例时,剪枝搜索空间。我们只在这些模拟中使用了正面示例。Prolog程序编码了非确定性关系。为了评估Metagol,我们调用了学习到的Prolog程序,将输入作为第一个参数,并要求第二个参数的答案替换,将提供的第一个替换作为输出。

神经程序合成。我们使用了RobustFill82,这是一种随机算法,它融合了神经和符号方法的元素来学习。它在深度神经网络(特别是具有注意力机制的神经序列到序列编码器-解码器模型)的指导下随机搜索程序。像Fleet一样,网络可以被视为近似贝叶斯推断程序。然而,RobustFill使用不同的技术来抽样程序。它使用网络根据观察到的数据和前一个程序符号作为输入生成的权重来抽样一系列程序符号。人类学习似乎既不是纯粹的连续也不是纯粹的符号。我们测试RobustFill是因为它是一种神经符号方法,而且它在与列表函数类似的字符串操作任务上超越了纯粹符号和纯粹神经方法。

我们使用了与Attn-A RobustFill模型82几乎相同的实现。该模型的区别在于我们添加了一个使用单独的LSTM语言模型学习语法掩码114。这个LSTM的输出概率被用来掩蔽Robustfill模型的输出概率,鼓励模型对语法无效序列赋予较少的概率质量。该模型使用标准的监督、教师强制技术来训练序列到序列模型,在训练数据上最小化交叉熵损失。我们使用了512的隐藏大小和128的嵌入大小。我们训练了网络3天。这意味着大约有105,000次迭代,批量大小为16个程序(在训练期间看到了大约1.6百万个随机程序)。训练程序可以有最大深度6,每个程序与1到10个输入/输出对相关,每个程序的示例数量是随机均匀采样的。

大型语言模型。我们使用了Codex83,这是一个与RobustFill精神相似的随机神经模型,但它使用了不同的架构,并在更广泛、更大的数据集上进行了训练。它基于大型语言模型GPT-3115,该模型在从互联网上抓取的数千亿个标记上进行了训练,并在GitHub(https://github.com)上的数十亿行代码上进行了微调。我们在这里评估它,因为它在推理和计算机编程任务上的最近成功表明它是当今可用的最引人注目的智能模型之一。

我们使用了OpenAI API来运行Codex83模型。每项任务都以少样本方式呈现,在呈现人类行为范式中的指令之前,展示了四个先前的示例任务,每个任务包含五个输入/输出对。每个试验都是独立完成的;试验n呈现了n-1个完整的输入/输出对,然后是输入n。为了将Codex作为符号搜索的形式进行测试,我们要求它产生预测给定输入的输出的Python程序。任务将训练数据嵌入到Python文档字符串中,请求一个Python函数的主体,当应用于测试输入时会产生相应的输出。API调用请求了在温度0下的一个单一响应,并在第一个新行或最多150个标记后结束,以先到者为准。因为尚不清楚GPT-3或Codex是否能够访问我们原始的基准数据,这些数据可以在线公开获取,我们还生成了新的输入/输出对来测试Codex。使用原始刺激的性能与使用人类行为实验的原始刺激类似,因此我们报告了使用原始刺激的结果。

MPL(MetaProgram Learner)模型

MPL将程序表示为一阶项重写系统(TRS)116,117(补充说明1)。它们是程序合成系统的基础,不如一阶逻辑72,118、组合逻辑13,119,120或λ演算38,49,71,121等替代表示方法常见,但以前已出现在归纳学习系统122,123中。MPL通过一组元原语(补充说明2)增强用户提供的领域特定语言,该语言由对象级原语组成。

为了平衡简单性和拟合度,MPL模型将学习视为使用贝叶斯法则计算的元程序上的贝叶斯后验中的MAP推断:


这种似然性在输出包含多个可以逐步解释的元素时非常有用。对于递归函数产生多个元素的情况(例如,删除每隔一个元素),以及对于非递归问题(例如方程式(10))也是如此。前缀偏差对于递归折叠或将输入简化为单个元素的函数(例如,输入长度)以及非递归选择输入单个元素的函数(例如,第三个输入元素)帮助较小。

精确计算后验是不切实际的;MPL使用马尔可夫链蒙特卡洛(MCMC)方法对程序进行近似,扩展到元程序空间。推断使用了具有两个温度池的并行温度控制的自定义实现,每个池包含五个温度,从1.0到当前试验次数加一,指数间隔,并每25秒提议交换一次。一个池搜索由完整的DSL(即对象级DSL加上MPL元原语)形成的假设。另一个只使用对象级DSL,即仅使用原语。链使用树再生提议和自定义提议来插入、移除和再生元原语。

模型可以访问两个池的实例,这些实例保持独立状态,但将它们的假设报告给两个池观察到的最佳假设的共享集合。在每个搜索步骤中,模型会从两个池中的一个收集单个样本,但不会同时收集两个。这个决定是随机做出的,以概率α选择完整的DSL池,以概率1-α选择对象级DSL池。辅助模型变化α,而所有其他实验将其固定为1.0。

MPL考虑包含50个或更少随机选择和7个或更少元原语的元程序。它还只考虑产生确定性TRS的元程序。为了支持在线学习,MPL保留了试验之间得分最高的100个解决方案的路径,并使用已知的最佳假设初始化下一次试验的链。

报告摘要

有关研究设计的更多信息可在与本文链接的《自然》组合报告摘要中找到。


数据可用性:

本研究生成的原始模型数据和处理后的人类数据已存储在开放科学基金会数据库中,网址为 https://doi.org/10.17605/OSF.IO/GQ2HJ。由于数据隐私法的规定,本研究生成的原始人类数据受到保护,不对外提供。


代码可用性:

用于重现图表和结果所需的代码已存储在开放科学基金会数据库中,网址为 https://doi.org/10.17605/OSF.IO/GQ2HJ。关键库也可在以下位置获取:马尔可夫链蒙特卡洛程序(https://github.com/joshrule/program-induction);项重写系统(https://github.com/joshrule/term-rewriting-rs);以及Hindley-Milner类型推断(https://github.com/joshrule/polytype-rs)。



https://www.nature.com/articles/s41467-024-50966-x


CreateAMind
ALLinCreateAMind.AGI.top , 前沿AGI技术探索,论文跟进,复现验证,落地实验。 鼓励新思想的探讨及验证等。 探索比大模型更优的智能模型。
 最新文章