2015年11月18日
本帖转自史蒂芬·沃尔弗拉姆,2015年的一篇短文,探讨了如何使用自然语言和计算机语言与AI交流, 欢迎吧友加入交流回复。
以下是正文:
---------------------------
不是很久以前,用普通英语问计算机广泛的问题,这个想法看起来像科幻小说。但当我们在2009年发布Wolfram|Alpha时,其中一个大惊喜(至少对我来说!)是我们设法让这变成了现实。到目前为止,人们每天都会用普通语言向个人助理系统(许多由Wolfram|Alpha提供支持)提出成千上万的问题。

图:用普通语言提问,从Wolfram|Alpha得到答案
这对快速问题或简短命令(尽管我们一直在努力做得更好!)来说效果相当不错。但更复杂的事情呢?与人工智能更认真地交流的最佳方式是什么?
我思考了这个问题很长时间,试图从哲学、语言学、神经科学、计算机科学和其他领域整合线索。有点让我惊讶的是,我最近意识到的是,答案的很大一部分可能就摆在我面前,以我过去30年来一直在建设的Wolfram语言的形式出现。
这可能是拥有一把锤子,然后看到一切都像钉子的情况。但我相当确定还有更多。至少,思考这个问题是一种了解更多关于人工智能及其与人类关系的方式。
计算是强大的
我通过我在基础科学中做的一系列发现明白的第一个关键点是,计算是一种非常强大的东西,它让即使是微小的程序(如元胞自动机或神经网络)也能以极其复杂的方式行为。这就是人工智能可以利用的那种东西。

图:一个具有非常简单规则集的元胞自动机(在左下角显示),产生高度复杂的行为
看到这样的图片,我们可能会感到悲观:我们人类如何能够有用地交流所有这些复杂性?最终,我们所希望的是我们能够在我们的大脑能够处理的内容和计算能够做的内容之间建立某种桥梁。虽然我没有完全以这种方式看待它,但事实证明这基本上正是我这些年来在设计Wolfram语言时一直在努力做的事情。
计算思维的语言
我认为我的角色是要识别人们会理解并想要使用的计算块,像FindShortestTour、ImageIdentify或Predict。传统的计算机语言集中在接近计算机实际硬件的低级构造上。但在Wolfram语言中,我反而从我们人类理解的东西开始,然后尽可能地在语言中捕捉它。
在早期,我们主要处理相当抽象的概念,比如关于数学或逻辑或抽象网络的概念。但近年来的一个重大成就——与Wolfram|Alpha密切相关——是我们已经能够扩展我们建立的结构,以覆盖世界上无数真实的东西——像城市或电影或动物。
有人可能会问:为什么要发明一种语言来做所有这些;为什么不直接使用英语呢?好吧,对于特定的东西,比如“热粉色”、“纽约市”或“冥王星的卫星”,英语是好的——实际上对于这些事情Wolfram语言让人们可以直接使用英语。但当人们试图描述更复杂的东西时,普通英语很快就变得笨拙了。
想象一下,即使是尝试描述一个相当简单的算法程序。一个反复的对话——“图灵测试风格”——会迅速变得令人沮丧。而直接的英语表述几乎肯定会以复杂的法律文件中找到的那种令人难以置信的复杂散文结束。

图:Wolfram语言清晰简洁地指定如何创建这个图像。等效的自然语言规范复杂且容易被误解。
但Wolfram语言正是为了解决这类问题而构建的。它被设置为人类易于理解,捕捉人类描述和思考事物的方式。然而,它也具有允许组装和传达任意复杂性的结构。当然,它不仅容易被人类理解,也容易被机器理解。
我意识到我实际上已经用英语和Wolfram语言的混合物思考和交流了多年。例如,当我做报告时,我会用英语说些什么,然后我就开始打字,用一段在那里执行的Wolfram语言代码来传达我的下一个想法。

