奎克的藏经阁 · MinerU 解析内容

生命3.0:人工智能时代,人类的进化与重生

413 个 PDF 物理页 · 本页显示文件第 91–100 页

PDF 物理页索引 90

文件中的第 91 页 · 印刷页码:未识别

Wolfram)证明,还有一种东西也可以作为计算质,那就是一种被称为“元胞自动机”<sup>(22)</sup>的简单装置,它可以基于“邻居”的行为来更新自己的行为。早在1936年,计算机先驱艾伦·图灵在一篇划时代的论文中就已经证明,一个能在纸带上操作符号的简单机器也可以执行任意计算,这个简单的机器就是现在的“通用图灵机”。总而言之,物质不仅可能会执行任意定义明确的计算,其执行的方式也可能是多种多样的。

正如之前所说,图灵在1936年那篇论文中还证明了某些影响力更加深远的事情。他得出,假如一种计算机能执行一组最小的特定运算,那么只要给它提供足够的资源,它就能完成任何其他计算机能完成的所有事情。图灵证明了他的图灵机是通用的。回到物理层面,我们刚刚已经看到,许多东西都可以被视为通用计算机,包括与非门网络和神经网络。实际上,沃尔夫拉姆曾经说过,大多数复杂的物理系统,从天气系统到大脑,如果它们可以做得无限大,存在无限久,那么,它们都可以成为通用计算机。

同样的计算过程可以在任意一台通用计算机上运行,这个事实意味着,计算和信息一样,是独立于物质层面而存在的:计算就像拥有自己的生命一样,与它采取什么样的物质形态无关。因此,如果你是未来计算机游戏中的一个拥有意识的超级智能角色,那么,你不可能知道自己所栖身的系统是运行Windows系统的台式机,还是运行Mac OS系统的笔记本电脑或者运行安卓系统的手机,因为你是独立于物质层面而存在的。同时,你也无法知道,自己栖身的这个系统的微处理器用的是什么类型的晶体管。

我第一次意识到“物质层面的独立性”这种属性的重要性,是因为它在物理学中有许多美丽的例子。比如,波。波有许多性质,例如速度、波长和频率。我们物理学家不需要知道波存在于何种物质之上,就可以研究它们遵守的方程。当耳朵听见声音时,我们就探测到了声波,它是由分子在被我们称为“空气”的混合气体中来回跳跃产生的。我们可以计算与这些波有关的各种有趣的事情,比如,它们的强度如何随距离的平方而衰减,它们经过敞开的门洞时如何弯折自己的路线,以及它们如何从墙上反弹回来以形成回声。研究这一切,都不需要知道空气的组成成分。实际上,我们甚至不需要知道它是由分子组成的。我们之所以可以忽略所有关于氧气、氮气、二氧化碳等的细节,是因为在著名的波动方程中,波所栖身的物质层面只有一个性质是要紧的,那是一个可测量的数字——波速。在这个例子中,声波的波速是每秒300米。但实际上,2016年春天,我在麻省理工学院的一门课上教给学生的波动方程,其发现的年代远远早于物理学家们发现原子和分子存在的年代。

PDF 物理页索引 91

文件中的第 92 页 · 印刷页码:未识别

波的例子说明了三个重要的道理。第一,物质层面的独立性并不是说,物质层面是不必要的,只是说,物质层面的大部分细节都是无关紧要的。如果没有气体,那你就没法产生声波,实际上,任何一种气体都足以产生声波。同样地,如果没有物质,你当然没法完成任何计算,但是,无论是什么物质,只要它可以排列成能实现通用计算的基本单元,比如与非门、互相连接的神经元等,就都能完成计算。第二,独立于物质层面的现象仿佛拥有自己的生命,与它们栖身的物质形态无关。波虽然可以从湖岸的一边传播到另一边,但湖水中的水分子却并没有随之传播,它们大部分时间只是在原地上下移动,就像体育场里球迷们组成的“人浪”一样。第三,我们感兴趣的方面,通常都是独立于物质层面而存在的。冲浪运动员通常更关心海浪的位置和高度,而不关心它的分子组成。我们对信息和计算的态度也同样如此:如果程序员正在寻找代码中的故障,他们感兴趣的东西可不是晶体管!

