首页 » 终极算法:机器学习和人工智能如何重塑世界 » 终极算法:机器学习和人工智能如何重塑世界全文在线阅读

《终极算法:机器学习和人工智能如何重塑世界》第四章 联结学派:大脑如何学习

关灯直达底部

赫布律,就如它为人们所知的那样,是联结主义的奠基石。确实,联结主义相信知识储存在神经元之间的联结关系中,它也因此而得名。唐纳德·赫布(Donald Hebb)是加拿大的心理学家,他在1949年出版的《行为的组织》(The Organization of Behavior)一书中这样说道:“当A细胞的轴突和B细胞足够近,并且重复或不断地对其放电时,A、B中的一个细胞或者两个细胞都会经历生长过程或者代谢改变,这样A细胞(作为对B细胞放电的细胞之一)的效率就会得到提高。”这段话经常被转述成“一起放电的神经元也会被串连在一起”。

赫布律是心理学和神经科学思想的融合,其中掺杂了合理的猜想。通过连接来进行学习,是英国经验主义者最喜爱的话题,从洛克和休谟到约翰·穆勒都是如此。威廉·詹姆斯(William James)在其著作《心理学原理》(Principles of Psychology)中,阐明了连接的主要原理,这和赫布律十分相似,只是大脑活动被神经元取代,放电效率被兴奋的传播取代。差不多同时,伟大的西班牙神经学科学家圣地亚哥·拉蒙·卡哈尔第一次对脑部进行详细观察,利用当时发明的高尔基染色法来对单个神经元进行染色,把他所看到的编成目录,就像植物学家对树木的新品种进行分类一样。赫布时期,神经学科学家对神经元如何发挥功能有了彻底了解,但赫布是第一个提出这种机制的人,通过这个机制可以对连接进行编码。

在符号学派中,符号和它们代表的概念之间有一一对应的关系。相反,符号学派的代表方式却是分散式的:每个概念由许多神经元来表示,而每个神经元又会和其他神经元一起代表许多不同的概念。互相激发的神经元会形成赫布所称的“细胞集”。概念和记忆由细胞集在大脑中表示出来。每个细胞集都可以包含来自不同大脑区域的神经元,也可以和其他集合相互重叠。“腿”的细胞集中包含“脚”的细胞集,包含脚的图片的细胞集,以及脚的声音的细胞集。如果你问一个符号学派系统,“纽约”这个概念在哪里被表示出来,它可以指向存储该记忆的准确位置。在联结学派体系中,答案就是“这个概念通过这里一点、那里一点地被储存起来”。

符号学派和联结学派的另外一个区别就在于,前者是按次序的,而后者是平行的。在逆向演绎中,我们可以一步一步地弄明白,为了从前提出发得到满意的结论,需要哪些新的规则。而在联结学派模型中,根据赫布律,所有的神经元都会同时进行学习。这也反映了计算机和人脑之间的不同属性。计算机做每件事都会一点点来,例如,把两个数相加,或者拉开关。所以为了完成所有有意义的事情,计算机得经过很多步骤,但那些步骤可以很快被完成,因为晶体管每秒可以打开、关闭数十亿次。相反,人脑可以同时进行多项运算,这时数十亿的神经元会同时起作用,但每项远算都会很慢,因为神经元最多可每秒放电1000次。

计算机里晶体管的数量已经赶上人类大脑里神经元的数量,但在连接数量上,人类的大脑轻易获胜。在一台微处理器中,典型的晶体管仅仅和其他几个晶体管直接相连,而派上用场的平面半导体技术对计算机功能的发挥又有很大的限制。相反,一个神经元就有数千个突触。如果你走在大街上碰到熟人,你认出他只需要0.1秒。以神经转换的速度,这些时间勉强够用来进行100个处理步骤,但在那些处理步骤中,你的大脑能够浏览整个记忆库,找到最佳搭配,然后使其适应新的背景(不同的服装、不同的灯光等)。在大脑中,每个处理步骤有可能会很复杂,而且会涉及很多信息,并符合分散的概念表达方式。

这并不意味着我们就不能利用计算机来模拟人脑,毕竟这是联结学派算法要做的事。因为计算机是通用的图灵机,只要我们给它足够的时间和记忆力,它就能执行大脑的计算,以及别的任何事情。尤其计算机可以利用速度来弥补缺乏连接的劣势,千千万万遍利用同样的线来模拟1000根线。实际上,目前计算机和人脑相比,主要的限制是能量损耗:人的大脑消耗的能量仅仅相当于一个小灯泡,而沃森消耗的电却能点亮整栋办公楼。

然而为了模拟大脑,我们需要的不仅仅是赫布律,还要知道大脑是如何构造的。每个神经元就像一棵小树,有数目惊人的根须(树突)还有细长蜿蜒的树干(轴突)。大脑就是由数十亿棵这样的树组成的森林,但这些树也有不同寻常的地方:每棵树的枝丫都会和其他数千棵树的根部有连接(突触),形成大片你没见过的纠缠状态。有些神经元有很短的轴突,而有些神经元的轴突则很长,可以从大脑的一边缠绕到另一边。你大脑里轴突的长度相当于地球到月亮的距离。

这片森林还会充满电流。火星会沿着树干闪烁,然后会引发相邻树木更多的火花。时不时整个区域的丛林会使自己进入狂热状态,然后又会平静下来。如果你动动脚趾,会发生一系列放电现象,人们称之为“动作电位”。这种放电现象会沿着你的脊髓一直到达腿部,直到到达你的脚趾肌肉,然后告诉肌肉要运动。你的大脑运转时的情景就是这些电火花火光四射的场面。如果你能坐在大脑里面,看看你阅读这页书时大脑发生了什么,你看到的情景会让科幻小说里最繁忙的都市景象也逊色几分。这个十分复杂的神经元放电模式的背后,就是你的意识在起作用。

