注:三篇相关文章放一起,放马酣阅。
计算机不是只会 “计算”,图灵机也不是一台“机器”
人们往往根据自己的理解对一个概念下断言,其实对方使用的概念并不是你所以为的含义。要想避免这种误会,就不该对自己没有认真研究过的问题下结论。
撰文 | 王培
在讨论人工智能的潜力和限度时,常常有人拿 “图灵机” 和 “可计算性” 说事。其论证大致是这样几步:
(1)既然人工智能是在计算机中实现的,其能力自然在计算机能力范围之内;
(2)现有计算机的计算能力都和图灵机相同;
(3)那些图灵机不能解决的问题当然也就是人工智能所无法解决的。
有些人会进一步主张:
(4)人脑不受这些限制,因此不等价于图灵机;
(5)所以人工智能的根本能力永远低于人类智能,尽管在某些具体能力上可以超过人。
由于人类智能或人脑的能力范围本身尚未有明确界定,4、5两步仍有争议(不少人相信人类的计算能力也受同样的限制),但前面三步却罕有反对意见。我下面要说的就是:这事不是这么简单。上面的论证,尤其是(3),在其通常解释下是错的。
“图灵计算”到底是什么
由于这个问题直接涉及对计算机科学核心概念的理解,我们不可避免地要从概念的定义开始。鉴于本文的性质,我会试图用日常语言把这事说得足够明白。
图灵近年来成了个广为人知的名字,这里就不介绍了。他在1936年的一篇文章中提出了一种抽象的 “计算机器“(computing machines),并用它来定义“可计算的数” (computable numbers)。请注意:在那时计算机 (computers) 尚未出现,而图灵的本意也不是要设计这样的机器,而是要为在数学中广泛使用的 “可计算” 这一概念提供一个严格的定义。由于人们(甚至以严谨著称的数学家们)往往对同一个概念有不同理解,图灵试图用一个想象的机械装置来避免歧义。简单地说,如果满足某个特征的数字都可以在有限时间内被这样一个机械装置生成或识别,那么这类数就是可计算的。
在电子数字计算机(即今天所说的“计算机”)出现后,计算机科学中的 “计算” 概念沿用了数学中的传统意义,图灵机也被广泛用于刻画计算机中的各种过程,因而成为理论计算机科学的核心概念。在专业文献中图灵机的定义大同小异,下面的 “科普版” 改编自Introduction to Automata Theory, Languages, and Computation [1**]**——这个领域里最常用的教科书之一。
图灵机是一台可以逐个处理一列符号的装置,如下图所示。
对图灵机的完整描述包括七个成分:
- 一个有限的输入符号集,
- 一个有限的内部符号集(输入符号集的扩充),
- 一个特殊的空白符号(用来标记被处理的符号序列的边界),
- 一个有限的状态集,
- 一组状态变换规则,根据当前状态和所关注的符号的组合决定新的状态和符号,然后将关注点前移或后移至另一个符号,
- 一个特定的初始状态(初态),此时所有待处理符号都是输入符号,且关注点在第一个符号处,
- 一组终止状态(终态),至此停止运行。
当且仅当存在一个图灵机,可以将一个问题的每个实例作为输入,并在有限的变换后停止运行,这时我们称这一个问题是 “图灵机可计算” 的。如果停止运行是由于达到了一个终止状态造成的,输入就算是被 “接受” 了。如果停止运行是由于没有变换规则可以应对当前情况,输入就算是被 “拒绝” 了。这个图灵机对输入符号串所作的 “接受还是拒绝” 的判定就叫一个“计算”。
下面我们描述一个简单的图灵机,叫它“机器甲”。它用0和1做输入符号,而内部符号是0,1,外加空白符 #。机器甲的状态只有A和B,外加一个终态Z,其中A是初态。其变换规则是
• 如果当前关注的符号是0,把它改成 #,状态不变(A还是A,B还是B),后移至下一个符号;
• 如果当前关注的符号是1,把它改成 #,状态改变(A变成B,B变成A),后移至下一个符号;
• 如果在状态A下所关注的符号是 #(所有输入符号都处理完了),进入终态 Z
不难看出,给机器甲一个01符号串(如0110111)做输入,它会逐个抹去其中的符号(把0和1都变成 #),最后用是否进入了终态来判定输入中1的个数是否为偶数。
现在让我们定义一个“机器乙”。它和机器甲完全一样,只是初态为B。机器乙所完成的计算也是确定输入中的1的个数的奇偶性,但 “接受还是拒绝” 的判定恰好与机器甲相反。
这两个图灵机尽管简单,但却已经揭示了一个普遍的误解:一个 “图灵机” 不是指一台“机器”,而是指一台机器的一个特定的运行过程或使用方式,包括对初态和终态的划分。上述的机器甲和机器乙是同一个装置,但完成的计算不同。同理,对任何其它图灵机,只要修改其初态或终态的划分,它就成了不同的图灵机,所完成的计算也就不同了。
计算与智能
一个系统的 “初态” 和 “终态” 的划分并不像看上去那么无关大局。现在让我们考虑 “机器丙”,它和机器甲基本相同,只是取消了状态 Z和最后一条变换规则。这样一来,当所有符号都成为 #,机器不再有适用变换规则,就会停在当前状态,而这个状态同样可以代表输入中1的个数的奇偶性(A对应于偶数,B对应于奇数),因此也可以被用作机器丙的计算结果。这台机器在处理完一个输入序列后,只要将状态重新初始化为A,即可以处理下一个序列。
一个有趣的问题是:如果不做状态重新初始化,情况会怎样?显然,如果机器丙在一次计算之后状态停在B,则下次计算这个机器就变成机器乙了,并且后面会不断在机器甲和机器乙之间转换,而不再完成一个确定的计算。这个机器的处理结果不仅仅取决于当前输入,还取决于开始处理这个输入时的系统状态,而这个状态是系统的历史决定的。
这种可能性乍看起来没有讨论价值。一个符号串里面有多少个1,与处理机制的历史和状态不应该有任何关系,所以对应的计算当然必须从同一个初始状态开始,这才能保证过程和结果的确定性,或者说可重复性。
但 “计算” 的概念不足以涵盖所有与智能、认知、思维等有关的过程(见参考文献 [2] 中的讨论)。尤其像那些和“学习“、”适应“、“灵机一动”有关的现象,根据定义,它们不是对问题的可重复解决。严格说来,一个不断学习的系统是不重复先前的内部状态的,因此即使是相同的输入,处理过程和结果都未必相同。在这种情况下,相对于这个输入而言,这台装置就不是一个图灵机,尽管它可以具有图灵机定义中的前面5个成分,就像机器丙那样。
图灵机模型。来源:Wikipedia,by Rocky Acos
当然,如果我们把这个装置的 “出厂” 状态看作初态,“报废” 状态看作终态,那么其整个“生命周期” 仍可以被看成是一个图灵计算过程,其输入由它历史上所经历的所有输入符号串衔接组成。但问题是,这个周期和我们平常关心的 “解题周期” 不是一回事。如果这个系统在学下棋,那么我们通常会把每盘棋看作一个要解决的问题,而这和把整个 “学下棋过程” 当作一个问题是非常不同的。相对前者而言,系统的解题行为应该是随着时间而变的(否则何谈学习),因此不是一个 “下棋图灵机” 。这种变化是因为前面解题周期的终态成为了后面解题周期的初态,而不需要引入其它因素(如“自由意志”、“量子效应”、“随机选择”等等)来解释。
那么能不能说 “这个系统仍是图灵机,只不过在下每盘棋时它是一台不同的图灵机”?
如果硬要这么说也不能算错,只不过没有任何实际价值。在数学和计算机科学中,可计算性的研究都是以严格可重复的解题过程为研究对象的,其结论的价值也正在于为未来的解题过程提供可靠预测。如果一个解题过程不可重复,说它 “每次都是个图灵计算,但说不准是哪个” 和说这个过程 “不是图灵计算” 就没有实际差别了,反正也不知道它会怎么做。类似地,说这个系统的解题过程仍是可重复的,但这个过程要包括系统从 “出生“ 开始的全部历史,这也没错,但即使如此,它的下棋过程也是不能看成图灵计算的。
既然图灵机指的不是某类装置,而是(装置中的)某类过程,就不能用它对应于一台计算机,而是对应于(一台计算机中的)某个程序或过程。图灵机在计算机科学中的重要性也就在于,严格、清晰地表达出一个符号(数据)处理过程——这样我们就可以用一种统一的术语刻画到底哪些过程是“可计算” 的,而不再依赖直观或模棱两可的语言。
前面的讨论也说明,并不是计算机中的所有过程都可以或应该看成“计算“, 并等价于图灵机的。这里最重要的是那些由于包含了学习、适应、进化等机制而成为不可重复的过程,尽管它们仍和计算有关。这有点像搭积木:每个积木块都是预制的,但如何把它们组合在一起却是可以临时起意,不循常规的。这样的系统的计算能力并没有超过图灵机,但可以完成一些不能被称为“计算”的功能。
我设计的纳思系统就是这样:其中每个基本步骤都是提前编好的程序,或者说都是图灵机。但面对一个具体问题时,如何把它们组合起来使用,却是靠系统现场发挥,没有预先写好的脚本的,因此纳思对一个问题的处理是依赖于系统当前状态的。在纳思的一个 “生命周期” (以记忆的初始化为界限)中,其内部状态不重复,因此它对同一个问题的处理也不一定是严格可重复的,即不是图灵计算。当然,这不说明系统在任何问题上都没有稳定答案。我在《计算机能有创造性吗?》和《时间紧急,怎样决策才算理性?》中对这种工作方式有进一步讨论,这里就不再重复了。
《计算机能有创造性吗?》和《时间紧急,怎样决策才算理性?》见下文。
人脑是个图灵机吗?根据上面的讨论, 我们会发现,这不是个有意义的问题。人脑中的某些相对简单的过程可能被近似地被图灵机(计算机程序)模拟, 但仍有大量过程是不能这样处理的。这可能是由于我们对这些过程的了解还不够,也可能是它们本来就不是严格可重复的。至于这些功能是否可以由人工智能中的非计算性的过程所再现,则不是本文要讨论的了。
“顾名思义”的功过
本文的讨论还涉及一个普遍的现象。对不熟悉的概念,顾名思义是个有效的认知策略,但也是误解的常见来源。对科学概念尤其如此。我在《新理论该怎么为概念下定义?》中讨论过这个问题。当我们将一个新概念引入一个理论中的时候,为了促进其传播,常会选用一个含义接近的日常词汇。但这样做的危险就是:圈外人会按照他们的固有观念来理解相关的科学结论。
比如说,人们往往认为 “计算”是包含了计算机所能做的一切,但在计算机理论中,这个词仅指使用计算机的一种常见的(但并非唯一的)方式。把这二者搞混,就会得出“人工智能的能力范围仅限于可计算的问题” 这种错误结论。至于把图灵机看作一种计算装置,则是典型的顾名思义了。甚至很多计算机专业出身的人在学过图灵机的概念之后,仍没有意识到其定义中包含初态、终态所造成的限制,而理所当然地认为这是描述一个装置时所必须的。
造成这个混淆的更深层原因就是计算机科学中的数学遗产。什么是“问题”?怎样算是“解决”?在数学中 ,“解决”总是相对于一个问题类而言的,解题过程和结果都必须是严格、精确、可重复的。而在数学之外的生活中,由于必须迎接新的太阳,踏进不同的河流,所以不能以同样的标准论成败。
最后一个例子就是“通用人工智能”了。一个常见的意见是:“显然不存在能解决所有问题的通用智能”,但稍微读些文献就会发现,真正在这个领域中工作的人,并不是在这一意义下使用“通用”这个词的,而是把它作为“专用”的对立面。所以,在这里,“通用系统”不是“万能”的意思,而是“可以合理应对意料之外的问题”的意思。
这种误会在科学讨论中并不罕见:根据自己的理解对一个概念下断言,其实是攻击了一个稻草人——因为别人不是在这个意义下使用这一概念的。要想避免这种误会,就不该对自己没有认真研究过的问题下结论。顾名思义是不可靠的,尤其对是那些“显然”的问题。如果真是那么显然,别人怎么会看不到呢?对人工智能类似的误会不少。我在参考文献[3]中对此有进一步讨论。
参考文献
[1] John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd edition, 2006
[2] Peter Kugel, “Thinking may be more than computing”, Cognition, 22:137–198, 1986
[3] Pei Wang, “Three Fundamental Misconceptions of Artificial Intelligence”, Journal of Experimental & Theoretical Artificial Intelligence, 19(3), 249-268, 2007
via:
- 计算机不是只会 “计算”,图灵机也不是一台“机器” | AI那厮 王培 返朴 2020年06月03日 08:33
https://mp.weixin.qq.com/s/5DLjKK_LTMWRIfs_Cjzaxw
计算机能有创造性吗?
在和人工智能有关的讨论中常常可以听到这样的看法:“不管一个计算机系统表现得多聪明,它不可能像人这样有创造性,因为它的一切行动都是遵循既定程序的。”这种看法很自然,以至于很多研究人工智能的人都同意。在他们看来,只要他们的程序能解决实际问题就好,至于这些程序是否“像人那样有创造性”是个见仁见智的问题。而在另一方面,从图灵1950年的经典文章《计算机器与智能》开始,那些相信人工智能可能达到人类水平的研究者则试图从各种角度反驳上述看法。
这场争论之所以迟迟不能尘埃落定,原因之一就是大家对“创造性”有不同的理解。常见的分歧体现在下列问题上:
-
创造性是主要体现在艺术创造、科学发明等活动中,还是普遍存在于日常生活中?
-
一个主意要多“新”才算“创造”?把已有的材料修改或组合一下算吗?
-
如果我得到了一个新主意,但后来发现已有别人想出来过,我还能算有创造性吗?
-
如果我得到了一个新主意,但后来发现它是错误的,我还能算有创造性吗?
在这些问题上争论的双方各有依据。为避免在“创造性”的歧义上纠缠不清,下面我们先讨论这个问题的一个相对确切的版本:一个计算机系统能否解决一个它对其没有程序的问题?
根据经典的计算理论,一个“问题”是一个给定的输入输出关系。以“排序问题”为例,当输入是数列5、3、8时,输出应当是数列3、5、8,也就是说把输入中的数字按从小到大的次序排起来。对一个问题的“解决”体现为一个“算法”,即一个详细的工作流程。比如说“选择排序” 算法的基本流程是先建立一个空的输出序列,然后反复扫描输入序列,每次选出其中最小的数字并将其移至输出序列的末尾,这样当输入序列为空时输出序列就给出了最终结果。
一般而言,一个算法要满足下列基本要求:
-
其中每个步骤都必须是系统知道怎么做的(如比较两个数字的大小、把一个数字从一处移往另一处等基本操作,或调用另一个已经存在的算法);
-
从一个固定的起点开始,并在每个步骤结束后,明确指出下一个步骤;
-
对每个可接受的输入,在有限步骤内结束并生成输出。
**如果一个算法符合了一个问题的输入输出关系,则该算法解决了这个问题。**一个问题可以有多个解(如排序问题就可以被多个算法解决),也有可能无解(即没有算法)。把一个算法用一个计算机所能执行的方式写出来就得到一个“程序”,而这一过程通常是由人(程序员)完成的。对一个传统的计算机系统而言,其解决问题的能力完全由其中的程序决定。如果没有人来干预,系统对一个问题的处理过程和结果是一直不变的。计算机的这种工作方式使得很多人认为“缺乏创造性”,因为他们觉得完全有理由说问题实际上是被程序员解决的,而计算机仅仅是机械地把这个解决过程忠实地重复于该问题的一个个具体实例之上而已。因为过程和结果是事先注定的,说这种机械重复有创造性似乎很牵强。
在这种情况下,为什么还有人认为计算机能有创造性呢?以往的辩护大致基于下列理由:
-
复杂: 当一个程序非常复杂时,它对一个特定输入的处理往往是没人能够精确预测的,而其结果也可能是以前从来没有出现过的。
-
协作: 对一个问题的处理可能是多个程序协作的结果,而不完全决定于某个程序,所以不能说这个问题是被某个程序员解决的。
-
随机: 如果程序的流程依赖于随机因素(如掷骰子),其结果就不是可精确预测的。
-
数据: 如果程序的流程依赖于系统中存储的数据,其结果就不是仅仅从输入中可以预测的。
-
学习: 解决某些问题的程序不是人工编制的,而是系统自己从输入—输出样本中总结出来的。
尽管上述因素的确可以使得有关的计算机系统看上去更具创造性,它们仍然没有超出计算理论的“基于算法的解题过程”的框架。计算机系统对一个问题的解决是基于算法的,只要其输入输出关系符合该问题的规定,并且解题过程是可重复的,而并不要求这个算法被直接编制在一个程序里。
一个含有随机步骤的算法可以被看成在一组确定算法中选择的结果,而存储的数据通常可以被看作问题或算法的一部分。至于说目前的机器学习是“基于算法的”,这既是指其中的“学习”过程遵循一个事先给定的“学习算法”,也是指学习的结果体现为一个供将来使用的“解题算法”。以图像识别为例,研究者一般是把一批标注好内容(如“汽车”,“老虎”)的图片作为输入提供给一个学习算法,以提取各个标签所对应的图片特征。这个学习算法的输出对应于一个图像识别算法,给它一张图片作为输入,它就会输出一个标签以指出图片的内容。
上述各种算法都很有用,但恰恰是这种基于算法的解题过程给人以“刻板”、“循规蹈矩”的感觉。说人的创造性思维过程不是遵循算法的,这不仅仅是因为创造者自认为不循规蹈矩,而更是因为创造性思维过程一般不是严格可重复的,因此不对应于一个确定的输入输出关系。对同样的输入(问题、感知等),在不同的情景中人们常常生成不同的输出(答案、行动等)。
细分析起来,“解决一个问题”在计算理论中和在日常生活中的意思是不一样的。这主要体现在以下几点:
-
在计算理论中,一个“问题”通常是一个“类型”,其中包含很多“实例”,而其“解决”必须是一个能处理所有这些实例的方法。比如说一个排序算法不能只会给5、3、8排序。在日常生活中,一个“问题”通常是一个“实例”,而其“解决”不必能推广到同类问题。如果你仅仅是需要给5、3、8排序,你无须考虑你的办法是否也适用于给4、3、2、1排序。
-
在计算理论中,一个“问题”的定义限定了对每个输入,哪些输出是合理的,而这个输入输出关系是和解题系统的过去经历、当前处境、解题时间等因素无关的。在日常生活中,输出的属性常常要根据经历和处境而定。比如说“创造性”起码要求输出在过去没有出现过,而“灵活性”则要求输出因情景而变。此外,日常生活中的问题一般都是对解决时间有要求的, 而这种时间限制也随情景而变。
-
在计算理论中,一个“解法”必须是确定的和可重复的。即使其中用随机数,其取值范围和分布函数也是事先给定的。在日常生活中,解决问题的过程常常是“相机行事”,“随机应变”,“灵机一动”的产物,而“契机”、“灵感”等说法无非是指这种过程的不可预知性和不可重复性。
这么说来,基于算法来解题对计算理论中的问题是必须的,而对日常生活中的问题不但不是必须的,有时甚至不是我们所希望的。
既然计算机的所有活动都是被程序控制的,那岂不是说其中所有解题过程都必须是基于算法的,因此就不可能有创造性或灵活性了吗?未必。这里的关键是认识到“有算法”和“有针对某个问题的算法”不是一回事,而“能解决某类的所有问题”和“能解决某个问题”也不是一回事。比如说某个系统可能有比较两数大小和交换两数位置的算法,但没有任何排序算法。在这种情况下,它仍可能发现将5、3、8中的前两个数交换位置就可以解决这个问题。这就是我们平常所谓的“具体情况具体分析”,即针对问题实例用有关知识在当前的约束条件下进行处理,以寻求一个恰当的答复。这个处理仍然可能是由一些算法(如比较、交换等)完成的,但它们都不是针对这个问题(如排序)的,而且即使同一个问题实例再次出现,系统的处理和答复也可能因时过境迁而不同。
参考资料[2]介绍了让计算机以“相机行事”方式解决问题的一个具体设计。和基于算法的工作方式一样,这种系统的基本操作集也是给定的,但在相机行事的工作方式下,这些操作并不被事先组织成针对实际问题的操作序列(即程序)并以此作为解决问题的唯一手段。相反,每个操作可以被独立选用和灵活组合。系统关于一个操作的知识主要体现为对其“前因后果”的描述,即在各种条件下该操作可导致何种效果。这类知识可以是事先由设计者或教育者提供的,也可以是系统从自身的经验中总结的。当接到一个问题时,系统会在时间允许的范围内通过对有关知识的推理来确定当前最适用的操作或操作序列,并在执行后根据实际效果修改有关知识。
在这里,经验的作用之一就是系统会把那些有用的操作序列在后来当做一个复合操作来用,而它们又可以组成更复杂的复合操作。当系统积累了足够多的经验之后,对于某些熟悉的问题可能直接用以往有效的复合操作来解决。但即使在这种情况下,问题和解法的对应关系也不是一成不变的,而是依赖于很多其它因素,如系统中当前的其它活跃任务等。对一个新颖(即设计者、教育者和系统自身都没有考虑过)的问题,系统可能要经历多次失败才能找到有效的解法,也可能一直找不到任何解法。无论如何,这些经历都会影响系统后来的问题解决策略。由于系统外部、内部环境均在不停变化,并且不会严格重复以前的情景,系统的每一次解题过程都和以前不完全一样,因而具有不同程度的创造性。
上述设计已经在计算机上初步实现了。和传统的计算系统不同,这样的系统的问题解决能力不是完全被其初始状态所决定的,而是同时取决于先天因素(初始设计)和后天因素(教育和经历)。和现有的机器学习系统不同,这种系统的学习过程和学习成果均不能用算法来描述,而是更类似于人的相机行事过程。这种系统仍然由大量算法构成,但这些算法都不是针对应用问题的,而是刻画基本操作、推理规则、资源分配策略等系统构件的。对应用问题的解法是这些算法以系统经验为原料创造出来的,并且这些解法不断地被修改和选择,因此不和问题组成固定搭配。对这种系统而言,“一切行动都由算法控制”和“解决某个问题的过程不遵循任何算法”的说法都是对的,不互相矛盾。
有人会坚持说 “这个系统归根结底是靠算法工作的,因此不能算有创造性”,但这种说法完全混淆了有关概念的不同使用方式。当我们比较人类智能和人工智能时,概念要在相同的方式下使用才有意义。我们说“人有创造性”,这是在“解决问题”的层面上谈的,否则岂不是可以说“人归根结底是被遗传基因编了程序的,因此不能算有创造性”。同理,不能说“这个系统还是靠算法解决问题的,只不过它的算法把系统历史和当前状况包括进输入之内了”,因为在这个意义下的算法已经不再是针对当前问题的了。
一个人工智能系统的创造力当然是有前提、有限度的,但这些前提和限度对人同样存在。具体来说,任何系统的创造力都受其先天因素和后天因素的制约,而再有创造性也不能无中生有。
类似地,**创造性一定伴随着失败的可能性。****保证结果正确性的“创造性思维”是不存在的。**计算机可以像人这样有创造性,尽管由于经历上的根本差别,计算机创造出来的结果和人创造出来的结果可能有很大不同。计算机不可能创作出《红楼梦》,但这不是因为它思维能力上的局限性,而是因为它经历上的局限性。
当一个系统以相机行事的方式来解决问题时,传统的基于算法的分析方式不再适用。由于解题方法随情况而变,谈论问题的“可计算性”和解法的“计算复杂性”不再有意义。要刻画直观意义下的“可解问题与不可解问题”和“简单问题与复杂问题”的区别,我们需要一个新的理论框架来把系统的知识和资源约束引入分析之中。
“循规蹈矩”和“相机行事”(或者叫“照既定方针办”和“摸着石头过河”)是用计算机解决问题时的两种可能的工作方式,有各自的适用范围。前者适用于系统有相对充足的知识和资源的情况(系统有针对该问题的算法,且能满足该算法的时间空间要求);后者适用于系统没有相对充足的知识和资源的情况(系统没有针对该问题的算法,或不能满足现有算法的时间空间要求)。请注意后者并不比前者“好”。当两者都能用的时候,实际是前者更好(可靠,高效),而后者是在前者无法使用时才应被采用的。在《人工智能:何为“智”?》一文中,我把上述差别作为计算机科学和人工智能的分界线。根据这种观点,“智能”是“没有(相对于给定问题的和可靠的)办法时的(通用的和尝试性的)办法”。
当前的主流人工智能研究,包括机器学习研究,仍然自缚于传统的计算理论。 这个理论框架尽管有极大价值,但仍严重制约了研究人员的想象力和探索范围,以至于没能真正触及智能的很多根本性特征,比如创造性。
以目前最热的“基于大数据的深度学习”为例。这个技术固然有巨大的应用前景,但其基本思路是依照对过去情况的统计结论解决当前的问题。这种策略针对常规问题(比如说照片分类)是有效的,但我们需要创造性的时候往往是统计结论不可得(数据不足或时间不允许)或不可用(遇到特殊情况)的时候。“深度学习”虽然有“深”之名(指其多层网络结构),对问题的概念分析其实非常“浅”,基本上囿于输入输出关系,而网络中间结点一般不对应于有意义的概念。
当我们处理视觉信息时,大脑所做的远不止给图像贴“正确”的标签,而是对其进行依赖于“此时此地”的概念分析,因此常常从同一张照片中得到不同的结论。基于大数据的深度学习难以解决人工智能的基本问题,其主要原因之一是没有这种随机应变的能力,而这里的“随机”与统计学里这个词的意思可是完全不一样的。
参考资料:
[1] Margaret A. Boden, The Creative Mind: Myths and Mechanisms (2nd Edition), Routledge, 2003.
[2] Pei Wang, Solving a problem with or without a program, Journal of Artificial General Intelligence, 3(3):43-73, 2013.
via:
- 计算机能有创造性吗?王培 赛先生 2015年09月22日 07:06
https://mp.weixin.qq.com/s/AEMzHtTAoWxnWYxqxU8NUA
时间紧急,怎样决策才算理性?
在一个知识、资源相对充足的理想环境下圆满地解决问题不算有多大本事,承认在现实的约束下无法做到完美,但仍尽力而为,这才是智能的体现。
撰文 | 王培(美国天普大学计算机与信息科学系)
解决问题需要时间,而形势往往不容许仔细斟酌。可以说,所谓 “难题” 就是那些我们对其没有充分知识(“不知道”)和时间资源(“没想到”)的问题,而解决这些难题,正是体现智能的时候。基于这种认识,我才把 “智能” 定义为 “在知识和资源相对不足时的适应能力”(见《人工智能:何为“智”?》)。前面几篇文章主要讲在 “知识不足” 条件下的应对方案(如《你这是什么逻辑?》),本文主要分析 “时间资源不足”的情况。
对时间要求的不同应对
在历史上,对问题的解决过程研究最细的是数学家们,研究的结果有关于计算和算法的理论,这些理论后来成了计算机科学技术的理论基础。简而言之,人们将一个数学或计算问题的解法表示为一个确定、可行、有限的算法,而各式各样的程序可以看作是相应算法的具体实现。(《计算机能有创造性吗?》一文中对此有进一步介绍)
解法→算法→程序
当我们用计算机中的一个程序来解决一个实际问题时,所需要的时间一般来说是确定的。其长短取决于若干因素,包括计算机硬件设备的运行速度、具体问题实例的难度、算法的时间复杂性等等。在前两点不变的情况下,我们当然希望用最简捷的算法——这方面的研究成果目前主要是计算复杂性理论。
在具体应用中,即使是已知最快的算法,也可能还不够快。这里有几种情况,一种是问题本身有明确的时间要求。如果用计算机直接控制某个物理过程,比如自动驾驶汽车,每个计算任务的完成就绝不能超时。另一种情境没有严格时间限制,但任务的完成应该是越快越好,比如回答用户的查询。即使是那些看似没有时间要求的问题,实际上也不可能不考虑计算时间。以下围棋为例,如果时间完全不是问题,那就可以通过穷举所有可能性来找到最优步骤。实际上, “系统地考虑所有可能性,然后选取最好的结果” 甚至可以说是解决所有问题的万能方案,只是我们极少有时间这么做。
要解决时间不足的问题,一个天真的想法是完全依赖计算机运行速度的提高或系统结构的进化,比如采用大规模并行计算,甚至量子计算。尽管这些进展的确非常重要,但仍不可能完全满足对计算时间的要求。目前的硬件速度和几十年前已不可同日而语,但大量新需求的涌现还是轻而易举地消耗掉了这份红利。尽管量子计算会对某些计算问题(如因式分解)的速度产生革命性的影响,但目前尚无理由认为所有计算问题都可以用此法加速。和无止境的需求相比,机器总是不够快的。
解决这一问题,首先要转变观念。
对数学问题来说,正确性是首要条件,只有在解法正确的前提下,讨论解题时间才有意义。但在实际应用中,在很多情况下,最重要的是及时提供答案,即使答案的质量差些,也远比迟到的答案强,等情况完全确定再采取行动,甚至可能造成致命的后果。因此,为了降低时间开销,有时可以容许修改要求,比如说放宽答案的标准(接受近似解),缩小考虑的范围(忽略罕见情况)等等。
满足特定时间要求的计算系统称为 “实时系统”,其基本设计思路大略分为以下几类:
• 量体裁衣:根据给定时间要求为系统设计算法及软硬件配置,以保证按时解决问题。这适用于时间要求和工作环境不变的情况。
• 各取所需:事先准备一组算法,各有不同的时间要求和答案质量。当一个问题实际出现时,根据其容许的时间选取最好的解法。这适用于仅有若干种时间要求的情况。
• 当场定制:用一个 “元算法” ,为每个具体问题根据其时间要求规划出一个适当的算法。这适用于算法生成规则简单的情况。
• 按质论价:为一个问题提供一系列的解,耗时越长的质量越高。这适用于答案可以逐步优化的情况。
最后这个技术值得多说几句。这种解题方式叫 “随时算法”(anytime algorithm,也可以译成 “任意时间算法”)[1]。 很多算法(比如说各种迭代逼近算法)都可以被改写成这种形式,只要始终保存已发现的诸答案中最好的那个,在收到(用户或另一个程序发出的)终止命令时先报告它然后停下来就行了。尽管设计和实现都不难,随时算法的理论意义却尚未得到充分的认识。虽然仍被称为 “算法”,但这种解题过程已经违反了经典算法概念中 “会在得到答案后自行终止运行” 的要求,所以不能再谈它需要多少时间得到答案,而是要谈给它多少时间得到答案。对这种过程而言,算法复杂性、可计算性等概念都不再有意义了。
思维中的经济学
对人的思维活动而言,时间约束是常态。和数学、计算机科学中的常规设定不同,我们面对的绝大多数问题都有或明或暗、或强或弱的时间要求,而一个迟到的答复质量再高也可能完全没有价值。我们一般是在答案的质量和及时性之间找平衡,有时间就细想,没时间就只能大概估计一下。“时间常常是不够用的”——这听上去像常识,但将其设定为前提条件以后,我们可以更自然地重新解释很多现象。
从知觉开始,心理学中的 “格式塔学派” (德语:Gestalttheorie,不是为格式修的塔)早就发现我们看到的东西是经过加工处理的,而非 “世界的原貌”。比如下图一般会被看成一个白色的三角形压在三个黑色的圆形之上,尽管这个三角形是“补完”出来的,而非完整的线条画出来的。有人会纠结于 “此三角形是真的存在还是幻觉” 这种问题,但换一个角度来说,也可以认为我们的知觉总是试图用已有 “心理词汇” 尽可能简单地描述当前的情形,以便加快处理过程。
另一个重要的心理机制是 “注意”。我在《人工智能怎么为自己设定目标?》中说过,真正的智能系统一定是同时有多个目标或任务的,它们在内容上可能互相冲突(鱼和熊掌不可兼得)。即便目标相容,它们也一定相互竞争,以获取更多的时间资源,而 “注意” 就是这种竞争的体现,即,系统要根据这些任务的相对急迫性分配处理时间。虽然这听上去没什么新鲜的,在日常生活中相关的误区却不少:
• 有人常常通过争辩 “甲比乙更重要” 把一个 “分配” 问题换成“选择” 问题。即使甲的确更重要,也绝不说明它应该得到所有资源,而乙该被置之不理。重复我在前文中说过的,“历史已经反复展示了不惜一切代价追求某目标所造成的灾难,不管这个目标本身多么有价值”。
• “注意某个事物” 就意味着在一定程度上忽视其它事物,因为注意力是有限的。这里的根本原因仍是时间不够,所以不可能什么都 “认真重视,作为头等大事来抓”。所有事 “都重视” 其实意味着 “都不太重视”。
总而言之, “注意” 是个程度问题,没有定量模型是很难说清的。不考虑时间有限所导致的注意力分配,会严重误判思维所具有的能力。
与此对应的是“遗忘”机制,其常常被视为“劣势”。在比较计算机和人脑时,“不会遗忘” 常常被列为机器的一大优势,但遗忘恰恰是在为已有知识和当前任务排出轻重缓急,虽然常常会出错。在现实的环境中,随时有大量信息涌入,问题解决有时间要求,一个智能系统要在这样的环境中工作,必须要有遗忘的功能。因为,时间有限,我们不能一视同仁地记住所有信息。就算记忆空间不是问题,查询时间也一定会成为瓶颈。遗忘是集中注意力的一个必要条件。
实际上,我自己常常用这些 “缺陷” 来判断一个人工智能系统的真实水平。不管一个系统解决问题的能力有多强,如果它只 “记” 不 “忘”,这就说明它没有管理自身资源的能力;如果它从不犯错,这就说明它没有探索未知的能力。这当然不是说系统应该随便乱删东西或胡说八道,而是说某类错误是智能的必然代价。我们一般都会同意某些过失是可以接受的,比如 “不知者不为过”, “忙中难免有失” 都是这个意思。这里的微妙之处在于,区分哪些错误是 “合理的”,而哪些不是。
情绪化反应和种种 “非理性行为” 也都和这一点有关(见《人工智能,让机器也会“感情用事”》)。在知识和资源不足的情况下,及时做出尽可能有根据的反应,实际上体现了一种高级的理性,而情感表达了对情景和对象的好恶,是一种重要的评价机制。传统的理性模型都是基于演绎逻辑或概率论的,其中不容许有 “不知道” 和 “没想到” 的可能性,也没有情感的存身之地。大家都知道,没人能一直遵循纯粹的理性来生活,不意味着人没进化好。人工智能领域的奠基人之一司马贺(Herbert Simon)就提出,人脑体现的实际上是一种 “有限理性” (Bounded rationality)。他指出,囿于人类的认知能力和可用资源,我们追求的一般不是 “最优解”,而是 “满意解”。他在1978年得的诺贝尔经济学奖也和这个观点有关。
一个更早的著名观点是马赫(Ernst Mach)的 “思维经济原则”,即,对于事实,科学理论应该用最少量的思维开销作出尽可能完善的陈述。曾经,这一观点被批判,因为它否定了科学概念和理论的客观性;但以当今的科学观来看,事情远没有这么简单。我在一篇关于元理论的文章**[2****]**中提出,无论是在个体中评价概念和信念,还是在群体中评价理论体系,都应该考虑三个维度:(1)正确性(和已有证据的吻合程度),(2)指导性(对未来行为的限定程度),(3)简单性(描述的简略程度)。
这三个维度彼此独立。就是说,在某一方面得了高分,不意味在另一方面也必然如此。目前的问题是,很多人把第一点理解为 “和事实的吻合程度”,而对另两点认识不足,或者以为它们的价值最终还是要归结到正确性上来。在《证实、证伪、证明、证据:何以为“证”?》中,我说到了 “证据” 和 “事实” 的差别,以及波普尔(Karl Popper)证伪主义的实际意义在于强调了理论的指导意义,所以 “既要大胆又要谨慎” 之类的指示没什么价值,尽管说得好像不错。至于第三点,“奥卡姆剃刀”(Occam’s Razor)、理论的 “美感” 之类的论述,都可以看成是在表述理论的简单性及其相关特征,但不该以“美的更可能是真的”作为理由。由于资源约束的存在,简单性本身就是价值,不用关联于正确性。
以上三者对适应性系统都同样重要。知识也好,理论也罢,只能用以往经验来辩护,所以要尽可能与证据一致;由于它们的终极功能是指导未来行为,所以要尽可能具体、明晰;因为大家时间都有限,所以要尽可能简单,否则不好用。当然,这些都是个程度问题,而不同知识和理论的比较往往还是可能的。比如说爱因斯坦的理论比牛顿的更精确,同时也更复杂。当三者不可兼得的时候,具体的取舍就要看当时的情景对各方面的要求或容忍程度了。无论如何,一个理论如果有任意一种得分太低,大概什么时候都不会有价值。
纳思中的时间管理
最后又要说到我设计的人工智能系统 “纳思” 了。由于其基本预设之一就是 “时间总是不够”,纳思和绝大多数计算机系统(包括其它人工智能系统和实时系统)都有着根本的区别。
每一个提交给纳思的任务都有一个 “紧迫性” 的初值,或者由用户指定,或者由系统根据其性质确定。这个值代表了任务间的相对迫切、重要程度。系统后面可以根据自身的经验和情况的变化对这个值进行调整。
对绝大多数任务而言,系统都没有一个固定的处理算法,而是通过推理,逐步使用现有的知识对其进行转换和简化,直至得到一个解。一般说来,使用的知识越多,解的质量也就越高。在时间不足的情况下,没有多少任务在处理过程中能够考虑到所有相关知识。系统的设计目标不是在某个任务上达到最高的质量,而是力图最大限度地完成全部现有任务。因此那些超出系统当前能力范围的任务往往会被放弃掉。
如果任务是一个待答复的问题,随着推理的深入,系统可能会得到多个答案,并向用户报告那个迄今为止质量最高的答案。和一般的计算机系统为每个问题提供一次答案不同,纳思既可能不提供答案(好比说 “对不起,我不知道”),也可能提供多次(好比说 “对不起,刚才那个答案有考虑不周之处,现在我认为……”)。后一种情形类似于前面提到的随时算法,只是纳思在任务层面不遵循事先确定的算法,而是 “具体问题具体分析” [3**]**。这和前面提到的其它基于算法的方案有根本差别,比如说,纳思的推理过程不是严格可重复的。
纳思的知识是组织在一个动态存储结构中的。除了任务有不同的紧迫度之外,知识也有不同的优先度,其中除了综合前面提到的正确性(真值)、指导性(实际使用历史)、简单性之外,还考虑了与当前情境的相关性。由于优先度高的知识会更容易被系统考虑到,优先度的衰减就表现为“相对遗忘”(多花些时间还能想起来),而删除低优先度的知识就对应于“绝对遗忘”(再也想不起来)了。
纳思背后的理论预设比司马贺的 “有限理性” 离传统模型更远,因为在这里,系统的知识和资源已经不仅是 “有限”,而是 “不足”了,因此常常连 “满意解“ 都不可得,而只能在找到的解中挑出相对而言最好的(或者说最不差的)。乍看起来,纳思的行为有太多负面特征(解题过程不确定,会忽略任务或遗忘知识,不保证答案质量等等),调试和评价也比传统软件更复杂,但这很可能是一个真正的智能系统所必须付出的代价。在一个知识、资源相对充足的理想环境下圆满地解决问题不算有多大本事,承认在现实的约束下无法做到完美,但仍尽力而为,这才是智能的体现。
参考文献
[1] Shlomo Zilberstein, “Using Anytime Algorithms in Intelligent Systems”, AI Magazine, Fall 1996, pages 73-83, 1996
[2] Pei Wang, “Theories of Artificial Intelligence: Meta-theoretical considerations”, In Theoretical Foundations of Artificial General Intelligence, pages 307-325, Atlantis Press, Paris, 2012
[3] Pei Wang, “Case-by-case problem solving”, Proceedings of the Second Conference on Artificial General Intelligence, pages 180-185, Arlington, Virginia, March 2009
via:
-
时间紧急,怎样决策才算理性?| AI那厮 王培 返朴 2020年03月06日 08:07