计算机科学家、Wolfram 语言之父Stephen Wolfram 创造了以他自己名字命名的 Wolfram 语言和计算知识搜索引擎 Wolfram Alpha。

Wolfram Alpha 于 2009 年 5 月 18 日正式发布,其底层运算和数据处理工作是通过在后台运行的 Mathematica 实现的。

因为 Mathematica 支持几何、数值以及符号式计算,并且具有强大的数学以及科技图形图像的可视化功能,所以 Wolfram Alpha 能够回答多种多样的数学问题,并将答案以清晰美观的图形化方式显示给用户。这种计算知识引擎为苹果的数字助理 Siri 奠定了坚实的基础。

 

 

ChatGPT 获得其“Wolfram 超级大国”!

要启用此处描述的功能,请从 ChatGPT 中选择并安装Wolfram 插件。

请注意,此功能目前仅适用于某些 ChatGPT Plus 用户;有关详细信息,请参阅OpenAI 的公告

在短短两个半月内……

早在 1 月份,我就指出,作为一个LLM 神经网络,ChatGPT——因为它在文本生成材料方面的所有非凡能力,“就像”它从网络上读取的内容等——不能指望它本身能做真正重要的事情computations,或者系统地生成正确的(而不仅仅是“看起来大致正确”)数据等。但是当它连接到 Wolfram 插件时,它可以做这些事情。所以这是我从 1 月份开始的(非常简单的)第一个示例,但现在由安装了“Wolfram superpowers”的 ChatGPT 完成:

从东京到芝加哥有多远?

这是一个正确的结果(在 1 月份它不是)——通过实际计算得出。这是一个奖励:即时可视化:

显示路径

这是如何工作的?在幕后,ChatGPT 正在为 Wolfram|Alpha 制定查询——然后将其发送到 Wolfram|Alpha 进行计算,然后根据读取返回的结果“决定说什么”。您可以通过单击“Used Wolfram”框来回查看此内容(通过查看此内容,您可以检查 ChatGPT 没有“编造任何东西”):

使用过的 Wolfram

在 ChatGPT 和 Wolfram|Alpha 方面,这里发生了许多重要的事情。但结果是一个好的、正确的结果,编织成一段漂亮、流畅的文本。

让我们试试另一个例子,也是我在一月份写的:

什么是积分?

一个很好的结果,值得我们的技术。同样,我们可以获得奖励:

绘制那个

一月份,我注意到 ChatGPT 在给出以下提示时最终只是“编造”了看似合理(但错误)的数据:

告诉我有关牲畜数量的信息

但现在它调用 Wolfram 插件并得到一个好的、权威的答案。而且,作为奖励,我们还可以进行可视化:

制作条形图

1 月份的另一个例子现在正确地出现了:

比水星大的行星卫星有哪些?

如果您实际尝试这些示例,如果它们的工作方式与我在这里展示的不同(有时更好,有时更差),请不要感到惊讶。由于ChatGPT 在生成其响应时使用随机性,因此即使您向它提出完全相同的问题(即使在新会话中),也会发生不同的事情。感觉“非常人性化”。但不同于人们在 Wolfram|Alpha 和 Wolfram 语言中获得的可靠的“正确答案并且如果你再次提问它不会改变”的体验。

这是一个例子,我们看到 ChatGPT(相当令人印象深刻)与 Wolfram 插件“进行对话”,首先发现它得到了“错误的 Mercury”:

水星有多大?

这里有一件特别重要的事情是,ChatGPT 不仅仅是利用我们来执行“死胡同”操作,例如显示网页内容。相反,我们的行为更像是 ChatGPT 的真正“大脑植入物”——它会在需要时向我们询问事情,而我们会给出回应,让它可以回馈到它正在做的任何事情中。在行动中看到它相当令人印象深刻。而且——尽管肯定还有更多的工作要做——已经有很长的路要走(除其他外)让 ChatGPT 能够提供准确的、精选的知识和数据——以及正确的、重要的计算。