在赫布时代,没有什么方法能够测量突触的强度或者发生在其内部的变化,更不用说弄明白突触变化的分子生物学相关信息。如今,我们知道,当突触后神经元在突触前神经元之后会很快放电时,突触会变大(或重新形成突触)。和所有的细胞一样,神经元里外有不同的离子浓度,穿过神经元的细胞膜形成一股电压。当突触前神经元放电时,微小的囊会向突触间隙释放神经递质分子。这会使突触后神经元的膜中的通道打开,让钾离子和钠离子进入,最终会改变通过膜的电压。如果有足够多的突触前神经元一起放电,电压会突然升高,一个动作电位会顺着突触后神经元的轴突而下。这还会使离子通道变得更加灵敏,并出现新的通道,对突触进行加强。就我们的知识所能达到的水平,这就是神经元进行学习的过程。

下一步就是把这个过程运用到算法中。

感知器的兴盛与衰亡

第一个正式的神经元模型是由沃伦·麦卡洛克(Warren McCulloch)和沃尔特·皮茨(Walter Pitts)于1943年提出的。这个模型看起来很像组成计算机的逻辑门。当“或”门至少一个输入开关打开时,“或”门开通,当所有输入开关打开时,“且”门开通。当其输入的活跃信息超过某个界限值时,一个麦卡洛克—皮茨神经元会打开。另外,如果界限值只有一个,神经元就相当于一道“或”门;如果界限值等于输入信息的数量,神经元就相当于一道“且”门。另外,一个麦卡洛克—皮茨神经元会阻止另外一个麦卡洛克—皮茨神经元打开,这就模拟了抑制性突触和“非”门。因此神经元的一个网络就可以完成计算机的所有计算。在早些年,计算机常常被称为“电脑”,这不只是一个类比那么简单。

麦卡洛克—皮茨神经元做不了的事情就是学习。为此我们需要对神经元之间的连接给予不同的权重,这就是所谓的“感知器”。感知器于20世纪50年代由康奈尔大学的心理学家弗兰克·罗森布拉特(Frank Rosenblatt)发明。作为富有魅力的演讲者和活跃人物,罗森布拉特在早期机器学习领域形成的过程中,比任何人付出的都要多。“感知器”这个名称源于他的兴趣,他喜欢将自己的模型应用到诸如演讲和字符识别的感知任务中。他没有将感知器应用于软件中,因为在那个年代这个过程会非常缓慢,他构建了自己的装置。权值是由可变电阻器来实现的,这些电阻器和调光灯开关中的那些电阻器一样,而且权值学习由电动机来实现,电动机会打开电阻器上的开关。

在感知器中,一个正权值代表一个兴奋性连接,一个负权值代表一个抑制性连接。如果其输入量的加权和高于界限值,那么会输出1;如果加权和小于界限值,那么输入0。通过改变权值和界限值,我们可以改变感知器计算的函数。当然,这种做法忽略了神经元发挥作用的很多细节,但我们想让这个过程尽可能简单点。我们的目标是形成一种多用途的学习算法,而不是构建一个大脑的现实模型。如果被我们忽略的一些细节最后证明很重要,可以在后面加上去。尽管我们把抽象的东西简化了,却仍可以看到这个模型的每个部分都与神经元的一个部分相对应(见图4–1)。

图4–1

输入量的权值越高,相应的突触也会越强。细胞体把所有加权输入量加起来,轴突使结果变成一个阶跃函数。图中代表轴突的框表明了阶跃函数的图像:0代表输入量的低值,当输入量到达界限值时,会突然变成1。

假设感知器有两个持续输入量x和y(换句话说,x和y可以是任何数值,不仅仅是0和1),那么每个例子都可以由平面上的一个点来表示,而正面例子(例如,感知器中输出量为1)和负面例子(输出量为0)之间的界线就是一条直线(见图4–2)。

图4–2

这是因为这条界线是由一系列点组成的,在这些点上,加权和刚好等于界限值,而一个加权和就是一个线性函数。例如,如果x的系数是2,y的系数是3,那么界限值是6,界限就由方程式2x+3y=6来确定。x=0,y=2的点就在界线上,为了停留在这条线上,我们要水平向右平移3个单位,同时垂直向下平移2个单位,这样x增加的量就是y减少的量,经过的点就形成一条直线。

掌握感知器的权值意味着要改变直线的方向,知道所有的正面例子都在这边,所有的负面例子都在另一边。在一维概念中,这个界线是一个点;在二维概念中,它是一条直线;在三维概念中,它是一个面;在超过三维的概念中,它是一个超平面。在超平面中很难把东西形象化,但数学就是这样发挥作用的。在n维概念中,我们有n个输入量,而感知器有n个权值。为了确认感知器是否放电,我们把每个权值乘以相应的输入量,然后将得数相加,和界限值进行对比。

如果所有的输入量都有一个权值1,而且界限值是输入量数值的一半,当感知器超过一半的输入量放电时,那么感知器放电。换句话说,感知器就像一个微型社会,少数服从多数(可能也没有那么小,因为它有数千个成员)。尽管如此,整体来说它并不那么民主,因为一般不是人人都平等地享有选择权。神经网络看起来更像社交网络,在这里,几个亲密朋友比脸书上的数千个好友更加重要。最信任的朋友对你的影响也最大。如果有个朋友推荐了一部电影,你去看了,觉得喜欢,下次可能还会再听他的建议。另一方面,如果他滔滔不绝地讲你不喜欢的电影,你会开始忽略他的建议(甚至你们的友情都可能变淡)。

这就是罗森布拉特的感知器算法掌握权值的方法。

想想祖母细胞,这是认知神经学科学家最热衷的思维实验。祖母细胞是你大脑中的一个神经元,无论何时你看到自己的祖母,它都会放电,而且只有这样的情况才会放电。祖母细胞是否真实存在有待探寻,但我们可以设计一个,并将其应用于机器学习。下面,我们来分析一下感知器学习识别你的祖母的过程。进入细胞的要么是图片中的原始像素,要么就是图片的各种固有特征,就像棕色的眼睛,如果图片上有一双棕色的眼睛就会取值1,否则是0。一开始,从特征到神经元的所有连接有小的随机值,就像刚出生时你大脑中的突触一样。那么我们向感知器展示了一组图片,有些是你祖母的,有些不是。如果感知器在看到一张你祖母的照片时会放电,或者在看到别的图片时不会放电,那么就不需要进行学习活动(如果东西没坏,就别修理它)。但如果感知器在看到你的祖母时没有放电,这意味着它的输入量的加权和应该取更高的值,这样我们就增加进行中的输入量的权值(例如,如果你的祖母有一双棕色的眼睛,这个特征的权值会增长)。相反,如果感知器在不该放电的时候放电,我们就减少活跃的输入量的权值。误差迫使学习活动正常进行。经过一段时间,表明你祖母的特征会取得更高的权值,相反则得到低权值。一旦感知器看到你祖母时就会放电,而且也只有这时,学习才算完成。

