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

《终极算法:机器学习和人工智能如何重塑世界》第八章 无师自通

关灯直达底部

如果你是家长,在你孩子长到3岁这段时间,关于学习的整个奥秘会在你眼前揭开。新生儿无法说话、走路、识别物体,甚至不知道,当他看不到某个东西时,它仍然存在。但一个月又一个月过去,大步小步向前走,经过不断摸索,终于取得概念理解上的大进步,孩子终于理解世界如何运转、人们如何行事,以及如何进行沟通。孩子过了3岁生日,所有这些学习行为就会聚合成稳定的状态,即一种贯穿我们一生的意识流。较大的孩子和成年人可以进行时空旅行,也就是记住过去的事,但也只能回忆到3岁的事。如果我们能重新回忆婴儿和蹒跚学步时期的自己,然后从新生儿的角度看待这个世界,那么许多关于学习的疑问,甚至关于存在本身,都会突然变得清晰明朗。但实际上,宇宙中最大的奥秘并不在于它如何开始和灭亡,或者又是由怎样无穷细的线编织而成,而在于幼小孩子的大脑里正在发生什么:一磅的胶状物如何变成意识的所在处。

对于儿童学习的科学研究尚不成熟,几十年前才正式开始,却已经研究得很深入。婴儿无法填写问卷或者遵守实验规则,但我们可以推导出关于他们大脑活动的、让人惊讶的数量,方法就是在实验过程中,对他们的反应进行录制并研究。连贯的图片就出现了:婴儿的大脑不仅能揭开一项预设的基因程序,或者是用于记录感测数据中相互关系的生物装置,还可以积极整合他们自身的实际情况,这种情况会随时间发生彻底改变。

渐渐地,与我们最为相关的认知科学家以算法的形式来表达关于儿童学习的理论。许多机器学习研究人员由此得出灵感:我们需要的一切都存在于孩子的大脑中,如果能用编码的形式来获取其精华就好了。一些研究人员甚至认为,创造智能机器的方法,就是要造出一个机器婴儿,让它像人类婴儿那样去体验世界,研究人员就是它的父母(甚至可能还会有来自众包的协助,赋予“地球村”这个术语以全新的含义)。小罗比,我们就这么叫它吧(为了向《禁忌星球》中胖乎乎且高大的机器人致敬),是我们造出的唯一的机器人婴儿。一旦它学会3岁小孩都知道的事情,那么人工智能的难题就得到解决了。我们可以把它脑子里的内容复制到其他机器人中,想复制几个都可以,这样最困难的工作就完成了。

当然,问题在于罗比出生时,脑子里该运行哪种算法。受到儿童心理学影响的研究人员会看不惯神经网络学,因为一个神经元的微型运作与孩子最基本行为的复杂度也相差十万八千里,这些行为包括伸手去拿东西、抓住东西,然后睁大眼睛好奇地观察它。我们需以更抽象的水平来模拟儿童的学习,以免只见树木、不见森林。首先,虽然孩子理所当然从父母那里获得了许多帮助,但很多时候他们是在没人监督的情况下进行自学,这才是最不可思议的地方。目前为止,我们见过的算法还无法做到这一点,但我们会发现有几种算法可以让我们看到离终极算法更进一步了。

物以类聚,人以群分

我们轻轻按下“打开”按钮,罗比的视频眼第一次睁开了,但马上它就淹没在威廉·詹姆斯令人记忆深刻的所谓世界的“杂乱无章”中。随着新图片以每秒几十张的速度涌入视线,它必须做的第一件事就是学会将这些图片组织成更大的图片块。真实的世界由持续存在一段时间的物体组成,而不是由从这一刻到下一刻随意变换的像素组成。妈妈走开时,她还是她,不会被更小的妈妈代替。把一个盘子放在桌上,桌面不会出现白色的洞。如果一只泰迪熊从屏幕里经过,然后再出现时变成一架飞机,那么幼小的婴儿不会对此感到惊讶;但一岁小孩却会。不知为什么,他弄明白了泰迪熊和飞机不一样,而且无法自行转化。之后不久,他会弄明白有些物体和其他物体更像,然后开始进行分类。假定有一大堆马形玩偶和铅笔可以玩,9个月大的孩子不会将其分类成马形玩偶和铅笔两个范畴,但一个18个月的孩子却会。

将世界组织成客体和类别,对于成年人来说,这是第二天性;对于婴儿来说却不是;对于机器人罗比来说,更没有可能。我们可以以多层感知器的形式赋予它视觉皮质,然后为它展示分类好的世界里所有的客体和类别的例子——妈妈走近了,妈妈走远了,但我们绝不可能做到。我们需要一种能够自发将所有相似物体或者同一物体的不同图片集中起来的算法。这就是聚类问题,这在机器学习当中也是人们研究最多的主题之一。

一个集群相当于一组相似的实体,或者以最低限度来说,一组相似的实体之间的相似度比和其他集群中的组成部分的相似度要大。对事物进行聚类,这是人类的天性,也是获取知识的第一步。当我们仰望夜空时,会禁不住去看星座,然后根据形状来为其命名。注意到某些元素组有很相似的化学属性,这是发现元素周期表的第一步,那些相似元素现在就是元素周期表中的一列。我们察觉到的一切就是一个集群,从朋友的脸到说话声。没有这些,我们就会不知所措:在学会识别组成语言的独特声音之前,儿童无法学习语言。这需要他们在一岁时学习,而且如果没有单词指代的真实事物群集,他们学习的所有单词就会没有意思。面对大数据(大量的事物),我们首先采用的办法就是把大数据分成若干更好处理的集群。比如,整个市场过于粗化,单个消费者又过于细微,因此市场营销人员会将市场分成若干部分,这些部分就成为集群。甚至物体本身也是观察的底层集群,从由不同角度照射到妈妈脸上的光线,到宝宝听到的关于“妈妈”一词的不同声波。没有物体,我们就无法进行思考,也许这也是量子力学如此非直观的原因:我们想把亚原子世界形象化,看作粒子碰撞或者波形干扰的世界,但这样也并不真实。

我们可以通过集群的典型元素来表示该集群:你用心灵之眼看到母亲的形象,或者典型的猫、跑车、郊区住宅和热带海滩。依据市场营销知识,伊利诺伊州的皮奥瑞亚是典型的美国小镇。鲍勃·伯恩斯是康涅狄格州温德姆小镇的一名房屋维修主管,今年53岁,是美国最普通的市民——如果你相信凯文·奥基夫《普通美国人》一书讲的是对的,那么至少是这样的。任何由数字属性描述的东西,比如人们的身高、体重、围度、鞋码、头发长度等,使得计算平均数变得简单:他的身高就是所有集群成员的平均身高,他的体重就是所有体重的平均数……对于分类属性来说,比如性别、头发颜色、邮政编码或者最喜爱的运动,“平均”就是出现频率最高的值。这组属性描述的普通成员可能不是真实存在的人,但不管怎样,它是十分有用的参考:如果你在进行头脑风暴,考虑如何营销新产品,把皮奥瑞亚当作产品发布的地点,或者把鲍勃·伯恩斯当作目标客户,这要比考虑“市场”或者“消费者”之类的抽象实体要好。

