购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第1章
学习的7个定义

什么是学习?我的第一个,也是最笼统的关于学习的定义是:学习是在脑中形成外部世界的内部模型。

你可能没有意识到,但是你的脑已经存储了数以千计的外部世界的内部模型。它们就像微缩模型,或多或少地忠于它们所代表的现实。打个比方,我们所有人的脑中都有一张关于自己家和附近街区的思维地图。我们要做的就是闭上眼睛,调动思维来回想它们。当然,没有人生来就拥有这种思维地图,我们必须通过学习来获得它。

这类心理模型非常丰富,而且绝大多数是在无意识中生成的,超出了我们的想象。例如,你有一个庞大的英语心理模型帮助你理解你所阅读的词语,你可以猜测出来plastovski不是英语单词、swoon和wistful是,而dragostan有可能是。你的脑中还有多个有关身体的模型,用于绘制你四肢的位置,并引导它们保持平衡。某些模型编码了你对物体的认知和你与他们的互动,比如如何握笔、写字或骑自行车。你的脑中甚至还有记录别人思想的模型,类似一个庞大的心理目录,里面有与你关系密切的人的信息,包括他们的外形、声音、品味和他们的怪癖。这些模型可以对我们周围的“宇宙”进行非常逼真的模拟。你有没有注意到,你的脑有时会投射出最真实的虚拟世界,在那里,你可以走动、跳舞、去到新的地方、进行愉快的对话或者感受到强烈的情感?这些都是你的梦境!令人着迷的是,我们梦境中出现的所有想法,无论它们多么复杂,都只是我们内在心理模型随意呈现的产物。

我们醒着的时候也在做真实世界的梦,脑不断地向外界投射假设和解释构成的框架。这是因为透射到我们视网膜上的每一个影像都是模棱两可的。例如,每当我们看到一个盘子时,投射到视网膜上的影像就与无限多的椭圆形兼容。我们看到的盘子是圆形的,事实上原始的感官数据是椭圆形,这是因为我们的脑提供了额外的数据,它已经了解到圆形是最有可能的解释。在幕后,我们的感官区域在不停地计算概率,只有最可能的模型才会进入我们的意识。正是脑的投射赋予来自我们感官的数据流以意义。假如没有内部模型,原始的感官输入是没有任何意义的。

学习使我们的脑能够抓住之前被遗漏的现实片段,并利用它来构建新的世界模型。这个现实片段可以是历史、生物学或城市地图等任何真实世界的存在。但我们的脑也会学习绘制我们身体内部的现实情况,就像我们学习协调我们的动作、集中注意力去拉小提琴一样。在这两种情况下,我们的脑都将一个新的外在现实内化了进来,它调整自己的回路,以适应一个之前没有接触过的领域。

当然,这样的调整必须恰到好处。学习的内核就在于它适应外部世界和纠正错误的能力。但是,当学习者在家附近迷路、从自行车上摔下来、输掉一盘棋或者拼错ecstasy时,他的脑怎么“知道”如何去更新内部模型呢?我们接下来将讲述7个关键的观点,它们是当今机器学习算法的核心。这些观点同样适用于我们脑的学习,是对“学习”的7个不同定义。

学习就是调整心理模型的参数

调整心理模型有时非常简单。例如,我们怎样才能把手伸向我们所看到的物体并抓住它呢?笛卡尔(René-Descartes)在17世纪时就已经推测出,我们的神经系统一定包含将视觉输入转化为肌肉命令的加工回路(见图1-1)。你可以尝试亲自体验一下:戴上别人的眼镜,最好是一副高度数的眼镜,抓东西;更好的方式是,戴一副能使你的视线向左偏移十几度的棱镜,然后试着抓住物体。 1 你会发现你的第一次尝试完全失败了,因为戴着眼镜,你的手会伸到你瞄准的物体的右边。多尝试几次,向左逐渐调整你的动作。通过不断地尝试和失败,你的动作会变得越来越精准,因为脑已经学会了纠正视线的偏差。现在,摘下眼镜试着抓住物体,你会惊讶地发现你的手伸错了方向,太靠左了!(见图1-1)

图1-1 学习就是调整心理模型的参数

学习是什么?学习就是根据外部反馈调整脑心理模型的参数。例如,a图中,学习用手指去瞄准以校正视觉和动作之间的偏差。每一次瞄准的错误都提供给脑有用的信息,继而慢慢缩小偏差。在神经回路中,虽然要校正的数字更大,但原理是一样的,辨识一个符号需要精细地调整几百万个神经联结。b图中,类似“8”的错误输出会回过头去反向传播,进而调整神经联结的数据,在下一次的尝试中改进输出。