图:Wolfram语言与英语在文档和思维流中很好地混合使用
了解人工智能
但让我们回到人工智能的话题。在计算的大部分历史中,我们通过让人类程序员明确编写代码行来构建程序,理解(除了错误!)每一行做了什么。但要实现可以合理称为人工智能的东西,需要利用更多的计算能力。为此,人们必须超越人类可以直接编写的程序——以某种方式自动采样更广泛的可能程序范围。
我们可以通过我们在Mathematica和Wolfram语言中长期使用的那种算法自动化来做到这一点,或者我们可以通过显式的机器学习,或者通过搜索可能程序的计算宇宙来做到这一点。但无论我们如何做,结果程序的一个特点是,它们没有理由对人类来说是可理解的。

图:工程化的程序是编写成可读的。自动创建或发现的程序不一定是人类可读的。
在某种程度上,这是不安定的。我们不知道程序内部是如何工作的,或者它们可能有什么能力。但我们知道它们在做复杂的计算,这在某种意义上是不可简化地复杂的。
还有一个非常熟悉的地方发生了同样的事情:自然世界。无论我们看流体动力学、生物学或其他任何东西,我们都看到了各种复杂性。实际上,我从我所做的基础科学研究中得出的计算等价原理意味着,这种复杂性在某种意义上与计算系统中可以发生的复杂性完全相同。
几个世纪以来,我们已经能够识别自然界的某些方面,我们可以理解,然后利用它们来创造对我们有用的技术。我们对编程的传统工程方法大致以同样的方式工作。
但对于人工智能,我们必须冒险进入更广阔的计算宇宙,在那里——就像在自然世界中一样——我们不可避免地处理我们无法轻易理解的事物。
人工智能将会做什么?
让我们想象我们有一个完美、完整的人工智能,能够做任何我们可能合理地与智能联系起来的事情。也许它会从许多IoT传感器获取输入。并且内部进行着各种计算。但它最终将尝试做什么?它的目的将是什么?
这将深入一些相当深奥的哲学问题,涉及几千年来被反复讨论的问题——但最终这些问题在处理人工智能时将变得非常重要。
人们可能会认为,随着人工智能变得更加复杂,其目的也会变得更加复杂,最终人工智能会得到某种最终的抽象目的。但这是没有意义的。因为真的没有这样的抽象定义的绝对目的,能以某种纯粹形式的数学或计算方式推导出来。目的只是相对于人类及其特定的历史和文化来定义的。
一个“抽象的人工智能”,不连接到人类的目的,只会继续进行计算。就像大多数元胞自动机和自然界中的大多数系统一样,我们无法识别或归因于那些计算或执行它们的系统的任何特定“目的”。
为人工智能设定目标
技术一直都是关于自动化事物,以便人类可以定义目标,然后这些目标可以通过技术自动实现。
对于大多数类型的技术,这些目标都被严格限定,并且不难描述。但对于一个通用的计算系统,这些目标可以完全是任意的。那么挑战就是如何描述它们。
你怎么对人工智能说,你想让它为你做什么?你不可能在每一个情况下都准确地告诉它该做什么。只有当人工智能能做的计算被严格限制时,像在传统的软件工程中一样,你才能做到这一点。但为了让人工智能正常工作,它必须利用计算宇宙的更广泛部分。然后,就会出现我称之为计算不可约简的现象,你永远无法确定它会做什么。
那么为人工智能定义目标的最佳方式是什么?这很复杂。如果人工智能能够和你一起体验你的生活——看你所看到的,读你的邮件等等——那么,就像你很了解的一个人一样,你至少可以用自然语言告诉人工智能一些简单的目标。
但如果你想定义更复杂的目标,或者与人工智能已经经历的事情不紧密相关的目标呢?那么少量的自然语言就不够了。也许人工智能可以经历一整套教育。但更好的想法是利用我们在Wolfram语言中拥有的东西,实际上它已经内置了大量的世界知识,以一种人类和人工智能都能使用的方式。
人工智能之间的交流
思考人类如何与人工智能交流是一回事。但人工智能之间将如何交流呢?人们可能会想象它们可以直接传输它们的知识基础表示。但这行不通,因为一旦两个人工智能有了不同的“经历”,它们使用的表示必然至少在某种程度上有所不同。
因此,就像人类一样,人工智能最终将需要使用某种形式的符号语言来抽象地表示概念,而不是具体引用这些概念的基础表示。
人们可能会接着想,人工智能应该直接用英语交流;至少这样我们可以理解它们!但这也行不通。因为人工智能不可避免地需要逐渐扩展它们的语言——所以即使它开始时是英语,它也不会保持那样。
在人类的自然语言中,当新的概念足够普遍以至于使得在语言中表示它们变得有用时,新词汇就会被添加。有时一个新概念与世界上的某些新事物相关联(如“博客”、“表情符号”、“智能手机”、“点击诱饵”等);有时它与现有事物之间的新区分相关联(如“道路”与“高速公路”、“图案”与“分形”)。
通常是科学通过识别行为或结构的不同集群,给我们提供事物之间的新区别。但重点是,人工智能可以比人类在更大的规模上做到这一点。例如,我们的图像识别项目旨在识别我们人类日常名称的大约10,000种对象。但在内部,随着它对世界上的图像进行训练,它正在发现我们没有名称的所有种类的其他区别,但这些区别成功地做到了稳健地区分事物。
我称这些为“后语言出现概念”(或PLECs)。我认为在一个人工智能的群体中,不可避免地会出现一个不断扩展的PLECs层级结构,迫使人工智能的语言逐渐扩展。
但英语的框架如何支持这一点呢?我猜每个新概念都可以被赋予一个由某种哈希码式的字母集合形成的单词。但结构化的符号语言——如Wolfram语言——提供了一个更好的框架。因为它不要求语言的单位是简单的“单词”,而允许它们是任意的符号信息块,如示例集合(这样,例如,一个单词可以通过携带其定义的符号结构来表示)。
那么,人工智能应该用Wolfram语言彼此交流吗?这似乎很有道理——因为它有效地从人类知识发展出的世界理解开始,但然后提供了一个更进一步的框架。语法如何编码(输入格式、XML、JSON、二进制,等等)并不重要。重要的是语言中构建的结构和内容。
信息获取:十亿年视角
在地球上生命存在的数十亿年里,传递信息的方式有几种不同的方式。最基本的是基因组学:在硬件层面上传递信息。但然后有神经系统,比如大脑。这些系统通过从体验世界中积累信息——就像我们的图像识别项目——来获取信息。这是生物体用来看到世界,以及做许多其他“类人工智能”的事情的机制。
但从某种意义上说,这种机制是有根本限制的,因为每一个不同的生物体——和每一个不同的大脑——都必须自己经历整个学习过程:在一代中获得的信息不能轻易地传递给下一代。
但这就是我们人类做出伟大发明的地方:自然语言。因为有了自然语言,就有可能将已学到的信息以抽象形式传递,比如从一代传到下一代。然而,还有一个问题,因为当接收到自然语言时,它仍然需要在每个大脑中单独解释。

