2、计算机智能的基础:算术和逻辑机械化

让我们赞美这个原始纯净的心智。

罗宾.甘地

1 导言

§0 (导言)

\qquad 对事物计数的需要产生了数目概念,几乎所有拥有文字的民族都发展了某些原始形式的记数方法,其中数目是用实物代表或符号记录的。原始人类从实践经验中,不但懂得了数量概念,而且获得了最初步的基数累积方法;在这种计算方法中,数目的加减无非是依靠清点,加入或移走一个实物。因此,数目概念、记数方法与计算行为是同时产生、共同发展的。

\qquad 当数学发展到一定水平,由于记录和计算较大数目的需要,早期实物记数和符号记数就会逐步让位于较先进的方法。数概念的下一步发展是与过渡到按组计数的技术有关的,这个阶段出现了所谓结点数并形成了算术运算。我国古代很早就依靠机械方法,发明了采用十进位制的筹算系统;这套系统不仅运用方便,而且技术先进,在缔造我国古代算术辉煌的过程中发挥了重要作用。近代以来,数目记号和记数方法逐渐明确化和标准化,形成了国际上通用的现代十进制记数系统。

\qquad 位值制系统极其简单,因而常常容易忽视其重要性。按照现代信息论观点,可以将原始人类最早使用的记数方法看成是一种一进制系统。一进制系统逻辑上很不完善,对于表示和计算大数的效率也极低,有实际意义的是那些基数大于1的记数系统。基数不同的位值制,理论上相互等价,但存储、表示和处理信息的实际难度差异很大。进一步,可以认为一台数字计算机本质上必须像点计实物那样离散地处理对象,是时钟把时间离散化了,由时钟脉冲触发而完成的一个基本逻辑判断和算术运算等价于一次信息决断。用图灵机作为计算模型,能够分析说明:位值制系统表示和处理信息效率的提高,部分靠的是对于客观信息确实度的降低。同时,能够合理地论证:对于通用数字计算机,无论就系统适用性、系统逻辑设计和系统整体分辨力,还是就算术运算和逻辑运算机械化而言,二进制表示和处理系统都应该是最佳的选择。

\qquad 计算机器是从计数机械发展起来的,如果把它们都视为一些简单的离散自动机,那么自然就会认为二者之间不存在本质差别。然而,计算机器与计数机械确有不同,差异的核心是计算逻辑的机械化。进一步,通用计算机与早期台式计算机器更有不同,前者具有通用和完备的计算能力和逻辑判断能力,普适图灵机是其代表模型。

\qquad 当人们将思维活动归结为形式推理,又将后者归结为一系列供机器执行的“条件命令”后,自然就会问:具体化的图灵机是如何实现这种“判断力”的?对此,巴贝奇在170年前就给予了明确表述:机械方法本身已经提供了表达条件的手段(1);图灵在70年前则表达得更具体和更直接:“这类机器通过瞬时跳变或者通过棘爪,从一个完全确定的状态转移到另一个完全确定的状态。”(2)因此,在离散自动机中,并不存在抽象意义的条件转移,而只有相继机械步骤之间的状态转移。然而,这又意味着什么呢?第四节末尾对此进行了分析。

\qquad 至于算术运算及算术机械化,如果缺乏先进的记数系统,任何大的进步都是不可能的,后者甚至无法达到自动计数器的水平,因此位值制的重要性无论怎么估价都不过分。同时,我们需要清楚地看到:位值制之所以能够提高计算效率,关键在于它增加了计算过程的逻辑复杂度;这种形式化、刻板化、标准化的算术逻辑与同样形式化、刻板化、标准化的推理逻辑一道,将方法蕴含的力量内化在个人和机器的计算过程之中。正是在这个意义上,图灵告诉我们:计算机器具有智能。

“扫描”图灵机纸带的图灵大脑

正在“扫描”图灵机纸带的图灵大脑

2 古代算术和位值制产生

§1(数目概念)

\qquad 数,在现代,是一个高度抽象的概念。然而,原始人类懂得的数,跟现代文明人完全不一样,他们认识的数是形象的、具体的,既不能与形分开,也不能与量脱离,形和量是在时空中展开的;也就是说,只有与形和量结合在一起,依附于所指的某一件或某二件...物体,并靠着主动地、一个个地点计,他们才能懂得所谓的“数(shù)”。例如,提出“一”这个数目,当时的人们立刻会同一只羊或一只兔子联系起来;提出“二”这个数目,他们立刻会联系到一只羊再一只羊,或一只兔再一只兔。如果不让他们清点兔子或其它实物,在他们头脑里,就很难形成任何的“数”。

\qquad 从概念发展来看,原始人类对数目的认识,从“一”和“多”开始,后来才逐渐有了“二”、“三”等概念,它们只是作为一些物体的个数反映在人的头脑中,如一只羊、两根木棒、等等,没有离开物体的抽象的数概念。在通常情况下,人们可以通过手指等简单的对应关系“数(shǔ)”出物体的个数。数目概念的发展经历了一个漫长过程,由一、二等进入到十几、几十数目可能要上万年,甚至数万年。

§2(记数方法)

\qquad 在文字产生以前,人类就已经形成了数目概念。那时数目是用实物记录的,如小石子、竹片、树枝、贝壳之类。另外,根据民族学者的调查,一些尚处原始状态的民族,或文化极不发达的民族,他们的计数或计算方法,采用的是拨弄手指和脚趾,一个个点数或相加相减;数目超过20,要用两个人的手指和脚趾合在一起相加或相减。

\qquad 石子、竹片之类容易散乱,手指、脚趾的结果无法保存,自然会想到用结绳的办法来记数。结绳记数法在世界各地都用过,有些地方甚至到19世纪还保留着。结绳毕竟不方便,以后便演变为在实物(石、木、骨等)上刻痕。原始人类对数目的认识还表现在符号记数方面:符号记数和刻痕记数是两回事,前者是从后者演变过来的,就是说把某些刻痕固定下来,有些稍加改造就变成了数学符号。

\qquad 结绳记数、刻痕记数、屈指记数以及早期的符号记数,有多少数就打多少个结、刻多少道痕、等等,这些表示或记录数目的原始方法,当数目很大时就会遇到困难,因此要求产生进位制,否则便无法进行计算了。