到底发生了什么事?在刚刚短暂的学习期间,脑调整了它的内在视觉模式。此模式中对应视觉和身体方向之间偏移的参数被重新设置了。在这个通过试错进行重新校准的过程中,脑所做的事情与猎人为了调整他的步枪瞄准镜所做的事情类似:通过试射来调整他的瞄准镜,最终精准瞄准猎物。这种学习非常快,几次尝试就足以校正视觉和动作之间的偏差。然而,这个新的参数与旧的并不兼容,因此当我们摘掉眼镜恢复正常视力时,又会犯错。

不可否认,这种类型的学习有点特殊,因为它只需要调整与视觉角度相关的一个参数,大部分的学习比这精细得多,需要调整数十个、数百个甚至数千个参数,而我们的脑回路中有几百万个参数(每一个突触就是一个参数)。不过原则是相同的,即学习是在无数可能的内部模型中寻找最符合外部世界状态的可能性。

一个在东京出生的婴儿,在往后的两三年里,他的语言内部模型将不得不调整为符合日语的模型。这个婴儿的脑就像一台机器,内含数以百万计的回路设置。听觉层面的设置决定了日语中使用的辅音和元音,及其允许的组合规则。一个出生在日本家庭的婴儿必须知道哪些音素构成了日本语言,以及这些音素之间的区别。例如,有一个参数是区分R和L之间的发音,这在英语中非常关键,在日语中却无关紧要。在日语中,“Bill Clinton’s election”(比尔·克林顿的选举)和“Bill Clinton’s erection”(比尔·克林顿的勃起)没有任何区别……每个婴儿必须掌握一组固定的参数,而这些参数共同指定哪些类别的语音与他的母语相关。

从语音到词汇、语法到语义,每个层面的学习都重复了类似的过程。脑的组织结构是多层级的,一个模型嵌套在另一个模型中,就像俄罗斯套娃一样。学习就是用输入的数据去设置每一个层级结构中的参数。让我们看一个高级范例——语法规则的习得。在英语和日语的学习中,婴儿必须学会的一个关键是词序。在一个有主语、谓语和直接宾语的标准句子中,英语句式为“主语+谓语+宾语”:“John+eats+an apple(约翰吃了一个苹果)”。然而在日语中,最常见的句式为“主语+宾语+谓语”:“约翰+一个苹果+吃”。值得注意的是,这个日语句式中还会因介词而改变。比如,“My uncle wants to work in Boston”变成了“Uncle my,Boston in,work wants”。这句话就变得与《星球大战》中尤达大师所说的话一样难懂。 (2) 但对一个讲日语的人来说,这句话一点问题也没有。

有趣的是,这种倒装句并不是相互独立的。语言学家认为它们来自一个名为“中心词位置”的参数:一个短语的中心词,在英语中总是位于第一位(在巴黎,我的叔叔,想生活),但在日语中被放在了最后(生活想,叔叔我的,巴黎在)。这个二元参数可以区分许多语言,甚至包括一些历史上没有关联的语言,例如纳瓦荷语遵循的规则就与日语相同。孩子为了学习英语或日语,必须学会如何设置他内部语言模型中的中心词位置参数。

学习是在利用组合爆炸

语言的学习真的可以被简单地归结为一些参数吗?如果这很难让人信服,那是因为我们无法想象当我们增加可调参数的数量时,会产生如此多的可能性。这就是所谓的“组合爆炸”(combinatorial explosion)——当你将极少数的可能性参数组合在一起时,参数的数量就会呈现指数级的增长。假设世界上所有语言的语法可以用大约50个二元参数来表示,就会产生2 50 种组合,也就是超过1 000万亿种可能的语言,或者说1后面跟着15个0!目前世界上的3 000种语言的句法规则都能很轻松地被放入这个巨大的空间。然而,在我们的脑中,可调节的参数不只有50个,其数量大得惊人:80多亿个神经元,每个神经元大约有1万个突触相互联结,联结的强度各不相同,所创造的心智表征空间可以说是无限大的。

人类语言的各个层级都在大量利用这些组合。例如,脑词库是我们掌握的单词以及它们的内在模式。英语母语者一般会掌握大约5万个单词。这些单词构成了一本巨大的词典,但我们只花了大约10年时间就学会了它们,这是因为我们可以分解学习问题。假设这5万个单词中的每个单词平均只有2个音节,每个音节由3个音素组成,这些音素来自英语的44个音素的组合,那么这些单词的二进制编码需要不到200万个基本的二元选择(即“位”,其值是0或1)。换句话说,我们脑词库中的所有知识都可以放在计算机中一个250千字节(每个字节包含8个位)的小文件夹中。

