儿童黑客:构建更多具有人类特征的学习模型 1 理论(1-2章两万字)

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

The child as hacker : building more human-like models of learning 2020

儿童黑客:构建更多具有人类特征的学习模型




摘要

认知科学在解释人类学习和认知发展的丰富性方面面临一个根本性的挑战。本论文提出,发展理论可以通过采用计算机科学的视角来应对这一挑战。我们最好的许多模型将学习视为类似于计算机编程,因为符号程序为复杂的心理表征提供了最有说服力的解释。我们特别提出,从儿童时期开始的学习类似于一种称为黑客攻击的编程风格——通过一个开放式的、内在动机驱动的多样化价值和活动集合,在多个维度上改进代码。本论文还首次尝试通过深入的人类和机器概念学习实证研究来形式化和评估儿童作为黑客的观点。它引入了列表函数作为心理学研究的领域,展示了它们如何涵盖许多经典的概念学习任务,同时为探索复杂结构上的算法思维开辟了新的途径。它还介绍了HL,一个计算学习模型,其表示、目标和机制反映了黑客核心原则。关于概念学习的现有研究表明,学习者既偏好简单的数据解释,又发现它们比复杂的解释更容易学习。相比之下,儿童作为黑客的观点表明,学习者使用某些问题类别的机制,这些机制将假设复杂性和学习难度分离。因此,我们进行了一项大规模实验,探索难度和算法内容差异很大的列表函数,以帮助识别学习难度的结构来源。我们发现,尽管描述长度本身可以预测学习,但当考虑到概念的语义特征时,预测会好得多。这些特征包括使用内部参数、计数知识、基于案例和递归推理,以及可见性——我们引入的一个度量,它根据推断描述中每个符号的复杂性来修改描述长度。我们进一步表明,HL的类似黑客的设计使用这些语义特征来更好地预测人类表现,而不是几种替代的学习作为编程模型。这些结果为新一代计算模型奠定了基础,并展示了儿童作为黑客的假设如何能够积极地促进我们对学习的理解。

第1章

引言

人类认知发展具有独特的质量。尽管人类出生时异常无助,但他们很快就将一套有限的核心认知能力转化为无与伦比的认知库,包括:直观的物理和生物学领域的理论、数学和科学的形式理论、语言理解与产生、复杂的感知和运动技能、反思自身情感和认知过程的能力,以及创造性表达的能力。人们还学会了如何学习,产生了丰富现有概念并增强未来学习的高阶知识。

在这些领域中的任何一个领域中,人类的表现似乎都远远超出了当前人工智能的努力。然而,人们基本上是同时且普遍地获得这些能力的。在适当类型的练习下,人类甚至可以发展出世界级的专业知识,并发现彻底改变人类对世界理解的新想法。

认知科学的基础领域——包括哲学、心理学、神经科学和计算机科学——在解释人类发展的丰富性方面面临一个根本性的挑战。

关于认知的早期讨论往往在关于学习的作用上两极分化(Macnamara, 1999)。

像亚里士多德(de Anima)、洛克(1690)等经验主义者认为,人们生来就有一个空的概念库,完全从经验中学习。像柏拉图(Meno, Phaedo, Apology)这样的天赋主义者认为真正的学习是不可能的,这一观点在最近的时代由Fodor(1980;参见Carey, 2015)显著捍卫。一系列实验工作表明这两种观点都是错误的。相反,人类从一开始就拥有一小批但令人惊讶地丰富的概念和高级感知能力,统称为核心认知或核心知识(Barner & Baron, 2016; Carey, 2009; Spelke & Kinzler, 2007; Kinzler & Spelke, 2007)。核心认知支持对数量、距离和几何、物体和物理交互、代理人和社会交互的推理。虽然目前还不清楚归因于核心认知的内容有多少是在出生时可用的,有多少是通过经验迅速发展的,但很明显,初始状态与世界的结构相互作用,使得这些核心认知能力在生命的头几年可靠地出现。然而,问题仍然存在:学习到底是什么?

为了帮助回答这个问题,本论文通过计算机科学的视角发展了一个理解学习和认知发展的框架。由此产生的视角有可能支持一个统一的、计算上精确的对广泛学习现象的解释,同时对学习者在发展过程中所采用的目标和过程的丰富性和多样性给予公正的评价。这是一个很高的要求,我们以以下方式填补它。

首先,我们引入儿童作为黑客作为一个关于人类特有的学习的表现、目标和过程的假设。像儿童作为科学家的观点(Piaget, 1955; Carey, 1985, 2009; Gopnik, 2012; Schulz, 2012b),儿童作为黑客既是一个富有成效的隐喻,也是关于认知发展的具体的假设来源。它还为发展中的主要现象提供了一个统一的形式化账户的路线图。儿童作为黑客的一个关键部分是学习作为编程的观点,它认为符号程序——即代码——提供了我们所拥有的最好的正式知识表示。因此,学习变成了一个创造新的心理程序的过程。

总体方法是Fodor(1975)思想语言(LOT)的现代表述。

第1章的其余部分回顾了支持学习作为编程的证据,并认为虽然作为计算水平理论(Marr, 1982)越来越稳固,但它仍然不明确。第2章通过从黑客行为中汲取灵感来扩展学习作为编程的观点,黑客是一种强调人类用来改进代码的多样化目标和手段的内部驱动的编程方法。我们的核心主张是,黑客的具体表示、动机、价值和技术构成了一组关于学习的基本上未经测试的假设。

这篇论文的其余部分致力于通过深入的实证研究,对“儿童作为黑客”这一假设进行形式化和评估,研究人类和机器的概念学习。虽然我们特别受到儿童学习的启发,但许多关键问题被假设为在学习者的整个生命周期中都是相关的。因为通常从成人那里收集丰富的数据比从儿童那里更容易,所以这项研究的重点是成人的概念学习。这些发现可能也适用于儿童学习者,但我们特别将发展性应用标记为未来的研究方向。

在第3章中,我们将列表函数作为一个研究人类概念学习的领域。这个领域的前提是简单的:概念由从列表到列表的可计算函数组成。我们特别关注涉及自然数列表的概念。这个领域在人工智能领域有着悠久的历史(Green等人,1974年;Shaw等人,1975年;Biermann,1978年;Green,1981年;Smith,1984年;Feser等人,2015年;Osera和Zdancewic,2015年;Polikarpova等人,2016年;Cropper等人,2019年),但在认知心理学中相对较少研究。我们展示了它如何结合了许多经典概念学习任务的最佳特点。

归纳学习可以被构建为在层次生成模型中的推断,这个模型支持多种相关任务。该领域对参与者来说是熟悉的,允许他们在学习过程中利用丰富的背景知识。它包含具有复杂内部结构的复杂对象。至关重要的是,它包含自然数,并将其作为符号、序数和基数值使用。它支持算法上复杂的概念——在正确的假设下,该领域在计算上是通用的。尽管如此丰富,列表和数字是研究充分的对象,具有简单的形式描述和完善的相关概念库。这使得构建模型变得简单,其概念可以从非常简单平滑过渡到极其困难。我们进一步展示,列表函数实际上包含了许多经典任务,并捕捉了关键发展成就的动态,同时使得探索更丰富的算法思维成为可能,这些算法思维涉及复杂结构。我们认为,其长期的计算历史和作为心理学研究领域的潜力使其成为研究将黑客作为学习隐喻和更广泛地研究认知发展的首要候选领域。