我们之前提出了一个问题:在有形的物理实体中,如何产生了那些抽象、虚无缥缈的东西,例如智能?现在,对这个问题,我们已经有答案了:在感觉上,智能之所以没有物质形态,是因为它独立于物质层面而存在。它似乎拥有自己的生命,而且,这个生命并不依赖于、也不会反映出物质层面的细节。简而言之,计算是粒子在时空中排列出的形态。粒子并不重要,重要的是它们组成的形态。所以,物质是无足

PDF 物理页索引 92

文件中的第 93 页 · 印刷页码:未识别

轻重的。

换句话说,硬件就是物质,软件就是形态。计算的“物质层面的独立性”暗示着我们,人工智能是可能实现的:智能的出现并不一定需要血肉或碳原子。

正因为计算有了这种物质层面的独立性,精明的工程师们才得以突飞猛进地更新计算机中的技术,而不用对软件做任何更改。结果就和记忆装置一样令人刮目相看。正如图2-8所示,计算机每隔几年就会比过去便宜一半,这个趋势已经保持一个多世纪了。如今的计算机价格已经比我祖母出生的年代便宜了10<sup>18</sup>倍。如果把所有东西的价格降低 $1 0 ^ { 1 8 }$ 倍,那么,你只用1/100美分的价格就可以买下在地球上今年生产的所有商品和服务。价格骤降,正是如今计算机无处不在的关键原因。不久以前,计算设备还像房子那么大,而如今,它们已经进入了我们的家庭、汽车和口袋里,甚至出现在意想不到的地方,比如运动鞋里。

PDF 物理页索引 93

文件中的第 94 页 · 印刷页码:未识别

可以买到的计算能力,以每秒可进行的浮点运算次数(FLOPS)来衡量<sup>[3]</sup>。一次浮点运算所能完成的计算量相当于10<sup>5</sup>次基本逻辑运算,比如取反(bit flips)或与非门运算。

为什么技术的能力每隔一段时间就会翻倍,呈现出数学家所谓的指数型增长呢?为什么它不仅体现在晶体管的微型化<sup>(23)</sup>上,还体现在更广泛的整个计算领域(如图2-8所示)、记忆装置领域(如图2-4所示)以及许许多多不同的技术(从基因测序到脑成像)上?未来学家雷·库兹韦尔将这个不间断的翻倍现象称为“加速回报定律”(law ofaccelerating returns)。

在自然界中,我知道的所有“持续翻倍“现象都有一个相同的诱因,技术能力的翻倍也不例外。这个诱因就是:每一步都会创造出下一步。比如,从你还是个受精卵的那一刻起,你就经历了一次指数型增长,导致你身上的细胞总数日益增加,从1到2,再到4、8、16等。目前,关于我们宇宙起源最流行的科学理论是暴胀理论(inflationtheory)。根据暴胀理论,曾经有一段时间,我们的婴儿宇宙也像你一样,经历过指数型增长,以固定的周期,规律地将自己的尺寸翻倍,从最初那一小团比原子还小还轻的物质迅速膨胀,一直到超过我们用望远镜可以看到的所有星系。在这个过程中,每次翻倍都会引发下一次翻倍。技术进步的过程也同样如此:当一项技术的能力变成过去的两倍时,通常情况下,它又可以用来设计和建造能力翻番的技术,引发不停歇的能力翻倍,这就是摩尔定律的精髓。

技术能力每隔一段时间就会翻倍,相应地,每隔一段时间,就会出现“翻倍即将终结”的言论。是的,摩尔定律当然会终结,晶体管不会无限地变小,因为它们的尺寸下限受到物理定律的限制。但是,有些人错误地认为,摩尔定律就是技术不断翻倍的同义词。相反,库兹韦尔指出,虽然图2-8中的5项技术范式为计算领域带来了指数型增长,但摩尔定律与第一个技术范式无关,只与第五项有关:只要一项技术不再增长,我们就会用更好的技术来取代它。当真空管的尺寸无法继续缩小

PDF 物理页索引 94

文件中的第 95 页 · 印刷页码:未识别