尽管这样的平均值很有用,但我们可以做得更好。的确,大数据和机器学习的全部要点在于避免粗糙的思考。我们的集群可能是许多人组成的专业性很强的组,甚至是同一个人的不同方面:爱丽丝买工作用的书、休闲相关的书,或者作为圣诞礼物的书;爱丽丝心情好,或爱丽丝心情忧郁。亚马逊想把爱丽丝买给自己的书和送给男朋友的书区分开来,因为这样可以使它在恰当的时间做恰当的推荐。不幸的是,采购不会贴着“自己的礼物”或者“鲍勃的礼物”标签,而亚马逊要懂得如何将这些进行分类。

假设罗比的世界中的实体分成五个集群(人类、家具、玩具、食物和动物),但我们不知道这些东西分别属于哪个集群。当我们启动罗比时,这就是它面临的问题类型。将实体分类成集群的一个简单方法,就是随机挑选5个物体作为集群典范,再利用每个典范来对比每个实体,然后将其分到最相似典范的集群中(正如在类比学习中,相似度测量的选择很重要。如果属性是数值型的,它可能就与欧几里得距离一样简单,但还有其他许多选择)。这时我们就需要更新典范。毕竟,集群的典范就是其成员的平均化,尽管当每个集群中只有一个成员时情况也是如此,但通常这种情况不会出现在我们将一堆新成员加入每个集群之后。因此对每个集群来说,我们先计算其成员的平均特性,然后将其当作新的典范。这时,我们需要再更新集群的成员:因为典范已经移走,与给定实体最接近的典范可能也已经改变。我们可以把某个类别的典范想象成一只泰迪熊,把另外某个类别的典范想象成一根香蕉。也许在第一轮,我们会把动物饼干和熊归为一类,但在第二轮中我们会把它和香蕉归为一类。最初动物饼干看起来像玩具,但现在它看起来更像食物。一旦我重新将动物饼干归入香蕉那一类,也许那个类别的典型项也已经改变,从香蕉变为饼干。随着实体被分到越来越恰当的集群中,这个良性循环会继续下去,直到实体到集群的分配不再发生改变(因此集群典范也不再发生改变)。

该算法被称为k均值算法(k–means algorithm),它的起源可以追溯到20世纪50年代。它精密、简单、人气很高,但有几个不足,而其中的一些问题和其他问题相比较容易解决。例如,我们要提前确定集群的数量,但在真实世界中,罗比总会遇到新类型的物体。有一个选择,就是如果某物与其他现存的物体迥然不同,那么就让物体开启新的集群。另外一个选择,就是允许集群分裂,然后随着我们前进而合并。不论哪种方法,我们都会想让算法偏向选择更少的集群,以免我们最后以每个物体作为自己的集群而结束(如果我们想让集群由相似物体组成,这很难办到,但显然这并不是目标)。

有一个更大的问题,那就是k均值算法只有在集群易于区分的情况下才能起作用:在超空间中,每个集群可看作一个球团,每个团距离彼此都很远,而它们都有相似的体积,并包含相近数量的物体。如果其中的一个团出现故障,不好的事情就会发生:细长的集群会分成两个不同的集群,较小的那个集群会被附近更大的集群吸收,以此类推。幸运的是,还有一个更好的选择。

假设我们确认,让罗比在真实世界中闲逛是一种过于缓慢、麻烦的学习方法。相反,就像飞行学员在飞行模拟器中进行学习一样,我们会让罗比观看计算机生成的图片。虽然知道图片来自什么集群,但我们不会告诉罗比。相反,我们生成每张图片的方法,就是首先要随意选择一个集群(比如说玩具),然后综合该集群中的一个例子(毛茸茸的、棕色的小泰迪有一双黑色的大眼睛、圆耳朵,还戴着蝴蝶结)。我们还是随意选择例子的属性:尺寸来自一个正态分布的均值,比如10英寸,毛是棕色的概率为80%,否则就为白色,以此类推。当罗比看到许多图片由这个方法生成后,它应该学会将它们分为人类、家具、玩具等类别中,因为人类和家具相比,人类更像人类。有一个有趣的问题:如果我们从罗比的角度看,它发现集群的最佳算法是什么?答案让人惊讶:朴素贝叶斯算法。我们开始了解该算法时,它是监督式学习的一种算法。区别在于现在罗比不知道类别,因此它得猜这些东西。

显然,如果罗比不知道它们,事情就会一帆风顺,因为在朴素贝叶斯算法中,每个集群都由其概率(17%生成的物体都是玩具)和集群成员当中每个属性的概率分布来定义(例如,80%的玩具是棕色的)。罗比可以估算这些概率,只要数清数据中玩具的数量,以及棕色玩具的数量等。为了做到这点,我们需要知道哪个物体是玩具。这看起来很棘手,但最后发现我们已经知道如何做到这一点。如果罗比有一个朴素贝叶斯算法分类器且要弄明白新物体的类别,它要做的就是应用分类器,然后在给定物体属性的条件下计算每个类别的概率(小小的、毛茸茸的、棕色的、有大眼睛、戴着蝴蝶结?可能是玩具,也可能是动物)。

因此罗比面临的是鸡和蛋的问题:如果它知道物体的类别,就可以通过数数的方式来掌握类别的模型;如果它知道模型,可以推断物体的类别。我们好像又遇到困难了,但远非如此:只要在开始时,以你喜欢的方式来猜测每个物体的类别(即使是随机的),然后你就有的忙了。从那些类别和数据中,你可以掌握类别模型;在这些模型的基础上,你可以重新推导类别,以此类推。乍一看,这看起来像一个疯狂的计划:它可能绝不会结束,而是处在由模型推断类别,到由类别推断模型的永恒循环中。即使它停止了,也没有理由相信会停在有意义的集群上。但1977年,来自哈佛大学的三个统计学家(亚瑟·邓普斯特、南·莱尔德、唐纳德·鲁宾)表明,这个疯狂的计划其实可以生效:每次我们绕着圈走时,集群模型就会变得更好,而当模型是可能性的一个局部最大值时,循环结束。他们称该计划为期望最大化演算法(Expectation Maximization,EM算法),其中E表示期望(推断预期的概率),而M代表最大化(估算可能性最大的参数)。他们还表明,许多之前的算法都是EM的特殊情况。例如,为了掌握隐马尔科夫模型,我们交替进行以下工作:推断隐藏状态,在此基础上估算过度和观察概率。无论何时,当我们想掌握某个统计模型,但又缺乏一些关键信息时(例如,例子的类别),就可以利用EM。这使它在所有机器学习中成为最受欢迎的算法。