接下来,我们介绍了HL(类似黑客),这是一个计算模型,用于归纳概念学习,它在应用“儿童作为黑客”的教训方面迈出了重要步骤。第4章详细描述了这个模型。模型架构的每个方面——包括其表示、目标和学习机制——都是通过黑客的视角解释的人类学习现象。简单来说,HL将学习建模为整个编程语言的迭代发展,捕捉了发展特定领域语言的动态,类似于人类发展由推理角色语义控制的概念系统。它使用基于手头任务变化的复杂目标函数,优先考虑准确性、良好形成性、可发现性和简单性。这些目标允许它避免过早优化,在搜索过程中探索次优甚至错误的假设,同时在后期决策中优先考虑最佳假设。它还允许一种查询引导的搜索(Chu等人,2019)。最后,通过使用多样化的结构化学习机制,HL重新参数化了搜索。它不是直接搜索特定的语言,而是搜索描述紧凑生成过程以创建编程语言的元程序空间,并能够快速发现某些类型的复杂语言。因此,它执行了一种与黑客实践的迭代修订和重构相关的假设和目标驱动的搜索。这些特点都是使用列表函数来说明的。

有强有力的规范性论据(Solomonoff,1964a;Jefferys & Berger,1992;Chater & Vitányi,2003;Baum,2004;Grünwald,2007)表明,在其他条件相同的情况下,人们更倾向于选择一个简单的数据解释而不是一个复杂的。最近的实证工作也表明,在许多情况下,学习的难度与形式上的简单性度量强烈相关,例如假设空间的大小或在领域适当的模型LOT中概念的描述长度(Feldman,2000;Tenenbaum,1999,2000;Goodman,Tenenbaum,Feldman等人,2008;Piantadosi等人,2012,2016)。相比之下,“儿童作为黑客”强调学习的丰富性,并预测学习者会利用多样化的结构敏感价值和学习机制,其中一些可能会将学习假设的复杂性与其在目标LOT中的描述长度分离。因此,学习复杂性可能与概念的其他结构特征的关系更紧密,而不是与其描述长度或假设空间的大小有关。

为了实证研究这些想法,第5章介绍了一个包含250个列表函数的基准测试集,并评估了人类对每个函数的学习。我们将每个任务编码为一个丰富、领域适当的模型LOT中的程序。我们分析了这些程序的结构特征,描述了各种语法和语义属性。其中包括多个描述长度的度量和多个可见性的度量,这是一个我们引入的概念,用来描述从观察到的输入/输出对中推断程序中每个符号的透明度。其他度量与递归、条件和数值推理有关,包括计数知识的使用。然后,我们报告了一个大规模的在线行为实验,测试了人类对这250个概念的学习。我们发现,虽然我们的描述长度度量具有预测性,但当考虑语义特征时,预测的准确性会显著提高。最后,我们展示了与描述长度内在联系的学习计算模型,特别是基于语法的枚举和随机抽样,与HL模型相比,在描述整个数据集中的人类表现方面做得要差得多,HL模型对语义结构敏感。这项工作表明,人类——与基于抽样或穷举的简单学习算法不同——对数据中的结构特征非常敏感,这些特征可以用来推断语义内容。他们可能能够使用学习机制来导航他们的假设空间,这些机制将概念的复杂性与搜索的复杂性分离。因此,他们能够快速学习复杂的概念,找到数据的最简单解释,这种方式在很大程度上可以与解释本身的复杂性脱钩。虽然人类强烈偏好简单的解释,而且简单性有时是学习难度的主要预测因素,但学习往往不仅仅是简单性。

第6章从计算上研究了这些想法。它比较了HL与几个基于程序归纳的基准概念学习模型,以它们预测人类对250个列表函数中100个概念子集的学习表现的能力。这些概念被选中是为了代表第5章分析的广泛特征,同时对当前的学习模型仍然可行。HL实现了通过多样化的结构敏感学习机制进行学习的想法。其余模型各自体现了学习作为编程的典范方法:穷举搜索、随机搜索、证明引导搜索和神经程序合成。HL在解释参与者在这些任务中的成功和失败模式方面,比竞争模型做得更好,捕捉到了目前其他模型中缺失的人类学习的重要方面。HL并没有完全弥补差距,因此第7章描述了一系列对类似黑客的学习模型以及更广泛的“儿童作为黑客”假设的关键下一步。

1.1 关于学习的三个观察

学习和认知发展的谜题——人类如何能够如此迅速地从如此少的信息中获得如此多——位于认知科学的核心。有多种知识和学习形式,而且心智似乎为每种知识配备了不同程度的特定领域支持(Carey, 2009; Fodor, 1983)。有些学习在几秒钟后结束,留下一种顿悟的感觉(Sternberg & Davidson, 1995),而其他学习则需要多年的艰苦努力,看起来像是零碎的努力(Davidson et al., 2012; Barner, 2017)。然而,无论学习的内容是什么,或者跨越的时间跨度如何,解开这个谜题都需要描述四件事:学习前心智的状态,学习后心智的状态,心智如何在这两者之间过渡,以及这种过渡所服务的目标。

三个一般性的观察为开始应用这个框架提供了一种方式。考虑概念𝑐1。它代表了一种将数字列表转换为单个数字的方式,因此将𝑐1(𝑥) = 𝑦读作𝑐1将𝑥转换为𝑦。我们很快就会更详细地描述𝑐1,但现在先花点时间确定它的作用,然后再继续:

𝑐1 最终可能是可以学习的,但只有很少的例子和如此少的上下文,这使得学习变得困难。这突出了第一个观察:有些概念和概念系统是人类可以学习的,但学习起来却很困难。例如,范畴论、粒子物理学和美食烹饪都是极其复杂的概念系统,成千上万的人已经掌握了这些系统,但只有通过长时间的努力。现在,考虑下面的概念𝑐2、𝑐3和𝑐4(𝑐4 接受两个参数),并尝试确定它们的作用:

这三个概念引出了第二个观察:有些概念很容易学习。对许多人来说,𝑐2、𝑐3和𝑐4比𝑐1容易学得多。𝑐2接收一个列表并提供列表中的第一个元素,即列表头部的元素。𝑐3接收一个列表并返回去掉头部后的列表,我们可以称之为列表的尾部。𝑐4接收一个数字和一个列表,计算该数字在列表中出现的次数。这些概念可能立即显而易见,或者需要稍作思考,但它们直接建立在你可能已经知道的东西上。

这引出了第三个观察:在正确的先行概念课程的帮助下,学习困难概念要容易得多。这样的课程应该教授一系列先行概念,使困难概念更容易表达,但也应该避免对表达困难概念不必要的概念。课程应该针对所讨论的概念系统量身定制。像范畴论这样复杂和抽象的东西,在学过算术、集合和代数之后会变得容易得多,但学习北印度地理或自行车维修对其帮助相对较小。𝑐2、𝑐3和𝑐4之所以容易,只是因为大多数读者已经掌握了列表和计数的先行概念。缺乏这些概念的读者可能需要一个首先教授这些内容的课程(而不是登山或手风琴)。就像𝑐2-𝑐4依赖于计数和列表一样,𝑐1依赖于𝑐2-𝑐4;它们是𝑐1的课程。简要地重新考虑前一页上𝑐1的例子,从它们的角度来看。

这三个概念共同提供了一种简洁的方式来解释𝑐1,它计算列表头部在尾部出现的次数:

这些观察所给出的总体直觉是,概念是通过其他概念组合构建的,拥有正确的概念在正确的时间是学习成为可能的关键。从这个角度看,初始状态是一组初始概念,最终状态是另一组概念。变化的机制是按照某种课程迭代地发明和组合概念,将初始状态的概念发展到最终状态的概念。目标是揭示对数据的更好描述,在我们所说的“更好”的所有丰富含义中。这可能不是唯一的学习类型,但它确实至少描述了它们所做的一些事情。