但还有更多。我们已经看到了能够为 ChatGPT 提供自定义创建的可视化效果的示例。凭借我们的计算能力,我们通常能够制作“真正原创”的内容——以前从未做过的计算。还有一点:虽然“纯 ChatGPT”仅限于它“在培训期间学到的”东西,但通过致电我们可以获得最新数据。

这可以基于我们的实时数据馈送(这里我们被调用两次;每个地方一次):

比较廷巴克图和纽约的当前温度

或者它可以基于“科学式”的预测计算:

现在离木星有多远?

现在木星卫星的配置是什么?

或两者:

纽约市天空中的国际空间站在哪里?

您可以做的一些事情

Wolfram|AlphaWolfram 语言涵盖了很多内容:Wolfram|Alpha 和 Wolfram 语言内容区

Wolfram|Alpha 和 Wolfram 语言内容区

现在(几乎)所有这些都可以通过 ChatGPT 访问——开辟了新的可能性的巨大广度和深度。为了对这些有所了解,这里有一些(简单的)例子:

现代人类 + AI 工作流程

ChatGPT 旨在与人类进行来回对话。但是,当对话中包含实际的计算和计算知识时,人们能做什么呢?这是一个例子。首先问一个“世界知识”问题:

牛肉产量查询

而且,是的,通过“开箱即用”,人们可以检查是否向我们提出了正确的问题,以及我们给出的原始回答是什么。但是现在我们可以继续索要一张地图:

制作地图

但是我们可以使用“更漂亮”的地图投影。借助 ChatGPT 基于其网络阅读等的“常识”,我们可以要求它使用一个:

使用更漂亮的地图投影

但也许我们想要一张热图。同样,我们可以要求它在使用我们的技术的情况下产生这个:

显示为热图

让我们再次改变投影,现在再次要求它使用它的“常识”来选择它:

使用联合国标志地图投影

而且,是的,它得到了“正确”的投影。但不是居中。所以让我们要求它解决这个问题:

中心地图投影在北极

好的,那么我们这里有什么?我们有一些我们“合作”建造的东西。我们逐渐说出了我们想要的;人工智能(即ChatGPT + Wolfram)逐步构建它。但我们实际上得到了什么?好吧,这是一段 Wolfram 语言代码——我们可以通过“打开盒子”看到它,或者只是向 ChatGPT 询问:

显示使用的代码

如果我们将代码复制到Wolfram Notebook中,我们可以立即运行它,我们发现它有一个很好的“豪华功能”——正如 ChatGPT 在其描述中声称的那样,有给出每个国家名称的动态工具提示:

(而且,是的,有点遗憾的是这段代码中只有明确的数字,而不是关于牛肉生产的原始符号查询。发生这种情况是因为 ChatGPT 向 Wolfram|Alpha 提出了原始问题,然后将结果提供给 Wolfram 语言.但我认为整个序列的工作非常令人印象深刻。)

它是如何工作的——以及人工智能的争论

ChatGPT 和 Wolfram 插件的“幕后”发生了什么?请记住,ChatGPT 的核心是一个“大型语言模型”(LLM),它从网络等方面进行训练,以从给定的任何文本中生成“合理的延续”。但作为其培训的最后一部分,ChatGPT 还被教导如何“进行对话”,以及何时“向其他人提问”——“某人”可能是一个人,或者就此而言,一个插件。特别是,它被教导何时接触 Wolfram 插件。

Wolfram 插件实际上有两个入口点:Wolfram|Alpha 入口点和 Wolfram 语言入口点。Wolfram|Alpha 版本在某种意义上对 ChatGPT 来说“更容易”处理;Wolfram 语言最终更强大。Wolfram|Alpha 更简单的原因是它作为输入的只是自然语言——这正是 ChatGPT 经常处理的内容。而且,更重要的是,Wolfram|Alpha 的构建是为了宽容——实际上是为了处理“典型的类人输入”,无论输入多么混乱。

