
孩子们,不要学习编码(编程),而是学习AI建模
“我想做的是想象,而不是想法。我想成为那些创造意义的人的一部分,而不是成为那些被创造出来的东西的一部分。” (芭比)

大学申请截止日期即将临近。又过了一年,新程序员的又一个季节正在寻求加入一个我们。大多数人仍在问“一年后……五年后……或者十年后我们是否还需要程序员?”的领域。尽管它已经平息,但 2023 年初的存在主义依然存在,让新程序员和行业专业人士都想知道大型语言模型(例如 OpenAI 的 Chat GPT)是否会开始接管我们的代码编写工作。无论您是为了开始职业生涯而推迟申请截止日期的人,还是长期编码的人,甚至是新年决心编码员,我都想建议我们退后一步并反思……在芭比娃娃的帮助下。
去年年初,我们的行业进入了末世清算时期,充斥着诸如此类的反思。仅仅几个月后,我们就看到了一系列工具的推出,有望消除这些担忧。2023年夏天,OpenAI 发布了结构化输出的更新,使其成为生成代码的更强大、更一致的选项。表面上, Vercel 的v0 系统允许您仅通过描述代码的外观来创建可用于生产的 React 代码。
但出于某种原因,“学习编码”运动没有分阶段进行。早些时候,Code.org发布了一项提案,希望将计算机科学标准作为高中毕业的基本要求。一些州已经采取了行动。这一推动得到了大量儿童友好的编码工具的支持:Scratch、Tynker和Hopscotch等等。早在 10 月份,麻省理工学院媒体实验室终身幼儿园团队的优秀人员就加大了赌注,推出了OctoStudio。它将基于块的 Scratch 编程语言从浏览器中带出来,直接提供给新一代潜在程序员的手机。这是一个奇妙的系统,它把“孩子应该学习编码”这一理念作为响亮、不言而喻的口头禅予以回响。但在机器变得非常擅长编写代码的世界中,这仍然有效吗?
无论你的情况如何,我都想提出建议。无论你自己是学生、从事教育工作,还是从事继续教育的专业人士,我都建议你停下来花点时间。如果你没有学习编码怎么办?如果您不学习编码,而是学习建模怎么办?