\qquad 从现代信息论观点看,这些原始记数方法将依存于客观事物中的数目信息,按照一对一的方式,移植到一种或几种统一的存储介质中保存,方便了信息的检查、比较和加工,同时也将他们的思想有可能跨越时空传递给我们。但是,由于它们仍然依靠对起代表作用的实物或记号一个个地清点,因此如果以一个点计动作为时间单位,则丝毫没有提高计数速度。于是,在这一发展过程中,尽管人类对客观事物的独立性以及事物之间对应关系的稳定性逐渐有了认识,但计数方法仍然采用最简单、最直接的逻辑。

§3(数目加减)

\qquad 最初的数,不是什么抽象概念,而是必须依附于实物才能完成的具体动作(点计的过程,即:数shǔ)和这些动作反映出来的具体结果(即:数shù),其本身已有量的意义。因此,数与计算行为是同时产生的。

\qquad 原始人类从实践经验中,不但懂得了数量概念,还获得了最初步的基数累积方法。他们首先掌握的是一些“石子”的相加,即把若干个“石子”堆垒起来得到一个大于“一个石子”的数目。在这种最初步的计算方法中,一次“加”或“减”的计算行为无非是依靠对实物的点计,加入或移走一个“石子”。

\qquad 如果将堆垒“石子”换成将它们放入一个大布袋,并且认为放入和取出一个“石子”的难度相当,同时忽略所加入“石子”的来龙和被移走“石子”的去脉,那么一次“加”运算和一次“减”运算的计算难度就是相同的。进而,如果将堆垒“石子”换成将它们沿着一条无限长河的河岸顺序排放,同时规定总是从这排石子的最末端移走和加入“石子”,并且同样忽略“石子”的来龙去脉,那么一次“加”运算和一次“减”运算的计算难度仍然相同。

\qquad 再之,假定沿着河岸已经有一个个顺序排列的沙坑,当把这无数个沙坑组成的河岸视为无限长纸带,把每个沙坑视为纸带上的方格,把“石子”放入沙坑的动作等价于在纸带方格上写入标记,把“石子”从沙坑移走的动作等价于抹去纸带方格上的标记,以及把古人视为扫描头,那么原始人类的这种计算行为与无限长单带图灵机的计算行为就是等价的。

§4(位值制产生)

\qquad 当数学发展到一定水平,结绳记数、刻痕记数等原始记数法就会逐渐让位于较先进的方法;但它们不会在短时间内完全消逝,而是要延续很长时间,甚至数千年。在一些发展较晚的少数民族地区,直到晚近还保留着较为原始的记数方法。

\qquad 从基数的观点来看,原始人类只要能数出前几个自然数就理解了加法运算。首先掌握的是一些个“1”的相加,即把若干个“1”堆垒起来得到一个大于“1”的数目。进而把两堆“1”放在一起又得到一个新数目,这时就需要建立进位制。数概念的下一步发展就是与过渡到这种按组计数的技术有关的,如按双、按十、按打计数。由此出现了所谓结点数,并在数的名称中体现出算术运算的意义。确定的数目记号和记数方法形成了,数从被计数的对象中逐渐分离了出来,进位制记数法开始出现。

\qquad 现代记数系统的形成过程极其复杂,只有这个过程的最后部分能够作出可靠判断。十进制记数法,一是逢10进1,二是每个数码不仅有其自身绝对的值,而且还有其相对于所在数位的十进制的值。这种记数法简捷、明快、实用,便于运算,已成为国际通用的记数法而沿用至今。“位值制记数法极其简单,因而也掩盖了它的伟大业绩。它的重要作用与重要意义,非但为一般人们所不了解,甚至众多数学专家对它的重要性也熟视无睹。而法国的数学家拉普拉斯则独具慧眼,提出算术应在一切有用的发明中列于首位。”(3)

3 位值制的信息学意义

§5(p进制系统)

\qquad 在现代计算理论中,以p个数组成一个新单位,p个新单位又组成一个更高的单位,这叫p进制,p叫做进位的基数。于是,原始人类所使用的记数法也可以被称作一进制系统。

§6(一进制系统)

\qquad 应该强调,即使运用所谓的一进制系统,原始人类在实际操作中也已经明确区分了两种对立状态,如果予以抽象,分别为“有”与“无”(或“是”与“否”);否则,即便从事最简单的计数也是不可能的。与扫描符号一样,点计石子、计数刻痕同样是对“有”、“无”这两种状态进行抉择的判断过程(4)。在现代一进制系统中,如果简单地利用一串符号“1”代表数n,那么也必须用符号“0”(或其它作用等价的符号)作为数n的结束标志,以及作为不同数之间的分隔标志。

\qquad 用一进制系统表示大数极端地无效率。举一个中国古代笑话为例:一位少年拜师学算,第一天学了一个“一”字,第二天学了一个“二”字,第三天学了一个“三”字。第四天学生没等老师教,便说:“我已经学会记数了。”于是他拜别老师回家。有一天,家来了一个客人,他父亲便对客人夸耀自己的独生子聪明,如何三天就学会了记数,并让客人当面考他。客人出了一个大数目让他写,过了半天,见他写得满头大汗还没写完,走过去一看,只见满纸都划着“一”。问他干什么,他说:“你出的数太大,我还没写完呢!”对此,现代人可能认为不值一提,那么再看看这样一个比较:一个十进制数1583169,在二进制记号中它是110000010100001000001;如果使用一进制记号,它便是一本一千页厚的大部头也容纳不下。

\qquad 现在流行的印度-阿拉伯数字的基数是10,即“逢10进1,退1当10”,人们已经习以为常。但在历史上曾使用过许多其它基数,如2、5、6、12、16、20、60等;量角的60进制,至今还在使用。为什么选择这些数作基数,五进制和十进制显然和人类有10个指头有关,这一点亚里士多德就已经注意到。事实上,进位基数是人们在长期实践中形成的。

§7(信息决断)

\qquad 现代信息论告诉我们,绝对意义的一进制系统只能代表一片空白或者混沌未开,有实际意义的是那些基数大于等于2的记数系统。理论上,它们在存储、表示、处理信息方面是等价的,能够互相转换;实践上,针对各种具体情况,它们之间在实现难度方面又存在差异。这些在现代人看来都是显然的,但对于生活在70年前的人们,即便是一些著名科学家,尚无这样清醒的认识。