其他几条推理线索支持这些直觉,并表明认知发生,或者可以被建模为发生在比概念的混沌汤更结构化的东西中:一种心理语言或思维语言(LOT;图灵,1936;Fodor,1975;Fodor & Pylyshyn,1988;Fodor,2008)。每个概念都是这种语言中的一个表达。解释学习和发展然后变成了一个问题,即指定从婴儿期开始的LOT及其伴随机制的轨迹。为了避免一种激进的天赋论,即每个可能的概念要么从出生就知道,要么只是一个短暂的搜索距离(Fodor,1975;Fodor,1980),指定变化不仅包括LOT如何组合概念用于临时使用的变化,还包括LOT本身如何变化(Gopnik,1983;Carey,1985,2015)。

1.2 知识即代码

要解释LOT如何变化,需要描述LOT是如何被表示的,学习如何提出对LOT的更改,以及提案是基于什么被接受或拒绝的。认知科学中的大量研究工作已经汇聚到这样一个假设上:人类学习是在结构化、概率性的、类似程序的表示上进行操作(Chater & Oaksford, 2013; Zylberberg et al., 2011; Calvo & Symons, 2014; Lake et al., 2017; Goodman et al., 2015; Piantadosi & Jacobs, 2016; Goodman, Tenenbaum, Feldman, et al., 2008; Depeweg et al., 2018; Rothe et al., 2017; Erdogan et al., 2015; Yildirim & Jacobs, 2015; Amalric et al., 2017; Romano et al., 2018; Wang et al., 2019; cf. Lupyan & Bergen, 2016)。这种现代表述将LOT视为类似于计算机编程语言的东西。在LOT中的学习包括形成表达式以编码知识——例如,组合像CAUSE、GO和UP这样的计算原语来形成LIFT(Siskind, 1996)。这项工作认为,需要一种组合性的心理语言来解释思维的系统性、生产力和组合性(Fodor, 1975; Fodor & Pylyshyn, 1988; Calvo & Symons, 2014);需要一种能够维持结构分布的概率性语言来解释思维的变化和渐变(Goodman & Lassiter, 2015; Goodman, Mansinghka, et al., 2008; Lake et al., 2017; Goodman et al., 2015);需要一种表达性语言——能够进行本质上任何计算——来解释思维的范围(Turing, 1936; Baum, 2004)。尽管有比较和跨文化工作寻求心理语言的语义原语(Wierzbicka, 1996),其他工作表明学习者增加和移除原语,有效地构建了全新的语言(Barner & Baron, 2016; Carey, 2009, 1985; Gopnik, 1983)。

将心理表示建模为程序,将LOT建模为编程语言,除了经验上的成功之外,还有很好的理由。人类拥有广泛的算法知识,在许多领域以结构化的方式操纵复杂数据(表1.1)。符号程序——即计算机代码——形成了算法知识的通用正式表示(Turing, 1936; Baum, 2004),因此可能是目前可用的最好的心理表示模型。尽管有其他许多建模概念表示的提议,但只有程序可以说捕捉到了人们算法能力的全貌和深度(Goodman et al., 2015)。程序作为操纵信息的工具的迅速崛起——从明显符号化的领域如数学和逻辑,到看似非符号化的领域如视频、音频和神经处理——进一步确定了程序作为一种有能力的知识表示(例如Andreessen, 2011)。程序还可以以多种形式进行交流,不仅包括正式的编程语言,还包括所有文化中熟悉的各种形式,包括自然语言(例如如果你想X,首先你需要Y,然后尝试Z,但如果那失败了……;Lupyan & Bergen, 2016)和象征性图像(图1-1)。


代码可以模拟程序性(第2.2节)和陈述性信息(第2.3节),并允许它们无缝交互(图2-3和2-4)。它在多个层次上运作,包括:单个符号、表达式、语句、数据结构和函数、库,甚至整个编程语言。每个层次都可以与其它层次交互:库可以将一种语言嵌入到另一种语言中,语句可以定义数据结构,高阶函数可以将函数作为参数并返回函数作为输出。这引出了使代码如此成功的一个基本见解。通过将计算编写为代码,它们变成了可以被正式操作和分析的数据(Abelson et al.,1996)。因此,编程语言变成了以代码为输入并输出代码的程序。由于所有编程语言都是程序,任何可以在任何程序中表达的知识都可以被整合到单一的正式知识表示中。

程序根据正式的语法来表达,它们的语义通过程序之间的某些明确定义的模型(例如图灵机、x86处理器或λ演算的规则)来指定计算。程序的意义因此受到它参与的一系列关系的约束,这是一种程序性语义(Johnson-Laird, 1977; Woods, 1981),也被称为概念角色语义或推理角色语义(Field, 1977; Harman, 1975, 1987, 1982; Loar, 1982; Block, 1987, 1997)。程序性语义声称程序通过它们与其他程序的关系获得意义。例如,在简单的算术语言中,数字2的意义基于语言解释器定义了一个求值关系=,使得后继(one) = 2和前驱(three) = 2,素数(two) = true,偶数(two) = true,等等。这些和其他关系约束了2的意义,并将其与3或前驱区分开来,后者在=下参与不同的关系。程序性语义常被批评为容易受到概念整体论(Fodor & Lepore, 1992)的威胁,即如果表达式是根据它们与其他表达式的关系来定义的,那么任何小的变化都可能对整个系统产生严重的后果。然而,编程语言已经引入了封装信息的技术——模块化代码、对象、命名空间和显式依赖结构等(Harper, 2016)——这允许成千上万甚至数百万人编写的代码作为统一的语言进行交互。

1.3 学习即编程

如果知识是代码,那么学习就是程序归纳:发现解释观察到的数据是如何生成的程序(Kitzelmann, 2009; Flener & Schmid, 2008; Gulwani et al., 2017)。这一理论借鉴了追溯到认知科学诞生之初的归纳式编程文献(Newell et al., 1958; Newell et al., 1959),包括在递归程序合成(Smith, 1984)、结构和启发式发现(Lenat, 1976; Lenat, 1983)、元编程(Sussman, 1973; Schmidhuber, 1987)、遗传编程(Holland, 1975; Koza, 1989)和归纳逻辑编程(Shapiro, 1983; Muggleton & De Raedt, 1994)方面的发展。这种方法还利用了其他学习形式化见解,例如深度学习(LeCun et al., 2015)、连接主义(Rumelhart et al., 1987)、强化学习(Sutton & Barto, 2018)、概率图模型(Koller & Friedman, 2009)和产生式系统(Lovett & Anderson, 2005)。这些可以被视为探索特定子类程序或可能的实现理论。然而,学习即编程的方法在为学习者提供符号程序的全部表达能力方面有着重要的不同,无论是在理论上(即图灵完备性)还是在实践上(即采用任何正式语法的自由)。

这种方法广泛应用于发展现象,包括计数(Piantadosi et al., 2012)、概念学习(Goodman, Tenenbaum, Feldman, et al., 2008; Piantadosi et al., 2016)、功能词(Piantadosi, 2011)、亲属关系(Mollica & Piantadosi, 2019)、理论学习(Kemp et al., 2010; Ullman et al., 2012)、动词学习(Siskind, 1996; Abend et al., 2017; Gauthier et al., 2019)、问答(Rothe et al., 2017)、语义和语用(Goodman & Lassiter, 2015; Goodman & Frank, 2016; Frank & Goodman, 2012)、递归推理(Lake & Piantadosi, 2020)、序列操作(Rule et al., 2018)、序列预测(Amalric et al., 2017; Cheyette & Piantadosi, 2017)、结构学习(Kemp & Tenenbaum, 2008; Stuhlmuller et al., 2010)、行动概念(Lake et al., 2015)、感知理解(Depeweg et al., 2018; Overlan et al., 2017)、因果关系(Goodman et al., 2011)和物理推理(Ullman et al., 2018)。这些应用建立在研究通过推断可能生成观察到的数据的计算过程来理解世界的智能体的传统之上,这在某种意义上是最优的(Solomonoff, 1964a; Hutter, 2005),并与理性建构主义的发展模型相一致(Xu, 2019; Gopnik & Wellman, 2012; Xu & Griffiths, 2011; Gopnik & Tenenbaum, 2007)。