什么是模型?
模型是一种符号表示。这是两个系统之间的关系。系统只是相互关联的事物的集合。“事物”有时被称为节点或参与者。给定一个模型系统,您一定可以在它建模的系统中找到推论节点和关系。因此,模型说“这个东西是另一个东西”,或者至少代表了它的重要部分。
小时候,和小伙伴一起制作了模型汽车。这些小小的塑料简化物通过共享重要的共同特征,与真人大小的同名物体保持着象征性的关系。在本例中,它是某些外部组件的颜色、形状和相对尺寸。通过查看模型,您一定能够描绘、理解和预测建模系统中的相同特征。如果我的模型是红色的,那么它所建模的汽车也应该是红色的,依此类推。这个定义适用于我们想到模型这个词的每个地方。甚至超级名模也被视为象征性地代表了典型或理想的人类应该是什么样子。
值得庆幸的是,你不必为了模特而把手指粘在一起或执行减肥计划。我们每天的每时每刻都在做模特。你可能会说我们没办法。
这是你的大脑,建模……
智力的基础是记忆,而记忆本身就是一种模型。当某种刺激组合进入我们的身体时,它们会激发相连神经元网络的激活。这些神经元可以变得更靠近或更远,使得下次这些刺激(或与它们足够相似的东西)穿过我们的感觉雷达时,更有可能触发该特定通路。无论出于何种意图和目的,这种情况越来越接近或进一步发生,机械地基于某些化学激素的存在。反过来,这些刺激又以相对确定的模式释放,以响应其他刺激,通常是获得一些理想的内部状态(食物、生殖过程等)。桑杰·萨尔马(Sanjay Sarma)在他的《掌握》一书中称其为我们认知层次的“基础”,并被用作某些心理学方法(例如操作性条件反射)的基础。
不过,请考虑一下这意味着什么。这意味着宇宙中的某个地方存在一个原始系统——一辆闪亮的汽车、一个人、一只熊,这些都没关系——正在被建模。那么,就有一个模型系统——我们头骨内的一组网络神经元,它们相互连接并产生与原始系统中的特征和关系直接相关的关系。你不需要学习如何建模,你的大脑就会这么做。这是一台建模机。
然而,在这个过程中,我们开始做一些……奇怪的事情。我们开始在我们自己的思想之外制作其他模型,代表我们思想中存在的关系网络。我们这样做的原因有很多,但最简单的可能是沟通。熊或其他掠食者的粗略图像,通过在另一个人的脑海中唤起其存在的概念,对于生存是有用的。也不需要太多就能完成。某些事物的视觉相似性通常足以在其他人身上触发相同的内部模型(以代表性神经元网络的形式),只要他们有足够的感官经验来构建与这些刺激相对应的模型。如果我们都见过一只熊,而我给你看了一张熊的照片,你很可能会有一种认出的感觉,在你的意识中浮现出你在经历中收集到的那只熊的所有相同特征——蓬松的、棕色的、可爱的,凡是你能想到的。有时,这种小小的神经元舞蹈并不像我们希望的那样发挥作用。对这种特殊现象的研究就是我们所说的语义学。
不过,我们的大脑中有很多神经元。他们的潜在连接数量被用作他们可以创建的不同网络或模型数量的餐巾背面估计。很多。因此,过了一段时间,为每个人画一幅画就变得乏味了,我们开始把事情写下来。
情境模型
一只狗和一只狐狸。狐狸具有棕色和敏捷的特性,而狗显然具有懒惰的特性。虽然到目前为止,“懒惰”似乎破坏了我们的模型,但事实并非如此。“懒惰”只是我们赋予最初是感官刺激的体验的一个符号。这些包括当队友不够积极主动时的烦恼感、与被贴上此类标签的个人相关的景象(通常是“邋遢”或“蓬头垢面”的同义词)以及由社会压力和“懒惰”习惯引起的感觉。不好。”
我们刚刚构建的就是 Daniel Willingham 所说的上下文模型,它是人类发展起来的一项强大技能。
毫不夸张地说,这是一个极其复杂的过程。考虑到所有这些复杂性,您可以开始了解哪里可能会出现问题。 如果您的模型由于某种原因缺乏暗示潜在危险的属性,我们可能会遇到麻烦。当我们的模型扎根,即基于第一手的感官刺激时,这个问题相对容易克服。
不,我们遇到的最大麻烦是我们的模型不是直接基于感官刺激,而是构建为纸牌屋——根据其他人模型的外部表征构建的模型。这是经典电话游戏的前提,一队人从队伍的一端到另一端,每人在对方耳边低声说一句话。排队的第一个人说的话到最后可能会变得非常混乱,这一切都是由于听觉刺激和它们调用的神经元图之间的关系存在细微的差异。
相当阴险的是,我们只是玩了这个游戏。你读到了“敏捷的棕色狐狸跳过了懒惰的狗”这句话。然而,这个特定系统没有任何感官刺激。您所拥有的只是与场景中每个元素相关的模型集合,例如每个事物的组成(狗和狐狸)、它们的属性(懒惰、快速、棕色)以及它们各自的关系(跳跃、相对速度) ,一个“高于”另一个)被召唤出来。每一项都会立即被填写,以便该系统的模型现在存在于您的脑海中。
这很重要:从来没有狗,也从来没有狐狸。不存在与这个特定模型相对应的根本感觉刺激,即某种实际的、宇宙之外的系统。然而,该系统的模型存在于你我的脑海中。这是一场非常漫长的电话游戏,如此漫长、如此复杂,以至于我们需要建立从未存在过的事物的模型。
建立更好的模型
在充斥着大量词语的环境中,这类模型很容易构建。不幸的是,这意味着它们在每项社会活动中都普遍存在。毕竟,人类花费在构建此类外部模型上的时间是独一无二的。与熊的照片相比,我们刚才描述的模型是不接地气的模型,它们无处不在:乡村俱乐部、宗教、政治言论和媒体文章。
因为我们经常希望我们的模型是“准确的”(即与现实世界以及我们可能在其中经历的事物相对应),所以我们发明了各种方法来制作更好的模型 - 那些更能抵抗现实世界的模型。电话游戏。例如,我们创建了一种符号语言,其中包含一种验证手段——一种采用该模型、走向世界并确保它与我们遇到的相同系统相对应的方法。这种语言就是数学,很长一段时间以来,人类一直有效地使用它来交流可验证的模型,从算术和物理对象的计算开始。我们使用它来传达模型中项目之间的关系,并断言当您检查原始系统的各个部分时这些关系将成立。然而,原始系统的某些方面并不容易在数学中共享。
例如,每个值得建模的系统都存在于时间的流逝中。也就是说,我们可以说,随着时间的推移,如果您尝试在某一点而不是另一点测量原始系统中对象的某些属性,它们将会有所不同。经典的物理例子是一个自由落体的物体,其中物体与地面的距离随着时间的推移而变化。当我们直接观察一个系统时,我们会本能地体验到这些变化。然而,当我们使用数学描述这两种状态之间的关系时,我们共享的模型(尽管严格)并不能直观地传达这些随时间的变化。
这个问题的解决方案是构建其属性本身随时间变化的模型。这有助于我们使用感官体验构建模型,这些模型更接近我们通过观察目标系统获得的体验。我们使用代表性样本进行科学实验,在风洞内测试汽车和机翼,并构建建筑物、发动机和水坝的比例模型。我们这样做的前提是这些较小节点的行为、它们的属性和关系能够代表目标系统中的行为。我们经常构建这些系统来与其他人交流宇宙的运作方式。然而,它们与目标系统的预设相似性使我们能够走得更远,在给定模型发现的情况下发现目标系统的行为。我们可以很容易地识别计算机世界中的此类模型:模拟。
计算机软件是一种卓越的建模媒介。它(主要)提供了数学语言赋予它的严格的、可验证的关系,同时允许其组成部分随着时间的推移而发展、变化,甚至影响它们的环境。更好的是,由于其确定性基础,这些模型中的每一个都是(假设的)可复制的,使我们的电话游戏更容易避免!多么伟大的成就啊!
模型、钉子和锤子
并非每个系统都是钉子。因此,并非每个系统都需要使用锤子进行建模。并非每个系统都需要使用编程语言的严格、命令式风格或模拟的整体描述性进行建模。有时,使用我们在使用口头或书面语言时想到的模糊模型是很好的(而且更有效)。如果您不玩电话,可以轻松获得验证,或者正在参加低风险活动,那么通常不值得如此明确。更进一步,情感模型被用来代表和唤起他人伴随某些内部状态的感觉。使用编码语言等干燥媒介来创建这些内容非常困难。因此,我们引入了完全不同的符号库——我个人最喜欢的是音乐符号库。我们创建的模型类型与我们用它们代表的系统一样多种多样。
斯科特·E·佩奇 (Scott E. Page)在他的《模型思考者》一书中列出了我们创建模型的一系列原因。一般来说,我们创建的模型是由我们想要实现的结果决定的。有些模型仅在狭窄的背景下才“好”。Steve Skienna在他关于算法的书中将这种上下文范围称为尺度。他讲述了一个关于地平论者的有趣但有趣的例子。如果您想要预测恒星、火箭或卫星的运动,那么这不是一个很好的模型。然而,如果您想要建造一座房子并对其未来的稳定性进行预测……平坦的地球模型就可以很好地工作。
事实上,数学和计算机科学交叉领域的算法作为一门建模学科特别有趣。它包含针对常见和不常见问题的出色解决方案库。它通过将精力集中在一组非常小的可概括的数据结构上来实现这一点。不过,不要让“通用数据结构”之类的术语吓跑您。这些是具有非常特定关系的某些“节点”家族。它们是“可概括的”,因为节点本身没有很多属性。这使得当我们去构建某个模型时,可以很容易地将它们用作新系统中的符号来表示目标系统中的对象。(有人可能会说,这是所有数学的目标,尽管算法科学的独特之处在于其基本关注点是将这些广义系统之一转变为特定状态所需的步骤)。
计算机科学家的目标是熟悉这些建模技术并选择正确的技术来解决特定问题。乔治·波利亚(George Polya)在他的《如何解决问题》(How to Solve It)一书中将这个过程称为“进行类比”。这并不是计算机科学家所独有的——波利亚是一位数学家。关于理论物理学,理查德·费曼曾经说过,“每一个优秀的理论物理学家都知道同一物理学的六七种不同的理论表示。” 我不了解你,但当我听到费曼谈论“理论表述”时,我听到的只是“模型”。
货架上的库存
“困难”并不意味着不可能,当然也不意味着不值得。在每个学科中,建模都是可能且不可避免的,只是严格程度不同。自然科学中被吹捧的模型可靠性与政治科学中数学模型被嘲笑的不足之间的区别,借用斯基纳的话说,是“规模”问题。我指的不是所建模事物的规模,而是模型本身的规模。我们的模型越接近它声称代表的事物,我们就越能可靠地传达、预测或操纵原始事物。
因此,我们的模型与其目标系统之间的基本相似性决定了我们如何使用它。在硬科学中,我们选择用来建模的东西——数学——与我们正在建模的东西——物理——有着不平凡的相似之处,这可能是一个偶然的巧合,因此解释了它简洁的预测能力。
我们在社会科学领域做不到这一点。据估计,人脑中有860 亿个神经元,我们的资源非常丰富。然而,它们本质上是有限的。在社会科学中,人们所研究的系统的每个元素在其大脑中都具有同样数量的神经元。这并没有给你留下任何空间来开始以任何全面的方式对他们的行为进行建模,更不用说他们之间的复杂关系以及彼此之间及其环境的互动了。任何人类行为模型都必须遗漏无数细节。我们只是无法创建一个足够大而完全准确的模型。
然而,这并不意味着社会科学就失去了一切。社会学家和病毒学家群体能够在 COVID-19 大流行期间共同努力拯救生命,即使他们的模型在某些方面不完整或错误。每天,我们在社会科学、劳动力动态和医学等学科中都依赖于过于简单化的“地平说”模型。我们继续使用它们,不一定是因为它们的完整性,而是因为它们的务实成果。在严格和非严格的建模中,波利亚关于类比的话都是正确的:“将(从一个好的类比得出的结论)的合理性视为确定性是愚蠢的,但它也同样愚蠢,甚至更愚蠢。”无视这些看似合理的猜想真是愚蠢。” 更通俗易懂的是,乔治·博克斯 (George Box) 引用的一句话简单地说:“所有模型都是错误的,但有些模型是有用的。”