\qquad 关于信息量的理论是上个世纪二次大战前后,由费希尔、香农和维纳等人分别在古典统计理论、信息编码问题和电滤波器噪声与消息问题的研究中发展起来的。在这个理论中,“最简单、最基本的信息形式,就是对两个具有相同几率的二中择一的简单事件所作选择的记录,选择时不是这个事件就是那个事件一定要发生。例如,掷硬币时花或字的选择记录就是这种形式的信息。我们把一次这种二中择一的选择叫作一次决断。” (5)

\qquad 在离散自动机中,一次决断由一次机械传动的冲量或由一个时钟电路的脉冲触发,并在这次传动冲程或这个脉冲周期内完成,因此“可以说是时钟让我们把离散引进了时间,它使得对于某些用途,能够把时间视为相继的瞬间,而不是连续流。一台数字计算机器本质上必须处理离散对象,在ACE(6)中,通过使用时钟使这成为可能。除了人类以及我们所知的头脑,所有其它数字计算机器都相同。人们可以设计出避免这种情形的各种途径,但它们都相当笨拙。应当指出的是ACE中时钟的应用并不限于循环处理,而是应用于几乎所有部件之中。”(7)“分析机正是用无限时间来替代我所使用的无限空间,从而限制了它的尺寸却保持了它的无限能力。”(8)

\qquad 实际上,即便对于我们自己的头脑,至少就完成一次算术运算和逻辑推理而言,也可以将它们分解为一次次顺序的基本决断(9);至于那些非形式化的“创造性智力活动”,图灵认为:“把某一事物评价为‘惊奇的’恰好与一次‘创造性智力活动’需要同样多的东西,无论令人惊奇的事件发源于一个人、一本书、一台机器、或者任何其它东西。”(10)他接着说:“机器无法造成惊奇之举的观点导源于一个谬误,哲学家和数学家尤其受这个谬误支配,这就是假定:一旦心智中出现一个事实,那么伴随这个事实的所有后果都会同时立刻涌入心智。在许多情况下,这是一个非常有用的假设,但它是错误的,人们对于这一点过于健忘。如此行事的一个自然后果是人们认为:仅仅根据数据和一般原理得出更多结论是没有任何价值的。” (11)

§8(二进制存储)

\qquad 维纳在《控制论》中说:“计算机本质上是一种记录数字、运算数字并给出数字结果的机器。它的成本中的很大部分,无论就经济方面说或就建造的劳力方面说,都花费在数字要记录得清楚而准确这个简单问题上。”(12)随后,他证明了:在相同准确度要求下,二进制存储系统所需记录耗费最少。(13)

\qquad 进一步,对于计算机存储系统,可以运用如下推理:

  1. 如果希望通过输入来唯一地和确定性地控制输出,那么输入和输出之间就需要通过这个系统保持来一种映射关系:若输入向量不变,则输出向量也必然恒定;
  2. 若借助逐次二分法使输入向量具有n个状态,则由1知:输出向量最多可具有n个状态。于是,系统输入分辨力就决定了输出分辨力;
  3. 各级子系统在串行联结时,由于相互依赖性最高,因此系统整体分辨力只会降低或保持;
  4. 由3,在各级系统中,(相互独立的)并行联结子系统拥有的状态数越少,系统的整体分辨力就越容易保持。

由此得出的结论是:二中择一的“是”、“否”状态是计算机存储元件的最佳选择。

§9(计算复杂度比较)

\qquad 现在,让我们以确定型离线多带图灵机为模型考虑记录一个数字的复杂度问题,其中忽略模型工作过程中纸带来回移动所涉及的机械难度。(14)

\qquad 首先,考虑记录一个大小为n的数字,其中:数字n编码成一进制方式。图灵机将n按一进制方式记录,空间和时间复杂度显然都为n;图灵机将n按二进制方式记录,空间复杂度为㏒n,而将输入的一进制数转换为二进制数并记录下来的时间复杂度为n㏒n。

\qquad 下一步,假定这台图灵机:

  1. 内部已经记录下了一个二进制数;
  2. 能且只能接受另一个一进制数作为输入;
  3. 能且只能将输入的一进制数转换为二进制数并与内部的二进制数相加或相减,结果放在后者的记录位置。

在此基础上,我们得出结论:这台图灵机进行一次加法或减法运算的时间复杂度大于原始人类使用基数累积方法完成相同计算的时间复杂度。

\qquad 现在,把一进制数字向这台图灵机的一个个输入,对应于对实物数目的清点或核查,于是如果能够事先确认:实物数目根本不会改变,那么就可以:

  1. 将第一次对实物的清点结果编码为二进制数字,并忽略随后的对实物数目的核查;
  2. 修改这台图灵机让它接受二进制输入;
  3. 修改这台图灵机让它将输入的二进制数与内部二进制数相加或相减,结果放在后者的记录位置。

那么,前后两台图灵机的存储结果当然是相同的,但后者一次二进制加法或减法运算所对应的时间复杂度降低了㏒n。

\qquad 因此,表示实物数目或代表客观事物数量的数字,如果长期缺乏核查,或者由于自然界的变迁和磨损,或者由于人类自身认识的发展或遗忘,都会逐渐失去其确实度。当然,客观信息的确实度降低与表示它们的进位制并无本质上的联系,这里要说明的是:位值制记数法表示和处理信息效率的提高,部分地靠的正是这种确实度的降低。

§10(本节结论)

\qquad 综上,在数字计算机中,特别重要的是二进制:

  1. 在数字计算机中使用p进制,就要求基本存储元件具有p种稳定的物理状态。二进制只要求基本元件具有两种不同稳定状态,这不但最容易实现,而且可靠性最高。如继电器的“通”、“断”,穿空纸带的“有孔”、“无孔”,晶体管的“导通”、“截止”等都可以用来实现。
  2. 二进制比其它进制更节省元件。
  3. 二进制逻辑运算恰好是组成实际逻辑门电路所需要的。
  4. 二进制比其它进制更容易实现算术运算的机械化,因为它的加法和乘法表都是最简单的。
  5. 二进制系统具有最自然的逻辑、数学和物理适用性。将大量简单的二进制元件组合在一起,通过状态的设置和意义的指称,就可以用它来代表和处理现实中任何复杂信息。
  6. 此外,它还便于应用布尔代数来进行分析和设计计算机系统。