如果我们排除掉单词的多义的问题,脑词库可以被压缩到更小的容积。随机抽取6个字母,如xfdrga,它们无法组成英语单词,真正的单词是由多个音节按一定规则组成的,像构建金字塔一样。语言的各个层级都是如此,句子是词的规则集合,词是音节的规则集合,音节是音素的规则集合。组合既是巨大的(可以在几十个甚至数百个元素中选择),同时又是有限制的(只有某些特定组合才会成立)。学习一门语言就必须要知道在各个层级上界定这些组合的参数。

总而言之,人脑通过创建一个多层分级的模型来分解学习问题。这在语言学习中尤其明显——从基本的音素到整个句子,甚至是一整段话。但所有的感觉系统中都能重现同样的层级分解原理。一些脑区只负责低层级的形态,它们在非常短的时间内通过一个非常小的空间窗口来观察世界,从而分析最细微的形态。例如,初级视觉区域是大脑皮层中第一个接受视觉输入的地方,该区域每个神经元只分析视网膜的一小部分。它通过“针孔”窥视外面的世界,因此只能发现非常低层级的规律,如是否存在会移动的斜线等。数以百万计的神经元在视网膜的各个地方做着同样的工作,它们的输出成为下一个层级的输入,从而检测“规则的规则”,以此类推。在每下一个层级上,规模都在扩大。人脑由此逐渐在越来越大的时间和空间范围内寻找规律,从这种层级结构中衍生出检测日益复杂的对象或概念的能力,从一条线、一根手指,到一双手、一个手臂,到一个人的身体……两个,两个人面对面,两个人面对面在握手……原来这是特朗普和马克龙的第一次会面!

学习就是将错误降到最低

被我们称为“人工神经网络”的计算机算法,其灵感源自大脑皮层级性组织。它有着和大脑皮层一样的金字塔般的连续层级结构,每一层都具有比前一层更深层次的规律。这些连续的层级以越来越深的方式处理输入的数据,因此它们也被称为“深度网络”。每一层级本身只能侦察外部世界的极其微小的一部分,比如在数学家们经常谈论的一个线性分类的问题中,每1个神经元只能将数据分成A和B两类,通过画一条直线串起它们。然而,当你将各个层级组合在一起时,你就会得到一个非常强大的学习工具,它能够侦察复杂的结构并通过调节自己以处理各种不同的问题。从这个意义上说,计算机芯片的进步使得今天的人工神经网络变成了深度网络,它们包含了几十个连续的层级。而距离感官输入越远的层级,其洞察力就越强,识别抽象本质的能力也就越强。

让我们来看一下法国卷积神经网络之父杨立昆(Yann LeCun)创造的LeNet算法(见彩图2) 2 。早在20世纪90年代,卷积神经网络在识别手写字符方面就取得了非凡的成绩。多年来,加拿大邮政部门用它实现了手写邮政编码的智能化处理。那它是如何工作的呢?该算法将书面字符以像素影像的形式输入其中,再以10个可能数字或26个可能字母中的最佳选择输出。这个人工神经网络包含了许多联结在一起的层级结构,类似我们脑的神经网络。第一层级直接与影像相连,应用简单的过滤器识别直线和曲线。更高的层级则包含更广泛和更复杂的过滤器,可以识别图像中越来越多的构成,比如:2的曲线、O的环、Z的平行线……如此直至输出层。LeNet算法可以对字符做出反应,但它不管位置、字体或大小写,只管神经元之间的联结,而且这些过程是自动化的。一旦这些联结被算法自动调整,每个神经元就会用它的过滤器去界定要处理的内容。这就是为什么一个神经元对数字2有反应而另一个对数字3有反应。

彩图2

学习是找出当下问题所适合的表征层级,在卷积神经网络LeNet算法中,它通过调整每个层级的几百万个参数来辨识真实世界的一部分。在最低的层级,神经元只对最基本的特质敏感,如线条、方向和质地等。当顺着层级逐次延伸向上,神经元就会对比较复杂的形状做出响应,包括房子、眼睛和昆虫等。

那么,这数百万个联结是如何调整的呢?它就像前面提过的棱镜的例子一样。在每一次试验中,网络都会给出一个是否出错的反馈,它再尝试调整参数,以便在下一次试验中避免同样的错误。每一个错误的答案都提供了有价值的信息。通过类似前文提到的手太靠右或太靠左这样的正负反馈,系统会逐步确认怎么做才能成功。通过回溯错误的根源,机器会校正参数的设置,以避免错误的发生。

让我们再来看看猎人是如何调整步枪瞄准镜的,这个过程简单原始。猎人射击,发现他瞄准的方向距目标向右偏离了5厘米,由此他获得了关于误差幅度(5厘米)和误差方向(向右偏)的重要信息。这些信息给了他调整步枪瞄准镜的方向。只要他稍微聪明一点儿,就能推断出修正方向:子弹偏右了,他应该把瞄准镜向左偏移一点儿。他也可以随意调整,看看把瞄准镜向右调时偏差是增加还是减少。以这种方式反复试错,猎人就会逐渐发现减小目标和实际射击点之间的差距的规律。为了最大限度地提高准度,猎人在调整瞄准镜的过程中不自知地应用了一种学习算法,他的脑计算了数学家所说的系统的“导数”或“梯度”,即“梯度下降算法”(gradient descent algorithm):将步枪的瞄准镜朝最有效的方向移动,以降低出错的概率。