你可能已经注意到k均值算法和EM之间的某个相似性,因为它们都交替进行两项工作:将实体分配给集群,然后更新集群的描述。这并不是一场意外:k均值本身就是EM的一种特殊情况,当所有属性都会有“狭窄的”正态分布时(有很小变量的正态分布),你就会找到它。当集群重叠很多时,举个例子,实体可能会归属于概率为0.7的集群A和概率为0.3的集群B。而在信息不丢失的情况下,我们无法决定它是否属于集群A。EM会将其考虑进来,会将实体分配给两个集群,然后根据依据来更新它们的描述。但是,如果描述非常集中,实体归属于附近集群的概率也总接近1,而我们要做的就是将实体分配给集群,以及对每个集群中的实体都进行平均化,以获得其均值,这是典型的k均值算法。

到目前为止,我们只看到如何掌握集群的一个水平。当然,这个世界要丰富得多,集群中又有集群,一直到单个物体:活着的东西聚类成植物和动物,动物聚类成为哺乳动物、鸟类、鱼类等,一直到宠物和家狗。没问题,一旦我们掌握了集群组,就可以将其看作物体,然后反过来对其进行聚类,以此类推,直到对所有东西都进行聚类。或者,我们可以由粗略的聚类作为开始,然后将每一个集群分成亚集群,如罗比的玩具被分成填充动物玩具、组装玩具等;填充动物玩具又可分为泰迪熊、长绒毛小猫等。儿童似乎会从中间开始,然后起起伏伏努力前进。例如,他们在学习“动物”或者“小猎犬”之前先学会“狗”这个词,这对于罗比来说也许是一个很好的策略。

发现数据的形状

数据涌入罗比的大脑,靠的是它的直觉,或者是数百万个亚马逊顾客的点击流,将大量实体分类成更小数量的集群只是战役的一半,另一半则会缩短每个实体的描述。罗比看到的妈妈的第一张照片也许包含100万像素,每个像素都有自己的颜色,但你很少需要100万个变量来描述脸部。同样,在亚马逊网站上点击每一样东西,都会提供关于你的一点信息,但亚马逊真正想知道的是你喜欢什么、不喜欢什么,而不是你点击的东西。前者非常稳定,在后者中可能会有点体现,当你利用网址时,后者会毫无限制地增长。渐渐地,所有这些鼠标点击会增加对你的品位的了解,还附上一张图,与那些像素聚集起来,形成你的品位的大致情况,这和所有那些像素合起来变成你的脸是一个道理。问题在于如何添加。

一张脸大约有50块肌肉,因此50个数字足以用来描述所有可能的表情,而且还有很大的剩余空间。眼睛、鼻子、嘴巴等的样子(就是让你区分于别人的特点)的数量也不应该超过几十种。毕竟如果面部特点只有10个选择,那么警察局的拼图师就能大概描绘出疑犯的肖像,足以用来认出他。你可以添加几个数量,用来确定光线和姿态,这样就差不多了。因此如果你给我100多个数量,就已经足以重新构造一张脸部图片。相反,罗比的大脑应该可以储存脸部图片,然后快速简化到真正起到作用的100个数量。

机器学习算法称该过程为维数约简,因为该过程将大量的可见维度(像素)简化成几个隐性维度(表情、面部特征)。维数约简对于应对大数据(像每秒钟通过你的知觉而进入的数据)来说很关键。一张图可能抵得上1000个字,但要处理和记住所做的付出,却要高出100万倍。你的视觉皮质好歹把大数据削减为数量上可管理的信息,足以用来引导这个世界、识别人和物、记住你看见的东西。这是认知最伟大的奇迹之一,并且如此自然,你甚至意识不到自己正在做这些事。

当你整理书柜上的书时,会把类似的书放在一起,你正在做一种维数约简,从广阔的主题范围到一个维数的书架。不可避免的是,有些书密切相关,最后在书架上却离得很远,但你还是可以想办法避免这样的情况再次发生。这就是维数约简算法所做的工作。

假设我给你加利福尼亚州帕罗奥多市所有店铺的GPS(全球定位系统)坐标,然后你把其中的几个画在了一张纸上(见图8–1)。

图8–1

通过看图8–1,也许你只能判断帕罗奥多市的一条街道是西南—东北向。虽然没有画出街道,但你可以凭直觉知道它就在那里,因为所有的点落在一条直线上(或者接近这条直线,可能在街道两边)。的确,这条街是大学街,如果你想在帕罗奥多市购物或吃饭,可以去那里。你一旦知道大学街上的店铺,就可以不需要两个数据来定位它们了,只要一个就可以:街道编号(或者,如果你真的想做到精确,从商铺到加利福尼亚站的距离,在西南角,此处正是大学街的起点)。

如果把更多的店铺画上去,你可能会注意到有些在十字街上,距离大学街有点距离,还有几个完全在别处(见图8–2)。

图8–2

虽然如此,但大多数店铺还是靠近大学街。如果只给你一个数据来确定店铺的位置,那么店铺到加利福尼亚站的沿街距离就是很好的选择:走了那段距离之后,往周围看也许就足以找到该店铺。所以,你把“帕罗奥多市店铺位置”的维数由二减到一。

虽然罗比没有你的优势(拥有高度进化的视觉系统),但如果你想让它去伊利特洗衣店取洗好的衣物,你只要允许他的帕罗奥多市地图有一个坐标,它就可以用一种算法从店铺的GPS坐标中“找到”大学街。完成这件事的关键在于要注意到,如果把x和y坐标的原点放在店铺地点的中心位置,然后慢慢地旋转坐标轴,当旋转大约60°时,店铺距离x轴最近,此时x轴与大学街近乎重合(见图8–3)。

图8–3

这个方向(人们称之为数据的第一主成分)也是数据传播最多的方向(请注意,如果你将商铺投在x轴上,在图8–3的右图中它们离得比左图中的要远)。你找到第一主要成分之后,可以找第二个,在这个例子中就是差别最大、与大学街成直角的方向。在地图上,只剩下一种可能的方向(十字街的方向)。如果帕罗奥多市在山坡上,前两个主要成分之中的一个将会部分处于上坡位置,第三和第四主要成分可能就悬在空中。我们可以将同样的思想应用到几千个或者几百万个维数中,比如面部图片,不断寻找最大差别的方向,直到剩下的变量很小,这时我们才能停下来。例如,在图8–3中旋转坐标轴之后,多数商铺的y=0,因此y的均值会很小,而我们不会因为忽略y轴的坐标而丢失过多的信息。而且如果我们决定保留y,那么z(在空中)肯定也是无意义的。结果就是,寻找主要成分的整个过程,可以利用线性代数一次性完成。首先,几个维度往往会造成高维度数据中大量的变异。虽然事实并非如此,但盯住前两三个维度不放往往会产生许多洞见,因为它利用了你视觉系统的强大感知力。