4 自动机逻辑

§11(计算机器和计数机械)

\qquad 用于算术的计算机器是从早期计数机械发展起来的,后者典型地包括:自动计时器和自动计里装置。实际上,计算机器和计数机械都需要某种原动机构提供间歇式运动,利用它们来达到各自的目标;就此而言,这些机器之间并没有那种在所谓间歇性跳变和连续性运动之间所存在的差异。蒸汽的冲程和电路的脉冲将时间客观地离散化了,因此对于上述用途,时间能够被视为相继瞬间,而不是连续流。于是,在这些机器中,正像在前一节中所分析的:每个设计完好的动作相继被时间脉冲触发,并且恰好在脉冲周期边界完成。所以,倘若将那些能够被主动利用或控制的“点”看作是第二级序列的结果,倘若突出这些“控制点”在时间上的规律变化和在状态上的相互独立性,那么就可以认为这些机器都是离散自动机;就此理解,就可以说:时钟一类的计数机械与进行算术的计算机器并无本质差异,“计数一类的机器在一般指示下能够完成重要功能。某些机器不过是对持续着的不同步骤进行记录,而其它一些机器本身就可以依照先前的安排在指定时间动作。”(15)类似地,离散和连续是相对的,“正如希尔伯特所说,没有数学家完成过一个无穷演绎。同样正确的是:没有一位数学家从未喝过一杯水,并且就我所知,这样一个事实的逻辑重要性与其它事实的逻辑重要性恰好相同。”(16)

\qquad 然而,计算机器与计数机械确有不同,但这种差异却不是工艺技术独自能涵盖的,尽管机器尺寸越来越小、处理机构日益复杂、计算速度不断提高等等都是计算技术之发展和实用化所必不可少的。事实上,差异的核心是思想方法在计算机器中的内化,而方法内化的基础是计算逻辑的机械化。

§12(通用计算机和早期计算器)

\qquad 众所周知,通用计算机与早期机械台式计算器是不同的,因为“前者能按照人预先制定的顺序完成一系列的运算,后者则只能一次完成一种四则运算。前者所以能自动完成一系列运算则是由于它能完成一些逻辑运算(如判别X>Y是否成立,如果成立则转向前面某一条指令,否则执行次一指令等等)。因之在一定意义上可以说,逻辑运算机械化是自动计算机设计中的关键。”(17)尽管达到这种认识已经非同寻常,但现在看来这仍属泛泛之谈:任何人物(包括机器)都有“判断能力”,问题在于这种判断在时空中是否足够地通用和完备。那么什么人物既有通用和完备的逻辑能力,本身又有逻辑简明性呢?在古代,有中国数学的代表刘徽和他使用的算筹;在近代,有德国数学家莱布尼兹和他的四则运算器;在现代,有英国数学家图灵和他的图灵机。由于图灵机对其主人的依赖性最小,因此最适合作为通用数字计算机的基本模型。

§13(图灵机简介)

\qquad 图灵机“所援用的硬件达到了极致:纸带、卷轴和读写头。图灵机之所以是一个抽象概念,在于其纸带应该是无限长的;但是,如果把‘无限长’理解为‘长至任何给定计算所需要的长度’,就能将这个概念具体化。由于1935年之前人们就已经了解了磁线记录和数字电子技术,因此可以立即制造出一台图灵机,尽管其运行速度会不切实际地慢。”(18)图灵机有多种等价的计算模型,图灵本人在其最初的论文中就给出了两种模型,下面对他的第一种模型予以简要介绍。

\qquad 图灵机由一条双向都可无限延长的被分为一个个小方格的纸带、一个有限状态控制器和一个读写头组成,如下图所示。图灵机一步步地进行工作,机器工作情况取决于三个条件,即:

  1. 机器的内部状态;
  2. 读写头扫描在磁带的哪个方格上;
  3. 该方格上有什么信息。

机器执行一步工作的过程如下:读写头在所扫描的方格上写上符号,原有符号自然擦除;读写头向右或向左移动一个方格;机器由当前状态转向另一个状态,进入下一步工作。如此周而复始,除非遇到命令机器停止工作的状态。图灵机模型

图灵机模型(图片来源:iq.opengenus.org)

§14(自动机器的“判断力”)

\qquad 由于受到早年教育的影响,我会不由自主地认为图灵机具有某种思维能力,而非仅仅具有简单的机械能力,因为在我看来:“扫描符号”对应着机器感知客观条件并将其转化为内部状态的过程,而“条件执行”意味着对机器内部状态进行分析、作出判断并采取动作。事实上,如果将图灵机指令用普通文字表达出来,多数是这样的:“如果读写头扫描到0,则在所扫描方格写上1,读写头向右移动一格,机器进入状态q5”。确实,即便原始人类也已经具有比这更强的推理能力,比如:清点羊群就需要运用这种能力。可是,用机械零件或电子元件具体化的图灵机如何完成这种判断呢?这个问题并不简单,因此我们最好还是先回答:自动烤箱怎么知道面包何时出炉?闹钟怎么能够按时自动振铃?

\qquad 实际上,无论是前面提到的自动计时、计里装置,还是现在所讨论的烤箱、闹钟,抑或是更庞大、更复杂的洗衣机、宇宙飞船,它们都是些自动机器。比如,大多数自动烤箱里都有一段弯曲的导线,它与面包同时加热。当导线达到一定温度时,就会触及另一根导线,于是电路随之断开,并将面包从烤箱中弹出。因此,一只烧着木材的炉子只需持续加热就行了,但一台烤箱却似乎必须不停地问自己:“我现在足够热了吗?”同样,一般的钟表只需不停地计算着分分秒秒,但一台闹钟事实上却需要不停地问自己:“现在我应该振铃了吗?”总之,它们都必须以一种相对原始的方式作出某种决策。

§15(分析机的“判断力”)

\qquad 然而,这并不是说这些机器是具有生命的东西,即:不是说它们通过分析自己的内外状态来决定做什么,而是说它们在某种客观事件的触发下以确定性的方式完成一个或一系列动作。这些并不是什么新认识,巴贝奇170年前在与其他科学家讨论他发明的分析机时就对此有明确表述:

\qquad “Mossotti先生评论道:他现在已经非常乐意承认机械装置在数值关系、甚至代数关系方面的威力能够达到任何程度。但是,他补充说:他完全无法理解,这样的机器如何能完成在分析询问过程中常常需要的判断行为,当两个或更多不同途径出现在它们面前时,尤其是在许多情况下,只有所有先前部分都完成后,才能知道需要采纳什么途径。
\qquad
\qquad 他的困难实际上在于让分析机知道:什么时候在一个卡片组与另一个卡片组之间,按照指令设计者无法[事先]给出的间隔,来回重复地切换。
\qquad
\qquad 对Mossotti先生所提困难的解释是:将运算卡片向后和向前移动任意多个步骤已经由机械方法提供。在那里,存在表达条件的手段,这些不同过程在这些条件下被请求进来发挥作用。甚至没有必要只有两条可能途径。同时存在任意多条途径是可能的;并且每次选择可以依赖于任意多个条件。”
(19)

\qquad 在巴贝奇的分析机中,应用对数进行存储、传输、步进、相加的机械装置,构造了一台具备一定计算能力的机器。然而,作为通用计算机器,还需要一个能让这些装置协同工作的控制机构,巴贝奇通过一种我们现在称为微程序设计的技术实现了它。在此,我们不便展开他运用这项技术的多才多艺,而只原理性地描述一下他设计的控制机构如何根据机器中有条件发生的事件来改变操作序列。

\qquad 下图示意了巴贝奇分析机的控制机构,其核心是一个竖直圆桶(B为其中心轴)。圆桶表面可以按任何想要的图案固定上销钉。圆桶可以侧向移动,在这个过程中,销钉的末端推动杠杆的末端,引起机器的计算部分发生动作。圆桶上的一排竖直销钉发出发生在一个计算循环中的所有动作的命令,巴贝奇称之为一个“垂直条”。根据上下文,它对应于微程序存储器中的一个字或机器动作中的一个微操作。(37)

\qquad 当控制杆设置好后,圆桶后退到与它后面的“减速器”(R为其中心轴)相啮合。这意味着圆桶将被转动,以选择下一步作用于控制机器计算部分的垂直条。圆桶上的一些销钉控制着与能够将圆桶移动一个、两个、四个、或更多个垂直条的扇形齿轮相啮合的杠杆。另一个销钉决定移动是向前还是向后。(37)

\qquad 圆桶上第a排销钉控制减速器的扇形轮之一,将圆桶推进到某一个垂直条。第b排销钉使另一个扇形轮在计算机构出现一个抬高(running up)事件时能进入啮合,从而有条件地将圆桶推进到另一个垂直条。第c排销钉感测一个条件臂,由此对一个较早操作循环中的一个条件事件作出响应(37)

\qquad “一台机器中拥有一个条件作用序列,这整个概念,尤其是对这台机器的先前动作结果的条件依赖,是巴贝奇和分析机设计的原创性概念。这在智力上是一个最重要的概念。”(38)

巴贝奇分析机的控制机构