感知器会产生许多兴奋。它虽然简单,但仅凭借例子训练,它就能识别书面文字和语音。罗森布拉特在康奈尔大学的同事证实,如果正面例子和负面例子能够通过超平面来分离,那么感知器会找到超平面。对于罗森布拉特和其他人来说,真正理解大脑如何进行学习似乎在能力范围之内,有了这种理解力,就可以得到强大的多用途学习算法了。

但是感知器却碰壁了。知识工程师被罗森布拉特的观点激怒,羡慕其不断增长的被关注度,而神经网络,特别是感知器获得的资金也变得越来越多。马文·明斯基就是其中一个,他是罗森布拉特之前在布朗士科学高中的同学,那时他还是麻省理工学院人工智能研究小组的领导(具有讽刺意味的是,他的博士论文和神经网络相关,但对于神经网络,他越来越不抱幻想)。1969年,明斯基和他的同事西摩尔·派普特一起出版了《感知器》(Perceptroms)一书,该书详细介绍了同名算法的缺点,还一一列举了该算法无法学习的内容。最简单的一个(所以也是最受批评的一个)就是排斥—“或”功能(exclusive–OR function,XOR)。如果它其中的一个输入量是对的,那么这就是对的,但如果两个都是对的,则是错的。例如,耐克的两大忠实消费人群被认为是年轻男性和中年妇女。换句话说,如果你是年轻的XOR女性,那么有可能购买耐克的鞋子。年轻挺好的,做女人也挺好的,但两个加起来就不一定好了。如果你既不年轻,也不是女性,那么你也不是耐克做广告的对象。XOR的问题就在于,没有能够区分正面例子和负面例子的直线。图4–3展示了两种不可行的备选方法:

既然感知器只能学习线性界线,那么它就无法对XOR进行学习。而如果感知器无法做到这一点,就无法很好地模拟大脑学习的方法,也不是终极算法可行的备选项。

图4–3

然而,一台感知器只能模拟单个神经元的学习过程,尽管明斯基和派普特承认,几层相互连接的神经元能做的应该更多,但他们找不到研究这些神经元的方法,其他人也找不到。问题就在于,没有明确的方法来改变“隐层”中神经元的权值,以减少输出层中神经元造成的误差。每个隐藏的神经元会通过多种路线来影响输出量,而且造成每个误差的原因也可能达到上千种。你该责怪谁?或者,相反,谁该因为正确的输入量而受到赞扬?这个问题在我们努力对一个复杂模型进行学习时随时会出现,而这个问题也是机器学习领域中的中心问题。从数学角度看,《感知器》无懈可击,思路清晰、效果明显。机器学习当时主要和神经网络相关联,而且多数研究者(更不用说创建人)得出结论,构建智能体系的唯一方法就是对其进行明确设定。在未来15年,知识工程师会站在舞台中央,而机器学习则会变成历史的残灰。

物理学家用玻璃制作大脑

如果机器学习的历史是一部好莱坞电影,电影中的反面人物就是马文·明斯基。他是给白雪公主毒苹果的邪恶皇后,让白雪公主处于昏迷状态(在1988年的一篇文章中,西摩尔·派普特甚至半开玩笑地将自己比作故事里的猎人,故事里皇后派他去杀死森林中的白雪公主)。那么白马王子就是名叫约翰·霍普菲尔德的加州理工学院的物理学家。1982年,霍普菲尔德发现了大脑和自旋玻璃(spinglass)惊人的相似之处,自旋玻璃是深受统计物理学家喜爱的特殊材料。这引起联结学派的复兴,在第一个解决赞誉分配问题的算法发明出来的几年,联结学派复兴达到顶峰,并进入一个新时代,机器学习代替知识工程学成为人工智能领域的主导范式。

旋转玻璃其实并不是玻璃,虽然有一些玻璃的属性,其实是磁性材料。每个电子都是一块微小的磁铁,由于本身的自旋运动,可以指“上”或指“下”。比如在铁这样的材料中,电子自旋就趋向于往上:如果一个自旋向下的电子被多个自旋向上的电子包围,这个电子可能会翻转向上。如果一块铁中的大部分自旋都向上,那么这块铁就会变成一块磁铁。在普通磁铁中,每对相邻电子自旋的交互力都一样,但在自旋玻璃中,这种力就可能不一样。这种力甚至会是相反的,使得附近的电子自旋指向相反的方向。当普通磁铁所有的自旋都排成一行时,能量是最低的,但在自旋玻璃中却没那么简单。的确,找到自旋玻璃的最低能量状态就是一个NP—完全问题,意味着几乎所有其他最优化难题都可以简化为NP—完全问题。因为这个,自旋玻璃没有必要适应其整体能力最低的状态。这很像雨水可能会沿着山坡流入湖中,而不是进入大海,自旋玻璃可能会陷入局部最小值的困境,而不是在全局最小值中得到发展。处于最小值状态中的能量会比在其他状态下低,通过翻转一圈,最低能量状态就可以转变为其他状态。

霍普菲尔德注意到自旋玻璃和神经网络之间有趣的相似点:一个电子的自旋对其相邻电子的活动所做的反应和一个神经元的反应十分相似。在电子的情况中,如果相邻电子的加权和超过界限值,电子就会向上翻,反之则向下翻。受到这一点的启发,他确定了一种神经网络,和自旋玻璃一样随着时间的推移而演变,他还提出网络的最低值状态就是它的记忆。每个这样的状态都具备原始状态的“吸引盆”(basin of attraction),原始状态就收敛于该盆中,这样这个网络就可以进行模式识别了。例如,如果其中的一个记忆是由数字9形成的黑白像素模式,而网络看到一个扭曲了的9,它会收敛成“理想”的9,然后据此重新识别它。突然间,大量的物理理论能够应用于机器学习中,而随之也涌入大批的统计物理学家,帮助自旋玻璃打破之前就陷入的局部最小值困境。