尽管现代人工智能使用的人工神经网络大多有数百万的输入、输出和可调整的参数,但其运行模式跟前面提到的猎人一样:先观察到自己的错误,然后用错误校正内在模式,使之朝着它们认为错误减少的方向发展。在许多情况下,这样的学习受到严密的监控。我们明确地告诉人工神经网络它应该在输出端激活哪个答案(比如“这是1,而不是7”),我们也很清楚如果参数引发错误,应该朝哪个方向调整它们(通过数学计算,可以准确地知道当人工神经网络频繁地将数字1激活输出为7时,应该修改哪些联结)。在机器学习的术语中,这种情况被称为“监督学习”(人被看作机器的监督者,知道机器必须给出的正确答案)和“误差反向传播”(错误信号会被发送回人工神经网络得以修改其参数)。

程序很简单:我试着回答,被告知我的答案是错误的,我测算错误偏差,然后调整参数以纠正错误,逐步调整,每一步只往正确的方向上做一点小小的修正。这就是为什么计算机的学习会很慢:学习一项复杂的活动,比如玩“俄罗斯方块”,计算机需要运行这套程序数千次、数百万次,甚至数十亿次才能学会。在一个包含大量可调参数的空间中,计算机可能需要很长时间才能找到每个“螺母”和“螺栓”的最佳设置。

最早的人工神经网络出现在20世纪80年代,那时的网络就已经按照这种逐步纠错的规则运行了。现在,计算技术的进步已经将这一运行规则扩展到了包含数亿个可调联结的深度神经网络。这些深度神经网络由一系列连续的层级组成,每个层级对应处理它的问题。例如彩图2展示的LeNet系统,该系统派生于杨立昆最先提出的LeNet体系结构,杨立昆因此赢得了最知名的国际影像识别大赛的冠军。在接触数十亿张影像后,这个系统将它们分成了1 000个不同的类别,包括脸、风景、船、车、狗、昆虫、花、路标等。系统结构周边的每个层级都与真实世界的某个具体的层面相对应:低层级的单位会选择性地对线条或质地做出响应,层级越高,就会有越多的神经元对复杂的输入起反应,如对几何图形(圆形、曲线、星形……)、物体的部件(裤子口袋、车门把手、一双眼睛……),甚至对整个物体(建筑物、脸、蜘蛛……)做出响应。

梯度下降算法的研究者发现,将误差最小化这些模式对影像分类是最有用的。但是,如果同样的网络接触到书本段落或乐谱,它就要重新学习识别字母、音符或任何在新环境中出现的形状。彩图3展示了这种类型的网络如何自发调整以识别数千个手写数字。 4 在最低级别,数据是混合的:有些影像表面上相似,但应该加以区分,如3和8;而一些看起来完全不同的影像最终却必须放在同一个分类中,如数字8的许多不同字体(最上面的环有些是打开的,有些是闭合的)。人工神经网络在每个层级运行过程中不断抽象化,直到同种字符的所有实例被准确地分组。通过将误差降低,它发现了与手写数字识别问题最相关的表征的层级结构。事实上,仅仅通过纠正自己的错误,就能发现一整套解决周边问题的侦察方法,这是相当了不起的。

彩图3

一个高层级神经网络如何学会将我们手写的数字进行分类?这是一项困难的工作,因为每个数字可以有几百种不同的写法。在这个网络的初级层级(右下图),人工网络神经元会混淆看起来很相似的数字,如9和4。随着层级的升高,神经元可以成功地将同一个数字的图像集中在一起并区分出来。

今天,通过误差反向传播进行学习仍然是许多计算机应用程序的核心。它是驱动智能手机轻松识别声音、智能汽车快速感知行人和路标的引擎。在这方面,人脑也在使用类似的算法。但是,误差反向传播有多种形态。人工智能领域在过去30多年里取得了巨大的进步,研究人员发现了许多促进计算机学习的技巧。我们现在就来回顾它们——正如我们将看到的,它们也告诉了我们很多关于我们自身及我们的学习方式的知识。

学习就是探索各种可能性