图:信息传递:第0级:基因组学;第1级:个体大脑;第2级:自然语言;第3级:计算知识语言
这就是计算知识语言——如Wolfram语言——的想法变得重要的地方:因为它提供了一种方式,可以立即并可重复地执行地传达世界上的概念和事实,而无需接收者进行单独的解释。
可以毫不夸张地说,人类自然语言的发明引领了文明和我们现代世界的发展。那么,进入另一个层次——拥有一个精确的计算知识语言,不仅携带抽象概念,还提供执行它们的方式——会有什么含义呢?
一种可能性是,它可能定义人工智能的文明,无论那最终会是什么样子。也许这会远离我们人类——至少在我们目前的状态下——能理解的东西。但好消息是,至少在Wolfram语言的情况下,精确的计算知识语言对人类来说并不是不可理解的;事实上,它是专门构建成人类可以理解和机器可以轻松处理之间的桥梁。
本帖转自史蒂芬·沃尔弗拉姆,2015年的一篇短文,探讨了如何使用自然语言和计算机语言与AI交流, 欢迎吧友加入交流回复。
以下是正文:
---------------------------
不是很久以前,用普通英语问计算机广泛的问题,这个想法看起来像科幻小说。但当我们在2009年发布Wolfram|Alpha时,其中一个大惊喜(至少对我来说!)是我们设法让这变成了现实。到目前为止,人们每天都会用普通语言向个人助理系统(许多由Wolfram|Alpha提供支持)提出成千上万的问题。

