要使用本文中演示的功能,请在 ChatGPT 中选择并安装 Wolfram 插件。请注意,到目前为止,这项功能只适用于部分 ChatGPT Plus 用户;更多信息请咨询武汉墨光工作人员。
早在一月份时,我写了一篇关于 ChatGPT 与 Wolfram|Alpha 相互连接可能性的文章。然后今天——在仅仅两个半月后的今天——我很高兴地向大家宣布,这已经实现了!感谢我们团队以及 OpenAI 团队中出色的软件工程开发能力,ChatGPT 现在可以调用 Wolfram|Alpha——以及 Wolfram 语言——并赋予其我们所谓的"计算超能力"。这一切还处于早期阶段,但能实现的功能已经非常令人印象深刻,人们可以开始看到我们称之为 "ChatGPT + Wolfram" 的产品会有多么惊人的力量(甚至可能是翻天覆地的革新)。
早在一月份,我就指出,作为一个 LLM 神经网络,ChatGPT——虽然在文本生成材料方面"模拟"它从网上学习到的东西有非凡能力——但不能指望它自己进行非平凡计算,或系统地生成正确数据(而不仅仅是"看起来大致正确")等等。但当它与 Wolfram 插件结合时,它却可以完成这些事情。因此,这是我当时一月份举的第一个例子(非常简单),但现在是由安装了"Wolfram 超能力"的 ChatGPT 完成的:
给出的结果是正确的的(一月份的时候并不是)——结果通过实际计算得到。还有一个额外的好处:立即可视化:
这是怎么做到的?计算引擎之下,ChatGPT 先形成一个 Wolfram|Alpha 的查询——将其发送到 Wolfram|Alpha 进行计算,然后根据阅读其返回的计算结果"决定说什么"。可以打开"Used Wolfram"框("打开盒子 opening the box")来查看这个来回过程(通过查看这个,你可以检查确认 ChatGPT 没有在过程中"编造任何内容"):
ChatGPT 和 Wolfram|Alpha 都发生了很多不平凡计算。但给出了一个很好的、正确的结果,编辑输出了一个漂亮、流畅的文本。
试试另一个例子,也是我在一月份写的:
结果也不错,值得我们花时间研究这个技术。而且,还可以给出额外内容:
今年一月的时候,我注意到 ChatGPT 在答复这个查询时"编造"了一些合理(但错误)的数据:
但现在通过调用 Wolfram 插件,可以给出一个优秀且权威的答案。而且,我们还可以生成可视化绘图:
一月份的另一个例子,现在得到的结果是正确的:
要注意,在你试验这些例子的时候,如果得到的结果与我在这里展示的不同(有时更好,有时更差),请不要感到惊讶。原因是 ChatGPT 生成结果有其随机性,即使你问它完全相同的问题(即使是在一个新的会话中),也会得到不同的结果。它感觉"非常类人类",这与 Wolfram|Alpha 和Wolfram 语言中的"正确答案——重复查询也不会改变"的体验不同。
下例中,我们可以看到 ChatGPT 与 Wolfram 插件"对话",起初 ChatGPT 发现它得到了"错误的 Mercury":
特别要注意,ChatGPT 并不只是用 Wolfram 来做像显示网页内容这样"死胡同"的操作。相反,我们的行为更像是为 ChatGPT 植入一个真正的"大脑"——在需要的时候它会问我们一些问题,而我们给出的回答可以让它回到它正在做的事情中。现在可以实现这些已经令人非常印象深刻。虽然我们还有很多事情要做,但已实现的技术已经可以让 ChatGPT 有能力提供准确的、经策划的知识和数据,以及正确的、非平凡计算。
但还有更多可以做的。已经有一些例子了,比如我们能够为 ChatGPT 提供定制的可视化结果。并且,凭借我们的计算能力,我们能够给出"真正原创"的内容——以前没有人做过的计算。还有一点:虽然"纯ChatGPT"限制于"训练时学到的"内容,但通过调用我们,它可以获得最新的数据。
这基于我们的实时数据反馈(这里我们被调用了两次;每个地点一次):
或者可以基于"科学式"的预测计算:
或两者同时使用:
Wolfram|Alpha 和 Wolfram 语言涵盖了很多内容:
而现在 ChatGPT(几乎)可以访问所有这些内容——于是打开了一个巨大的广度和深度的新可能性。为了说明这些问题,这里有几个(简单的)例子:算法、音频、货币转换、函数绘图、谱系、地理数据、数学函数、音乐、神奇宝贝、解剖学、代码注释、日期和时间、地震、方程求解、因式分解、几何学、语言学、电影、数字系统、大学、字谜
ChatGPT 的创立目的是为了实现能够与人类进行来回对话。但是,当这种对话中包含实际的计算和计算型知识时,人们可以做什么呢?这里有一个例子。首先问一个"世界知识"的问题:
而且,"打开盒子"后,用户可以检查向我们提出的问题是否正确,以及我们给出的原始答复是什么。现在继续这个例子,提出想要一张地图:
但我们还可以用"更漂亮"的地图投影。而 ChatGPT 的"常识"是基于它从网络等渠道中获取的阅读内容,现在我们可以直接要求它给出一个:
但也许我们想要一个热图来代替。同样,我们可以要求它使用我们的底层技术生成热力图:
还可以继续改变投影样式,现在再次要求它使用"一般知识"来挑选:
得到的投影是"正确的"。但同时有了居中的问题。所以让我们要求它解决这个问题:
我们现在有什么了?已经有了一些我们"合作"建立的产物。我们逐步描画出了我们想要的人工智能(即 ChatGPT + Wolfram),并逐步建立了它。但我们实际上得到的是什么?是一段 Wolfram 语言的代码——我们可以通过 "打开盒子 "看到它,或者直接通过 ChatGPT 进行查询:
如果把代码复制到 Wolfram 笔记本,则可以立即运行它,我们发现它有一个"豪华功能"——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 语言代码时,永远不要对变量名使用蛇式命名法(snake case);变量名永远要使用驼峰式命名法(camel case)。" 即使坚持这样的规则,ChatGPT 有时还是会做错事。整个"提示工程"的过程感觉有点像饲养动物:你尝试让 ChatGPT 做你想做的事,但很难知道要怎么做才能实现。
最终,这个问题可能会在训练或提示中得到解决,但就目前而言,ChatGPT 有时会不知道 Wolfram 插件何时能提供帮助。例如,ChatGPT 猜测这应该是一个 DNA 序列,但(至少在这个会话中)并不立即认为 Wolfram 插件可以帮上任何忙:
不过,输入"使用Wolfram",它就会把查询内容发送到 Wolfram 插件,后者确实能很好地处理这个内容:
(有时你可能还想专门输入"使用 Wolfram|Alpha"或"使用 Wolfram 语言"。特别是在 Wolfram 语言的情况下,你可能想看看它发送的实际代码,并告诉它不要使用编出来实际上并不存在的函数等内容。)
当把 Wolfram语言代码给到 Wolfram 插件时,它所做的基本上只是运算该代码,并返回结果——可能以图形或数学公式,或只是文本的形式。但是如果插件得到的是 Wolfram|Alpha 输入时,则将发送到一个特殊的用于 LLM 的 Wolfram|Alpha API 终端,其结果将作为文本返回,供 ChatGPT "阅读",并有效地作为 ChatGPT 进一步编写文本的额外提示。比如下例:
结果是给出了漂亮的文字回答,包含了所问问题的答案,以及 ChatGPT 决定包含的一些其他信息。但在"内部",我们可以看到 Wolfram 插件(和 Wolfram|Alpha "LLM 终端")实际做的事情:
可以看到很多额外信息(包括一些漂亮的图片!)。但 ChatGPT "决定"只挑出几个片段列入其答复中。
顺便要强调的是,如果你想确定你得到的结果是否是你认为的内容,一定要检查 ChatGPT 实际发送至 Wolfram 插件的内容和插件返回的内容。我们在 Wolfram 插件中增加的一个重要内容是,对 ChatGPT 的输出进行"事实化",并知道 ChatGPT 何时在"使用其想象力",何时在提供可靠的事实。
有时在试图了解发生了什么时,也可以考虑将 Wolfram 插件发送的内容直接输入到 Wolfram|Alpha 网站或 Wolfram 语言系统(如 Wolfram Cloud)中也可以。
ChatGPT 的一个成就(坦白讲是之前未曾预料到的)是它能够从一个粗略的描述开始,并从中产生一个打磨过的成品输出,例如论文、信件、法律文件等等。在过去,人们可能试图通过从"模板"开始,然后对其进行修改,再把它们"粘"在一起等来"手动"实现这一目标。但 ChatGPT 的存在让这个过程完全过时了。实际上,它"吸收"了大量从网上"读到"的模板,并可以无缝"适应"你的需要方面。
那么,代码的情况如何呢?在传统的编程语言中,编写代码往往涉及到大量的"模板工作"——在实践中,许多使用这种语言的程序员花费大量时间从网上复制大块的代码来建立他们要写的程序。但现在,突然间,ChatGPT 似乎可以让这些过程变得过时了。因为它可以有效地自动拼凑任何类型的模板代码,只需一点"人工输入"即可。
当然,必须要有一些人工的输入,否则 ChatGPT 就不知道它应该写什么程序。但是,你可能会想,为什么代码中一定要有"模板"呢?难道不应该在语言本身的层面上,只需要少量的人工输入,而不需要任何"模板装饰"吗?
问题就在这里。传统的编程语言是围绕着用计算机的术语告诉计算机该做什么:设置这个变量,测试那个条件,等等。但也可以不走这个流程。相反,我们可以从另一个角度出发:尝试用计算来表示人们自然而然想到的东西,并有效地把它们在计算机上的实际实现过程自动化。
这就是我花了四十多年时间在研究的东西。也是现在 Wolfram 语言的基础——我现在觉得可以正经称其为"全面的计算语言"。这是什么意思呢?意思是在语言中,有一种计算的表示方法,用于我们在这个世界上谈论的抽象和真实的事物,不管这些是图形、图像或微分方程——或城市、化学品、公司或电影。
为什么不直接从自然语言开始呢?Wolfram|Alpha 的成功经历告诉我们,这在一定程度上是可行的。但是,一旦用户想要试图指定更复杂的内容(比如"法律术语"),自然语言就会变得不方便——而且用户真的需要一种更有结构的方式来表达自己。
历史上,数学就是一个很好的例子。早在大约500年前,几乎所有"表达数学"的方式都是用自然语言。但后来发明了数学符号,数学随着代数、微积分以及最终所有各种数学科学的发展而腾飞。
我给 Wolfram 语言设定的大目标是,创造一种计算语言,它可以作用于任何可以用"计算来表达"的内容。为了实现这个目标,我们需要建立一种语言,它既能自动操作,又在本质上了解很多知识。这种语言设置使人们可以方便地"用计算表达自己",就像传统的数学符号让人们可以"用数学表达自己"一样。关键的一点是,与传统的编程语言不同,Wolfram 语言不仅仅是为计算机阅读准备的,也是为人类阅读准备的。换句话说,它的目的是开创一种 "交流计算思想 "的结构化方式,面对对象不仅包括计算机,也包括人类。
但现在有了 ChatGPT,这一功能突然变得比以前更重要了。因为,我们开始也有提到,ChatGPT 可以与 Wolfram 语言一起工作,在某种意义上说,只需使用自然语言就能建立起计算理念。关键之一是,Wolfram 语言可以直接表示我们想要讨论的内容。但同样关键的是,它让我们"知道我们有什么"——因为我们实际上不需要什么成本就可以阅读 ChatGPT 生成的 Wolfram 语言代码。
整个过程与 ChatGPT 中的 Wolfram 插件配合得非常好。有一个简单的例子,ChatGPT 可以轻易生成一个 Wolfram 语言版本的问题:
重要的是,代码("code")是用户会期望阅读的内容(如果让我写,我会用表达更简洁的 RomanNumeral 函数:
这是另一个例子:
我可能会用不同的方式写代码,但阅读起来很容易:
通常可以混用 Wolfram 语言和英语来表达你想要的内容:
这里有一个例子,ChatGPT 再次成功构建了 Wolfram 语言——并方便地将其展示出来,这样我们可以确认,是的,它确实在计算正确的结果:
而且,顺便说一下,要顺利进行这一工作,关键是 Wolfram 语言在某种意义上"自成一体"。这段代码只是标准通用的 Wolfram 语言代码;它不依赖于外部的任何东西,如果你愿意,你可以在 Wolfram 语言文档中查找其中出现的所有定义。
再来看一个例子:
可以看出,ChatGPT 在这里有一些麻烦。但是它也提出了,我们可以直接在笔记本上运行它所生成的代码。因为 Wolfram 语言是符号化的,我们可以明确地看到每一步的结果:
很接近了! 让我们再帮一点忙,告诉它我们需要一份欧洲国家名单:
然后我们就得到了结果! 或者至少是结果之一。因为当我们回看这个计算时,会发现它可能不完全是我们想要的。例如,我们可能想为每个国家挑选多种主导颜色,并看看其中是否有接近紫色的颜色。但整个 Wolfram 语言设置让我们很容易地"与人工智能合作",并弄清我们想要什么和要做什么。
到目前为止,我们基本上都是从自然语言开始,并建立起 Wolfram 语言的代码。但我们也可以从伪代码开始,或者从一些低级别的编程语言的代码开始。而 ChatGPT 很善于吸收这些内容并据此生成优秀的 Wolfram 语言代码。这些代码并不总是完全正确的。但人们可以运行它(例如,使用Wolfram插件),并观察它在做的事情,并可以实现(由于Wolfram语言的符号特性)逐行进行。重点是,Wolfram 语言的高级计算语言性质往往允许清晰和(至少在局部)简单的代码,这样(特别是在看到它运行后)人们可以很容易地理解它在做什么——然后可能与AI来回迭代。
当想要做的事情足够简单时,完全可以用自然语言——至少分阶段地进行——是完全可行的,Wolfram 语言"只是"作为一种查看自己得到的结果的方法,且用户并实际能够运行它。但当内容变得复杂时,Wolfram 语言才真正发挥了它的作用——可以提供基本上是唯一可行的人类可理解的,但又能精确表示人们想要内容的语言。
当我在写《Wolfram 语言入门》(An Elementary Introduction to the Wolfram Language,一书时,这一点变得特别明显。在这本书的开头,我很容易就能写出用英语描述所需内容的练习。但随着内容开始变得越来越复杂,这也变得越来越困难。作为 Wolfram 语言的"流利"用户,我通常可以 立即想出如何用 Wolfram 语言表达我想要的东西。但要纯粹用英语来描述它,就需要越来越多的东西,越来越复杂,读起来像法律术语。
所以你已经用 Wolfram 语言指定了一些内容。那么 ChatGPT 能做的一件了不起的事情就是重塑你的 Wolfram 语言代码,使其更容易阅读。当然它有时也会失败。但有趣的是,它有时会做出与人类写 Wolfram 语言代码不同的取舍。例如,人们通常发现很难为事物想出好的名字,因此会通过嵌套函数的序列解决这个问题(或至少不那么混乱)。但是 ChatGPT,由于它对语言和意义的掌握,可以相当容易地编出合理的名字。虽然这是我之前没有想到的,但我认为使用这些名字,"分开行动",往往可以使 Wolfram 语言代码比以前更容易阅读,而且确实读起来非常像自然语言的类似形式化产物——可以像自然语言一样容易理解,但它会有一个精确的含义,并且可以实际运行后产生计算结果。
如果你"知道你想做什么计算",并能用简短的自然语言来描述它,那么 Wolfram|Alpha 的设置就是直接进行计算,并尽可能容易地以"视觉吸收"的方式来呈现结果。但是,如果你想用叙述性的文字文章来描述结果呢?我们从来没有期望 Wolfram|Alpha 可以完成这件事。但 ChatGPT 可以。
下面是 Wolfram|Alpha 给出的结果:
而在 ChatGPT 中,我们要求得到同样的 Wolfram|Alpha 给出的结果,但又告诉 ChatGPT "把它变成一篇文章":
Wolfram|Alpha 的另一个"老古董问题"是数学单词问题。对于"简洁明了"的数学问题,Wolfram|Alpha 会表现得很好。但是,对于一个"毛茸茸"的文字问题呢?ChatGPT 很擅长"解决"这样的问题,并将其转化为"清晰的数学问题"——然后 Wolfram 插件就可以解决了。这里有一个例子:
这里有一个稍微复杂的案例,包括很好地利用"常识"来判断火鸡的数量不可能是负数:
除了数学单词问题,ChatGPT+Wolfram 现在解决的另一个"老问题"是物理学家称为"Fermi problems"的问题:在关于世界的定量知识的基础上,可以进行数量级的运算。这里有一个例子:
ChatGPT + Wolfram 是一项崭新的技术。每当一种新技术出现时,都会有巨大的新机会。其中一些我们已经可以开始看到,但还有很多其他的机会将在未来的可能几周、或几个月甚至几年内出现。
那么,对于这项有望成为技术和概念快速发展时期标志的技术,你要如何才能参与呢?首先是探索 ChatGPT + Wolfram。ChatGPT 和 Wolfram 各自都在自己的庞大系统上;它们如何更好地结合需要多年时间才可能完全摸透。但第一步只是为了了解哪些是可能的。
找一些范例。分享它们。尝试识别成功的使用模式。而且,最重要的是,尝试找到能提供最高价值的工作流程。这些工作流程可能相当复杂。但也可能非常简单,简单到一旦完成,人们就会立即心领神会。
如何才能最好地实施工作流程?我们正在努力找出最佳的工作流程。在 Wolfram 语言中,我们尝试设置用更灵活的方式来调用像 ChatGPT 这样的东西,可能是纯粹程序化的方法,或在笔记本界面的上下文中。
但从 ChatGPT 方面来看呢?Wolfram 语言有一个非常开放的架构,用户可以添加或修改他们想要的东西。但你如何在 ChatGPT 这边利用这些特点呢?有一个方法是指定 ChatGPT 包含一些特定的 "初始"Wolfram 语言代码(也可以包括文档)——然后使用类似上面的 pidgin 告知 ChatGPT 你在初始代码中定义的函数或其他东西。
我们计划开发一些更精简的工具来处理和分享 Wolfram 语言代码,这样通过 ChatGPT 也可使用代码。现在有一种方法已经可以使用,即把函数提交到 Wolfram 函数库中发表,一旦发表,就能在您与 ChatGPT 的对话中引用这些函数。
但 ChatGPT 本身呢?你应该做什么样的提示来与 Wolfram 插件进行最佳互动?现在我们还不知道。这个问题还亟待我们探索,这实际上是一个人工智能教育或人工智能心理学的练习。一般方法是可以在你与 ChatGPT 早期的会话中给出一些"预提示",希望它在以后"持续关注"这些。(它的 "注意力"是有限的,所以有些东西必须不断重复)。
先尝试给出一个总体提示,告诉 ChatGPT 如何使用 Wolfram 插件的基本方法——而且我们完全相信这些方法能迅速发展,因为我们一直在学习,且 ChatGPT 的 LLM 也在更新。但你可以添加你自己的常用提示,比如说"当使用 Wolfram 时,请尽量包含一张图片"、或"使用SI单位"、或"尽可能避免使用复杂数字"。
你也可以尝试在 ChatGPT 中设置一个预提示,这一操作本质是"定义一个函数",比如:"如果我给你一个由数字组成的输入,你要用 Wolfram 来绘制一个边数为此数字的多边形"。或者,更直接地说,"如果我给你一个由数字组成的输入,你要对该输入应用以下 Wolfram 函数...",然后给出一些明确的 Wolfram 语言代码。
但现在是非常早期的阶段,毫无疑问以后还会发现其他更强大的机制可以应用于"编程" ChatGPT + Wolfram。我认为我们可以自信地预期,未来这段时间将是一个激动人心的高增长时期,会有很多有价值的"唾手可得的果实"等待那些选择参与的人去采摘。
甚至在一周前,人们还不清楚 ChatGPT + Wolfram 会是什么样子——或者它的工作效果如何。现在的这些进展之所以可以如此迅速地发展,基础是这几十年间的发展。某种程度上说,ChatGPT + Wolfram 是将历史上采取的两种主要的人工智能方法最终结合在一起,而长期以来人们一直认为这两种方法是相互分离和不相容的。
ChatGPT 本质上是一个巨大的神经网络,训练让其遵循它在网络上看到的文本的"统计"模式,等等。神经网络的概念——与 ChatGPT 底层的使用方法惊人地相似,它起源于1940年代。20世纪50年代人们对其的热情达到巅峰,随后兴趣就减退了。在20世纪80年代初又重新复苏(事实上,我自己就是在那时第一次关注神经网络的)。但直到2012年,人们才开始对神经网络的可能性产生了极大的热情。而十年后的今天,我们有了 ChatGPT,它的成功甚至让参与其中的人都大吃一惊。
与神经网络的"统计"传统相对应的是人工智能的"符号"传统。从某种意义上说,这一传统是作为数学(和数理逻辑)形式化过程的延伸而产生的,特别是在二十世纪初。但它的关键之处在于,它不仅与计算的抽象概念相一致,而且与 1950 年代开始出现的那种实际数字的计算机相一致。
在很长一段时间里,真正可以被认为是成功的"人工智能"数量寥寥无几。但与此同时,计算的通用概念在经历飞速发展。但"计算"如何与人们思考问题的方式相关?对我来说,重点之一是我在 1980 年代初的一个想法(建立在早期数理逻辑的形式主义之上),即符号表达的转换规则可能是在相当于"人类"层面上表示计算的一个好方法。
当时我主要关注的是数学和技术计算,但我很快就开始想,类似的想法是否可以适用于"通用人工智能"。我认为类似神经网络这样的东西可能会有帮助,但当时我只在慢慢思考需要什么——而不是如何实现它。同时,符号表达式转换规则的核心思想成为现在的 Wolfram 语言的基础,并使计算语言拥有了长达几十年的全面发展才到今天这个局面。
从 20 世纪 60 年代开始,人工智能研究人员一直在努力开发能够"理解自然语言"的系统,以及"代表知识"的系统并据此回答问题。所做的一些工作虽不宏大但却很实用。但那时依旧感觉成功遥不可及。同时,基于我在 20 世纪 90 年代所做的一些基础科学的哲学研究,2005 年的时候我决定要尝试建立一个通用的 "计算知识引擎",它可以回答用自然语言提出的事实和计算问题。那时候我们并不知道是否能成功建立这样的系统,但我们发现,用我们的底层计算语言,经过大量的工作,这种系统的可能性是存在的。这样我们才能够在 2009 年发布 Wolfram|Alpha。
从某种意义上说,Wolfram|Alpha 之所以成为可能,是因为在内部有一种清晰、正式的方式来表示世界上的事物,并对它们进行计算。对我们来说,"理解自然语言"并不是什么抽象的东西;它是将自然语言转化为结构化计算语言的具体过程。
另一部分是集合所有的数据、方法、模型和算法来"了解"和"计算"这个世界。虽然我们已经很大程度上实现了自动化,但仍然发现,为了"以正确的方式实现目标",我们别无选择,只能让真实的人类专家参与进来。虽然在 Wolfram|Alpha 的自然语言理解系统中,人们可能认为更像是"统计人工智能",但 Wolfram|Alpha——包括 Wolfram 语言——的绝大部分都是以一种直接、符号化的方式运作,也会让人想起符号人工智能的传统。(这并不是说 Wolfram 语言中的个别函数不使用机器学习和统计技术;近年来,越来越多的函数使用机器学习,Wolfram 语言也有一个完整的内置框架来进行机器学习)。
我在别的地方也讨论过,"统计人工智能",尤其是神经网络,好像非常适合我们人类需要"快速完成"的任务,包括——我们从 ChatGPT 学习到的——自然语言和其底层的"思维方式"。但是,当人们要建立更大的"概念"或计算"塔"时,就需要符号化的、在某种意义上"更严格计算"的方法,这就是数学、精确科学以及现在所有的"computational X"领域正在发生的事情。
而现在,ChatGPT + Wolfram 可以看做是第一个真正大规模的统计 + 符号"人工智能"系统。在Wolfram|Alpha(它也是 Siri 智能助理等的原始核心部分)中,第一次出现了广泛的自然语言理解——"理解"直接与实际的计算表示和计算相联系。13 年后的今天,我们在 ChatGPT 中看到,纯粹的"统计"神经网络技术,当训练内容是整个互联网时,就可以非常好地"统计"出"类似人类"的"有意义的语言"。而在 ChatGPT + Wolfram 中,我们现在能够利用整个堆栈:从 ChatGPT 的纯"统计神经网络",到Wolfram|Alpha "计算锚定"的自然语言理解,再到 Wolfram 语言的整个计算语言和计算知识。
当我们第一次建立 Wolfram|Alpha 时,那时我们认为,也许为了获得有用的结果,我们除了与用户进行对话之外没有其他选择。但后来我们发现,如果能立即生成丰富的、"视觉上可扫描的"结果,那么只需要一个简单的"假设"或"参数"互动——至少可以实现我们期望用户需要的那种信息和计算。(在 Wolfram|Alpha Notebook 版本中,我们有一个强有力的例子来说明如何用自然语言完成多步骤的计算)。
早在 2010 年时,我们就已经开始尝试从自然语言中生成不仅是一般 Wolfram|Alpha 查询的 Wolfram 语言代码,而且还有"整个程序"。当时,在没有现代 LLM 技术的情况下,我们并没有走多远。但我们发现,在 Wolfram 语言的符号结构背景下,即使是由自然语言生成的小片段的代码也是非常有用的。事实上,我几乎每天都会无数次地使用 Wolfram Notebooks 中的 "\[ControlKey]+=" 机制,例如,从自然语言中构建符号实体或数量。我们还不知道现代"启用 LLM 后"的版本会是什么,但它很可能涉及到我们上面讨论的丰富的人与人工智能的"协作",而且我们可以在 ChatGPT + Wolfram 中首次开始看到它的效果。
我认为现在正是一个历史性的时刻。半个多世纪以来,对于我们可能称之为"人工智能"的统计和符号方法在很大程度上是分开发展的。但现在,在 ChatGPT + Wolfram 中,它们已经结合在一起。虽然我们还只是刚刚开始,但我认为我们可以合理地期待这种结合的巨大力量,而且从某种意义上说,由于ChatGPT的到来,以及现在它与 Wolfram|Alpha 和 Wolfram 语言在 ChatGPT + Wolfram 的结合,"类人工智能计算"的新范式已经成为可能。
这真是令人兴奋的工作! 我喜欢这些例子——我不知道 Wolfram 可以做其中的一些事情,看到与 ChatGPT 协同工作以进行迭代数据可视化和地图制作真是太棒了。
在我使用的 GIS 和 BI 软件中,创建等值线和调整地图投影之类的事情需要很长时间才能完成——我可以看到这降低了学生和其他希望接触数据的人的进入门槛!- Lindsey
我在学物理,想用“物理”的方式来表达我激动的心情。
符号方面就像 UV 理论——一切都应该有意义和完整,而统计方面就像 IR 理论——我们不需要底层的细节,只关心实验的输出。
现在 ChatGPT + Wolfram 就像有效场论的匹配! 双方正试图合并在一起,使统计方面的输出与符号计算的输出相匹配。这太令人兴奋了,我希望看到更多的发展。- Reiko
非常翔实,斯蒂芬。
我最近开始意识到所有这些活动。 教师对这种发展感到恐慌,这是一个错误。 我喜欢一位老师的回答,他说他们每天都会使用它,这样班上的每个人都会知道发生了什么。 老师不需要扭曲他们的课程,而是提高他们的课程。
知识分子有贬低新发展、夸大错误结果和贬低“进步”的倾向。 有些人则相反,认为这是充满奇迹和进步的新时代的曙光。 两个极端都不正确。
斯蒂芬,现在你年纪大了,也聪明了,考虑说出你团队中为之不懈努力的成员的名字。共享荣耀!- Jerry Glynn
新疆无人机03考点 2024-12-20
兮兮学姐是吃货 2024-12-20
新疆无人机考证中心 2024-12-20
筱晓光子 2024-12-20
讯方智汇云校 2024-12-20