前面讲述的纠错过程的问题之一是,它可能会卡在一组不是最优的参数上。想象一下,一颗高尔夫球在草坪上沿着最陡峭的斜坡滚动,它可能会被卡在草地上的一个小凹陷里,无法到达整个场地的最低点,这个最低点就是全局最优解(absolute optimum)。同样,梯度下降算法有时会卡在一个它无法退出的点上,这被称为“局部最小值”(local minimum),它是参数空间中的一口井,是学习算法被困住后无法逃脱的陷阱,此时,学习陷入停滞,因为所有的改变似乎都适得其反,每一次的改变都会增加错误率。这个系统觉得它已经学到了所有它能学到的东西,以至于对仍然存在的更好的设置视而不见,哪怕这些设置在参数空间中近在咫尺。梯度下降算法无法“看到”它们,因为它拒绝上坡,不愿意越过眼前的山到达另一个下坡。由于“目光短浅”,它只在距离起点一小段距离的地方探险,因此错过了更遥远但更好的参数配置。

这个问题对你来说是不是太抽象了?来看一下具体的情况。你去食品市场购物,在那里你花了一些时间寻找最便宜的特卖品。沿着过道,你走过第一个卖家摊位(他家产品的价格似乎过高),避开第二家(他家产品一直都很贵),最后停在了第三家,他家产品似乎比前两家便宜得多。但是,谁能说隔着一条过道,别家产品的价格会不会更诱人呢?专注于当下最优价格并不能保证找到全市场最优价格。

计算机科学家经常面临这一困难,他们会使用一整套的算法解决它。这些算法中的大多数都是在寻找最佳参数的过程中引入一点随机性(randomness)。原理很简单,与其只关注市场的一条通道,何不随意逛一逛;与其让高尔夫球随意地沿着斜坡滚下来,何不拿起来摇晃一下再扔下去,以减少落入陷阱的概率。有时,随机搜索算法(stochastic search algorithms)会尝试一个更远且部分随机的设置,这样,如果有更好的解决方案可以触及,就会被算法找到。在实践中,人们可以通过各种方式引入一定程度的随机性到设定中,或更新参数使训练范例的呈现顺序多样化,或在数据中添加一些噪声,或随机选择一部分联结来用,所有这些方法都会使学习的算法更加健全。

一些机器学习算法也会从达尔文的进化算法中去寻找灵感。比如在参数优化的过程中,基于之前的解决方案引入突变和随机交叉。在生物学中,必须小心控制突变的速度,才不会浪费时间或制造出危险的物种来。

机器学习算法亦是如此,灵感来自锻造技术。为了锻造一把坚不可摧的剑,铁匠会通过退火来优化金属的性能。他们将金属多次加热,每次加热的温度依次降低,以增加原子按规则结构排列的机会。这个技术现在已经被用到了计算机科学中,研究者采用虚拟的“温度”逐渐降低的方式,模拟退火的算法,在参数中引入随机性。随机性的概率起初会很高,但会逐渐下降,直到系统固定在一个最佳设置上。

计算机科学家发现这些算法非常有效,所以一些算法在进化过程中被内化到我们脑中也就不足为奇了。随机的探索、随机产生的好奇心和频繁的神经元放电都在智人的学习中扮演着重要的角色。无论我们是在玩“石头剪刀布”、在即兴创作爵士乐,还是在研究数学问题的可能解法,随机性都是至关重要的。孩子玩耍时就是在用大量的随机性在探索各种的可能性,那时他们已经进入学习模式了。而在晚上睡觉时,他们的脑会继续胡思乱想,直到突然想出一个最能解释他们白天经历的说法。在本书的第三部分,我将讨论半随机算法(semi-random algorithm),这种算法控制着孩子非凡的好奇心以及少数成年人的赤子之心。

学习是一种优化的奖励函数

还记得可以识别数字的LeNet系统吗?这种人工神经网络学习的前提是为其提供正确答案。对于每个输入的图像,它需要知道它对应的是10个可能数字中的哪一个。人工神经网络只能通过计算其响应和正确答案之间的偏差来进行自我纠正,这个过程被称为“监督学习”(supervised learning)。系统之外的监督者知道正确答案,并试图将其传输给机器。这种方法是有效的,但应该注意的是,这种提前知道正确答案的情况相当罕见。当幼儿学习走路时,没有人确切地告诉他们应该收缩哪块肌肉,他们收到的只有一次又一次的鼓励,直到不再跌倒。幼儿的学习完全是基于对结果的评估:我摔倒了,或者我终于走到了房间的另一边。人工智能面临着同样的“无监督学习”(unsupervised learning)问题。当一台机器学习玩电子游戏时,它被告知的唯一一件事情就是它必须努力获得最高分。没有人事先告诉它可以采取哪些具体行动来实现这一点。那么,它是如何迅速找到正确方法的呢?