时,我们用晶体管来取代它们,接着是允许电子在二维方向上运动的集成电路。当这项技术逼近它的极限时,还有很多其他选择供我们尝试,比如,用三维电路,或者采用电子之外的其他什么东西来听候我们的差遣。

虽然没人知道计算层面的下一波剧变会在什么时候到来,但我们知道,我们距离物理定律的极限还很遥远。我在麻省理工学院的同事塞思·劳埃德(Seth Lloyd)已经发现了这个极限在哪里。一团物质到底能进行多少次计算?他发现,当今最先进的技术与物理的极限之间,还有庞大的33个数量级(10<sup>33</sup>倍)需要跨越。我们将在第6章进行详细探讨。因此,就算我们的计算能力每隔几年都会翻一番,我们仍然需要两个世纪的时间,才能到达那个终极的前线。

虽然所有通用计算机都能够完成同样的计算,但它们的效率却有高有低。比如,一个需要做几百万次乘法的计算过程并不需要几百万个晶体管(如图2-6所示)构成的乘法模块,因为它可以重复使用同一个模块。为了效率起见,大多数现代计算机使用的范式都会将计算过程分成多个时间步骤(time step),在其中,信息会在记忆模块和计算模块之间来回移动。这种计算架构是由计算机先驱们于1935—1945年开发出来的,包括艾伦·图灵、康拉德·楚泽(Konrad Zuse)、普雷斯伯·埃克特(Presper Eckert)、约翰·莫奇来(John Mauchly)和约翰·冯·诺依曼等。更具体地说,计算机的记忆装置不仅存储了数据,还存储了软件,即程序,也就是一组指令,告诉计算机用这些数据来做什么事情。在每个时间步骤中,CPU执行程序的下一步指令,这些指令详述了对数据采取何种简单函数。在计算机的记忆装置中,还有一个叫作“程序计数器”(program counter)的小程序,它的功能是追踪下一步要做什么,它存储了程序当前的行编号。若想进行下一个指令,只需要在程序计数器上加1就好。若想跳到程序的另一行,只需要将相应的行编号复制到程序计数器就行,所谓的“if”语句和循环就是这样执行的。

PDF 物理页索引 95

文件中的第 96 页 · 印刷页码:未识别

今天的计算机通常能通过“并行处理”(parallel processing)获得更快的速度。并行处理能巧妙地避免一些模块重用的情况。如果一个计算能分成若干个可以并行完成的部分(因为任何一个部分的输入不需要另一个部分的输出),那么,它们就可以同时用硬件的不同部分进行计算。

终极的并行计算机是量子计算机(quantum computer)。量子计算先驱戴维·多伊奇(David Deutsch)曾经说过一句颇具争议的话。他说:“量子计算机能与无数个平行宇宙中的自己分享信息”,并且能在其他自己的帮助下,更快地在我们的宇宙中获得答案。<sup>[4]</sup>我们尚不知道,量子计算机是否能在接下来的10年里走向市场,因为这不仅取决于量子物理是否如我们所愿,还取决于我们是否有能力克服可怕的技术挑战。不过,世界各地的公司和政府每年都会在这个领域赌上几千万美元。虽然量子计算机不能加速普通计算,但人们已经开发出了一些巧妙的算法,可以极大地加速某些特定类型的计算,比如加快破解密码系统和训练神经网络的计算速度。量子计算机还能够有效地模拟量子力学系统的行为,包括原子、分子和新材料的行为,可以取代化学实验,就像传统计算机上的模拟程序取代了风洞实验<sup>(24)</sup>一样。

什么是学习

虽然一个普通的袖珍计算器就可以在算数比赛中完胜我,但无论它如何练习,它也永远无法在速度或精确度上颠覆自我,因为它不会学习。每次按下它的开方键,它只会用完全相同的方式计算同一个函数。同样地,过去第一个战胜我的象棋程序也永远无法从自己的错误中学习,它只能执行那个聪明的程序员设计的最佳走法来计算函数。相反,当5岁的马格努斯·卡尔森(Magnus Carlsen)第一次输掉象棋比赛时,他开始了一段长达8年的学习过程,最终让他登上了世界象棋冠军的宝座。

PDF 物理页索引 96

文件中的第 97 页 · 印刷页码:未识别