另一方面,Wolfram 语言被设置为精确且定义明确——并且能够用于构建任意复杂的计算塔。在 Wolfram|Alpha 内部,它所做的是将自然语言翻译成精确的 Wolfram 语言。实际上,它是在捕捉“不精确的自然语言”并将其“汇集”到精确的 Wolfram 语言中。

当 ChatGPT 调用 Wolfram 插件时,它通常只是将自然语言提供给 Wolfram|Alpha。但到目前为止,ChatGPT 已经对编写 Wolfram 语言本身有了一定的了解。最后,正如我们稍后将讨论的那样,这是一种更灵活、更强大的沟通方式。但除非 Wolfram 语言代码完全正确,否则它不起作用。要做到这一点,部分原因在于训练。但还有另一件事:给定一些候选代码,Wolfram 插件可以运行它,如果结果明显错误(比如它们产生很多错误),ChatGPT 可以尝试修复它,然后再次尝试运行它。(更详细地说,ChatGPT 可以尝试生成要运行的测试,如果失败则更改代码。)

这里还有更多需要开发的东西,但有时已经有人看到 ChatGPT 来回多次。它可能正在重写其 Wolfram|Alpha 查询(例如通过删除不相关的部分来简化它),或者它可能决定在 Wolfram|Alpha 和 Wolfram 语言之间切换,或者它可能正在重写其 Wolfram 语言代码。告诉它如何做这些事情是初始“插件提示”的事情。

写这个提示是一项奇怪的活动——也许是我们第一次尝试“与外星智能交流”的严肃经历。当然,“外星智能”已经用大量人类编写的文本进行了训练,这很有帮助。因此,例如,它懂英语(有点像所有那些老掉牙的科幻小说中的外星人……)。我们可以告诉它“如果用户输入的语言不是英语,请翻译成英语并向 Wolfram|Alpha 发送适当的查询,然后以原始输入的语言提供您的回复。”

有时我们发现我们必须非常坚持(注意全部大写):“在编写 Wolfram 语言代码时,永远不要对变量名使用蛇形大小写;” 始终对变量名使用驼峰式大小写。” 即使如此坚持,ChatGPT 有时仍会做错事。“即时工程”的整个过程感觉有点像动物争吵:你试图让 ChatGPT 做你想做的事,但很难知道实现这一目标需要什么。

最终这可能会在培训或提示中处理,但截至目前,ChatGPT 有时不知道 Wolfram 插件何时可以提供帮助。例如,ChatGPT 猜测这应该是一个 DNA 序列,但(至少在这个会话中)并不立即认为 Wolfram 插件可以用它做任何事情:

DNA链输入

不过,说“使用 Wolfram”,它会将它发送到 Wolfram 插件,它确实可以很好地处理它:

使用 Wolfram

(有时您可能还想具体说“使用 Wolfram|Alpha”或“使用 Wolfram 语言”。特别是在 Wolfram 语言的情况下,您可能想查看它发送的实际代码,并告诉它不要使用函数的名字是它想出来的,但实际上并不存在。)

当 Wolfram 插件被赋予 Wolfram 语言代码时,它所做的基本上只是评估该代码,并返回结果——可能是图形或数学公式,或者只是文本。但是当它被赋予 Wolfram|Alpha 输入时,它被发送到一个特殊的Wolfram|Alpha “for LLMs” API端点,结果作为文本返回以供 ChatGPT“读取”,并有效地用作进一步提示的附加提示文字 ChatGPT 正在写作。看看这个例子:

海洋深度查询

结果是一段很好的文本,其中包含所问问题的答案,以及 ChatGPT 决定包含的其他一些信息。但是“内部”我们可以看到 Wolfram 插件(和 Wolfram|Alpha“LLM 端点”)实际做了什么:

海洋深度代码

那里有相当多的附加信息(包括一些漂亮的图片!)。但是 ChatGPT“决定”只挑出一些内容包含在它的响应中。