这适用于所有类型的模型,尤其是我们在神经学上天生的头骨中制作的模型。我们总是错的。但有时,我们制作的模型可以帮助我们做一些有用的事情。这就是为什么斯科特·E·佩奇在他关于模特的书中提倡“多种模特”的生活方式。因为每种模型都是错误的,这意味着我们不能对每种情况、每种我们想要影响的结果使用一种模型。我们需要在我们选择的每个问题领域中建立一个经过测试的、全面的、有根据的模型库,我们可以仔细选择这些模型并将其应用于我们遇到的新问题。
我们需要在隐喻建模工具箱中放入更多工具。无论我们工作的问题领域如何,这都是事实。音乐家和作曲家磨练他们操纵特定符号组合的技能,这些符号已知可以引发共同的情感记忆。软件工程师使用数学对象和计算机代码中的符号来构建模型库。我们解决任何问题的能力取决于该问题领域模型的深度和广度。我们有必要在这个图书馆的书架上备书。
书店
扩大我们建模能力的深度和广度是教育的目标(尽管有些人用它来通过意识形态灌输来强制执行没有根据的模型)。我们作为个人和社会遇到的问题似乎变得越来越复杂。这继续增加了对教育系统的需求,使个人能够获得更深入、更丰富的模型。
在我之前在现象学习的职位中,我们试图通过构建教育建模系统来解决这个问题。Phenomena 的定位目标是通过使用各种建模方式构建广泛的 STEM 主题模型并与之交互,帮助学生“充实自己的书架”。重要的是,这些模式包括代码。我们构建了一种基于块的编码语言,以允许以尽可能少的摩擦来开发严格的命令式模型。
- 基于 Phenomena 块的代码编辑器
然而,代码并不是我们包含的唯一模式。我们还创建了一种数学建模语言,允许潜在的建模者使用可视化的、类似网络的编辑器来描述对象及其属性之间的关系。
- 现象数学建模编辑器
我们还重视建模者可能带来的现有经验或缺乏经验。我们选择基于块的编程语言而不是 JavaScript,以帮助缺乏经验的编码人员避免语法错误。我们创建了一种数学建模语言,允许学生直接从页面中获取公式并将其付诸实践。目标是关注模型,而不是用于创建模型的东西。但是,您不必使用其中任何一个。作为绘图工具,它还支持更简单的静态模型构建。我们的大部分工作涉及一个不断扩展的“组件”库,这些“组件”库可以组合为基本构建块——无需任何代码。
尽管我已经不再关注现象,但建模项目从未停止。在我目前的职位Coursemojo中,我们正在构建一个改进上下文模型的系统,如上所述。它采用文本模型,例如英语或语言艺术课堂中的文本模型,并使用对话界面帮助学生建立更广泛、更深入的心理模型。在教育背景之外,我写了大量关于大脑阁楼的文章,这是一个假设的系统,可以帮助我们连接在问题领域中收集的外部模型,并帮助我们接地(或证明这些模型的不接地性)。成为更好的建模师的机会有很多。