虽然如此,但自旋玻璃仍然是大脑的一个不现实的模型。对于一个电子来说,自旋相互作用是对称的,而大脑中神经元之间的连接却不是对称的。霍普菲尔德的模型忽略的另外一个大问题就是,真正的神经元是和统计相关的:它们不会根据其输入量来确定地进行打开或关闭。随着输入量加权和的增加,神经元更有可能放电,但不确定它是否真的会放电。1985年,大卫·艾克利、杰夫·辛顿、特里·索诺斯基把霍普菲尔德网络里的确定性神经元用可能性神经元代替。现在一个神经网络的状态就有了概率分布,高能量状态的概率要比低能量状态的概率低得多。实际上,找到处于特定状态中的网络,这样的概率由著名的热力学中的玻尔兹曼分布得出,因此他们称自己的网络为玻尔兹曼机器。

一台玻尔兹曼机器拥有混合的感官和隐藏神经元(分别类似于视网膜和大脑)。它通过清醒和睡眠两种交替状态进行学习,就像人类一样。清醒时,感官神经元根据数据指令放电,隐藏神经元根据网络的动态和感官输入来逐步发展。例如,如果网络收到9的图片,与图片中黑色像素对应的神经元会留下,其他的则离开,而隐藏神经元则在给定那些像素值的情况下,根据玻尔兹曼分布随机放电。睡眠状态时,机器会做梦,让感官和隐藏神经元都能自由漂移。新一天的黎明到来之前,机器会统计睡梦中的状态,以及昨天活动中的状态,直到进行比较,接着改变连接权值,让权值符合搭配。如果两个神经元白天时易于在一起放电,但睡眠时放电次数却变少了,那么它们连接的权值会升高;如果情况相反,则权值会降低。通过日复一日重复这样的工作,感官神经之间经过预测的相关性会进一步发展,知道它们和真正的神经元搭配起来。这时,玻尔兹曼机器就掌握了一个很好的数据模型,并有效解决赞誉分布问题。

杰夫·辛顿在接下来的几十年继续在玻尔兹曼机器中尝试了许多变量。辛顿由心理学家变成计算机科学家,他是逻辑运算(被应用于所有计算机中)的发明者——乔治·布尔的曾孙,是世界领先的联结主义者。为了了解大脑如何运转,他比任何人付出的时间、精力都要多。他讲到有一天他怀着极度兴奋的心情下班回家,惊呼:“我做到了!我知道大脑怎么运转了!”他的女儿回答道:“啊!爸爸,你怎么又来了!”辛顿最近的热情在于研究深度学习,本章的后面部分会谈到。他还参与了反向传播的研究,这是一个比玻尔兹曼机器能更好地解决赞誉分布问题的算法,我们后面会谈到。玻尔兹曼机器原则上可以解决赞誉分布问题,但在实践中,学习这个行为非常缓慢且痛苦,对大多数应用来说,玻尔兹曼机器有点不切实际。下一个突破会涉及解决麦卡洛克和皮茨时期的另外一个过度简化(oversimplication)问题。

世界上最重要的曲线

就其相邻神经元而言,一个神经元只能处于两种状态:放电或不放电。但是这忽略了一个很重要的巧妙之处。动作电位寿命短,电压会在一秒之内骤然升高,然后突然回到静息状态。而单个峰值对接收神经几乎不会有影响,为了唤醒接收神经,需要一连串连续不断的峰值。典型的神经元会偶尔在没有刺激的情况下电压达到峰值,当刺激建立起来时,电压达到峰值的频率会越来越高,然后保持在它所能达到峰值的最快速度,快于这个速度时,不断增强的刺激就没有效果了。神经元与其说是一道逻辑门,不如说是一台电压频率转换器。随电压而变化的频率曲线如图4–4所示。

图4–4

该曲线看起来像被拉长的字母S,它有很多叫法,比如逻辑函数、S形函数和S形曲线。仔细研究它吧,因为这是世界上最重要的曲线。首先输出量随着输入量缓慢增长,如此缓慢,似乎保持不变。接着它开始变化得很快,然后变得更快,之后越来越慢,直到几乎保持不变为止。晶体管的转换曲线,将其输入电压和输出电压联系在一起,也是一条S形曲线。所以计算机和大脑都充满了S形曲线。这还没结束,S形曲线是所有种类相变的形状:电子应用领域自旋反转的概率、铁的磁化、将少量记忆写到硬盘上、细胞中离子通道的打开、冰块融化、水蒸发、早期宇宙的膨胀扩张、进化中的间断平衡、科学中的范式转移、新技术的传播、离开多民族社区的白人大迁徙、谣言、流行病、革命、帝国的没落等。“引爆点”也很适合(可能不那么有吸引力)“S形曲线”这个名字。在两个相邻板块的相对位置中,地震就是一个相变。夜里的碰撞声,也只是你隔壁房间里微观板块移动的声音,所以别害怕。约瑟夫·熊彼特说过,经济是在裂缝和飞跃中得以发展的:S形曲线就是创造性破坏的形状。经济收益和损失对你的幸福度的影响遵循S形曲线原则,所以不要在大事上感到苦恼。随机的逻辑公式可满足的概率(典型的NP完全问题)随着公式变长,会经历从接近1到接近0的相变。统计物理学家花了一辈子时间来研究相变。

在海明威的《太阳照常升起》中,当麦克·坎贝尔被问到他是如何走向破产时,他答道:“有两种方式,先是慢慢地,然后突然破产。”雷曼兄弟的情况也十分相似。这就是S形曲线的精华。未来学家保罗·萨夫预言的规则就是:寻找S形曲线。当你没法调好淋浴的温度时(开始水很冷,然后很快又变得很热),都是S形曲线的错。你做爆米花时,看看S形曲线的进度:一开始什么也没发生,几粒玉米爆开,又有一把爆开,很多玉米突然像烟花一样爆开,更多的玉米爆开,最后你就可以吃爆米花了。你肌肉的每个动作都遵循S形曲线:先是缓慢移动,然后快速移动,最后又缓慢移动。当迪士尼的动画师指出这一点时,动画片变得更自然了,然后人们纷纷模仿。你的眼睛沿着S形曲线移动,注视一样东西然后换另一样,你的意识也跟你的眼睛一起转移。情绪波动也属于相变。出生、长大、坠入爱河、结婚、怀孕、工作、失业、搬到新的城市、升职、退休、死亡,这些都属于相变。宇宙就是相变的巨大集合体,从宇宙到微观世界,从世俗到人生的改变。