科学家们发明了“强化学习”(reinforcement learning)来应对这一挑战。我们不向系统提供任何关于它必须做什么的细节(也没人知道该做什么),只是提供“奖励”,即一种量化分数形式的评估。 5 但更糟糕的是,机器可能会在延迟很长一段时间后才收到分数,远远滞后于它做决定的那一刻。谷歌的子公司DeepMind研发了一款能够下国际象棋、跳棋和围棋的机器,它使用的就是强化学习的原理。这个任务很艰巨,因为只有到最后一刻,系统才会收到唯一的表明输赢的奖励信号。在棋局进行过程中,系统不会收到任何反馈。那么,系统如何才能计算出每一步要做什么呢?而且,一旦揭晓了最终分数,机器如何回溯评估它前面做的决定呢?

计算机科学家发现的技巧是给机器编程,让它同时做两件事:行动和自我评估。自我评估被称为“评论者”,它的目标是尽可能准确地评估游戏的状态,以便预测最终的奖励。我是赢了还是输了?我处于势均力敌的状态还是快要输了?评论者可以让系统时时刻刻评估自己的行动,而不仅仅是在结束的时候得知结论。“行动者”的目标是使用这个评估来纠正自己。等等,我最好不要这么做,因为评论者认为这会增加我失败的概率。

一次又一次的反复试验后,行动者和评论者一起进步:一个专注于最有效的行动,另一个学习更敏锐地评估这些行动的结果。这个“行动者—评论者”组合被赋予了一种非凡的先见之明:在浩瀚的棋局海洋中,预测哪些行为可能会赢,哪些行为只会导致失败。

行动者与评论者的结合是当代人工智能最有效的策略之一。在层级化的神经网络的支持下,它创造了奇迹。早在20世纪80年代,它就使人工神经网络赢得了五子棋世界杯冠军。最近,DeepMind运用它研发了一个多功能人工神经网络,该网络可以学会所有类型的电子游戏,如超级马里奥和俄罗斯方块。 6 人们只需将图像的像素作为输入、可能的动作作为输出,并将游戏得分作为奖励函数,机器自己就能学会其他所有的细节。当它玩俄罗斯方块时,它会发现屏幕是由形状组成的,坠落的那个砖块是最重要的元素,各种动作可以改变它的方向和位置,最终将自己变成一个超级人造玩家。当它玩超级马里奥时,输入和奖励的变化教会它注意完全不同的设置:马里奥身体的像素是什么,他是如何移动的,敌人在哪里,墙壁是什么形状的,什么是门,什么是陷阱,什么是金币以及如何与每个元素互动。通过调整其参数,调节将各层级联结在一起的数百万个联结……这个人工神经网络掌握了所有游戏的需求,学习识别俄罗斯方块、吃豆人或刺猬索尼克里的各种形状。

教一台机器玩电子游戏有什么意义?2年后,DeepMind的工程师利用他们从玩游戏中学到的东西解决了一个至关重要的经济问题:谷歌应该如何优化其计算机服务器的管理以获得更大效益?二者所需的人工神经网络的结构基本相似,唯一需要改变的是输入(日期、时间、天气、国际事件、搜索请求、联结到每台服务器的人数等)、输出(在各大洲打开或关闭这个或那个服务器)和奖励功能(消耗更少的能源)。其结果是谷歌的电力消耗得以大幅缩减。在无数专业工程师已经优化了这些服务器的基础上,该神经网络还能替谷歌缩减高达40%的能源消耗,节省数千万美元。人工智能已经真正达到可以颠覆整个行业的水平了。

DeepMind之后又取得了更令人惊叹的成就,它的AlphaGo程序在围棋人机大战中击败了共获得18个世界冠军的李世石。直到现在,该事件依然被认为是人工智能领域的珠穆朗玛峰。 7 围棋比赛在一个19×19的方格棋盘上进行,有361个位子可以下黑白棋子,它的排列组合的数量如此之大,以至于系统地探索每个棋手未来可以落子的所有行动严格来说根本不可能。然而,强化学习让AlphaGo程序比任何人类棋手都能更好地识别有利和不利的组合。其中一个诀窍就是让程序与自己对打,就像棋手通过同时下白棋和下黑棋来进行训练一样。如此,在每一场比赛结束时,获胜的程序会强化自己的行动,而落败者会削减其步骤,但两种做法都让程序学会了更有效地评估自己的行动。

我们嘲笑电影《吹牛大王历险记》(The Adventures of Baron Munchausen)中的男爵,他愚蠢地试图通过提拉自己靴子上的扣带使自己飞起来。然而,在人工智能领域,蒙克豪森男爵的疯狂催生了一种神奇的“自举法”(bootstrapping)算法策略。该算法从缺乏知识支撑的毫无意义的架构开始,一点一点地慢慢成长为世界冠军,它所做的一切只是与自己较量而已。