主要成分分析(principle–component analysis,PCA),正如人们对该过程的了解,是科学家的工具箱中关键的工具之一。可以说,PCA与无人监督学习的关系,正如线性回归与无人监督多样性之间的关系。例如,众所周知的全球变暖曲棍球杆曲线,就是找到各类温度相关数据序列(树的年轮、冰芯等)的主要成分并假设那就是温度的结果。生物学家利用PCA来将几千个不同的基因表达水平概括起来,变成几条途径。心理学家已经发现,个性可以简化为5个维度(外向、随和、尽责、神经质、开放性),他们可以通过你的推特文章和博客帖子来进行推断(黑猩猩可能还有一个维度——反应性,但推特数据对它们并不适用)。把PCA应用到国会投票时,民意数据显示,与普遍观点相反,政治并不主要是自由党与保守党之间的竞争。相反,人们主要在两个维度上存在差别:一个是经济问题,一个是社会问题。我们一方面可以把这些党派瓦解变成单一轴,然后与平民主义者和自由论者混合起来,这两个派别会处于两个极端,这样就创造了有很多温和派位于中间的假象。试图成功吸引他们不太可能。另一方面,如果自由党和自由论者消除了对对方的厌恶,那么他们就可以在社会问题上进行联盟,在这些问题上,双方都支持个人自由。

当罗比长大了,可以利用PCA的一个变量来解决“鸡尾酒会”问题,也就是从嘈杂的人群中辨认出单个声音。相关的方法可以帮助它掌握阅读能力。如果每个单词就是一个维度,那么在话语空间中,一篇文章就是一个点,而该空间的主要方向则是意思的成分。例如,“奥巴马总统”和“白宫”在话语空间中相距很远,而在意义空间上却很接近,因为这两个词可能会出现在相似的背景下。信不信由你,计算机就需要这种类型的分析来对SAT(美国学术能力测验)文章进行打分,并且做得和人类一样好。网飞运用了相似的方法,不只是为有相同品位的用户推荐电影,它首先会将用户和电影纳入更低维度的“品位空间”中,然后如果在该空间中某部电影接近用户,那么它就会向用户推荐。利用这种方法,它可以向用户推荐之前连用户都不知道自己会喜欢的电影。

虽然如此,当你看到脸部数据集的主要成分时,可能会感到失望。因为它们并不像你期望的那样会是面部表情或者某些特征,它们看起来很狰狞,因为十分模糊而无法辨认。这是因为PCA属于线性算法,因此所有可能的主要成分都是对真实脸部像素的平均值进行加权(也称为“特征脸”,因为它们是数据集中协方差矩阵的特征向量,但我不同意这点)。为了真正了解面部,以及世界上的大部分形状,我们需要另一样东西——非线性降维算法。

假设我们缩小帕罗奥多市的地图,而给你海湾地区主要城市的GPS坐标(见图8–4)。

图8–4

你可以再次仅仅通过看这张图来猜测这些城市是在海湾上,如果你画一条线穿过这些城市,可以仅利用一个数据就可以确定每个城市的位置:沿着这条线,该城市距离旧金山有多远。但PCA无法找到这条线,相反,它会画一条正好在海湾中间的线,当然,那里并没有城市。PCA完全没有解释数据的形状,而是将其模糊化了。

想象一下我们打算从头开始对海湾地区进行开发。我们已经决定每个城市的方位,预算允许我们铺一条连接这些城市的公路。我们会铺一条从旧金山到圣布鲁诺,再到圣马特奥,最后一直到奥克兰的公路。这条公路是海湾地区很完美的一维表示方法,而且可以通过一种简单的算法来实现:在每对附近的城市铺一条路。当然,一般情况下这种做法会建成一个公路网络,而不仅仅是一条每个城市都会使用的公路。我们可以强行铺一条最接近该网络的公路,从这个意义上讲,城市之间在这条公路上的距离,也就可以尽可能地与在网络上的距离相近。

对于非线性降维算法来说,最受欢迎的算法——等距映射算法,就可以实现这一点。在高维度空间中(比如一张脸),它可以把每个数据点与所有附近的点(很相似的脸)连接起来,依据得出的网络计算每一对数据点之间的最短距离,然后找到与这些距离最接近的简化坐标。与PCA相反,该空间中的“脸部坐标”往往意义重大:一个坐标可能表示脸部朝哪个方向(左剖面、半侧面、正面等);另一个坐标表示这张脸的表情(非常伤心、有点伤心、不动声色、开心、非常开心等)……从了解视频中的动作到探测言语中的情绪,等距映射算法有惊人的能力,可以对准复杂数据中最重要的维度。

这是一个有趣的实验。从罗比的眼睛中提取出视频流,在图片空间中把每个框架当作一个点,然后简化那组图片变成单个维度。你会发现什么?时间。就像图书管理员整理书架上的书,时间会将每张图片放置在与之最接近的图片旁边。也许我们对它的感知,仅仅是大脑降维技术的自然结果。在记忆这个道路网络中,时间是主要的通道,而我们很快就能找到它。时间,换句话说,就是记忆的主要成分。

拥护享乐主义的机器人

聚类和维度简化虽然使我们更加靠近人类学习,但仍丢失了一些很重要的东西。孩子们并不只是消极地观察这个世界,他们会行动,会将看到的东西捡起来,和这些东西玩、到处跑、吃东西、哭、问问题。如果无法帮助罗比与周围环境互动,那么最先进的视觉系统也毫无用处。罗比不仅要知道东西的位置,也要知道每一刻该做什么。原则上,我们可以教会它使用步进指令(step–by–step instruction),把传感器读数和正确的行为组成一对,但这只对精密任务可行。采取什么样的行为由你的目标决定,而不仅取决于当前感知到的所有东西,这些目标也许只有在遥远的未来才能实现。在任何情况下,步进监督(step–by–step supervision)都不应该被采用。家长不会教自己的孩子爬、走或者跑,他们都是自己摸索。目前为止,所有的学习算法都不能做到这一点。

人类确实有稳定的向导:情感。我们追求快乐,躲避痛苦。当你碰到热的炉子时,会本能地缩手。这是简单的部分,困难的部分在于学习如何一开始不去碰那个炉子。你需要移动手指以避免之前没有感受过的刺痛。为了避免这种刺痛感,大脑要将它和你碰炉子的那一刻,以及导致这种剧痛的动作联系起来,爱德华·桑代克称该过程为“效果律”(law of effect)。人们更有可能重复引起愉悦感的动作,而导致疼痛感的动作则不太可能重复。过去的愉悦感可以穿越,可以这么说,而行为最终可以与那些离得很远的效果相联系。和其他动物相比,人类能更好地完成这种远程追求奖赏的任务,而且这对我们的成功也很重要。在一个著名实验中,工作人员在孩子们面前展示了棉花糖,并告诉他们如果可以坚持几分钟不吃棉花糖,就会得到两朵棉花糖。那些能成功做到这一点的孩子在学校生活、成人后的生活中表现得会更好。也许不那么明显,但利用机器学习来改善其网页和业务的公司也会面临相似的问题。这些公司可能会因为短期利益而做出改变,比如销售成本较低的劣质商品,以赚取同等价格优质商品的差价。这种做法忽略了一点:从长远看,这样的商家会失去顾客。

前几章中学习算法都由“即时满足”这一原则引导:每个行为,无论是标记垃圾邮件,还是购买股票,都会从“老师”那里得到即时奖励(或者处罚)。有一个机器学习的子域致力于这样的算法:进行主动探索,偶然得到奖励,然后弄清楚将来怎样才能再得到奖励。这很像婴儿到处爬和把东西放到嘴里。