S形曲线作为一个独立的模型,不仅很重要,它还是数学的万事通。如果放大它的中段部位,你会发现它近似一条直线。很多我们认为是线性的现象,其实都是S形曲线,因为没有什么能够毫无限制地增长下去。因为相对性和反牛顿定律,加速度并不会随着力的施加而呈线性增长,但会遵循S形曲线,以0为中心。电路中或者灯泡中电阻的电流也不会随着电压的增长而线性增长(直到灯泡中的灯丝熔化,这本身又是另外一个相变)。如果你把S形曲线缩小,它会近似一个阶跃函数,输出值会突然从0界限值变到1界限值。那么根据输入电压,同样的曲线也会表示这些装置中电阻的工作原理,包括数字计算机和类似的装置,如扩音器和广播协调器。S形曲线的开始部分是有效指数,在饱和点附近它则接近指数式衰减。当有人讨论指数式增长时,问问你自己:它什么时候会变成一条S形曲线?人口爆炸什么时候才会慢慢消失,摩尔定律的重要性什么时候削减,或者说技术奇异点什么时候才不会发生?辨别一条S形曲线,你就会得到一条钟形曲线:缓慢、快速、缓慢变低、高、低。在S形曲线加入一连串向上和向下交错的曲线,你会得到接近正弦波的曲线。实际上,每个函数都可以近似看作S形曲线的总和:函数上升时,你加一条S形曲线;函数下降时,你减掉一条S形曲线。孩子的学习也不是一直都处于进步状态,这个过程是若干个S形曲线的累积。技术变革也是如此。斜眼看纽约的天空,你会看到一组S形曲线在地平线上逐渐展开,每条曲线都和摩天大楼的角一样尖。

对我们来说最重要的是,S形曲线会找到解决赞誉分布问题的新方法。如果宇宙是相变的大集合体,那让我们用一条S形曲线来模仿这个集合体。这就是大脑要做的事:将里面的相变系统调整到外面。那么让我们用S形曲线来代替感知器的阶跃函数,然后看看会发生什么。

攀登超空间里的高峰

在感知器算法中,误差信号要么是全有,要么是全无:你不是收到对的信号,就是收到错的信号。继续下去不会有很大的意义,尤其是当你有众多神经元网络时。你可能会知道,输出神经元出错了(“哎呀,那不是你的祖母”),但如果是大脑深处的某个神经元会怎么样呢?这样的神经元都会出错,那意味着什么呢?如果神经元的输出信息是持续的,而不是二进制的,画面就会改变。首先,我们现在知道输出神经元犯的错误有多严重:它和理想输出信息之间的区别。如果神经元应该不停地放电(“啊,您好,祖母”),但它只放了一点电,那就比什么电也不放要好。更重要的是,我们现在可以将该误差传播到隐藏神经中:如果输出神经元应该放更多的电,而A神经元与其相连,那么A放的电越多,我们就越应该加强它们的连接;但是如果A神经元受到神经元B的抑制,那么B神经元就应该少放电,以此类推。根据与其连接的所有神经元的反馈看,每个神经元会决定该多放或者少放多少电。根据这一点以及输入神经的活动,它会加强或者减弱它与它们的联系。我得放更多的电,但是B神经元在阻止我?把它的权值降低。C神经元不断放电,但它和我的连接很弱?那就加强连接。我的“消费者”神经元位于网络的下游,会告诉我下一轮我的表现如何。

无论什么时候学习算法的“视网膜”看到一张新的图片,这个信号就会在网络中传播,知道它产生输出信息。将这条输出信息和理想的输出信息相比,会发出错误信号,这个信号会穿过神经元层,然后反向传播回去,直到它到达视网膜。根据返回来的信号以及在前进过程中它接收到的输入信息,每个神经元会调整各自的权值。随着网络看到越来越多你祖母和其他人的照片,权值会逐渐收敛到能够让它区分两者的值中。反向传播,正如这个算法为人们所知的一样,比感知器算法要强大很多。单个神经元只能够对直线进行学习。给定足够的隐藏神经,一台多层感知器,正如它的名字一样,可以代表任意的复杂边界。这使得反向传播成为联结学派的主算法。

反向传播是自然及技术领域中非常常见的战略实例:如果你着急爬到山顶,那你就得爬能找到的最陡的坡。这在技术上的术语为“梯度上升”(如果你想爬到山顶)或者梯度下降(如果你想走到山谷)。细菌就是通过游向食物(例如葡萄糖)分子浓度高的地方来觅食的;遇到有毒物质,它们则会游向有毒物质浓度低的地方。所有事物,从机翼到天线阵,都可以通过梯度上升来优化。反向传播就是在多层感知器中有效做到这一点的方法:不断对权值进行微调,以降低误差,然后当所有调整失败时,停止调整。有了反向传播,你就不必从头开始弄明白怎样对每个神经元的权值进行微调,这样做起来会很慢。你可以一层一层来做,根据调整与其相连神经元的方法,来调整每个神经元。如果在突发事件中,除了一件工具,你得把整个机器学习工具包都扔掉,那么梯度下降可能是你想留下的工具。

那么反向传播解决机器学习的问题了吗?我们能否把一大堆神经元扔到一起,让它们自己发挥魔力,然后在去银行的路上,顺便领了诺贝尔奖,奖励你弄明白大脑如何运转?唉,人生不会那么简单。假设你的网络只有一个权值,而图4–5中的误差就是权值的一个函数。

图4–5