尽管这些观点在经验和理论上似乎越来越有根据,但要将它们形式化为对儿童学习的健全和精确描述,仍有许多工作要做。大多数最近的LOT(语言习得理论)工作都主张学习者寻求简短(简单)的程序来解释观察到的数据,这是奥卡姆剃刀的一个版本。对简单性的偏好支持泛化而非记忆,而对拟合的偏好则支持与世界相匹配的表示。

数学上,这两种方法可以通过使用贝叶斯定理或最小描述长度形式主义以原则性的方式进行平衡,以支持简单、解释性的程序(Goodman, Tenenbaum, Feldman, et al., 2008; Feldman, 2000),这是一种原则性的方法(Kolmogorov, 1963; Solomonoff, 1964a; Jefferys & Berger, 1992; Chater & Vitányi, 2003; Baum, 2004; Grünwald, 2007; Grünwald & Vitányi, 2008),它很好地符合人类数据(Tenenbaum, 1999, 2000; Feldman, 2000; Goodman, Tenenbaum, Feldman, et al., 2008; Piantadosi et al., 2016)。贝叶斯LOT模型通常假设学习者通过从程序的后验分布中随机抽样来提出候选方案,这一过程在经验上类似于儿童明显的零碎、间断的发展(Ullman et al., 2012)。

将知识建模为代码,将学习建模为编程在许多单独领域中运作良好。然而,我们需要对心理表示及其发展进行一般性的形式化。“儿童作为黑客”提供了这样一个解释,强调信息如何可以作为代码进行编码、评估和操作,无论领域如何,目的是发展适用于广泛类别的人类学习现象的正式工具。第2章详细讨论了“儿童作为黑客”的概念,并说明了它如何被应用于解释发展心理学中几个著名的案例研究。

第2章

儿童作为黑客

本章介绍了“儿童作为黑客”作为一种假设,关于具有独特人类特征的学习的表示、过程和目标。与“儿童作为科学家”的观点(Piaget, 1955; Carey, 1985, 2009; Gopnik, 2012; Schulz, 2012b)一样,“儿童作为黑客”既是一种富有成果的隐喻,也是关于认知发展的具体的假设来源。它还提出了一个路线图,可能是对发展中主要现象的统一形式化解释。我们通过从黑客行为中汲取灵感,扩展了第1章讨论的“学习即编程”的观点,强调人类为了改进代码而使用的多样化目标和手段。我们的核心主张是,黑客的具体表示、动机、价值观和技术构成了一组关于学习的大体未经检验的假设。

2.1 从编程到黑客

尽管“学习即编程”的观念在形式化基于LOT的学习中很重要,但完全基于简单性、拟合度和随机搜索的观点可能不完整。大多数需要类似程序解决方案的实际问题都足够复杂,以至于没有单一的效用度量或统一的发展过程(图2-1)。即便如此,现代计算方法对学习——无论是标准学习算法还是更近期的LOT模型——所使用的技术和价值观远少于人类程序员。对于任何重要的任务,软件工程意味着使用许多技术在许多尺度上迭代累积对代码的许多更改(图2-2)。

接下来,我们用一种称为黑客的独特人类编程风格来丰富“学习即编程”。如今,“黑客”这个术语有许多含义:恶意的、笨拙的、积极的、道德的和文化的。我们并不直接引入这些现代的含义,而是借鉴了现代计算文化起源时期关于黑客的早期想法(Levy, 1984)。在这里使用的黑客,是关于探索复杂系统的极限,从手头上的任何东西开始,迭代地将系统推向最初看似不可能的极限。因此,我们首先将黑客定义为使代码变得更好的行为。

但黑客的本质更深层次。它在于所有被视为“更好”的价值观,人们用来改进代码的所有技术,以及深刻的内在动机感。

2.1.1 黑客的多种价值观

黑客可能寻求在多个维度上改进她的代码,使其不仅更准确,而且可能更快、更清晰、更模块化、更节省内存、更可重用、更聪明等等(表2.1)。最简单的程序不太可能是最通用的;最快的通常不是最容易编写的;最优雅的通常不是最容易扩展的。重要的是,现实世界的系统并不完全专注于当前LOT学习范式中突出的指标。除了准确性和简单性,黑客还关心与资源使用、内在奖励、审美关注以及构建复杂表示特有的一系列价值观相关的价值。因此,他们经常维护同一问题的多种解决方案,针对彼此之间可能会产生紧张关系的不同价值集进行调整。此外,现实世界中有效的系统更关心管理复杂性,而不是简短、简单或简洁——尽管这些有时是管理复杂性的有用工具。事实上,计算机科学中的许多基础思想与其说是关于计算本身,不如说是关于在将计算投入使用时不可避免产生的复杂性的管理(Abelson et al., 1996; Fowler, 2018)。

2.1.2 黑客的多种活动

为了追求这些多样化的目标,黑客开发了许多用于改进他们表示的过程级机制(Fowler, 2018),包括添加新的函数和数据结构、调试有缺陷的代码、重构代码,甚至发明新的语言(表2.2)。黑客了解数十种甚至数百种这些机制及其对各种价值观的潜在影响。有些进行小的、系统的、可预测的更改,而其他则是戏剧性的和变革性的;大多数是专门为特定类型的问题量身定制的。


例如,黑客可能关心速度,因此在算法中缓存子计算的输出。她可能寻求模块化,因此定义封装信息并通过特定接口使其可访问的数据结构。或者,她可能寻求可重用的部件,因此将常见计算抽象成命名函数。这种技术的多样性使黑客不同于常见的学习算法和最近的LOT模型。通常,这些其他模型探索一组改进程序的技术,基于相对简单的(甚至是愚蠢的)局部方法,如梯度下降、随机抽样或穷举搜索。

2.1.3 黑客的内在动机

黑客行为是出于内在动机的。尽管黑客可能部分地受到外在目标的激励,但她总是自己生成目标——选择她想要改进的特定维度——并且至少是出于改进代码的内在奖励,而不仅仅是为了任何工具性目的而追求这些目标。有时,她的目标很难客观评估,因此不太可能来自外部。其他时候,她的目标可以客观衡量,但她选择它不管——也许是反对——外部目标(例如,使代码更快,尽管杰出的外部请求明确针对更高的准确性)。无论它们的起源如何,她选择的目标通常看起来是自发的,甚至是随机的。她的特定目标和价值观可能几乎和代码本身一样频繁地变化——根据最近的变化不断更新。她对实现每个目标非常感兴趣,但她经常在达到当前目标之前就采用新目标,原因有很多:感到无聊、认为她的进步“足够好”、陷入僵局,或追求其他项目。然而,她并不是随机地从目标到目标游走,而是学会了维护目标网络:放弃糟糕的目标,确定子目标,缩小、扩大,并暂时搁置目标以便以后重新审视。即使她最终实现了她的初始目标,她所遵循的路径可能也不是最直接的。因此,她的目标主要是改进她的代码的手段,而不是它们本身的目的。

黑客中内在动机和积极目标管理的基本作用表明,它与好奇心和游戏(Oudeyer, 2018; Gottlieb et al., 2013; Kidd & Hayden, 2015; Haber et al., 2018)有着深刻的联系,后者也被认为在儿童的主动学习中发挥中心作用。我们在这里不对这些联系进行推测,只是说在思考黑客的内在动机时,我们受到了Chu和Schulz探索游戏中的角色目标和问题解决工作的启发(Chu & Schulz, 2020)。对学习和黑客这两个方面的进一步理解,可以通过我们寻找更好解释游戏和好奇心的账户来获得信息。