学习能力无疑是通用人工智能最引人入胜的地方了。现在,我们已经了解了一团看似愚钝的物质是如何进行记忆和计算的,那它是如何学习的呢?我们已经知道,要回答一个复杂的问题就相当于计算一个函数,也知道了一团物质只要以合适的方式排列起来,就可以计算任何可计算函数。我们人类之所以能创造出袖珍计算器和象棋程序,是因为我们进行了这种“排列”。因此,一团物质想要学习,必须对自己进行重新排列,以获得越来越强的能力,好计算它想要的函数,只要它遵守物理定律就行。

为了揭开学习的神秘面纱,让我们先来看一个非常简单的物理系统是如何学习计算π的数位和其他数字的。通过前面图2-3的例子,我们已经了解了,如何用拥有许多“山谷”的曲面来作为记忆装置,比如,如果其中一个“山谷”底部的位置使x=π≈3.14159,并且它附近没有其他“山谷”,那么,你便可以把一个小球放在x=3的位置,然后进行观察。这时你就会发现,这个系统会让小球滚落到谷底,从而计算出π的小数位。现在,假设这个曲面是由软泥做成的,就像一块完全平整的空白石板。如果有一些数学爱好者不停地将小球放在他们最喜欢的数字处,那么,万有引力就会逐渐在这些地方创造出“山谷”。之后,这个软泥表面就能用来获取数学爱好者存储在“山谷”处的记忆。换句话说,软泥表面“学习”到了计算数字(比如π)的各个数位的方法。

还有一些物理系统,比如大脑,虽然学习效率很高,但其基本原理并没有什么颠覆性的差异。约翰·霍普菲尔德经证明得出,神经网络也可以用类似的方法进行学习。如果你重复地将神经网络置于某些特定的状态,那么它将逐渐学习到这些状态,并且能够从附近的状态返回到这些状态。比如,如果你总是频繁地见到某一个亲戚,那每次出现一些与他有关的东西时,就会触发你关于他容貌的记忆。

现在,神经网络已经改变了生物智能和人工智能,开始在一个名为“机器学习”(machine learning)的人工智能分支学科中占据主流地位。机器学习的研究对象是能从经验中自我改善的算法。在详细介绍神经网络的学习原理之前,我们先来理解一下它们是如何进行计算的。一个神经网络其实就是一组互相连接、互相影响的神经元。你大脑中神经元的数量和银河系中恒星的数量差不多,都是千亿数量级的。通过突触,每个神经元与大约1 000个其他神经元相连。正是这几百万亿个突触之间的连接使得大部分信息被编入你的大脑。

PDF 物理页索引 97

文件中的第 98 页 · 印刷页码:未识别

我们可以用示意图的方式来表现神经网络,用点来代表神经元,然后将这些点用代表突触的线条连接起来(见图2-9)。不过,真实的神经元与这种简单的示意图完全不同,它是一种非常复杂的电化学装置:神经元拥有各种不同的组成部件,例如轴突和树突;神经元还可以分为许多用途各异的种类。此外,神经元中的电活动是如何相互影响的,具体的原因依然处在积极的研究中。

注:神经网络就像与非门网络一样,可以用来计算函数。例如,一种人工神经网络经过训练后,当输入的数字代表图中像素的亮度时,就能输出一组数字,代表这张图像描述每个人的概率。在这里,每个人工神经(用圆圈表示)计算出神经连接(用直线表示)传来的数字的加权和,然后应用一个简单的函数计算出结果,并将结果传递下去,接下去的每一层人工神经计算上一层的特征。通常情况下,人脸识别网络包含成百上千个神经元;为了清楚起见,这张图只画出了少量的神经元。

PDF 物理页索引 98

文件中的第 99 页 · 印刷页码:未识别

然而,人工智能研究者发现,即使我们忽略掉这些复杂的细节,用极其简单又非常类似、遵守简单规则的模拟神经元代替生物形态的神经元,神经网络依然能完成许多非常复杂的任务,与人类不相上下。这种神经网络被称为“人工神经网络”(Artificial Neural Network)。目前最流行的人工神经网络模型用一个数字来表示每个神经元的状态,也用一个数字来表示每个突触的连接强度。在这个模型中,每个神经元以规律的时间步骤周期来更新自己的状态,其更新的方法是:收集来自所有相连神经元的输入数据,然后用突触的连接强度作为加权权重,有时还会加上一个常数,接着,用得出的结果执行“激励函数”(activation function),并计算出下一个状态<sup>(25)</sup>。将神经网络作为一个函数的简单方法就是使其“前馈”(feedforward),也就是保证信息只向一个方向流动。将数据输入最顶层的神经元的函数中,然后从底层神经元中获得输出数据,如图2-9所示。