最优权值是2.0,这时的误差值最低。如果网络以权值0.75作为开始,例如,反向传播会在几个步骤之后达到最佳效果,就像球滚下坡一样。但如果它以权值5.5作为开头,反向传播会下滑至7.0,而且会停在那里。反向传播,随着渐进权值的变化,不知道该如何找到全局误差最小值,而局部误差值可能会很糟糕,就像把你的祖母错认成帽子那样。有了一个权值,你可以以0.01的增量来尝试每个可能的值,然后用那种方法找到最佳效果。但如果你有数千个权值(数百万或者数十亿个就更不用说了),就不该选这种方法,因为网格线上的点会随着权值数量的增长呈指数级上涨。全局最低值隐藏在浩瀚的超空间的某个角落里,找到它就走运了。

想象一下你被绑架了,然后在喜马拉雅山脉的某个地方被蒙住眼睛。你感到头痛,也不记得什么了。你知道的一切就是你得爬到珠穆朗玛峰峰顶。你会做什么?你向前走了几步,差点滑到山沟里。你喘了几口气之后,决定要更有计划地行动。你用脚仔细感觉了周围的地形,直到找到最高的点,然后小心翼翼走向那点。然后你重复同样的动作。一步一步,你走得越来越高。这就是梯度上升。如果这个山脉刚好就是珠穆朗玛峰,而珠穆朗玛峰是一个标准的圆锥,那它就很有吸引力了。但更有可能的是,当你到达一个地方,那里每走一步都是往下时,那么你距离峰顶还很远。这时你只是站在山脚的某个地方,而且你被困住了。这就是反向传播遇到的事情,除非它在超空间而不是3D空间中攀登高峰。如果你的网络有单个神经元,只要一步一步爬向更好的权值,你就可以到达峰顶。但在多层感知器中,山路会很崎岖,找到最高的山峰已算走运。

这也是明斯基、派普特和其他人无法找到学习多层感知器的部分原因。他们可能想象到用S形曲线来代替阶跃函数,然后进行梯度下降,不过他们会遇到误差的局部最小值这个问题。在那个年代,研究者们不相信计算机模拟,他们需要数学来证明算法可以起作用,而反向传播却没有这样的证据。但我们最好意识到的是,多数情况下局部最小值挺好的,不会有不良影响。误差表面看起来往往像豪猪的刚毛,有很多高峰和低谷,但如果我们找到绝对最低的点之后,这真的不重要了,并且任何人都有可能找到。更好的消息是,实际上,局部最小值可能更适合,因为它和全局最小值比,不太可能证明对我们的数据过拟合。

超空间是一把双刃剑:一方面,空间的维度越高,它越有可能存在高度复杂的表面和局部最优解;另一方面,被困在局部最优解中,意味着被困在每个维度中,所以被困在多维中的难度会比被困在三维中的难度大。在超空间中,到处都有穿山而过的通道。那么,借助夏尔巴人的小小帮助,反向传播往往会找到通往完美权值的道路。它可能仅仅是香格里拉的神秘山谷,而不是海洋,但如果在超空间中,有数百万个这样的山谷,每个山谷都有数十亿的山口对着它,那为什么要抱怨呢?

然而要当心,不要过于重视反向传播找到权值的意义。记住,可能会有许多不同的优良权值。多层感官器中的学习活动是一个混乱的过程,其意义在于从稍有不同的地方开始,就会让你结束时的解决方法迥然不同。现象本身并无区别,无论这轻微的差别是存在于最初权值中,还是存在于训练数据中,而且是否会在所有强大的学习算法(不只是反向传播)中表现出来。

我们可以去掉S形曲线来解决局部最优问题,然后只让每个神经元输出其输入量的加权和。这样做会使误差变得非常平缓,只剩下一个最小值——全局最小值。虽然如此,问题是线性函数的一个线性函数也只是一个线性函数,那么线性神经元的一个网络与单个神经元几乎一样。一个线性大脑,无论多大,总比一条线虫要笨。S形曲线是线性函数非智能性和阶跃函数难解性的完美中转站。

感知器的复仇

反向传播于1986年是由加州大学圣迭戈分校的心理学家大卫·鲁梅尔哈特在杰夫·辛顿以及罗纳德·威廉斯的协助下发明出来的。他们表明反向传播还可以学习XOR,这让联结学派对明斯基和派普特嗤之以鼻。回顾之前耐克的例子:年轻男性和中年妇女最有可能购买耐克鞋。其中,我们可以用三个神经元的网络来代表:第一个神经元看到年轻男性时会放电;第二个神经元在看到中年女性时会放电;第三个神经元看到其中一个时会放电。通过反向传播,我们可以掌握适当权值,最后成功完成耐克的前景预测(马文,事情就是这样,没什么可说的)。

早期在证明反向传播力量的时候,特里·索诺斯基和查尔斯·罗森伯格训练了一台多层感知器,让其大声朗读。他们的网络聊天系统浏览文本,根据背景选择准确的音素,然后加入语音合成器。他们的网络聊天不仅适用于新词——这是基于知识的系统无法做到的——网络聊天系统还可以说话,而且说得和人类极为相似。索诺斯基过去经常在研究会议上通过播放网络聊天进展的磁带来对观众进行催眠:一开始是牙牙学语,然后开始能让人们听懂,最后说得很流利,只是偶尔会犯错。

神经网络第一次取得大的成功是准确预测股票市场。因为神经网络可以在噪声很大的数据中探测到微小非线性,它们打败线性模型,并在金融领域流行起来,它们的应用也变得更广泛。典型的投资基金会为每大批股票训练出一个分离的网络,让神经网络挑出最有希望的选项,然后让人类分析师来决定该投资哪些股票。然而,有几只基金顺利通过挑选,学习算法会自行买卖这些基金。这些过程到底如何进行的仍是个秘密,但机器学习算法一直处于不为人所知的状态,然后以惊人的速度进入对冲基金,这也许并非偶然。

非线性模型不仅在股票市场有重要作用,在其他很多领域中也是如此。科学家们到处使用线性回归,因为那就是他们知道的东西,但是通常他们研究的现象又都是非线性的,一台多层感知器就可以模拟这些现象。线性模型对相变不了解,神经网络像海绵一样把它们吸收了。