2.1.4 整合所有要素

黑客的所有这些组成部分——多样化的价值观、改变代码的技术工具箱,以及深刻的内在动机——结合起来,使黑客成为一种既非常成功又情感上吸引人的编程方法。选择适当的价值观、目标和代码更改的能力,将看似随机的行为转变为可靠地更好的代码。内在动机、不确定的结果和迭代改进的结合,使黑客成为一种创造性和有益的体验。考虑以下三位经验丰富的黑客的引述(其中两位来自关于特定编程语言Forth和Lisp的书籍,但教训更广泛适用):

常见的序列是:阅读代码,获得一些见解,并使用重构将这些见解从你的大脑重新移回代码中。更清晰的代码随后使得理解它变得更容易,从而获得更深入的见解,并形成一个有益的正反馈循环。仍然有一些改进我可以去做,但我觉得我已经做得足够好,以通过我的测试,将代码显著改进,比我找到它时更好……有效的[黑客]的关键是认识到,当你采取微小的步骤时,你会更快,代码永远不会坏,你可以将这些微小的步骤组合成实质性的变化。(Fowler, 2018)

[你的代码]然后成为描述更高级别编写的组件的数据结构和算法的语言……现在Forth的方法变得清晰。Forth编程包括将根语言扩展到应用程序,提供新的命令,可以用来描述手头的问题……事实上,你不应该用Forth编写任何严肃的应用程序;作为一种语言,它根本不够强大。你应该做的是在Forth中编写你自己的语言……以模拟你对问题的理解,在其中你可以优雅地描述其解决方案。(Brodie, 2004)

在Lisp中,你不仅仅是将你的程序写向语言,你也在将语言构建向你的程序。当你在编写程序时,你可能会想“我希望Lisp有这样的操作符。”所以你去做了。之后你意识到使用这个新操作符会简化程序另一部分的设计,等等。语言和程序共同进化。就像两个交战国之间的边界一样,语言和程序之间的界限被画出来又被重新画,直到最终它沿着你的问题的自然边界——山川——安定下来。最终,你的程序看起来就好像语言是为它设计的一样。当语言和程序彼此契合得很好时,你最终得到的代码是清晰、小巧且高效的。(Graham, 1993)

这就是黑客如何开发软件的方式。例如,考虑Linux内核的发展,它是几个流行的操作系统的基础,也是一个长期运行的开源项目。Linux最初是一个个人项目,旨在帮助当时还是本科生的Linus Torvalds了解操作系统。它已经发展到包含超过750,000次记录的修订,由超过25,000名黑客贡献(Ellerman, 2020)。它的开发者有多种兴趣,包括:效率、准确性、对崩溃的鲁棒性、安全性、跨硬件平台的可移植性、特定领域的实用性(例如科学或嵌入式计算)和模块化。开发使用多种编程语言进行,并依赖于许多工具,有些是专门为Linux开发的。对黑客价值观和技术的一致和重复应用,将这个业余项目转变为一个大型(超过一千五百万行代码)、能力强大且可靠的代码库,仍在积极使用和开发中。

图2-2以两种方式展示了Linux随时间的戏剧性转变。首先,Linux的源代码存储在文件中,这些文件被分层组织到目录中。语义相关的文件被存储在一起,使得目录结构的增长(见“目录”)代表了Linux知道如何做的事情的种类的增长。例如,一个目录可能包含表示文件系统的多种方式,另一个可能包含与外部硬件如显示器和键盘通信的代码等。对这种分类法的更改可能会增加完全新的种类(例如网络),或者它们可能会将旧的东西分成多个类别(例如为Linux可以使用的每个文件系统添加一个目录)。其次,Linux内核中的大多数单个文件描述了模块。新模块的创建代表了新的代码库的创建,无论是通过编写完全新的代码,还是通过将以前是一个单一库的内容重新组织成几个相关但有意义的不同库。虽然这些模块使用分层目录结构进行物理组织,但任何给定模块中的代码可能依赖于其他模块中编写的其他代码。这种依赖结构的变化(见“模块”),而不是代表分类增长,主要代表了对于理解给定领域相关的变化的表示种类。因此,图2-2展示了Linux知道如何做的事情的种类的增长,以及支持这些能力的表示的相互连接性的增长。

2.2 早期算术的黑客行为

通过黑客的视角来观察一个具体的认知发展中的算法修订例子是有帮助的:学龄前儿童和低年级学生如何学会解决像2 + 3这样的简单加法问题。在本节中,我们展示了如何使用“儿童作为黑客”来解释算术学习中的关键发现,这些发现是按照黑客价值观和技术改变类似代码的表示的自然结果。

我们关注众所周知的求和到最小值过渡(Ashcraft, 1982, 1987; Groen & Resnick, 1977; Kaye et al., 1986; Siegler & Jenkins, 1989; Svenson, 1975),在这个过渡中,孩子们自发地从分别计算每个加数然后重新计算整个集合(求和策略)转变为从较大的加数开始计算较小的加数(最小策略)。小数目的加法已经被多次建模(Siegler & Shrager, 1984; Siegler & Jenkins, 1989; Shrager & Siegler, 1998; Jones & Van Lehn, 1994; Neches, 1987; Resnick & Neches, 1984),但即使这个案例众所周知,它对于普遍理解学习的重要性(Siegler, 1996)并没有得到充分认识。这个领域值得注意,因为孩子们学习程序,并且在这样做的过程中,展现出许多黑客的特征。

在整个过渡和之后的过程中,孩子们在获得新策略时并不会丢弃以前的策略,而是保持多种策略(Baroody, 1984; Carpenter & Moser, 1984; Geary & Burlingham-Dubree, 1989; Goldman et al., 1989)。特别是Siegler及其同事的工作,明确地处理了学习者可能采取的多种价值观的复杂性,以及需要在解决同一问题的多种策略中进行选择的必要性。他们已经表明,孩子们会根据不同的特征(如速度、记忆需求和对错误的鲁棒性)逐次适当选择不同的策略(Siegler & Jenkins, 1989; Siegler, 1996)。

表2.3实现了几种早期加法策略作为代码。为了节省空间,我们突出了五种策略(参见Jones & Van Lehn, 1994; Siegler & Shipley, 1995)。孩子们通过与父母非正式互动或在正式教育开始时获得求和策略(Saxe et al., 1987; Siegler & Jenkins, 1989; Baroody & Gannon, 1984)(sum; 表2.3)。sum似乎针对教学和学习进行了优化。它简单,使用熟悉的计数程序,需要很少的死记硬背,并且尊重孩子们有限的工作记忆。它还计算孩子计数列表中的任何总和,使sum成为加法的一个准确而简洁的策略。大多数最近的LOT模型会认为问题已经得到了很好的解决。然而,sum慢且重复,对每个对象计数两次。

将sum重构为同时跟踪两个计数,在创建每个加数时更新总和,每个对象只计数一次,并明确表示一个强有力的概括:在这里,两个计数不是偶然的,而是用于紧密相连的目的。结果是shortcutSum(表2.3):计算每个加数,背诵总计数而不是当前加数计数。shortcutSum使用新实现的函数raiseCount同时跟踪两个计数。同时保持计数增加了工作记忆负荷和出错的潜力,并且不出所料,是一种较晚发展的计数技能(Fuson et al., 1982; 参见Steffe et al., 1983)。包含同时计数的加法策略自然出现在小学早期(Fuson et al., 1982),但如果给予练习,也可以更早地发现(Siegler & Jenkins, 1989)。

许多改进代码的技术对记录程序逐步行为的执行跟踪敏感。例如,在shortcutSum中,对raiseCount的第一次调用是多余的:它计算出第一个加数a1以产生y,这意味着y等于a1。移除第一次计数并将y替换为a1产生了countFromFirst(表2.3)。它平均速度是shortcutSum的两倍,同时减少了手指和工作记忆的需求。