那些有意义的人
构建这个库,运用我们存储的表示,并通过迭代使用来完善它们是一项令人愉快且有益的活动。我想不出比本文开头引用的电影《芭比娃娃》中玛格特·罗比(Margot Robbie)(错误地被奥斯卡冷落)的台词更好的框架了。其中,模型——人类思想的外在表现——向我们做出回应,表达了我们想要成为制造这些东西的人而不是模型本身的愿望。
所有这些对于那些未来的程序员意味着什么?坦率地说,仅仅知道如何编码是远远不够的。计算机代码在过去几十年中经历了各种迭代,只是我们可以创建强大的动态模型的媒介。如果我们现在使用的方法在 3-5 年内被自动化,那也没关系。无论使用何种媒介,人类始终需要创建有根据的、严格的模型。正是在这种背景下,我经常向学生、应届毕业生或寻求进入该领域的人建议,在非 编码的问题领域积累经验至关重要。也就是说,人们不应该成为“一名编码员”,而应该寻求成为“一名知道如何编码的教育者”,或者“知道如何编码的供应线专家”或类似的东西。成为“创造意义的人之一”意味着我们必须有意图——理解我们正在尝试建模的系统以及我们想用它做什么,而不是简单地熟悉我们这样做的媒介。
这就是我说的“不要学习编码”的意思——不要把学习编码作为目的。学习建模。收集在您试图表示的系统与其环境之间建立明确区别的经验。认识到您使用什么类型的媒介来进行这种表示。尝试尽可能明确您在建模过程中的目标,无论是预测、交流还是实验。最重要的是,学会构建可验证的模型,区分有依据和可测量的模型和不可测量的模型。您可以使用命令式编程语言的动态、严格的功能来完成所有这些工作。你可能不会。不过,无论您选择哪种建模介质,都可以构建大量模型。当我们每个人都填满模型库的书架时,我们就会成为更好的问题解决者。也许更重要的是,我们将“成为创造意义的人的一部分,而不是创造事物的一部分。”
本文系作者 @ 泡泡球原创发布在 轻抖云。未经许可,禁止转载。