网络神经早期的另外一个成功之处在于掌握驾车技能。无人驾驶汽车在2004—2005年的DARPA大挑战中才进入公众视野,但早在10年前,卡内基–梅隆大学的研究员就已经成功训练出一台多层感知器来驾驶汽车,方法就是探测视频图像中的路面,然后适当转动方向盘。卡内基–梅隆大学的无人驾驶汽车可以沿着海岸跨越美国,而其视力却非常模糊(30×30像素),其大脑比虫子的大脑还要小,但仅仅通过人类副驾驶员的几次协助就完成了此次任务(该计划被称为“横穿美国的实验”)。这可能不是第一辆真正意义上的无人驾驶汽车,但和一些未成年司机相比,它更靠谱。

如今反向传播的应用太多了,数不过来。随着它为越来越多的人知道,关于它的更多历史也被挖掘出来。原来,反向传播不止一次被创造出来,在科学领域这是常有的事。来自法国的伊恩·勒坤(Yann LeCun)和其他人偶然发现了它,和鲁梅尔哈特发现的时间差不多。20世纪80年代,有一篇关于反向传播的论文被领先人工智能会议否定了,因为根据评论者的观点,明斯基和派普特已经证实感知器无法起作用。实际上,鲁梅尔哈特已经通过哥伦布测试获得反向传播发明者的荣誉:哥伦布不是第一个发现美洲大陆的人,但他却是最后一个。原来,哈佛大学研究生保罗·韦伯斯已经在1974年的博士论文中提出类似的算法。非常讽刺的是,亚瑟·布莱森和何毓琦(两位控制理论家)早就已经做了同样的事情(1969年明斯基和派普特出版《感知器》的同一年)。的确,机器学习本身的历史表明我们为什么需要学习算法。如果能自行在科学文献中找到相关论文的算法在1969年已经出现,它们就可以避免几十年时间的浪费,并加快传播“谁知道有什么发现”这样的信息。

在感知器历史众多有讽刺意味的事件中,也许最让人悲伤的一件事就是,弗兰克·罗森布拉特于1969年在切萨皮克湾的一起轮船事故中离世,没有活着看到他创造的东西得到进一步应用。

一个完整的细胞模型

活细胞就是非线性系统的典型例子。细胞发挥其所有功能的方式,就是通过化学反应的复杂网络,将原材料转化为最终产物。我们利用符号学派的方法,比如逆向演绎,可以找到这个网络的结构,正如我们在第四章看到的那样。但是为了构建一个完整的细胞模型,我们需要得到定量因素,掌握结合了不同基因表达水平的参数,还需要将环境变量与内部变量结合起来……做到这些很难,因为这些数量之间并没有简单的线性关系。细胞通过对反馈回路进行互锁来维持稳定,这会引起非常复杂的活动。反向传播很适合解决这个问题,因为它能够有效掌握非线性函数。如果我们有完整的细胞代谢路径图,以及对所有相关变量足够的观察,原则上,反向传播可以掌握细胞的详细模型,利用多层感官器根据直接起因预测每个变量。

然而,对于可预见的未来,我们仅仅掌握细胞代谢网络的部分知识,也只掌握了我们想掌握的一部分变量。面对信息缺失以及所有可用信息不可避免的矛盾,要掌握有用的模型就需要利用贝叶斯方法,在第六章我们会深入研究这个问题。对特殊患者进行预测也是同样的道理,掌握模型:可利用的证据必然会杂乱和不完整,但贝叶斯推理会充分利用它。它起到作用了,如果把治愈癌症作为目标,我们不必知道癌细胞运转的所有细节,只需要知道如何在不损害正常细胞的情况下,使癌细胞失去繁殖能力,这就足够了。在第六章中,我们也会看到如何避开我们不知道也不必知道的事,使学习面向目标。

更直接的是,我们可以利用逆向演绎从数据及之前的知识中推导出细胞网络的结构,但应用它的方法可以呈现出组合爆炸式增长,我们需要的是一个策略。既然代谢网络由进化来决定,也许在我们的学习算法中对其进行刺激才是可行办法。在第五章中,我们会看到如何做到这一点。

大脑的更深处

在反向传播初次进入公众视线时,联结学派幻想能够快速掌握越来越大规模的网络,直到硬件允许的条件下,这些网络等同于人工大脑。结果却并非如此。掌握拥有一个隐含层的网络没问题,但在那之后,很快事情就会变得很困难。几层的网络,只有为了应用(比如文字识别)而经过精心设计的才能起作用。超出这个范围,反向传播就会瘫痪。随着我们增加越来越多的层数,误差信号会变得越来越散漫,就像河流分成越来越小的支流,直到我们只剩下雨滴,不留痕迹。利用几十或数百个隐藏层来进行学习,就像大脑一样,过去是一个遥远的梦,而到了20世纪90年代中期,对多层感知器的热情已经逐渐消减。联结学派的中坚分子仍在坚持,但总的来说,人们对机器学习领域的关注度已经转移到别的领域(在第六章和第七章中我们会探索这些领域)。

然而,如今联结学派又复活了。我们比现在掌握了更深层的网络,而且这些网络在视觉、语音识别、药物研制和其他领域都在设定新标准。这个领域新的深入学习成果被刊登在《纽约时报》的头版上。往发动机盖下面看……惊喜:是值得信赖的老式反向传播发动机,还在嗡嗡作响。什么发生改变了?评论家说,没什么大的改变:只是计算机变得更快了,数据变得更大了。辛顿和其他人答道:确实,我们一直都没错!

实际上,联结学派有实质性的进步。如果联结学派是过山车,那么对于最近的过山车转弯,贡献者之一的就是一个看上去普通的小设备,称为“自动编码器”。自动编码器就是一台多层感知器,其输出量和输入量一样。输入一张你祖母的照片,然后输出的还是你祖母的照片。起初,这就像一个愚蠢的想法:这样一个奇异的装置可能有什么用?答案就是,让隐藏层比输入和输出层小很多,那么网络就不会只把输入信息复制到隐藏层,然后再从隐藏层复制到输出信息那里,在这种情况下,我们可能也会把所有东西都扔出去。但如果隐藏层变小了,就会发生有趣的事情:网络会被迫将输入信息编码在更少的比特里,那样在隐藏层就可以表示出来了,然后网络会解压那些信息,还原到原来的大小。例如,它可以对你祖母百万像素的照片进行编码,变成仅仅7个字母的单词“grandma”,或者它自己创造出来的更短代码,同时学习将“grandma”解码成一个老奶奶的照片。因此,一台自动编码器就像一个文件压缩工具,它有两个重要的优点:知道如何自行压缩东西,和霍普菲尔德网络一样;可以把一张杂乱、扭曲的图片变得干净清晰。