然而,这些变化不仅仅基于代码;它们需要通过对代码行为的敏感性,例如通过执行跟踪。虽然在儿童中有报道,并在理论账户中很常见(Neches, 1987; Secada et al., 1983; Resnick & Neches, 1984),但关于countFromFirst在实践中出现的频率存在争议(Siegler & Jenkins, 1989; Shrager & Siegler, 1998)。

黑客对问题的基本理解的变化是修订的另一个来源。新的理解通常来自于以“拼装”(Turkle & Papert, 1992)的方式玩代码,而不是正式教学。例如,她可能注意到加法是交换的——改变加数顺序从不会影响最终总和。shortcutSum有助于解释为什么:每个举起的手指正好增加一次总和。交换律原则最早在一年级正式引入(国家州长协会最佳实践中心,2010),但可以更早独立发现(Baroody & Gannon, 1984)。在孩子们理解加法是交换的之前,交换策略也很常见,这表明对加法的理解不完整或不正确(Baroody & Gannon, 1984; Steffe et al., 1983)。

这些发现证明了当第一个加数小于第二个加数时交换加数顺序的合理性。这给出了经过充分研究的min策略:从较大的加数开始计算较小的加数(min;表2.3)。min也许是最好的小数目加法策略,从一年级到成年都很常见(Groen & Parkman, 1972; Groen & Resnick, 1977; Ashcraft, 1982, 1987; Kaye et al., 1986; Svenson, 1975),但如果有广泛的练习,也可以更早自发发展(Siegler & Jenkins, 1989)。平均而言,min消除了countFromFirst所需的一半计数,并进一步减少了手指和工作记忆的需求。然而,min需要快速比较数字的能力——黑客方法自然地利用了相互作用的,通常是同时发展的,认知能力库。

最后,如果黑客多次遇到某些加法问题,她可能会意识到,通过在第一次计算后记忆和检索答案,可以节省时间(检索;表2.3),就像在动态规划算法中一样(Cormen et al., 2009)。事实上,随着孩子们年龄的增长,他们越来越依赖于不需要外部提示的策略(例如手指、口头计数),而越来越多地依赖于记忆(Siegler & Jenkins, 1989),这是一个人类正式教授的过渡(国家州长协会最佳实践中心,2010),也是独立发现的(Saxe, 1988b, 1988a)。因此,我们对小数目加法发展的了解与儿童作为黑客非常吻合,这自然地适应并统一了许多看似不同的现象。儿童作为黑客还为加法和相关领域的工作提出了几个下一步。

首先,我们需要模型来形式化知识作为使用黑客价值观、目标和技术修改的代码。将算术学习明确地置于儿童作为黑客的背景下,可能会提出有用和新颖的假设(例如特定的黑客技术(Fowler, 2018)可能解释特定的策略引入链;价值观的差异可能解释性能的差异(Siegler & Jenkins, 1989))。

其次,数学学习远远超出了小数目加法,包括对数字的早期敏感性以及计数的发展,以及后来对大数目的组合语法、无限概念、更复杂的算术等的发展。这些都需要程序性和陈述性知识之间的深度互动。儿童作为黑客提出了将这些现象整合到数学发展的一般账户中的方法。

例如,发展对简单技能计数的程序性掌握和对其陈述性意义的概念性把握是一个迭代和长期的进程,多年来逐渐展开。在划出初始语义领域后(Wagner et al., 2016; Bloom & Wynn, 1997; Wynn, 1992b),18个月大的儿童在他们自己计数之前就认识到了他人正确计数的特征(例如使用数字词,触摸所有物品)(Slaughter et al., 2011)。黑客通过编写他们想要复制的行为的规范谓词来发展类似的敏感性。图2-3a显示了这样一个谓词,它接受一个函数f作为输入,该函数从集合到计数词,并返回一个布尔值,指示该函数是否满足使用计数列表和触摸集合中所有物品的规范。

然后,孩子们获得了自己的计数列表(Briars & Siegler, 1984; Fuson et al., 1982; Fuson, 1988),并基于对小集合基数的核心敏感性(Wynn, 1992a),在获得一般计数程序之前学习一系列部分、子集计数算法(Wynn, 1990a, 1992b; Carey, 2009; Piantadosi et al., 2012)。在这个阶段,孩子们正确地计数,但通常未能将计数与基数联系起来(Davidson et al., 2012; Barner, 2017; Jara-Ettinger et al., 2017)。黑客经常为他们只有基本类型签名的工作函数编写。类型为代码提供了语义摘要,允许对程序的某些属性进行快速和自动化的推理。更复杂的类型系统支持更丰富的推理。图2-3b显示了count,它通过从集合中移除物品并发音计数词来进行计数(Piantadosi et al., 2012)。然而,类型仅将count描述为从集合到计数词的函数——许多不正确的函数也符合这个描述。计数的语义在接下来的几个月和年份中成熟(Davidson et al., 2012; Barner, 2017; Jara-Ettinger et al., 2017),黑客也类似地反复修改类型以编码更详细的信息。在图2-3c中,count的定义没有改变,但类型现在编码了count词表示集合的基数。这标志着对计数作为建立和命名集合基数的更完整理解。

从那里开始,学习基础系统、数字语法和操作大数的程序(Fuson, 1992; Fuson, 1988),最终会引向后继原理(每个数字都有一个后继者)和无限概念(没有最大的数字)(Cheung et al., 2017; Hartnett & Gelman, 1998; Hartnett, 1991; Yang, 2016)。同样,这需要陈述性知识和程序性知识之间的显著互动。黑客可能类似地:开发数值数据结构,编写一个后继函数来操作它们,推断后继的类型,显示输出大于输入,并证明后继与最大数字不兼容。在图2-4中,第1-2行,Digit和Number分别描述了数字或数字可能取的值。第4-11行实现了这些数据结构的后继。在第12行,succ的类型将后继原理编码为一个函数,从整数x到整数y,其中y大于x。类似地,第14-15行描述了greatestNumber作为一个整数x,没有整数大于x。第18-22行是一个失败的类型推断算法的输出,说这些类型是不兼容的,因为succ greatestNumber大于greatestNumber。要么没有最大的数字,要么succ的类型不正确。同样的思维方式也可以应用于其他数学概念,如:形状、模式、乘法、减法、整数、除法、有理数、小数、实数、代数、几何、逻辑,甚至是微积分和高等数学。

第三,最后,作为黑客的孩子还应该为获取不同种类的知识提供算法理论的路径——例如,对物理和社会世界的直观理论——如下所述。

2.3 黑客式直观理论

虽然小数加法的例子考察了数学中的程序性学习,但作为黑客的孩子同样适用于其他领域和知识类型。这一节简要考虑了两个例子:亲属系统(图2-5a)可以被视为社会关系的逻辑和陈述性理论,而孟德尔遗传(图2-6a)则作为生物关系的或然性和因果理论。与早期算术一样,关键点不在于这些确切的过程就是儿童在发展过程中大脑中实际发生的。相反,黑客的工具和技术提供了一种丰富的语言来描述可能发生的事情,并为进一步的调查提供了丰富的形式化假设来源。

黑客可以通过将一系列观察结果压缩成更可重用、更通用和更模块化的代码来实现亲属关系和孟德尔遗传。在这两种情况下,她迭代地改进她的程序——添加、删除和修改代码——并且偶尔通过定义和使用它们来添加全新的结构。有些变化是有帮助的,其他的则被拒绝,最终她产生了两个领域的紧凑理论。