顺便说一句,需要强调的一点是,如果您想确保得到您认为得到的东西,请始终检查 ChatGPT 实际发送给 Wolfram 插件的内容——以及插件返回的内容。我们在 Wolfram 插件中添加的重要内容之一是一种“事实化”ChatGPT 输出的方法——并了解 ChatGPT 何时“发挥其想象力”,以及何时提供可靠的事实。

有时,在试图了解发生了什么时,仅获取 Wolfram 插件发送的内容,并将其作为直接输入输入到 Wolfram|Alpha 网站或 Wolfram 语言系统(例如 Wolfram Cloud)中也很有用.

Wolfram 语言作为人机协作的语言

ChatGPT 的一大优点(坦率地说,出乎意料)是它能够从粗略的描述开始,然后从中生成经过润色的成品输出——例如论文、信件、法律文件等。在过去,人们可能会尝试通过从“样板”片段开始,然后修改它们,将它们“粘合”在一起等来“手动”实现这一点。但是 ChatGPT 几乎让这个过程过时。实际上,它从它在网络上“阅读”的内容中“吸收”了大量样板,现在它通常可以很好地无缝“适应”您的需要。

那么代码呢?在传统的编程语言中,编写代码往往涉及大量的“样板工作”——实际上,许多使用此类语言的程序员花费大量时间通过从网络上复制大块代码来构建他们的程序。但是现在,突然间,ChatGPT 似乎可以让很多这样的东西都过时了。因为它可以有效地自动组合任何类型的样板代码——只需要很少的“人工输入”。

当然,必须有一些人工输入——否则 ChatGPT 将不知道它应该编写什么程序。但是——有人可能想知道——为什么代码中一定要有“样板”?难道人们不应该能够拥有一种语言——仅在语言本身的层面上——所需要的只是少量的人工输入,而不需要任何“样板文件”?

好吧,这就是问题所在。传统编程语言的中心是用计算机的术语告诉计算机做什么:设置这个变量,测试那个条件,等等。但它并不一定要那样。相反,我们可以从另一端开始:采用人们自然思考的方式,然后尝试以计算方式表示这些事物——并有效地自动化将它们实际实现在计算机上的过程。

好吧,这就是我现在花了 4 多年的时间来研究的东西。它是现在 Wolfram 语言的基础——我现在觉得称其为“全面的计算语言”是有道理的。这是什么意思?这意味着就在语言中,我们在世界上谈论的抽象和真实事物都有一种计算表示,无论是图形图像还是微分方程——或者城市化学品公司电影

为什么不直接从自然语言开始呢?好吧,这在一定程度上是有效的——正如 Wolfram|Alpha 的成功所证明的那样。但是,一旦有人试图指定更详细的内容,自然语言(如“法律术语”)充其量就会变得笨拙——而且人们确实需要一种更有条理的方式来表达自己。

历史上有一个很好的例子,在数学中。回到大约 500 年前,“表达数学”的唯一方式几乎是用自然语言。但随后数学符号被发明,数学开始腾飞——随着代数、微积分的发展,以及最终所有各种数学科学的发展。

我对 Wolfram 语言的最大目标是创建一种计算语言,它可以对任何可以“计算表达”的事物做同样的事情。为了实现这一目标,我们需要构建一种语言,它既能自动做很多事情,又本质上知道很多事情。但结果是建立了一种语言,这样人们就可以方便地“用计算方式表达自己”,就像传统的数学符号让他们“用数学方式表达自己”一样。一个关键点是——与传统编程语言不同——Wolfram 语言不仅适用于计算机,也适用于人类阅读。换句话说,它旨在作为一种“交流计算思想”的结构化方式,不仅是针对计算机,也是针对人类。

但现在——有了 ChatGPT——这突然变得比以往任何时候都更加重要。因为——正如我们在上面开始看到的——ChatGPT 可以与 Wolfram 语言一起工作,从某种意义上说,仅使用自然语言就可以建立计算思想。部分重要的是 Wolfram 语言可以直接表示我们想要谈论的事物。但同样重要的是,它为我们提供了一种“知道我们拥有什么”的方法——因为我们可以实际且经济地阅读 ChatGPT 生成的 Wolfram 语言代码。