巴贝奇分析机的控制机构[图片来源见 (37)

§16(图灵机的“判断力”)

\qquad 与前面所述的自动机器相比,图灵机的每个步骤更加简单,就信息处理能力而言,它们之间的最大区别是:图灵机能将数目庞大的简单步骤组合起来,从而完成特别复杂的任务。“能够做到这一点似乎有些令人不解,人们怎能希望一台机器完成如此多样的事情呢?回答是:我们应该将机器设想为完成一些简单事情;也就是,执行它能明了的、以标准形式赋予它的命令。”(20)因此,与170年前相比,甚至与70年前相比,我们现在似乎更加需要强调:这里并不存在那种日常生活中司空见惯的、似是而非的判断力,正如孤岛上的那个纯净心灵所一再强调的:“扫描”只是一种拟人的描述,其中并不包含认识论中的那种“感知”意义。在每个步骤开始之初,“被扫描方格”就已经“处于机器之中”,“被扫描符号”是机器“直接意识”到的。图灵机在任何时刻的可能行为由机器内部状态和被扫描符号确定。(21)“实际完成的操作由计算员的心智状态和被观察到的符号所确定。尤其是,它们确定了计算员在操作完成后的心智状态。”(22)

§17(图灵步骤)

\qquad 于是,图灵步骤不仅本身简单、标准,而且步骤之间界限分明、步骤处理标准一致,如果放大时间坐标对实际图灵机的一个完整步骤进行观测,我们就会清楚地看到:

  1. 图灵机原动机构发出一个时钟脉冲(或机械冲量)。在此之前,图灵机已经稳定在一个完全确定的状态。
  2. 在这个脉冲触发下,图灵机开始执行由当前状态确定的操作。
  3. 当前操作执行完毕,图灵机开始进入下一步骤需要的状态。这些应在下一个时钟脉冲到达之前完成。
  4. 图灵机稳定在下一步骤需要的状态,等待下一个时钟脉冲的到达。

正如图灵在《计算机器与智能》一文中清楚论述的:图灵机“可以分类为‘离散状态机’,这类机器通过瞬时跳变或者通过棘爪,从一个完全确定的状态转移到另一个完全确定的状态。这些状态界限分明,以致于可以忽略状态之间相互混淆的可能性。严格地说,这样的机器并不存在,因为任何事物都是连续运动的。但是,有许多机器类型,把它们看成离散状态机非常有益。例如:考虑照明系统中的开关,假定每个开关不是开、就是关,这种处理就很方便。中间位置肯定存在,但对于大部分用途,我们可以忽略它们。”(23)

§18(无条件转移等价于“判断力”)

\qquad 综上,图灵机告诉我们:在离散自动机中,并不存在抽象意义的条件转移,而只有离散的状态转移。由于相继图灵步骤之间都对应着一个状态转移,如果我们用数码来标识机器内部状态,并将它们用于控制图灵机状态转移,即根据这些数码来驱动纸带运动和读写纸带上的符号,那么就需要支持无条件转移。就此而言,条件转移与无条件转移并无本质不同。因此,如果希望使一台图灵机成为普适图灵机,即能够通过程序设计来模拟任何一台其它图灵机,那么就不仅需要它的程序指令集包含无条件转移功能,而且要求实际的普适图灵机(或通用数字计算机)在一条无条件转移指令中至少能够完成:一次基本加法运算和二次基本乘法运算。(24)如果与维纳对于神经细胞兴奋、抑制机制的分析进行比较,图灵对于条件转移的这种处理就显得更有意思了,前者在《控制论》中指出:“兴奋和抑制的概念,在性质上更接近于乘法而不是加法。例如,一个完全的抑制等于乘上零,部分的抑制等于乘上一个小量。”(25)

5 算术和逻辑

§19(引言)

\qquad 这一节以计算机器为中心来讨论,因为相比而言,人脑的计算能力和确定性推理能力并不更强。

§20(计数与计算)

\qquad 在现代数字计算机中,基本运算是加法。借助于位值制,其它算术运算都可以化归加法来完成:乘法用累加来实现、减法通过补码和加法来代替、除法使用递推公式来计算。并且,如果采用二进制系统,加法可以被分解为诸如1加1这样最基本的步骤。不过,按照前面的讨论:算术的基本运算是计数,次一级运算才是加法和减法。

\qquad 确实,加法和减法最初是直接应用计数方法完成的;后来,由于节省劳动和提高效率的需要,人们创造了进位制系统和十进制加减法;近代,又发明了按照进位制工作原理自动计数的装置,甚至使用若干台装置组成一台计算机器,并让它们在机器中同时工作。事实上,在计算机器中,如果使用简单计数作为唯一运算,假定它的当前值为2312,那么仅仅为了与3245相加,它就需要完成3245次处理,工程实践表明这是极不合理的。相反,如果将计数过程分开,依靠个位对个位、十位对十位、百位对百位等等,就只需要:

3 + 2 + 4 + 5 = 14

次处理,而不是3245次处理(这里忽略了加法运算中需要考虑的进位处理)。计算机器的这种工作方式完全类似于我们自己在使用普通算术求一个和时的做法;当然,如果我们连加法表都没学会,那么为了做加法就不得不依靠自己的手指了。

§21(算术和逻辑)

\qquad 在第4节,我们已经全面分析了逻辑判断在通用计算机器中的意义,并得出了一个看似矛盾的结论,即:通用数字计算机的基本加法运算必须在一条无条件转移指令(控制指令)内完成。实际上,其中并无矛盾,因为我们已经知道:为了条理化人类知识和个人思维,寻找、总结能够被主动利用的“控制点”来组成第一级序列是十分重要的。因此,在通用数字计算机中,基本算术运算必须而且能够作为形成第二级序列的规则,但如果没有位值制的发明,这种运算装置是无法真正实现的。图灵早在70多年前很可能就已经明白这一点,他在《ACE报告》中说:“在ACE中,…机器的算术部件是牵涉加、乘以及任何其它运算的部件,这些运算似乎值得用特殊电路而不是通过控制提供的简单机制来完成。控制部件与算术部件的区分相当模糊,但是无论如何,很明显,机器起码应该有一个加法器和一个乘法器,即使它们最终被弄清楚是控制部件。”(26)

\qquad 现在,我们知道了:

  1. 为了实现逻辑推理机械化,一台数字计算机本质上必须处理离散对象。时钟电路脉冲(或机械传动冲量)信号触发控制机构,使之发生状态转移;由一个个状态转移形成的一次次决断组成了逻辑推理链条,即第一级序列。
  2. 组成数字计算机第一级序列的“点”是第二级序列的结果,算术运算是形成第二级序列的基本运算。借助于位值制在数据表示和算术运算方面的优越性,使得用特殊装置(电子的或机械)实现基本算术运算具有实际意义。
  3. 对于逻辑运算,“现代数字计算机实际上是分两步来实现的,即先将逻辑运算归约为算术运算(如判别X=Y是否成立这一运算可以归约为判别X-Y=0是否成立,通过减法来进行),然后再执行这些算术运算。至于用逻辑门电路来实现算术运算则可以认为是计算逻辑化。”(27)
  4. 由于采用了时钟脉冲机制和位值制表示,并将基本算术运算过程视为独立的第二级序列,因此可以自然地应用各种并行处理技术实现它们。

§22(条件转移的意义)

\qquad 需要指出,图灵本人对于条件转移功能在程序设计中的重要作用十分了解。例如,他在1946年的《ACE报告》中明确指出:“一种简单的逻辑控制方式是以给定次序列出将要执行的操作。这种方案可以涵盖相当多的作业,并且已经应用于多台机器当中,例如:按照明确给出的公式进行计算。然而,这种方案缺乏灵活性,因为我们希望命令序列能够在不同运行点分叉,根据到此为止的计算结果,以不同方式继续运行;我们还希望能将操作分离为辅助操作,这应该可以这样来实现:一旦记录下随后操作如何完成,我们就可以将它作为辅助操作应用于其它任何操作之中。”(28)在同一份报告中,他设计了ACE机器的完整指令集,其中不包含条件转移指令。他对条件转移功能的支持别具一格:通过将下一条指令地址留在某个固定寄存器中,利用无条件转移来获得条件转移,从而把控制逻辑完全归约为基本算术运算,以及把总是让人联想起“认识论感知”的“条件转移”彻底排除在ACE机器指令集之外。实际上,当时只有图灵才会有如此深刻的思想和精湛的处理。对此,在图灵机出现半个世纪之后,不仅有他的学生和朋友Robin.Gandy的倍加赞赏:在图灵机的思想中,按照它们的重要性,排第3位的是“条件指令与无条件指令没有不同”(29);也有其它资深计算机专家的无知批评:图灵的《ACE报告》“在对指令集的主要部分以及对一种相当笨拙的条件转移方法进行了描述后,这一节最后阐述了一个全新思想:允许对子例程进行嵌套调用的返回地址栈。…按照严格标准,这并没有形成合乎规则的指令集,不过它十分经济,并且只缺少一条条件转移指令。”(30)

\qquad 尽管在机械意义上,“条件指令与无条件指令没有不同”,但在一般计算理论和程序设计技术中,条件转移的重要性则是毫无疑问的,巴贝奇也许是首先拥有这种认识的科学家。现在,人们逐渐理解了发轫于图灵的思想:条件转移的基本重要性在于条理化人类知识和个人思维,并使得在此基础上逐步增加它们的逻辑复杂度成为可能。正如冯.诺依曼在《计算机与人脑》这本未完成遗著中所说的:“这里要讨论的一个相当重要的问题,是这样的:任何为人类所使用的,特别是为控制复杂过程而建造起来的人造自动化系统,一般都具有纯粹逻辑的部分和算术部分,也就是说,一个算术过程完全不起作用的部分和一个算术过程起着重要作用的部分。这是由于这样的事实:按照我们思维的习惯和表达思维的习惯,如果要表达任何真正复杂的情况而不依赖公式和数字,是极其困难的。…而在另一方面,要完成上述任务,又必须有和数字关系无关的方面,即必须有纯粹的逻辑方面。这就是某些定性的原理,包括不依赖数字表达的生理反应或不反应,比如我们只需要定性地叙述:在什么环境条件的组合下,会发生什么事件,而哪些条件的组合,则是不需要的。”(31)

\qquad 于是,“当认识到存储器中的大多数指令必须执行许多次时,指令迭代循环的想法同样认为十分基础。如果整个存储器都被指令所占用而没有用于存储数字和其它数据,并且每条指令都只执行一次,那么机器最长只能持续工作16秒。”(32)因此,“程序框图主要是由表示差别的菱形框和表示计算过程的方框组成的。没有菱形框是不能表示较复杂的程序的,这说明了逻辑运算在程序中的重要性。”(33)可以说:“编程的艺术就是组织复杂性的艺术,就是控制众多变量使之远离混沌状态的艺术。”(34)

6 人工智能

§23(模仿经验规则)

\qquad “如果我们把通用机器的特性与机器处理和经验处理规则是同义语这个事实结合起来,我们就可以说:当给通用机器配备适当指令时,它是一种能够执行任何经验处理规则的机器。”(36)

\qquad 粗略说来,“那些工作与ACE有关的人将被划分为主人和仆人。主人为它制定指令表,愈来愈深刻地发明其使用方式。仆人则在它要求他们时,供给它卡片。他们将使故障部件恢复正常。他们将汇编所需要的数据。事实上,他们将代替机器的四肢。随着时间的推移,计算器本身将接管主人和仆人的功能。仆人将被机械、电子零部件以及敏感元件所取代。…主人也有被取代的倾向,这是因为一旦任何技术变得完全一成不变,那么就有可能设计一个指令系统,让计算机能够自己来工作。然而,主人有可能拒绝这样做,他们可能不愿意让工作以这种方式从他们那里窃走。在这种情况下,无论何时要做出任何危险建议,他们都会把他们的整个工作用谜团包裹,并用精心设计的深奥语言制造借口。我想这类反应是极端危险的。这个话题自然地引出了关于让一台计算机来模仿人类活动,原理上大体会多遥远的问题。”(35)

§24(模仿原创性工作)

\qquad 首先,每个人,作为生物,延续生命是第一要务,而作为社会性成员,个体间交流必不可少。语言和文字对于人类文明和个体智能发展的作用,无论如何强调都不过分。

  • 文明进化使我们惯于为感悟的对象命名并赋予属性,对于一件东西、一种现象、一丝情感、甚至一类关系。这就是猜测客观事实的本质行为。
  • 然而,我们创造的名词和赋予的属性从来就无法与它们所指称的对象完全匹配。在这里,对象在时空中的绝非不变性只是次要一面,主要的是我们的认知(体系)所固有的局限。
  • 我们一致称呼的某个名词以及直观赋予它的可能靠谱的些许属性,成为了我们“原创性工作”的起点。
  • 在认识的时间长河中,有些名称不曾变化的名词被赋予了意义不尽一致的属性;有些意义不尽一致的属性,尽管在我们逐步丰满的理论中,针对的是同一实际对象,却经常被冠以了不同的名称。
  • 它们的发展以及对其相互关系的认识和总结形成了我们所谓的“原创性理论”。

\qquad 进一步,“谁能肯定他完成的‘原创性工作’不仅仅是由教育播下的种子生长而成?或者不仅仅是从众所周知的一般原理中得出的结果?”(39)如果我们正面肯定图灵的这句质问,似乎首先就应回答:“众所周知的一般原理”从何而来?如何形成?前一段陈述已经蕴涵了答案,大体上:

  • 所谓一般性认识(原理),最初不过是一个或若干名词,用于指代经过某种抽象的事物、现象、或关系,比如:客观事物的确定性;
  • 某个名词及其指代的对象能够得到人们的明了和接受,足以表明它已经被赋予了用以分辨和确定这个对象的属性,尽管个体最初可能只是靠着直观感知,还无法用语言文字表述,比如:现象发生的可能性;
  • 对对象性质的进一步认识丰富了名词的内涵(属性),逐渐改进和形成了对它们的普遍见解,最终稳定成了一般性认识,比如:现象发生的统计确定性。

\qquad 此外,现实中,我们并不总能获得正确认识,错误认识和不置可否的认识要多得多,它们中大量已经被淘汰,许多仍然活跃着。当然,我们在这里只讨论正确认识和恰当猜测,它们的形成过程是一样的,只是后者的真伪尚待验证。“没有人对知识的主体添加很多内容”,“通常认为的,科学家们铁面无私地从一个可靠事实进展到下一个可靠事实,其间从不受未经证实的猜想的影响,这种认识相当错误。只要澄清哪些是经过证实的事实,哪些是猜测,就不会造成损害。猜测意义重大,因为它为研究提示有益的线索。”(39)

\qquad 最后,“本质上,我们的思想过程就是物理过程的结果(或者,起码与之紧密连接)。但是,这种信念并不要求人们拒绝那些使用了非机械化概念的智能理论。图灵不是一位独断论者;在1950年的讨论中,他所断言的是:大体上,人类智能都可以用机器来模仿,其中的‘机器’使用概率方法并制造成允许出现错误。”(29)

文章脚注

(1) 原文参见文献7。

(2) 原文参见文献10,第439页。

(3) 参见文献1,第34页。

(4) 这句话中“扫描”、“点计”和“计数”都是动词。

(5) 参见文献4,第88页。

(6) ACE:自动计算机器,是图灵在二次大战之后为英国国家物理实验室设计的存储程序式通用电子计算机。图灵的ACE开发设计书(后面统称“ACE报告”,参见文献11)于1945年末完成,比冯.诺依曼的EDVAC设计初稿晚九个月。

(7) 原文参见文献11第3部分(“Lecture to the London Mathematical Society on February 1947”, 1947, by A.M.Turing),第111页。

(8) 原文参见文献7。

(9) 这里所考虑的是通用计算、推理方法和过程,因此不依赖于那些特殊计算和推理技巧。

(10) 原文参见文献10,第451页。

(11) 同上。

(12) 参见文献4,第146-148页。

(13) 同上。

(14) 参考文献3。

(15) 原文参见文献8。
(16) 原文参见文献13第27章(B)
(“Mathematical Proof”, 1929, by Hardy),第1247页。

(17) 参见文献2,第43-44页。

(18) 原文参见文献11第1部分(“Introduction”, 1986, by B.E.Carpenter and R.W.Doran),第3页。

(19) 原文参见文献7。

(20) 原文参见文献11第2部分(“Proposal for Development in the Mathematics Division of an Automatic Computing Engine(ACE)”, 1946, by A.M.Turing),第21页。

(21) 原文参见文献9,第231页。

(22) 原文参见文献9,第251页。

(23) 原文参见文献10,第439页。

(24) 即完成这些基本算术运算所需的时钟周期数应小于完成一条无条件转移指令所需的时钟周期数。

(25) 参见文献4,第42页。

(26) 原文参见文献11第3部分(“Lecture to the London Mathematical Society on February 1947”, 1947, by A.M.Turing),第113页。

(27) 参见文献2,第43-44页。

(28) 原文参见文献11第2部分(“Proposal for Development in the Mathematics Division of an Automatic Computing Engine(ACE)”, 1946, by A.M.Turing),第34页。

(29) 原文参见文献12第3章(“The Confluence of Ideas in 1936”, by Robin Gandy)。

(30) 原文参见文献11第1部分(“Introduction”, 1986, by B.E.Carpenter and R.W.Doran),第12页。

(31) 参考文献5,第54页。

(32) 原文参见文献11第3部分(“Lecture to the London Mathematical Society on February 1947”, 1947, by A.M.Turing),第118页。

(33) 参见文献2,第43-44页。

(34) 参见E.戴克斯特拉《结构编程的注意事项》。

(35) 原文参见文献11第3部分(“Lecture to the London Mathematical Society on February 1947”, 1947, by A.M.Turing),第122页。

(36) 原文参见文献11第3部分(“Lecture to the London Mathematical Society on February 1947”, 1947, by A.M.Turing),第112页。

(37) 参见文献27。

(38) 参见文献28。

(39) 原文参见文献10。

参考书目

(01) 吴文俊著.吴文俊论数学机械化.济南:山东教育出版社.1996.

(02) 吴允曾著.吴允曾选集–数理逻辑与计算机科学.北京:北京科学技术出版社. 1991.

(03) 张立昂编著.可计算性与计算复杂性.北京:北京大学出版社. 1997.

(04) [美]诺伯特.维纳著,郝季仁译.控制论.北京: 京华出版社.2000.

(05) [美] 约翰.冯.诺依曼著,甘子玉译.计算机与人脑. 北京: 商务印书关馆.2001.

(06) L.F.MENABREA, “Sketch of Analytical Engine The Invented by Charles Babbage”, 1842.

(07) C.Babbage, “On the Analytical Engine”, Chapter VIII of Charles Babbage’s 1864 autobiography, Passages from the Life of a Philosopher.

(08) H.P.Babbage, “The Analytical Engine”, Proceedings of the British Association, 1888. http://www.fourmilab.ch/babbage/hpb.html, 1888.

(09) A.M.Turing, “On Computable Numbers, with an Application to the Entscheidungsproblem”, Proc. London Math. Soc. (2), 42 (1937), 230-265.

(10) A.M.Turing, “Computing Machinery And Intelligence”, MIND, vol. LIX, no. 236 (1950), 433-460.

(11) B.E.Carpenter and R.W.Doran (ed), A.M.Turing’s ACE Report of 1946 and Other Papers, The MIT Press, 1986.

(12) Rolf.Herhen (ed), The Universal Turing Machine: A Half-Century Survey, Second Edition, Springer-Verlag, 1995.

(13) William.Ewald (ed), A Source Book in the Foundations of Mathematics, vol. II, Clarendon Press, London, 1996.

(14) 中国大百科全书编委会.中国大百科全书(数学卷),图文数据光盘.北京:中国大百科全书出版社.1999.

(15) 数学百科全书编译委员会.数学百科全书.北京:科学出版社.1994-2000.

(16) 吴文俊主编.中国数学史大系(第一卷).北京:北京师范大学出版社.1998.

(17) 李文林主编.数学珍宝:历史文献精选.北京:科学出版社.1998.

(18) [英]罗杰.彭罗斯著,许明贤等译.《皇帝新脑》.湖南科学技术出版社,1996.

(19) [美]T.丹齐克著,苏仲湘译.数:科学的语言.上海:上海教育出版社.2000.

(20) [美]Charles Petzold著,伍卫国等译.编码的奥秘.北京:机械工业出版社.2000.

(21) 吴鹤龄等编译.ACM图灵奖(1966-1999):计算机发展史的缩影.北京:高等教育出版社.2000.

(22) 解思泽等主编.世界数学家思想方法.济南:山东教育出版社.1993.

(23) [美]诺伯特.维纳著,钟韧译.维纳著作选:人当作人来用–控制论与社会.上海:上海译文出版社.1978.

(24) [美]诺伯特.维纳著,周昌忠译.我是一个数学家.上海:上海科学技术出版社.1987.

(25) [德]克劳斯.迈因策尔著,曾国屏译.复杂性中的思维.北京:中央编译出版社.1999.

(26) [美]罗林斯著,刘玲等译.机器的奴隶.保定:河北大学出版社.1998.

(27) [澳]Allan G. Bromley, The Evolution of Babbage’s Calculating Engines, Annals Hist Comput, 1987.

(28) [澳]Allan G. Bromley, Charles Babbage’s Analytical Engine – 1838, Annals of the History of Computing, 1982.

猜你喜欢

转载自blog.csdn.net/turing321_huaide/article/details/109593272