这个过程称为“强化学习”,你的第一个家用机器人可能会经常用到这种方法。如果你刚打开罗比的包装,并启动它,就让它来为你煎鸡蛋和培根,它可能需要点时间。然而,在你工作的时候,它会自己探索厨房,注意各类东西的位置,以及你用哪种炉子。你回来的时候,饭菜已经做好了。

强化学习的一个重要先驱是跳棋游戏程序,这是IBM的研究员阿瑟·塞缪尔于20世纪50年代编写的。棋盘游戏是强化学习问题的典范:你得走好多步棋,却得不到任何反馈,奖励或惩罚都在最后一刻揭晓,其形式也就是赢和输。塞缪尔的程序可以自学下棋,而且下得和大多数人一样好。它不会直接学棋盘上每步棋该怎么走,因为这太困难;相反,它会学习如何评价每个棋的位置(从该位置出发,赢的概率有多大),然后选择走能到达最佳棋位的那一步。起初,它知道如何进行评价的唯一位置就是最后的结果:赢、平局或是输。一旦它知道某个特定位置能赢,也就知道哪些位置有利于让它达到这个位置。IBM前总裁小托马斯·沃森就预测,该程序被证实之后,IBM的股票会上涨15个点。最后,它被证实了。这个教训并没有被IBM忽略,后来IBM制造了一个国际象棋冠军和一个《危险边缘》冠军。

强化学习的首要思想是:并不是所有的状态都有奖励(正面或者负面),但每种状态都会有价值。在棋类游戏中,唯独最后的位置才有奖励(比如1、0、–1,分别代表赢、平局或者输)。虽然其他位置没有即时奖励,但有价值,因为通过这些位置可以得到最后的奖励。因为某个位置在某步棋时可起到“将死”(棋类术语)的作用,从实践角度看,这相当于赢一盘棋,所以有较高的价值。我们可以将这种推理方式传播至好的与坏的开场走法中,即使在那个距离内连接完全不明显。在视频游戏中,奖励通常是分数,而一种状态的价值就是从该状态开始你能积累的分数。在现实生活中,即时奖励要好于未来奖励,投资也一样,未来奖励的回报率可能会打折扣。当然,奖励取决于你选择什么行为,强化学习的目标往往是采取那个能获得最丰厚奖励的行为。你该不该打电话约你的朋友出来约会?这可能会是一段美好关系的开始,或者你只会得到一个痛苦的回绝。即使你的朋友答应约会,这个约会的结果可能好也可能坏。从某种程度上说,你得概括所有未来可能会走的道路,然后现在做决定。强化学习通过估算每种状态的价值来做到这一点,从该状态开始你所期望得到的全部奖励,然后选择能将奖励最大化的行为。

假设你在一条隧道中行走,像印第安纳·琼斯那样,然后你到了一个三岔口。地图显示左边的隧道通往宝藏,右边的则通往蛇洞。你所站位置的价值(就在三岔口前)也就是宝藏的价值,因为你会选择往左走。如果你总是选择最佳可能的行为,那么某个状态的价值与成功状态的价值的差异,仅仅在于你因实施该行为而获得的即时奖励(如果有)。如果我们知道每种状态的即时奖励,就可以利用这个观察来更新相邻状态的价值,以此类推,直到所有状态都会有一致的价值。宝藏的价值会沿着隧道反向传播,直到到达岔路口或者超过这个地方。你一旦知道每种状态的价值,就可以知道在每种状态中该采取什么行动(能够将即时奖励和最终状态价值最大化的行动)。这很大程度是由控制论理论家理查德·贝尔曼解决的,但强化学习中真正的问题会在你没有某区域的地图时出现。你唯一可做的就是探索并发现奖励在哪里。你可能发现宝藏,也可能陷入蛇洞。每当你要采取行动时,就会注意即时奖励和最终状态,这很大限度上可以由监督式学习来实现。但你还是得更新你采取行动后的状态的价值,使其与刚刚观察的价值一致,也就是说,你获得的奖励加上所处新状态的价值。当然,这个价值可能并不准确,但如果你已经花了足够长的时间来边徘徊边做这件事,那么最终会停在所有状态的正确价值以及对应行动上。简言之,这就是强化学习。

请注意强化学习算法如何面对我们在第五章遇到的利用—探索困境:为了使奖励最大化,你很自然地想选择能达到高价值状态的行动,但这可能会阻止你发现其他价值更高的奖励。强化学习算法解决这个问题的方法是时而选择最佳行动,时而随机选择(为此,大脑甚至似乎有一台“噪声发生器”)。早些时候有很多可以学习的东西,进行大量探索就会很有意义。一旦你发现了某个区域,最好集中精力来使用它,这就是人一生要做的事:儿童会去探索,成年人想着如何使用(除了科学家,因为他们是永远的孩子)。儿童的游戏比表面看起来要严肃。如果进化过程产生一个没有用的生物,并在出生后的几年给其父母带来沉重负担,那么付出这么大的成本一定是为了更丰厚的利益。实际上,强化学习就是一种加速进化过程——尝试、丢弃,然后在单个生命的一生而不是几代中改进行动——有了这个标准,它的效率就会很高。

对于强化学习的研究自20世纪80年代早期才正式开始,马萨诸塞大学的里奇·萨顿和安迪·巴尔托参与了研究工作。他们认为学习取决于与环境的互动,这一点很关键,但监督算法并没有发现这一点;而且他们在动物习得心理学领域找到灵感。萨顿成为强化学习的主要倡导者。另一个关键进展发生在1989年,当时剑桥大学的克里斯·沃特金斯在儿童学习实验发现的推动下,实现了强化学习的现代形式,即在未知环境中进行最优控制。

然而,到目前为止,我们看到的强化学习算法还不是很现实,因为它们在某个状态中不知道该做什么,除非它们之前进入过那种状态,而在现实世界中,并没有哪两个情形是完全相似的。我们需要对之前所处的状态到新状态进行概括。幸运的是,我们已经知道该如何做到这一点:用强化学习来将之前见过的一个监督式学习算法(例如,多层感知器)包括进来。这时神经网络的工作就是预测状态的价值,而反向传播的误差信号就是预测价值与所观察到的价值之间的差别。还存在一个问题:在监督式学习中,某个状态的目标价值总是一样的;但在强化学习中,它会不断变化(这是达到附近状态的结果)。因此,带有归纳性的强化学习往往无法确定稳定的解决方法,除非内部学习算法很简单,就像线性函数那样。虽然如此,带有神经网络的强化学习已经取得一些显著成就。早期的成就包括制造出具备人类水平的西洋双陆棋选手。最近的一种强化学习算法,来自DeepMind(伦敦的一家创业公司),在电视体育游戏及其他简单的大型电玩中打败了一位专家级的人类选手。它利用深层网络来从控制台屏幕低像素的动作中预测其价值。有了端对端的视野、学习和控制,该系统与人工大脑至少有一点相似之处。这可以解释为什么DeepMind是一家没有产品和利润,员工也寥寥无几的公司,但谷歌却向它投了5亿美元。