图:用普通语言提问,从Wolfram|Alpha得到答案
这对快速问题或简短命令(尽管我们一直在努力做得更好!)来说效果相当不错。但更复杂的事情呢?与人工智能更认真地交流的最佳方式是什么?
我思考了这个问题很长时间,试图从哲学、语言学、神经科学、计算机科学和其他领域整合线索。有点让我惊讶的是,我最近意识到的是,答案的很大一部分可能就摆在我面前,以我过去30年来一直在建设的Wolfram语言的形式出现。
这可能是拥有一把锤子,然后看到一切都像钉子的情况。但我相当确定还有更多。至少,思考这个问题是一种了解更多关于人工智能及其与人类关系的方式。
计算是强大的
我通过我在基础科学中做的一系列发现明白的第一个关键点是,计算是一种非常强大的东西,它让即使是微小的程序(如元胞自动机或神经网络)也能以极其复杂的方式行为。这就是人工智能可以利用的那种东西。

图:一个具有非常简单规则集的元胞自动机(在左下角显示),产生高度复杂的行为
看到这样的图片,我们可能会感到悲观:我们人类如何能够有用地交流所有这些复杂性?最终,我们所希望的是我们能够在我们的大脑能够处理的内容和计算能够做的内容之间建立某种桥梁。虽然我没有完全以这种方式看待它,但事实证明这基本上正是我这些年来在设计Wolfram语言时一直在努力做的事情。
计算思维的语言
我认为我的角色是要识别人们会理解并想要使用的计算块,像FindShortestTour、ImageIdentify或Predict。传统的计算机语言集中在接近计算机实际硬件的低级构造上。但在Wolfram语言中,我反而从我们人类理解的东西开始,然后尽可能地在语言中捕捉它。
在早期,我们主要处理相当抽象的概念,比如关于数学或逻辑或抽象网络的概念。但近年来的一个重大成就——与Wolfram|Alpha密切相关——是我们已经能够扩展我们建立的结构,以覆盖世界上无数真实的东西——像城市或电影或动物。
有人可能会问:为什么要发明一种语言来做所有这些;为什么不直接使用英语呢?好吧,对于特定的东西,比如“热粉色”、“纽约市”或“冥王星的卫星”,英语是好的——实际上对于这些事情Wolfram语言让人们可以直接使用英语。但当人们试图描述更复杂的东西时,普通英语很快就变得笨拙了。
想象一下,即使是尝试描述一个相当简单的算法程序。一个反复的对话——“图灵测试风格”——会迅速变得令人沮丧。而直接的英语表述几乎肯定会以复杂的法律文件中找到的那种令人难以置信的复杂散文结束。

图:Wolfram语言清晰简洁地指定如何创建这个图像。等效的自然语言规范复杂且容易被误解。
但Wolfram语言正是为了解决这类问题而构建的。它被设置为人类易于理解,捕捉人类描述和思考事物的方式。然而,它也具有允许组装和传达任意复杂性的结构。当然,它不仅容易被人类理解,也容易被机器理解。
我意识到我实际上已经用英语和Wolfram语言的混合物思考和交流了多年。例如,当我做报告时,我会用英语说些什么,然后我就开始打字,用一段在那里执行的Wolfram语言代码来传达我的下一个想法。