整个事情开始与 ChatGPT 中的 Wolfram 插件很好地合作。这是一个简单的示例,其中 ChatGPT 可以很容易地生成所询问内容的 Wolfram 语言版本:

绘制罗马数字图

加盟积分

显示代码

关键是“代码”是人们可以实际期望阅读的东西(如果我正在编写它,我会使用稍微更紧凑的RomanNumeral函数):

这是另一个例子:

制作直方图

显示代码

我写的代码可能有点不同,但这又是非常可读的:

通常可以使用 Wolfram 语言和英语的洋泾浜语来表达您想要的内容:

创建表

制作 ArrayPlot

这是一个示例,其中 ChatGPT 再次成功构建 Wolfram 语言——并方便地向我们展示它,以便我们可以确认,是的,它实际上在计算正确的东西:

碱金属查询

顺便说一下,要使这项工作成功,Wolfram 语言在某种意义上是“独立的”是至关重要的。这段代码只是标准的通用 Wolfram 语言代码;它不依赖于任何外部事物,如果您愿意,可以在Wolfram 语言文档中查找其中出现的所有内容的定义。

好的,再举一个例子:

欧洲旗帜查询

显然,ChatGPT 在这里遇到了麻烦。但是——正如它所建议的——我们可以直接在笔记本中运行它生成的代码。因为 Wolfram 语言是符号化的,所以我们可以明确地看到每一步的结果:

很近!让我们帮助它一下,告诉它我们需要一个欧洲国家的实际列表:

这就是结果!或者至少,一个结果。因为当我们查看此计算时,它可能不是我们想要的。例如,我们可能想为每个国家/地区挑选出多种主色,并查看其中是否有接近紫色的颜色。但是这里的整个 Wolfram 语言设置使我们可以轻松地“与 AI 合作”来弄清楚我们想要什么以及做什么。

到目前为止,我们基本上是从自然语言开始,并构建 Wolfram 语言代码。但是我们也可以从伪代码开始,或者用一些低级编程语言编写代码。ChatGPT 倾向于在处理此类问题并从中生成编写良好的 Wolfram 语言代码方面做得非常出色。代码并不总是完全正确的。但是人们总是可以运行它(例如使用 Wolfram 插件)并查看它的作用,可能(得益于 Wolfram 语言的符号字符)逐行查看。重点是 Wolfram 语言的高级计算语言性质倾向于让代码足够清晰和(至少在局部)简单,以至于(特别是在看到它运行之后)人们可以很容易地理解它在做什么——然后可能会与 AI 来回迭代。

当一个人试图做的事情足够简单时,通常很现实地指定它——至少如果一个人分阶段做——纯粹用自然语言,使用 Wolfram 语言“只是”作为一种查看一个人得到了什么的方式,并且实际上是能够运行它。但当事情变得更加复杂时,Wolfram 语言才真正发挥作用——提供基本上唯一可行的人类可理解但精确的表达方式。

当我写我的书An Elementary Introduction to the Wolfram Language时,这一点变得特别明显。在这本书的开头,我很容易就能编出练习,用英语描述我想要的东西。但随着事情开始变得越来越复杂,这变得越来越困难。作为 Wolfram 语言的“流利”用户,我通常立即知道如何用 Wolfram 语言表达我想要的东西。但要用纯英语描述它需要越来越复杂的东西,读起来像法律术语。

但是,好的,所以您使用 Wolfram 语言指定了一些东西。然后,ChatGPT 通常能够做的一件了不起的事情就是重铸您的 Wolfram 语言代码,使其更易于阅读。它(还)并不总是正确的。但有趣的是,它与 Wolfram 语言代码的人类编写者进行了不同的权衡。例如,人类往往会发现很难为事物起好名字,因此通过嵌套函数序列来避免命名通常会更好(或至少减少混淆)。但是 ChatGPT 凭借其对语言和含义的掌握,可以相当轻松地组成合理的名称。虽然这是我,一方面,没有预料到的,但我认为使用这些名称,并“展开行动”,通常可以使 Wolfram 语言代码比以前更容易阅读,