通过让两个人工神经网络合作或者竞争来提高学习速度的方法使人工智能获得了长足的进步。最新的一个想法被称为“对抗性学习”(adversarial learning) 8 ,通过训练两个系统对抗让其中的一个系统成为专家(比如凡·高的画的鉴定专家),而另一个的唯一目标是让第一个系统失败(通过学习成为一个出色的伪造凡·高的画作的赝品大师)。第一个系统只要成功识别出凡·高的真迹就会获得奖励,而第二个系统只要成功骗过了第一个系统的“眼睛”就会获得奖励。这种对抗性学习算法同时产生了两种人工智能,一种是研究凡·高的权威,擅长通过最小的细节来鉴定一幅真正的画作;另一种是天才伪造者,能够绘制能愚弄最好的鉴赏专家的画作。

这种方法适用于人脑吗?我们的两个脑半球和众多的皮层下基底神经核也聚集了一大批“专家”,他们相互争斗、协调和评估。脑中的某些区域会模拟别人在做什么,它使我们可以预见和想象自己行为产生的结果,这些预想无比真实,堪比最好的伪造者,比如我们的记忆和想象可以让我们看到去年夏天游泳的海湾,或者我们在黑暗中抓住的门把手。有些脑区会学习批评其他脑区,它们不断地评估我们的能力,预测我们可能得到的奖惩,促使我们采取行动或保持沉默。我们还将看到元认知这个认识自我、评估自我、在心理上模拟如果我们这样做或那样做会发生什么的能力,元认知在人类学习中发挥着根本作用。我们自己形成的观点帮助我们进步,在某些情况下又会将我们锁在一个失败的恶性循环中。因此,将脑视为一群协作和竞争的专家的集合并无不妥。

学习限定了搜索空间

当代人工智能仍然面临着一个重大问题,那就是内部模型的参数越多,系统就越难找到最佳的调整方法。而在目前的人工神经网络中,搜索空间是巨大的。因此,计算机科学家不得不处理大规模的组合爆炸:在每个层级都有数以百万计的选择,而它们的组合是如此之多,系统不可能探索所有的选择。因此,学习有时会非常缓慢,需要在这片广阔的可能性地图中进行数十亿次尝试才能将系统推向正确的方向。在巨大的空间中,无论数据有多少,都会变得稀缺。这个问题被称为“维度诅咒”(curse of dimensionality),当你有数百万个潜在的杠杆需要撬动时,学习就会变得非常困难。

神经网络拥有的大量参数往往还会导致另外一个问题,这就是所谓的“过度拟合”(overfitting)或“过度学习”:系统拥有如此多的自由度,以至于它发现记住每个例子的所有细节比找出一个更普遍的规则来解释这些细节更容易。

正如计算机科学之父约翰·冯·诺伊曼(John von Neumann)的名言:“用4个参数我可以画出一头大象,用5个参数我可以让它甩动鼻子。”他认为拥有太多的自由参数可能是一种诅咒,因为仅仅通过记住每个细节来“过度拟合”各种数据太容易了,你不需要对大象这个物种有太多深入的了解,就可以将其归类为皮厚的动物。但这并不意味着系统捕捉到了所有重要的东西,自由参数过多不利于抽象化。虽然这个系统很容易学习,但它不能类化到新的情境中去,实现举一反三。然而,这种泛化正是学习的关键。一台机器能够识别它之前看过的画面,或者赢得它曾经下过的围棋游戏,但这有什么意义呢?显然,真正的目标是它可以识别任何一张照片、战胜任何一名围棋玩家,无论情境是熟悉的还是陌生的。

当然,计算机科学家正在研究这些问题的各种解决方案。简化模型是既能加速学习又能提高泛化能力的最有效的干预措施之一。只要需要调整的参数数量减少,就可以迫使系统寻找更普遍的解决方案。这是杨立昆发明卷积神经网络的关键灵感,卷积神经网络是一种人工智能学习设备,在图像识别领域中应用颇广。 9 他的想法很简单,为了识别图片中的物体,需要在图片的各个位置进行同样的加工。例如,要识别一张照片中的所有人脸,就应该对图片的每个部分应用相同的算法,包括寻找椭圆形、一双眼睛等。没有必要在视网膜的每个点上学习不同的模型,在一个地方学到的东西应该可以在其他地方重复使用才对。

在学习过程中,杨立昆的卷积神经网络将它们从给定区域学到的东西应用到了整个网络的每个层级,以及更大的范围。因此,需要学习的参数数量就少了很多。总的来说,系统只需调整它应用于所有地方的单个过滤器,而无需为图像中的每个位置调整过多不同的联结。这个简单的技巧极大地提高了图像识别系统的性能,特别是对新图像的泛化。原因很简单,在一张新图像上运行的算法得益于它从所见过的每一张照片的每个点上获得的庞大经验。泛化还加快了学习的速度,因为机器只需要探索视觉模型的一个子集即可。在学习之前,它已经知道关于这个世界的一个重要原则:相同的对象可以出现在图像的任何位置。