这种简单的人工神经网络在计算上的成功是“物质层面的独立性”的又一个例证:神经网络拥有强大的计算能力,而这种计算能力与它们底层的构造物质毫无关系。实际上,1989年,乔治·西本科(George Cybenko)、科特·霍尼克(Kurt Hornik)、马克斯韦尔·斯廷奇库姆(Maxwell Stinchcombe)和哈尔伯特·怀特(Halbert White)证明了一件了不起的事:这种简单的、由模拟神经元组成的神经网络是“通用”的,因为它们能精确地计算出任何一个函数,只需要相应地调整代表突触强度的数字即可。换句话说,我们大脑中生物形态的神经元之所以能进化出如此复杂的结构,并不是因为这是必要的,而是因为它的效率更高,还因为进化与人类设计师不一样,进化不会奖赏那些简单易懂的设计。

当我第一次听说人工神经网络可以计算函数时,觉得它很神秘。如此简单的东西怎么能计算出复杂度任意高的函数呢?比如,如果你只计算加权和以及应用一个固定的函数,那么,你如何能计算复杂的函数呢,哪怕只是简单的乘法运算?如果你对这个过程的细节很感兴趣,那么请看图2-10。这张图显示了如何只用5个神经元将任意两个数字相乘,以及单个神经元如何将三个二进制数字相乘。

PDF 物理页索引 99

文件中的第 100 页 · 印刷页码:未识别

注:这张图显示了物质如何用神经元而不是图2-7中的与非门来计算乘法。这张图的关键点是,神经元(人工或生物)不仅能进行数学计算,而且,用神经元来计算乘法所需要的神经元数量少于用与非门来计算时所需的与非门数量。如果你是数学迷,那我可以再告诉你一些额外的细节:图中的圆圈处执行加总运算,方块处运行函数σ,直线处乘上其上标注的常数。输入数据是实数(左图)和二进制数字(右图)。当左图中的a趋近于0和右图中的c趋近于无穷大时,该乘法运算可以达到任意高的精度。左图中的网络适用于任何在原点处弯曲的函数σ(x),也就是原点处的二阶导数σ" (0) ≠ 0,这可以用σ(x)的泰勒展开公式来证明。右图的网络则需要满足当x非常小和非常大时,函数σ(x)分别趋近于0和1,这可以由下面的推导看出:只有当u+v+w=3时,uvw=1。<sup>(26)</sup>将许多乘法(如上图所示)和加法组合起来,你就可以计算任意多项式。我们知道,多项式能对任意光滑函数进行近似。

虽然从理论上来说,你能用一个任意大的神经网络来执行任意一个计算,却没法证明,在实践中如何用一个大小合适的神经网络来执行计算。实际上,我想得越多,就越对神经网络如此可行感到好奇。

假设我们想将兆像素级别的灰度图像分成两类:猫和狗。如果每张图的100万个像素中的每个像素都可以取256个值,那么,可能的图像数量就有256<sup>1</sup> <sup>000</sup> <sup>000</sup>张。对其中的每一张图,我们都想计算出“它是猫”的概率。这意味着,这个输入数据为图片、输出数据为概率的任意函数,是由一个包含256<sup>1</sup> <sup>000</sup> <sup>000</sup>个概率的列表所定义的。这个数字如此之大,超过了我们整个宇宙中的原子总量(大约10<sup>78</sup>)。但不知为何,一些只包含了几千个或几百万个神经元的神经网络却可以很好地完成这种分类任务。为什么如此“便宜”(也就是所需的参数特别少)的神经网络能够完成这种任务呢?毕竟,你可以证明,如果一个神经网络小到可以放进我们的宇宙中,那它几乎无法对任何一个函数进行近似。在你安排给它的任务中,它只能成功完成很小的比例。