敲破一些老栗子

如果你“知道你想要做什么计算”,并且你可以用一小段自然语言来描述它,那么 Wolfram|Alpha 被设置为直接进行计算,并以“视觉可吸收”的方式呈现结果” 尽可能简单。但是,如果您想在叙述性的文本文章中描述结果怎么办?Wolfram|Alpha 从未设置为执行此操作。但 ChatGPT 是。

这是 Wolfram|Alpha 的结果:

Altair 与 Betelgeuse Wolfram|Alpha 查询

Altair 与 Betelgeuse Wolfram|Alpha 查询

在 ChatGPT 中,我们要求同样的 Wolfram|Alpha 结果,但随后告诉 ChatGPT “用它写一篇文章”:

Altair-Betelgeuse 文章

Wolfram|Alpha 的另一个“老栗子”是数学应用题。给定一个“清晰呈现”的数学问题,Wolfram|Alpha 很可能会很好地解决它。但是“毛茸茸的”单词问题呢?好吧,ChatGPT 非常擅长“解开”此类问题,并将它们转化为“清晰的数学问题”——Wolfram 插件现在可以解决这些问题。这是一个例子:

数学应用题

这里有一个稍微复杂的案例,包括很好地使用“常识”来识别火鸡的数量不能为负数:

数学应用题

除了数学单词问题, ChatGPT + Wolfram现在解决的另一个“老栗子”是物理学家倾向于称之为“费米问题”的问题:可以根据对世界的定量知识进行数量级估计。这是一个例子:

数量级查询

如何参与

ChatGPT + Wolfram是一种非常新的东西——真的是一种全新的技术。每当一种新技术出现时,它就会带来巨大的新机遇。其中一些我们已经可以开始看到了——但在接下来的几周、几个月和几年内,还会出现许多其他的。

那么,您如何才能参与到一个有望成为技术和概念快速发展的激动人心的时期呢?第一件事就是探索ChatGPT + Wolfram。ChatGPT 和 Wolfram 各自在各自庞大的系统上;它们的结合需要数年时间才能完全探究。但第一步只是了解什么是可能的。

查找示例。分享它们。尝试确定成功的使用模式。而且,最重要的是,尝试找到能够提供最高价值的工作流程。这些工作流程可能非常复杂。但它们也可能非常简单——一旦人们看到可以做什么,就会立即“啊哈”。

您如何才能最好地实施工作流程?好吧,我们正在努力为此制定最佳工作流程。在 Wolfram 语言中,我们正在设置灵活的方式来调用诸如 ChatGPT 之类的东西,既可以纯编程方式,也可以在笔记本界面的上下文中。

但是从 ChatGPT 方面来看呢?Wolfram 语言具有非常开放的架构,用户可以在其中添加或修改几乎任何他们想要的内容。但是如何从 ChatGPT 使用它呢?一件事就是告诉 ChatGPT 包含一些特定的“初始”Wolfram 语言代码(可能连同文档)——然后使用类似上面的 pidgin 的东西来与 ChatGPT 讨论您在该初始代码中定义的函数或其他内容代码。

我们计划构建越来越精简的工具来处理和共享 Wolfram 语言代码,以便通过 ChatGPT 使用。但一种已经奏效的方法是提交函数以在Wolfram Function Repository中发布,然后——一旦它们被发布——在与 ChatGPT 的对话中引用这些函数。

好的,但是在 ChatGPT 内部呢?你应该做什么样的提示工程才能最好地与 Wolfram 插件交互?好吧,我们还不知道。这是必须探索的东西——实际上是作为 AI 教育或 AI 心理学的练习。一种典型的方法是在您的 ChatGPT 会话的早期给出一些“预先提示”,然后希望它在以后“仍然关注”那些。(而且,是的,它的“注意力跨度”有限,所以有时事情必须重复。)