在学习亲属关系时,她可以将任务框架化为将关于个人的长列表关系(图2-5b)重构为高层次亲属关系术语的规则(图2-5c)和一小套基本事实(图2-5d),从中可以轻松推导出所有关系。随着她发展自己的理论,她最终决定在一个名为Prolog的逻辑编程语言中实现它。Prolog将计算表示为称为规则的Horn子句,Head :- Body。如果Body中的每个项都为真,则Head为真。空主体被视为真。这种逻辑表示清晰地匹配了她正在发现的亲属关系的逻辑结构。在这个过程中,我们的黑客假设了四种潜在的关系——parent(X, Y)、spouse(X, Y)、male(X)和female(X)。虽然这些关系没有出现在原始数据中,但将它们添加到系统中最终极大地简化了她的解释。添加它们的过程是直接的。她只是命名每个符号并开始使用它。每个符号在她定义它参与的事实和规则时获得意义。她发现她最感兴趣的术语——brother(X, Y)、sister(X, Y)、mother(X, Y)等。——都依赖于这些新的潜在谓词,而不是像lives(X, Y)或eye_color(X, Y)这样的其他谓词。

有了这个理论,Prolog解释器然后允许她使用演绎证明来推断学习,例如,她的叔叔是谁。

在学习孟德尔遗传时,她可以将任务框架化为将一长串的表型和亲缘记录(图2-6b)重构为一个生物学遗传的因果理论,通过遗传的三大定律将表型与基因型联系起来(图2-6c)。因为遗传模式不是严格的逻辑,而是需要分布推理,并且因为她正在寻找因果解释,我们的黑客将她的理论实现为一个生成模型,使用一个名为Church的概率编程语言(Goodman, Mansinghka, et al., 2008)。Church将计算表示为根据某些内置规则变化的括号限定的树。这些规则可以通过使用def来定义特定叶子或子树的具体变化。例如,图2-6b说叶子数据应该被子树((a1 NA NA (YW WR)) (a2 NA.... 这个生成模型指定了一个未知父母的均匀先验分布(即他们的基因型中的每个基因都是随机抽取的),以及一个基于分离和分离定律的父母繁殖产生孩子的因果过程。结合这些,可以用来抽样给定个体的可能基因型,然后根据显性定律和一系列特征列表,从中推导出他们可见的表型。为了反转这个生成过程来进行推断,她使用Church的内置抽样推断工具查询她的理论,以学习,例如,给定数据中列出的所有个体观察到的表型,a1和a2的可能基因型。

2.4 黑客与其他隐喻

作为黑客的孩子建立在几个其他关键的发展隐喻之上。所有这些观点都是有价值的,并且显著提高了我们对学习的理解。在这里,我们解释了作为黑客的孩子如何扩展这些账户,突出其潜在的贡献。有关每种观点的主要主张的总结,请参见表2.4。

2.4.1 作为科学家的孩子

作为科学家的孩子隐喻是对作为黑客的孩子最强烈的影响之一。这一观点源于皮亚杰(Piaget, 1955)的工作,并自此得到了广泛发展(Carey, 1985; Gopnik, 1996; Carey, 2009; Schulz, 2012b; Gopnik, 2012),强调儿童如何将他们的基础知识结构化为与科学理论在重要方面相似的直观理论(Murphy & Medin, 1985; Gopnik & Meltzoff, 1997; Wellman & Gelman, 1992, 1998),并通过类似于科学家收集和分析证据以及根据证据修改理论的方式来构建知识,构建准确、通用和简单的理论。相关的理性建构主义观点(Xu, 2019)强调儿童在理论构建中使用的复杂机制——贝叶斯统计推断、类比、心理模拟等建构思维过程,以及其他形式的“通过思考学习”(Lombrozo, 2019),以及主动、好奇心驱动的探索——以及将这些机制形式化为理性计算模型的重要性。

作为科学家的孩子和作为黑客的孩子最好被视为自然伴侣,而不是竞争对手,它们在知识表示、认识价值和实践以及学习限制方面有重叠但互补的概念,共同描绘了认知发展的更完整画面。作为科学家的孩子强调儿童的学习主要集中在构建世界的因果模型和支持这些模型的概念系统(直观理论)。它提出了关于理论如何表示、什么是好理论以及支持理论学习的支持机制的问题,从科学家如何处理这些问题中汲取灵感,并将其建议计算化为近似贝叶斯推断在因果网络空间、概率一阶逻辑和概率程序上的实现(Gopnik et al., 2004; Gopnik & Tenenbaum, 2007; Gopnik & Wellman, 2012; Goodman et al., 2015; Ullman et al., 2012; Goodman et al., 2011; Kemp & Tenenbaum, 2008; Kemp et al., 2010)。

作为黑客的孩子通过其对值得学习的表现类型、为学习设定目标的价值以及实现这些目标的有用实践的更广泛视角扩展了这些想法:程序可能超越纯粹的因果关系,好的程序的价值不仅仅是传统上用来评估科学理论的那些(准确性、普遍性、简单性),学习涉及多个时间尺度上的许多算法级过程,而不仅仅是传统上在理论学习贝叶斯模型中使用的概率抽样或搜索机制。这种观点可以在许多具体方式上丰富作为科学家的孩子模型的计算和算法级主张。例如,直观理论可能受益于被形式化为特定领域的库或语言,用于编写生成概率程序(例如第2.3节),构建更激进的新概念类型可以被捕捉为构建新功能和数据类型,而不仅仅是现有类型的新功能或数据结构。表1中好代码的许多价值也可能在指导儿童构建其直观理论的目标中有类似物,表2中改进代码的过程也可能在儿童构建其直观理论的方式中有类似物;也许这些可以帮助形式化一些在作为科学家的孩子和理性建构主义观点中提出的类比、引导、解释驱动和目标驱动搜索的机制(Carey, 2009; Schulz, 2012b; Lombrozo, 2019; Xu, 2019),这些机制尚未被以前的算法级学习模型完全捕捉。

科学家在发展中认识到高度熟悉的科学实践和价值,这也许是合适的,但除了一个引人入胜的隐喻之外,作为科学家的孩子是一个富有成果的假设。它激发了认知心理学中许多儿童作为X的理论,提出了特定模式的科学思维在整个发展过程中的关键作用。儿童可以被视为:语言学家确定语言结构(Gleitman et al., 1977; Karmiloff-Smith, 1992; Labov, 1989);人类学家系统地研究行为(Harris, 2012);统计学家推断潜在的世界结构(Gigerenzer & Murray, 1987; Peterson & Beach, 1967);计量经济学家发现偏好(Lucas et al., 2014);哲学家通过反思和分析提炼理解(Kohlberg, 1968; Selman, 1981)。我们希望,作为黑客的孩子的观点将进一步发展这一富有成效的传统。将儿童作为科学家的隐喻形式化的努力也在其成果中发挥了关键作用(Gopnik et al., 2004; Gopnik & Schulz, 2004; Gopnik & Tenenbaum, 2007; Gopnik & Wellman, 2012; Xu & Griffiths, 2011)。事实上,前面讨论的许多LOT模型是明确为了形式化理论学习以及更广泛的科学过程的方面而开发的。将儿童作为黑客的形式化可能看起来是一个艰巨的挑战,但这个过程对于儿童作为科学家来说需要数十年持续的跨学科努力。对儿童作为黑客的计算模型的长期投资可能同样富有成果。

2.4.2 资源理性与新奇性搜索

资源理性(Lieder & Griffiths, 2020; Griffiths et al., 2015; Lewis et al., 2014)的观点认为,理论必须解释在有限的计算设备中实现的认知。时间、内存和能量都是有限的。因此,学习者可以通过在简单性和拟合度旁边评估资源使用,更快地找到实用的假设。Stanley及其同事围绕观察到许多学习问题需要在有限时间内导航大型假设空间的问题,发展了新奇性搜索(Lehman & Stanley, 2011b, 2011a)的概念。他们证明,对于许多类别的问题,对新奇性敏感的代理比使用其他目标的代理学习更有效。

资源理性和新奇性搜索是思考学习目标的重要方式。作为黑客的孩子接受了这些见解,但对学习者的目标提出了超出这两种观点的主张。首先,它鼓励同时考虑效率和新奇性,而不是单独主张其中之一。其次,它主张对目标函数的可能影响因素有一个大得多的集合,包括工程和审美关注,可能还有更多(表2.1)。第三,它表明学习者的目标不断以复杂且尚不清楚的方式变化,这确定了未来研究的一个关键领域。

与其寻找正确的类人目标函数,作为黑客的孩子建议认知科学家寻求理解整个可能目标的空间以及学习者在它们之间移动的方式。

2.4.3 工作坊和进化隐喻

作为黑客的孩子也与Siegler及其同事强调学习的动态性的一对隐喻密切相关:工作坊隐喻(Siegler & Jenkins, 1989)和进化隐喻(Siegler, 1996)。工作坊隐喻强调了儿童在满足日常生活(工作订单)需求时产生心理表征(产品)时可用的知识(原材料)和学习过程(工具)的多样性,以及为特定产品选择合适的材料和工具的重要性。进化隐喻根据生物进化的观点重新构建了这些想法,强调了变异性、选择性和适应性在学习中的基本作用。这些隐喻共同讲述了一个关于学习的更广泛的故事。两者都认为我们保持多种解决任何给定问题的策略,并随着时间的推移适应性地选择它们,学习它们在特定情境下的有用性。与“阶梯”理论不同,后者建议长时间的相对统一的思考被短暂而戏剧性的转变打断,它们建议儿童在新策略出现和旧策略消失时导航“重叠的波浪”。

作为黑客的孩子与这些隐喻有很多共同之处。它们都强调了在学习期间运用多样化的心理表征的重要性,以及选择与手头特定任务最相关的表征、价值和学习策略。每种观点还强调了知识的迭代修订方式;学习的结果本身通常是未来学习的原始输入。每种观点都使变异性、选择性和适应性成为学习的中心特征。

然而,心灵运作的表征与软件比硬件更相似,看起来更像程序而不是桌子或椅子。我们可以将作为黑客的孩子视为为软件时代更新工作坊隐喻,并专注于构建丰富计算心灵模型所需的工具:我们用程序和编程构造表示知识的所有方式,以及使程序更好的所有价值和活动,这些似乎更直接地与学习和更易于计算形式化的目标和机制相关,而不是木工或金属加工。

作为黑客的孩子可能也更符合儿童在学习期间的目标导向性。进化是一个无意图的过程,其主要变化机制是随机的。在工作坊和进化隐喻中,目标模式可以限制这种随机搜索过程(Shrager & Siegler, 1998),但这与直接和深刻地指导它是不同的。与其他形式的随机搜索或强化学习一样,根据进化机制的学习将因此需要大量的计算和时间(Baum, 2004)。相比之下,儿童的学习非常高效(Tenenbaum et al., 2011),部分原因是它具有强烈的目标导向性(Schulz, 2012b)。儿童的行为有时看起来可能是随机的,但几乎总是有一个潜在的目标驱动着这种行为。明显的随机性来自哪里,进化特征,可能是一个动态变化的目标集合:最初是𝑋,然后是𝑌,然后是𝑍,然后回到𝑋,直到它实现,等等。这种动态与黑客目标的内在性质更一致,儿童的目标可能以不同的方式解决不同的价值,从而使每种方式都改善了表征。从外部看,没有接触到这些目标或它们的内在逻辑,学习和黑客行为可能看起来是随机的、零碎的和非单调的——有时进步,有时倒退。然而,从内部来看,每个都是强烈目标驱动的,导致深刻的长期成长。

总之,作为黑客的孩子有助于完善和推进工作坊和进化观点,通过对工作坊隐喻采取较少隐喻性的看法,以及比进化的无意图随机性更好地适应儿童的目标导向行为。此外,作为黑客的孩子提出了超出这两种隐喻的具体建议,包括强烈强调类似程序的表征以及指导程序变得更好(表2.1和2.2)的具体价值和过程,我们希望这些可以作为认知发展中新一代建模的基础。

2.5 学习计算账户的前景

黑客行为代表了一套适应于使用程序组织知识的认识的价值观和实践,并且有越来越多的证据表明程序是心理表征的良好模型。作为黑客的孩子将这些想法结合成一条通往学习和认知发展的计算账户的路线图。它对人类应该拥有的一类归纳偏见提出了可测试的主张——即那些与合成、执行和分析程序中的信息相关的偏见。它还具体地将支持学习的表征、目标和过程与人类黑客的表征、目标和过程联系起来。最后,它提出了一个统一的主张,即这三个方面可以分别作为代码、评估代码的程序和修订代码的程序来实现。

为了在这些主张的光照下解释学习,我们必须系统地使用代码作为学习的透镜。这样做产生了与常见替代方案不同的可测试假设。例如,作为黑客的孩子预测儿童在没有外部数据的情况下经常改变信念。它预测儿童可能会学习比替代方案更不准确或更复杂的表征,只要它们在例如模块化或巧妙性方面胜出。它还预测,虽然戏剧性的、全局性的变化是可能的,但学习通常通过许多简单的、结构化的变化发生,类似于代码倾向于被重构的方式。

机器学习和心理学都将从联合努力追求这一路线图以发展人类学习的计算账户中受益。机器学习将从心理学的实证程序的增长中极大地受益,以了解儿童如何黑客自己的表征(见未解决问题),真正的黑客如何在实践中评估和改进他们的代码,以及儿童如何采纳和追求目标。有效地搜索大型假设空间是机器学习中的一个基本问题,因此这个第二个程序的一个关键问题是,人类如何有效地搜索图灵完备计算的空间。心理学家和认知科学家将从程序归纳的复杂框架中极大地受益。这样一个框架将汇集关于理论计算机科学、编程语言、编译器、程序合成和软件工程的现有知识,以提供捕捉人类在这些领域解决问题的方法的工具。

作为黑客的孩子提供了一条通往解决人类学习和发展的中心挑战的路径,这些挑战既重新构建了经典问题,也帮助我们提出新问题。认知科学在建构性思维(Lombrozo, 2019)、编程的神经科学(Fedorenko et al., 2019; Ikutani et al., 2020; Ivanova et al., 2020)以及使用游戏引擎建模直观物理学的发展(Ullman et al., 2017; Smith et al., 2019)方面的最新努力代表了有希望的补充步骤。程序合成的最新发展也开始使特定的黑客技术的方面操作化,包括关于目标和子目标的反向链(Osera & Zdancewic, 2015; Polikarpova et al., 2016; Polozov & Gulwani, 2015)、神经引导合成(Balog et al., 2017; Devlin et al., 2017)、迭代重构(Dechter et al., 2013; Ellis et al., 2018; Lin et al., 2014; Cropper et al., 2019)、增量编程(Solar-Lezama, 2008; Nye et al., 2019; Ellis et al., 2019)、学习生成概率模型(Hewitt et al., 2020; Ellis et al., 2020)以及对资源使用敏感的学习者(Knoth et al., 2019; Cropper & Muggleton, 2019)。这些努力有潜力将作为黑客的孩子从仅仅是另一个隐喻或仅仅是一个假设,转变为一个工作和可测试的认知发展的计算账户。

但它们只是第一步。我们期待着所有尚未完成的工作,以了解儿童如何黑客自己的心理表征,以构建尚未无与伦比的思维工具。这篇论文的其余部分通过进行详细的实证调查概念学习,专注于列表函数领域,又向前迈进了一步。在第3章中,我们详细描述了这一系列概念。




第三章 。。。。。。。

完整内容请阅读原文




https://dspace.mit.edu/handle/1721.1/129232


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