此技巧可推广到许多其他领域。比如,要识别语音,就必须对说话人的具体声音进行抽象化。实现方法是通过强制人工神经网络在不同声音频段使用相同的联结,不管这个声音是低还是高。减少必须调整的参数数量有两个好处,即加快学习速度和更好地对新语音的泛化。这就是你的智能手机能够响应你的声音的原因。

学习是投射先验假设

杨立昆的策略诠释了一个更普遍的概念:利用先天知识。卷积神经网络之所以比其他类型的神经网络学习得更好更快,是因为它不会学习所有东西。它在自己的架构中融入了一个强有力的假设,那就是在一个地方学到的东西可以推广到其他地方。

图像识别的主要问题在于它的不变性:我要识别一张脸,不管它的位置和大小,也不管它移动到了右边或左边、更远或更近。这是一个挑战,但同时也是一个非常严格的限制,即我可以期待同样的线索帮助我在空间的任何地方识别出一张脸。通过在任何地方复制相同的算法,卷积神经网络有效地利用了这一限制,并将其集成到了自己的结构中。在开始学习之前,系统就已经“知道”了视觉世界的关键属性。它无须学习不变性,而是将其作为先验假设,并以此来缩小学习空间,真的很聪明!

这里我想说的是,先天和后天本不应该对立。纯粹的、没有任何先天限制的情况下的学习是根本不存在的。任何学习的算法都或多或少包含着一些关于要学习的领域的先验假设。与其试图从头开始学习所有东西,不如依赖先验假设,这些假设清楚地描述了必须探索的领域的基本规律,并将这些规律集成到系统的体系结构中,这要高效得多。先验假设越多,学习速度就越快(当然,前提是这些假设是正确的),这是普遍真理。如果你认为AlphaGo程序是从零开始训练自己跟自己下围棋的,那就大错特错了。它最初的表征包括棋盘的形貌和对称性,将搜索空间缩小到了原有的1/8。

我们的脑也是由各种各样的假设塑造的。我们在后面将看到,婴儿出生时,脑已经井然有序,而且储备了渊博的知识。他们隐约地知道,物体只有在被推动时才会移动、固体之间不会相互穿透,他们还知道世界上有许多陌生的实体,如会说话和移动的人。这些知识不需要学习,因为它们在人类生活的任何地方都是如此,我们的基因组将它们作为固定回路置入脑,从而规范和加快了学习。婴儿不必学习世界的一切,因为他们的脑中充满了先天的规范,只有无法预测的具体参数(如脸型、虹膜颜色、语调和个人品位)才有待后天习得。

再说一次,先天和后天不必对立起来。婴儿的脑之所以知道人和无生命物体的区别,那是因为它已经学会了这一点。不是在出生的最初几天学会的,而是在数百万年的进化过程中学会的。自然选择实际上是一种学习算法,一个令人难以置信的强大程序,它已经运行了数亿年,置入了数十亿台学习机器(即曾经存在过的每一种生物)。 10 我们是这个深不可测的智慧的继承者。通过进化的试验和失败,我们的基因组已经将我们之前几代人的知识内化。这种与生俱来的知识与我们在有生之年学到的具体事实是不同的,它更抽象,因为它使我们的神经网络偏向于尊重基本的自然规律。

简而言之,在怀孕期间,我们的基因奠定了脑架构的基础,通过对探索的空间大小施加限制来指导和加速随后的学习。在计算机科学术语中,我们可以说基因预置了脑的“超参数”:指定层数、神经元类型、它们相互联结的一般形状、它们是否在视网膜上的任何一点复制等高水平变量。因为这些变量中的许多都储存在我们的基因组中,我们不再需要学习它们:我们的物种在进化过程中已将它们内化。

因此,我们的脑不是简单被动地接受感官输入。从一开始,它就已经拥有了一套抽象的假设,一套通过达尔文进化算法筛选积累起来的智慧,现在它把这些智慧投射到外部世界。并非所有的科学家都同意这一观点,但我认为这是一个中心论点:当今许多人工神经网络背后的幼稚经验主义哲学是错误的。他们认为我们的脑回路生来就是杂乱无章的,没有任何知识,这些回路之后会受到环境的影响,这根本是不正确的。在人和机器中,学习总是从一组先验假设开始,这些假设被投射到输入的数据上,系统从这些假设中选择最适合当前环境的假设。正如让-皮埃尔·尚热(Jean-Pierre Changeux)在他1985年出版的畅销书《神经人》( Neuronal Man )中所说:“学习就是消除不对的信息。” KJUjub8EGJTAoanEg9R8CjAWWoITLgDWXSpn2wrL64ybUPPsG7uF3BdKWfBz97aL

点击中间区域
呼出菜单
上一章
目录
下一章
×