我们试图给出一个整体提示,告诉 ChatGPT 基本上如何使用 Wolfram 插件——我们完全希望随着我们了解更多,以及随着 ChatGPT LLM 的更新,这个提示会迅速发展。但是您可以添加自己的通用预提示,例如“使用 Wolfram 时始终尝试包含图片”或“使用 SI 单位”或“尽可能避免使用复数”。

您还可以尝试在 ChatGPT 中设置一个本质上“定义函数”的预提示——比如:“如果我给你一个由数字组成的输入,你将使用 Wolfram 绘制一个具有该边数的多边形”。或者,更直接地说,“如果我给你一个由数字组成的输入,你要将以下 Wolfram 函数应用于该输入……”,然后给出一些明确的 Wolfram 语言代码。

但现在还处于早期阶段,毫无疑问还会发现其他强大的机制来“编程” ChatGPT + Wolfram。我认为我们可以满怀信心地期待接下来的一段时间将是一个激动人心的高速增长时期,届时将有许多有价值的“唾手可得的果实”可供那些选择参与其中的人采摘。

一些背景和展望

就在一周前,人们还不清楚ChatGPT + Wolfram会是什么样子——或者它的效果如何。但这些现在发展如此迅速的东西是建立在几十年前的发展基础上的。在某些方面, ChatGPT + Wolfram的到来最终结合了历史上用于 AI 的两种主要方法——长期以来,这两种方法一直被认为是脱节和不兼容的。

ChatGPT 基本上是一个非常大的神经网络,经过训练以遵循它在网络上看到的文本的“统计”模式等。神经网络的概念——其形式与 ChatGPT 中使用的非常接近——起源于20世纪40年代。但在 20 世纪 50 年代的一些热情之后,兴趣减弱了。1980 年代初期出现了复兴(事实上,我本人也是那时首先研究神经网络的)。但直到 2012 年,人们才开始对神经网络的可能性产生强烈的兴趣。十年后的现在——在一项开发中,其成功甚至令相关人员大吃一惊——我们有了 ChatGPT。

与神经网络的“统计”传统不同的是人工智能的“符号”传统。从某种意义上说,传统的出现是为数学(和数理逻辑)开发的形式化过程的延伸,尤其是在 20 世纪初。但它的关键在于,它不仅与计算的抽象概念相吻合,而且与 1950 年代开始出现的那种实际数字计算机相吻合。

在很长一段时间内,真正可以被视为“人工智能”的成功充其量是参差不齐的。但一直以来,计算的一般概念都显示出巨大且不断增长的成功。但是“计算”如何与人们思考事物的方式相关联呢?对我来说,一个重要的发展是我在 80 年代初的想法(建立在早期数学逻辑的形式主义基础上),即符号表达式的转换规则可能是表示相当于“人类”水平的计算的好方法。

当时我的主要关注点是数学和技术计算,但我很快开始怀疑类似的想法是否适用于“通用人工智能”。我怀疑像神经网络这样的东西可能会发挥作用,但当时我只是想出了一些关于需要什么的东西——而不是如何实现它。与此同时,符号表达式转换规则的核心思想成为了现在的 Wolfram 语言的基础——并使我们今天拥有的全面计算语言的长达数十年的开发过程成为可能。

从 1960 年代开始,人工智能研究人员一直在努力开发可以“理解自然语言”、“表示知识”并从中回答问题的系统。所做的一些工作变成了不那么雄心勃勃但实际的应用程序。但通常成功是难以捉摸的。同时,由于我在 1990 年代所做的相当于基础科学的哲学结论,我决定在 2005 年左右尝试建立一个通用的“计算知识引擎”,它可以广泛地回答提出的事实和计算问题自然语言。构建这样一个系统并不明显,但我们发现——利用我们的底层计算语言,并通过大量工作——它是可以的。在 2009 年,我们能够发布沃尔夫拉姆|阿尔法