除了游戏,研究人员还可以利用强化学习来平衡极点、控制简笔画的体操运动员、使汽车倒车入位、驾驶直升机颠倒飞行、管理自动电话对话、分配手机网络中的频道、调度电梯、安排航天飞机货运装载等。强化学习也对心理学和神经科学产生了影响。大脑利用神经递质多巴胺来传播期望奖励与实际奖励之间的区别。强化学习解释了巴甫洛夫条件反射作用,但不像行为主义,它允许动物有内部心理状态。觅食的蜜蜂会利用它,在迷宫中找到奶酪的老鼠也是如此。你的日常生活由一连串你很少注意到的、由强化学习形成的奇迹组成。你起床、穿衣服、吃早餐,然后开车去上班,这些过程中你一直在思考别的事情。实际上,强化学习会不断精心安排和调整这个奇妙的动作交响曲。强化学习片段(为习惯)组成大多数你做的事。当你觉得饿了时,会走到冰箱前,拿一点零食。正如查尔斯·杜希格在《习惯的力量》一书中表明的那样,理解并控制由线索、日常、奖励组成的循环关系是成功的关键,不仅对个人,而且对企业甚至整个社会来说都是这样。

作为强化学习的创始人,里奇·萨顿是最具有热情的。对于他来说,强化学习就是终极算法,而且解决了这个问题就相当于解决了人工智能问题。但克里斯·沃特金斯却并不满意。他看到许多儿童能做但强化学习算法做不了的事:解决问题,经过几次尝试之后能更好地解决问题,制订计划,获取逐渐抽象的知识。幸运的是,对于这些较高水平的能力,我们也有相应的学习算法,其中最重要的就是组块算法。

熟能生巧

学习的目的就是为了更好地实践。你现在可能记不得学着系鞋带有多难了。一开始,你完全学不会,虽然当时你已经5岁了。接着,你的鞋带松开的速度比你系的速度还要快。慢慢地,你学会更快、更好地系鞋带了,直到你不自觉地系鞋带。很多其他事情也是同样的道理,比如爬、走、跑、骑单车、开车、阅读、写作、算术、演奏乐器、进行体育活动、做饭和使用计算机等。讽刺的是,人在最痛苦时学到的东西往往最多。在早期,每一步都很艰难,你不断失败,即便你成功了,结果也并不会有多好。当你掌握高尔夫挥杆动作或者网球发球之后,可能会花几年完善这些技能,但这些年你取得的进步会比开始学时的前几周少很多。通过练习你会做得更好,但不会以恒定的速度进步:一开始你进步很快,接下来就没那么快了,最后变得很慢。无论是玩游戏还是弹吉他,技能提高时间曲线图(你做某事的表现或者做某事所花费的时间)有一个非常特殊的形式(见图8–5)。

图8–5

这种类型的曲线被称为“幂法则”(a power law),因为随着时间达到某负幂时,表现会出现变化。例如,在图8–5中,完成所需的时间与尝试的次数的负二次方成正比(或者相当于1除以尝试次数的平方)。几乎每项人类技能都会遵循幂法则,不同的幂会对应不同的技能(相反,Windows系统则不会随着实践次数的增多而变快——这是微软该解决的问题。)

1979年,艾伦·纽厄尔和保罗·罗森布鲁姆开始探索这个所谓的“幂法则”实践存在的原因。纽厄尔是人工智能的创始人之一,也是主要的认知心理学家,而罗森布鲁姆则是他在卡内基–梅隆大学的研究生之一。当时,没有哪个实践模式可以解释幂法则,纽厄尔和罗森布鲁姆怀疑这可能与组块有关。组块是一个来自感知与记忆心理学的概念。我们以组块的形式来感知并记住东西,而在任意给定的时间内(根据乔治·米勒的经典论文的结论为7±2),我们只能通过短暂记忆来记住这么多组块。关键是将信息聚集成组块可以让我们处理得更多,否则我们处理不了那么多信息。这就是电话号码有连字符的原因:1–723–458–3897比17234583897要好记得多。赫伯特·西蒙(纽厄尔的长期合作伙伴以及人工智能的共同创始人)早期已经发现,新棋手和专业棋手的主要区别在于,新棋手一次记一个象棋位置,而专业棋手则看到涉及多个位置、更大的模式。要提高国际象棋技能主要涉及获取更多、更大这样的组块。纽厄尔和罗森布鲁姆假设,在掌握所有技能而不仅仅是下棋技能中,类似的过程在起作用。

在感知和记忆中,组块仅仅是一种符号,代表了其他符号的模式,就像AI代表人工智能。纽厄尔和罗森布鲁姆将这个思想运用到纽厄尔和西蒙早期创建的问题解决理论中。纽厄尔和西蒙让实验对象解决问题,例如,在黑板上利用一个数学公式推导出另外一个数学公式,同时大声描述他们如何得到这个公式。他们发现,人类解决问题的方式是将问题分解为小问题,再将小问题再分解为更小的问题,然后系统地减少初始状态(比如第一个公式)与目标状态(第二个公式)之间的差异。然而,这样做需要找到能起作用的行动顺序,这需要时间。纽厄尔和罗森布鲁姆的假设是,每次当我们解决一个小问题时,会形成一个组块,这样我们就可以直接从解决问题前的状态进入解决问题后的状态。这种意义下的组块有两个部分:刺激(你从外部世界或者短暂记忆中识别出的模式)和反馈(你因此而执行的行动顺序)。一旦掌握一个组块,你就会将其储存在长期记忆中,下次你解决同样的小问题时,就可以直接应用该组块,会节省寻找的时间。这个过程在所有水平层面都会发生,直到你找到一个能解决所有问题的组块,并且能够自行解决这些问题。为了系好你的鞋带,先打结,然后用一端栓个套,用这个套绕住另一端,然后将其从中间的洞穿过。对于5岁的孩子来说,这些并不简单,可一旦你掌握相应的组块,就差不多学会了。

纽厄尔和罗森布鲁姆将他们的组块程序应用于解决一系列问题,测量它在每次尝试中花费的时间,这就弹出一系列幂法则曲线。但这仅仅是开始,接下来他们将组块并入“猛增”(Soar)理论中,这是纽厄尔和另一个学生约翰·莱尔德一起创建的一般认知理论。“猛增”程序不仅为某个预设了等级的目标而努力,当每次遇到障碍时,还都可以定义并解决新的子问题。一旦它形成新的组块,“猛增”程序就会对其进行一般化,以应用到相似的问题中,这与逆向演绎的方式类似。除了幂法则实践,“猛增”中的组块最后成为许多学习现象的良好模型。通过对数据和类推法进行组块,它甚至可以应用到掌握新知识中。于是纽厄尔、罗森布鲁姆、莱尔德做出这样的假设——组块是学习所需的“唯一”机制,换句话说,就是终极算法。