自动编码器于20世纪80年代为人所知,虽然有一个单个隐藏层,但它很难学习。要弄明白怎样把众多信息打包压缩至几个相同比特大小,是非常难的问题(一个代码是你的祖母,另一个稍有不同的代码是你的祖父,再一个是詹妮弗·安妮斯顿,等等)。超空间里的地形实在是太崎岖,让人无法到达峰顶;隐藏的单位要掌握输入量的过多XOR相当于什么。因此自动编码器并没有真正跟上步伐。花了十余年来寻找的诀窍,就是让隐藏层比输入和输出层大一些。啊?实际上,这只是一半的诀窍:另一半就是,在任何特定时间,只把几个隐藏的单位赶走。这样做仍然会阻止隐藏层对输入层进行复制,而且关键是,这样做把学习变得更简单了。如果我们允许用不同比特来代表不同输入层,那么输入层就不再需要争相设置相同的比特。同样,网络现在有比之前多很多的参数,那么你所处的超空间会有更多的维度,而你也有更多的方法来逃出局部最大值的困境。这就叫作稀疏自动编码器,而它是一个诀窍。

虽然如此,我们还没有看到任何深入的学习行为。下一个聪明的主意就是把稀疏自动编码器逐个堆积起来,就像一个多层三明治那样。第一个自动编码器的隐藏层变成第二个的输入或输出层,依此类推。因为神经元是非线性的,每个隐藏层会掌握输入层更为复杂的表达方式,在前一个隐藏层的基础上进行构建。给定大批的面部图片,第一个自动编码器会对局部特征,如棱角和斑点进行编码;第二个自动编码器利用这些信息来对诸如鼻尖、眼睛的虹膜这些面部特征进行编码;第三个掌握整个鼻子和眼睛的面部特征等。最终,最顶端的一层可以是一台传统的感知器,会通过下一层编码器提供的上层特征来识别你的祖母,这和只利用单个隐藏层提供的粗糙信息,以及对所有层进行反向传播相比,要简单得多。登上《纽约时报》的谷歌大脑网络是一个由自动编码器和其他材料组成的9层三明治,能够从视频网站YouTube的视频中识别出猫。它包含数十亿个连接,是当时能够进行学习的最大网络。不足为奇的是,吴恩达(该项目的主要负责人之一)也是支持“人类智能可以归结为单个算法”这个思想的主要人物。吴恩达平易近人且很有志向,认为叠加在一起的稀疏自动编码器能够帮助我们更好地解决人工智能问题,比之前的任何方法都行得通。

叠加自动编码器不是唯一的深度学习算法,另外一种以玻尔兹曼机器作为基础,还有一种——卷积神经网络,则把视皮质模型作为基础。尽管取得了很大的成功,然而这些成果仍与大脑相去甚远。谷歌网络可以识别出猫脸的正面;人类可以认出各种姿势的猫,甚至在很难辨认脸部时也能认出。谷歌网络仍非常肤浅,它9层里面只有3层是自动编码器。多层感知器是小脑还算不错的模型,大脑的这部分负责低水平运动控制,但皮质就不一样了。它缺失用于传播误差的逆向连接,但它是学习这个魔法的真正所在。杰夫·霍金斯在《人工智能》一书中,提倡紧紧地把皮质组织形式作为基础,进行算法设计,但到目前为止,没有一个算法能够与今天的深度网络相比。

随着我们对大脑理解的深入,这种情况可能会改变。受到人类基因组计划的启示,神经连接组学正在力求绘制出大脑中的每个突触。欧盟正在进行10亿欧元的投资,用于构建大脑一应俱全的模型。美国的大脑计划也有相似的目标,仅仅2014年的基金就达到1亿美元。虽然如此,符号学派对这种寻找终极算法的方法仍非常怀疑。虽然我们可以在单个突触水平上想象完整的大脑,但是我们需要更好的机器学习算法,来将那些想象的图片变成布线图,仅仅用手来完成是不可能的。更糟糕的是,即使有了大脑的完整构图,我们仍然不知道它在干什么。秀丽线虫的神经系统仅仅由302个神经元组成,而且在1986年被完整绘制出来,但关于它干什么,我们也仅仅了解了一部分。我们需要更高水平的概念,用来搞明白底层细节这个难题,剔除那些针对人脑或只针对进化怪癖的细节。我们不会通过对羽毛进行逆向工程来制造飞机,而飞机也不会拍翅膀。飞机是在气体力学的基础上设计的,所有飞行的物体都必须遵循气体力学原则。我们还是没有理解那些想法的类似原则。

也许神经连接组学有点过分了。联结学派的一些人高调称,反向传播就是终极算法,而我们只需要扩大反向传播的规模。但符号学派对这种想法不屑一顾,他们指出一长串人类能做但神经网络做不了的事情。按照常识进行推理,这就涉及把之前从来没有被放在一起的信息组合在一起。玛丽午饭吃鞋子吗?不,因为玛丽是人,人类只吃能吃的东西,而鞋子不能吃。符号系统做到这些没有问题——它只会把相关规则串起来,但是多层感知器却做不到这一点。一旦完成学习,它只会不断计算同一个指定函数。神经网络不是组合出来的,而语意合成性是人类认知的一大部分。另外一个大问题就是人类,以及诸如规则集和决策树之类的符号模型,可以对它们的推理进行解释,而神经网络是一大堆没人能看懂的数字。

但是如果人类具备所有这些能力,大脑不经过调整突触就能掌握这些能力,那么这些能力从何而来?除非你相信魔法,答案一定是:通过进化得来。如果你是联结学派怀疑论者,而且有勇气肯定自己的观点,应该弄明白进化如何掌握孩子出生就知道的所有东西——你越觉得是天生的,要求也就越高。如果你弄明白了,然后对计算机进行编程来完成这个任务,别人否认你已经发明了终极算法的至少一个版本,这会显得十分无礼。