从某种意义上说,Wolfram|Alpha 之所以成为可能,是因为它在内部有一种清晰、正式的方式来表示世界上的事物,并计算它们。对我们来说,“理解自然语言”并不是抽象的东西;它是将自然语言转换为结构化计算语言的具体过程。

另一部分是组装“了解”和“计算”世界所需的所有数据、方法、模型和算法。虽然我们已经将其大大自动化,但我们仍然发现,要最终“把事情做好”,别无选择,只能让真正的人类专家参与进来。虽然在 Wolfram|Alpha 的自然语言理解系统中有一些人们可能认为是“统计人工智能”的东西,但绝大多数 Wolfram|Alpha 和 Wolfram 语言都以一种至少让人联想到的硬性、象征性的方式运行符号人工智能的传统。(这并不是说 Wolfram 语言中的个别函数不使用机器学习和统计技术;近年来越来越多的人使用,而且 Wolfram 语言也有一个完整的内置框架来进行机器学习

正如我在其他地方讨论过的,似乎已经出现的是“统计人工智能”,尤其是神经网络,非常适合我们人类“快速完成”的任务,包括——正如我们从 ChatGPT 中学到的——自然语言和“思考”是它的基础。但是,当一个人建造更大的“概念”或计算“塔”时,需要使用象征性的和某种意义上“更严格的计算”方法——这在数学、精确科学以及现在所有的“计算 X”领域都是如此。

而现在ChatGPT + Wolfram可以被认为是第一个真正的大规模统计 + 符号“AI”系统。在 Wolfram|Alpha(成为 Siri 智能助手等事物的原始核心部分)中,首次出现了广泛的自然语言理解——“理解”与实际的计算表示和计算直接相关。而现在,13 年后,我们在 ChatGPT 中看到纯“统计”神经网络技术,当从几乎整个网络等进行训练时,可以在“统计上”生成“类似人类”的“有意义的语言”方面做得非常好. 在ChatGPT + Wolfram中我们现在能够利用整个堆栈:从 ChatGPT 的纯“统计神经网络”,到 Wolfram|Alpha 的“计算锚定”自然语言理解,再到 Wolfram 语言的整个计算语言和计算知识。

当我们第一次构建 Wolfram|Alpha 时,我们认为也许要获得有用的结果,我们别无选择,只能与用户进行对话。但我们发现,如果我们立即生成丰富的、“视觉可扫描”的结果,我们只需要一个简单的“假设”或“参数”交互——至少对于我们期望用户寻求的那种信息和计算。(在Wolfram|Alpha Notebook Edition中,我们仍然有一个强有力的例子来说明如何使用自然语言进行多步计算。)

早在 2010 年,我们就已经开始尝试不仅从自然语言生成典型 Wolfram|Alpha 查询的 Wolfram 语言代码,而且还尝试生成“整个程序”。然而,在当时——没有现代 LLM 技术——这并没有走那么远。但我们发现,在 Wolfram 语言符号结构的背景下,即使是自然语言生成的相当于代码的小片段也非常有用。事实上,例如,我使用ctrl=Wolfram Notebooks中的机制几乎每天无数次,例如从自然语言构造符号实体或数量。我们还不太清楚现代的“支持 LLM”的版本会是什么,但它很可能涉及我们上面讨论的丰富的人类与 AI“协作”,并且我们可以开始看到它的实际应用第一次在ChatGPT + Wolfram中。

我认为现在正在发生的事情是一个历史性的时刻。半个多世纪以来,我们所谓的“人工智能”的统计方法和符号方法在很大程度上是分开发展的。但现在,在ChatGPT + Wolfram中,它们被整合在一起。虽然我们在这方面仍处于起步阶段,但我认为我们可以合理地期待这种组合的巨大力量——从某种意义上说,一种新的“类人工智能计算”范式,由于 ChatGPT 的出现而成为可能,现在通过在ChatGPT + Wolfram中与 Wolfram|Alpha 和 Wolfram 语言的结合。