作为典型的人工智能类型,纽厄尔、西蒙及其学生和拥护者都非常相信问题解决的重要地位。如果问题解决者很强大,那么学习算法就会依赖其能力而变得简单。的确,学习只是另外一种问题的解决方式。纽厄尔和同伴共同努力,将所有学习简化为组块,将所有认知简化为“猛增”程序,最后他们失败了。其中一个问题是,尝试这些步骤的成本变得很高,程序变得越来越慢。从某种程度上说,人类要避免这一点的发生,但到目前为止,该领域的研究人员还找不到解决方法。最重要的是,尝试将强化学习、监督式学习,以及别的一切简化成组块,基本上会制造更多的问题,而不会解决问题。最终,“猛增”的研究人员承认失败,然后将那些其他类型的学习作为分离机制并入“猛增”。虽然如此,组块还是学习算法的典型例子,受到心理学的启发,还是真正的终极算法。无论它最后变成什么,肯定会分享其通过实践得到提升的能力。

组块和强化学习在商业中的应用不如在监督式学习、聚类或者维数简约中广泛,但是通过与环境互动进行的相似学习类型是掌握行动(或相应行动)的效果。如果现在你的电子商务网站主页的背景是蓝色的,你在想让它变成红色会不会提高销量,那么可以将红色网页用在10万个随机挑选的用户身上试试看,然后将结果与常规网站进行比较。这种手法称为A/B测试,起初主要用在药物试验中,之后运用到许多领域。在这些领域中,数据可以根据需要集中起来,从营销到对外援助。它还可以概括成一次性尝试许多变化组合,而不会忽略什么样的改变会带来什么(或者失去什么)。诸如亚马逊、谷歌之类的公司对此深信不疑,你可能已经不知不觉参与了几千项A/B测试。A/B测试证明常听到的批评言论的错误:大数据只对寻找相关关系有好处,对寻找因果关系则没用。除了哲学要点,掌握因果关系就是掌握行动的效果,而任何有数据流并能影响数据流的人都能做到这一点——从一岁孩子在浴缸中戏水到总统再次参加竞选。

学会关联

如果我们赋予罗比机器人在本书中提到的所有学习能力,它会变得很智能,但还会有点孤僻。它会把世界看成一群独立的物体,可以对其进行识别、操纵甚至预测,但它不理解世界是一张相互联系的网络。罗比医生会很擅长根据病人的症状来诊断其患有感冒,但无法猜想这个病人患的是猪流感,因为它和感染该疾病的人有过接触。在谷歌出现之前,搜索引擎会通过看它的内容来决定某网页是否与你的搜索相关——还有别的吗?布林和佩奇的观点是,与该网页相关的最明显标志在于,相关的网页会与它有链接。同样的道理,如果你想预测某个青少年是否有开始吸烟的危险,到目前为止,你能做得最有效的事就是调查他的好朋友是否吸烟。一种酶的形状与其分子形状的关系,就像锁与钥匙的关系一样不可分割。捕食者与猎物有缠绕很紧的属性,每种属性会进化出打败对方的属性。在所有这些例子中,了解一个实体的最佳方法——无论它是人、动物、网页还是分子——就是了解它如何与其他实体进行连接。这就需要一种新的学习方式:不会将数据当作不相关物体的随机样本,而是对复杂网络的一瞥。网络中的节点会互相作用;你对这个节点做了什么,会影响到其他节点,最后还会返回来对你进行影响。关联学习算法,正如它们的名字那样,也许不太有社交智能,但它们将是最好的东西。在传统统计学习中,每个人都是一座岛,与世隔绝;在关联学习中,每个人都是一块陆地,是主要大陆的一部分。人类是关联学习者,被相互连接起来,我们如果想让罗比成长为一个有知觉、擅长社交的机器人,就需要对它进行布线,然后连接。

我们面临的第一个困难就是,当数据变成整个大网络时,似乎就没有许多例子来学习了,只剩一个,而且这不够。朴素贝叶斯算法通过数发烧流感病人的数量来知道发烧是感冒的一种症状。如果它只能看到一位病人,可能会得出结论:流感总会引起发烧,或者不会引起发烧。这两个结论都是错的。我们想确认流感是传染性疾病,方法就是通过观察在社交网络中的感染模式——感染的人群在这边,没有感染的人群在那边——但我们只能看到一个模式,即使它处于70亿人的网络中,因此如何概括尚不清晰。关键在于要注意到,嵌入该网络中,我们有许多对人的实例。如果熟人与未曾相见的人相比,更有可能患流感,那么认识流感病人也会让你成为流感病人的可能性增大。然而,不幸的是,我们不能只数数据中都患流感的熟人的对数,然后把这些数变成概率。因为一个人可以有许多熟人,而所有成对的概率不会总计为相关模式。举个例子,该模式会让我们计算在给定他们熟人的情况下,计算某人得流感的概率。当例子都分开时,我们就不会有这样的问题了,我们也不会关注这个例子,比如丁克家庭中,每个人都住在自己的“荒岛”上。这并不是真实世界,而且无论如何,这里绝对不会有什么流行病。

解决办法就是找到一组特征,并掌握它们的权值,就像在马尔科夫网络中那样。对于每个人(X),我们可以有“X患有流感”的特征,对于每对熟人X和Y,特征就是“X和Y患有流感”,等等。正如在马尔科夫网络中那样,最大似然权值使每个特征以在数据中观察到的频率出现。如果有很多人患有流感,那么“X患有流感”的权值就会比较高。如果当X患有流感时,熟人Y也患有流感的概率会比随机抽选的网络成员患有流感的概率大,因此“X和Y都患有流感”的权值会较高。如果40%的人有流感,那么16%的所有熟人两人组也会患有流感,那么“X和Y都患有流感”的权值将等于零,因为我们不需要该特征来准确复制数据的统计(0.4×0.4=0.16)。如果特征的权值为正,流感更有可能发生在人群当中,而不会十分容易随机感染某个人。也就是说,如果你熟悉的人患有流感,那么你感染流感的概率会更大。

请注意,网络会为每对熟人赋予分离的特征,比如爱丽丝和鲍勃都患有流感,爱丽丝和克里斯都患有流感,等等。但我们无法为每个两人组确定一个分离权值,因为他们只有一个数据点(无论是否受感染了)。对于尚未确诊的网络成员,我们不能将他们一概而论(伊薇特和扎克都患有流感吗)。我们只能在自己见过的所有实例的基础上,为相同形式的所有特征确定一个权值。实际上,“X和Y患有流感”是特征模板,可以利用每对熟人进行实例化(爱丽丝和鲍勃,爱丽丝和克里斯,等等)。模板的所有实例的权值被“捆绑在一起”,从这个意义上讲,它们有同样的价值。也就是说,即便只有一个实例(整个网络),我们也可以进行推理。在非关联学习中,一个模型的参数仅以一种方式捆绑——越过所有独立例子(比如所有被诊断过的病人)。在关联学习中,每个我们创造的特征模板将捆绑所有实例的参数。