图:Wolfram语言与英语在文档和思维流中很好地混合使用
了解人工智能
但让我们回到人工智能的话题。在计算的大部分历史中,我们通过让人类程序员明确编写代码行来构建程序,理解(除了错误!)每一行做了什么。但要实现可以合理称为人工智能的东西,需要利用更多的计算能力。为此,人们必须超越人类可以直接编写的程序——以某种方式自动采样更广泛的可能程序范围。
我们可以通过我们在Mathematica和Wolfram语言中长期使用的那种算法自动化来做到这一点,或者我们可以通过显式的机器学习,或者通过搜索可能程序的计算宇宙来做到这一点。但无论我们如何做,结果程序的一个特点是,它们没有理由对人类来说是可理解的。

图:工程化的程序是编写成可读的。自动创建或发现的程序不一定是人类可读的。
在某种程度上,这是不安定的。我们不知道程序内部是如何工作的,或者它们可能有什么能力。但我们知道它们在做复杂的计算,这在某种意义上是不可简化地复杂的。
还有一个非常熟悉的地方发生了同样的事情:自然世界。无论我们看流体动力学、生物学或其他任何东西,我们都看到了各种复杂性。实际上,我从我所做的基础科学研究中得出的计算等价原理意味着,这种复杂性在某种意义上与计算系统中可以发生的复杂性完全相同。
几个世纪以来,我们已经能够识别自然界的某些方面,我们可以理解,然后利用它们来创造对我们有用的技术。我们对编程的传统工程方法大致以同样的方式工作。
但对于人工智能,我们必须冒险进入更广阔的计算宇宙,在那里——就像在自然世界中一样——我们不可避免地处理我们无法轻易理解的事物。
人工智能将会做什么?
让我们想象我们有一个完美、完整的人工智能,能够做任何我们可能合理地与智能联系起来的事情。也许它会从许多IoT传感器获取输入。并且内部进行着各种计算。但它最终将尝试做什么?它的目的将是什么?
这将深入一些相当深奥的哲学问题,涉及几千年来被反复讨论的问题——但最终这些问题在处理人工智能时将变得非常重要。
人们可能会认为,随着人工智能变得更加复杂,其目的也会变得更加复杂,最终人工智能会得到某种最终的抽象目的。但这是没有意义的。因为真的没有这样的抽象定义的绝对目的,能以某种纯粹形式的数学或计算方式推导出来。目的只是相对于人类及其特定的历史和文化来定义的。
一个“抽象的人工智能”,不连接到人类的目的,只会继续进行计算。就像大多数元胞自动机和自然界中的大多数系统一样,我们无法识别或归因于那些计算或执行它们的系统的任何特定“目的”。
为人工智能设定目标
技术一直都是关于自动化事物,以便人类可以定义目标,然后这些目标可以通过技术自动实现。
对于大多数类型的技术,这些目标都被严格限定,并且不难描述。但对于一个通用的计算系统,这些目标可以完全是任意的。那么挑战就是如何描述它们。
你怎么对人工智能说,你想让它为你做什么?你不可能在每一个情况下都准确地告诉它该做什么。只有当人工智能能做的计算被严格限制时,像在传统的软件工程中一样,你才能做到这一点。但为了让人工智能正常工作,它必须利用计算宇宙的更广泛部分。然后,就会出现我称之为计算不可约简的现象,你永远无法确定它会做什么。
那么为人工智能定义目标的最佳方式是什么?这很复杂。如果人工智能能够和你一起体验你的生活——看你所看到的,读你的邮件等等——那么,就像你很了解的一个人一样,你至少可以用自然语言告诉人工智能一些简单的目标。
但如果你想定义更复杂的目标,或者与人工智能已经经历的事情不紧密相关的目标呢?那么少量的自然语言就不够了。也许人工智能可以经历一整套教育。但更好的想法是利用我们在Wolfram语言中拥有的东西,实际上它已经内置了大量的世界知识,以一种人类和人工智能都能使用的方式。
人工智能之间的交流
思考人类如何与人工智能交流是一回事。但人工智能之间将如何交流呢?人们可能会想象它们可以直接传输它们的知识基础表示。但这行不通,因为一旦两个人工智能有了不同的“经历”,它们使用的表示必然至少在某种程度上有所不同。
因此,就像人类一样,人工智能最终将需要使用某种形式的符号语言来抽象地表示概念,而不是具体引用这些概念的基础表示。
人们可能会接着想,人工智能应该直接用英语交流;至少这样我们可以理解它们!但这也行不通。因为人工智能不可避免地需要逐渐扩展它们的语言——所以即使它开始时是英语,它也不会保持那样。
在人类的自然语言中,当新的概念足够普遍以至于使得在语言中表示它们变得有用时,新词汇就会被添加。有时一个新概念与世界上的某些新事物相关联(如“博客”、“表情符号”、“智能手机”、“点击诱饵”等);有时它与现有事物之间的新区分相关联(如“道路”与“高速公路”、“图案”与“分形”)。
通常是科学通过识别行为或结构的不同集群,给我们提供事物之间的新区别。但重点是,人工智能可以比人类在更大的规模上做到这一点。例如,我们的图像识别项目旨在识别我们人类日常名称的大约10,000种对象。但在内部,随着它对世界上的图像进行训练,它正在发现我们没有名称的所有种类的其他区别,但这些区别成功地做到了稳健地区分事物。
我称这些为“后语言出现概念”(或PLECs)。我认为在一个人工智能的群体中,不可避免地会出现一个不断扩展的PLECs层级结构,迫使人工智能的语言逐渐扩展。
但英语的框架如何支持这一点呢?我猜每个新概念都可以被赋予一个由某种哈希码式的字母集合形成的单词。但结构化的符号语言——如Wolfram语言——提供了一个更好的框架。因为它不要求语言的单位是简单的“单词”,而允许它们是任意的符号信息块,如示例集合(这样,例如,一个单词可以通过携带其定义的符号结构来表示)。
那么,人工智能应该用Wolfram语言彼此交流吗?这似乎很有道理——因为它有效地从人类知识发展出的世界理解开始,但然后提供了一个更进一步的框架。语法如何编码(输入格式、XML、JSON、二进制,等等)并不重要。重要的是语言中构建的结构和内容。
信息获取:十亿年视角
在地球上生命存在的数十亿年里,传递信息的方式有几种不同的方式。最基本的是基因组学:在硬件层面上传递信息。但然后有神经系统,比如大脑。这些系统通过从体验世界中积累信息——就像我们的图像识别项目——来获取信息。这是生物体用来看到世界,以及做许多其他“类人工智能”的事情的机制。
但从某种意义上说,这种机制是有根本限制的,因为每一个不同的生物体——和每一个不同的大脑——都必须自己经历整个学习过程:在一代中获得的信息不能轻易地传递给下一代。
但这就是我们人类做出伟大发明的地方:自然语言。因为有了自然语言,就有可能将已学到的信息以抽象形式传递,比如从一代传到下一代。然而,还有一个问题,因为当接收到自然语言时,它仍然需要在每个大脑中单独解释。

图:信息传递:第0级:基因组学;第1级:个体大脑;第2级:自然语言;第3级:计算知识语言
这就是计算知识语言——如Wolfram语言——的想法变得重要的地方:因为它提供了一种方式,可以立即并可重复地执行地传达世界上的概念和事实,而无需接收者进行单独的解释。
可以毫不夸张地说,人类自然语言的发明引领了文明和我们现代世界的发展。那么,进入另一个层次——拥有一个精确的计算知识语言,不仅携带抽象概念,还提供执行它们的方式——会有什么含义呢?
一种可能性是,它可能定义人工智能的文明,无论那最终会是什么样子。也许这会远离我们人类——至少在我们目前的状态下——能理解的东西。但好消息是,至少在Wolfram语言的情况下,精确的计算知识语言对人类来说并不是不可理解的;事实上,它是专门构建成人类可以理解和机器可以轻松处理之间的桥梁。