我们不仅限于成对的或者单独的特征。脸书想预测哪些人是你的朋友,这样才能为你推荐朋友,为此它可以利用“朋友的朋友可能成为朋友”这个规则,因为每个实例都涉及三个人。比如,如果爱丽丝和鲍勃是朋友,而鲍勃和克里斯也是朋友,那么爱丽丝和克里斯有可能成为朋友。H·L·门肯说过一句妙语:如果一个人挣的钱比他的妻子的妹妹的丈夫要多,那么他就是富有的。这句话涉及四个人。这些规则中的每一条都可以变成关联模型中的特征模板,而在特征出现在数据中的频率的基础上,可以确定它的一个权值。正如在马尔科夫网络中那样,特征也可以通过数据确定。

关联学习算法可以从一个网络推广到另一个网络(比如确定流感如何在亚特兰大传播的模型,然后在波士顿运用),它们也可以在多个网络上学习(比如亚特兰大和波士顿,假设亚特兰大没有人和波士顿人有联系)。不像“常规”学习,这里所有的例子必须有同等数量的属性。在关联学习中,网络可以在大小方面有所不同。同样的模板,较大的网络会比较小的网络有更多的实例。当然,从较小的网络到较大的网络的推广可能准确,也可能不准确,需要指出的是,没有什么会阻止它。从局部上看,大型网络往往和小型网络的表现没有差异。

关联学习算法能达到的最佳效果就是让懒散的老师变得勤奋。对于普通分类器来说,没有归类的例子毫无用处。如果我只知道病人的症状,却不知道诊断结果,那么这对我学习看病毫无帮助。如果我知道患者的一些朋友感染了流感,那么可能间接证明他也感染了流感。在一个网络中确诊几个人,然后将这些诊断结果推测到他们的朋友,以及他们朋友的朋友身上,这就是接下来诊断所有人的最佳做法。推测出来的诊断结果可能有干扰因素,但关于症状如何与流感相关联的整体统计,与只有几个诊断结果可利用相比,前者要准确和完整得多。孩子很擅长充分利用他们受到的分散式监督(只要不选择忽略它),关联学习算法也有部分这样的能力。

然而,这种力量也是要付出代价的。在普通分类器中,比如决策树或者感知器,从实体的属性推断出其类别,这就涉及几次查找工作和一些计算。在一个网络中,每个节点的类别间接取决于所有其他节点,而我们不可以孤立地对其进行推断。我们可以求助于同样用于贝叶斯网络的推理技术,比如环路信念传播或者MCMC,但数值范围是不一样的。典型的贝叶斯网络可能会有几千个变量,但典型的社交网络却有数百万个节点甚至更多。幸运的是,因为网络模型由许多有相同权值的相同特征不断重复形成,我们往往可以将网络压缩变成“超节点”,每个超节点由许多节点组成。我们知道这些节点有相同的概率,而且会解决许多更细小的问题,结果也完全相同。

关联学习有悠久的历史,其历史可以至少追溯到20世纪70年代,以及符号学派技巧(如逆向演绎)。但随着互联网的出现,它需要新的动力。突然之间,网络变得无处不在,而对网络进行模仿变得刻不容缓。我发现有一个特别有趣的现象——口碑传播。信息如何在社交网络中传播?我们可否测量每个成员的影响力,然后将目标确定在数量够多、影响力最大的成员身上,以开启一轮口头传播?我和学生里特·理查森一起设计了一种算法就能够做到这一点。我们将其运用到Epinions网页(一个产品评论网站)上,可以允许成员说出他们信任谁的评论。研究发现之一是,向单个最有影响力的成员营销产品(该成员被许多拥护者的信任,而这些拥护者也被自身的拥护者信任等)和对1/3的所有成员进行推销相比,效果是一样的。随之而来的是一大批关于此问题的研究。此后,我就已经开始将关联学习应用到其他许多领域,包括预测谁会在社交网络中形成链接、整合数据库、使机器人能够绘制周围环境的地图。

如果你想了解世界如何运转,那么关联学习就是很好的工具。在艾萨克·阿西莫夫的《基地》一书中,科学家哈里·谢顿可以从数学角度预测人类的未来,从而将其从衰落中拯救出来。此外,保罗·克鲁格曼也承认,就是这个诱人的梦想,让他成为一名经济学家。依据谢顿的观点,人类就像气体中的分子,大数法则保证,即使个人无法预测,整个社会却可以。关联学习表明事实并非如此,如果人类是独立的,每个人孤立地做决定,社会的确就会变得可预测,因为所有那些随意的决定会合计为一个相当恒定的均值。但当人们互动时,较大的集合体会比较小的集合体更不那么可预测。如果信心和恐惧可以传染,每种情绪都会主导一段时间,但常常整个社会会从这种情绪转化到另一种情绪。虽然如此,并不是所有消息都是坏的。如果我们可以估计人们之间相互影响的强度,也就可以估计这种转换在多久之后会发生,即使这是第一次转换。换个说法,黑天鹅并不一定不可预测。

对于大数据,抱怨较普遍的就是拥有的数据越多,就越容易在大数据中发现伪模式。如果数据仅仅是一大组分离的实体,那么这一点可能正确;但如果它们相互关联,情况就不一样了。例如,那些利用数据挖掘来逮捕恐怖分子的批评者认为,除了伦理问题,这绝不会起作用,因为无辜的人太多,而恐怖分子却极少,因此它要么会引发过多的错误警报,要么不会逮捕任何人。当某个游客或者恐怖分子在划定爆炸地点的范围时,有人对纽约市政厅进行录像了吗?购买大量硝酸铵的人是农民还是爆炸制造者?所有这些人单独看都很无辜,但如果“游客”和“农民”一直保持密切的电话联系,而后者只是开着他的拉登皮卡进入曼哈顿,可能是时候需要一个人来盯紧他了。美国国家安全局喜欢搜寻谁给谁打过电话的记录,这不仅仅因为可以说这是合法的,而且因为对于预测算法来说,它们往往比通话内容的信息量更大,而通话内容需要人进行分析才能被理解。

除了社交网络,关联学习的杀手级应用正在了解活细胞如何运作。一个细胞是一个复杂的代谢网络,在这个过程中,基因为蛋白质编码,蛋白质又调节其他基因,还有一长串的化学反应,而产物会从这个细胞器运输到另一个细胞器。独立的实体,孤立地进行工作,找不到任何踪影。治癌药物必须在不干扰正常细胞的情况下,打破癌细胞的运转。如果我们有两者准确的关联模型,就可以在计算机中尝试许多不同的药物,让模型推断它们好的以及不好的效果,然后只将最好的留下,先从体外,最后再从体内进行测试。

就像人类的记忆,关联学习编织了一个丰富的关联网。它连接认知,诸如罗比之类的机器人可以通过聚类和维数简约来获取认知并习得技能。它可以通过强化和聚类来学习,利用由阅读得来的更高水平的知识去学校与人类进行互动。关联学习是最后一块拼图,也是我们需要为自己的炼金术提供的最后的原料。现在是时候重建实验室,使所有这些元素变成终极算法了。