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

智慧的疆界 从图灵机到人工智能

456 个 PDF 物理页 · 本页显示文件第 271–280 页

PDF 物理页索引 270

文件中的第 271 页 · 印刷页码:255

误差反向传播算法很“聪明”地规避了这种冗余,它对于每个路径只访问一次就能求得顶点对所有下层节点的偏导值。为了方便理解,读者可以想象以下场景:数据在神经网络的输入层中流入后,犹如一股水流在分支茂密的树状管道中流淌,现在水流的方向是从所有的叶子分支(输入层)同时向根节点(输出层)流动汇聚的,每一个非叶子节点的水流都将由若干条支流汇聚而来,从这个节点出去之后的水流,可以视为它之前每一条支流相加的结果,这个路径便等同于汇聚前的每一条支流共用的路径。但是若反过来水流方向是从唯一的根节点(输出层)开始向叶子节点(输入层)流动的话,水流会在流过每个节点时自动分配成若干条支流流向下一级节点,这样每条路径上的水流便没有汇聚的过程,解决了共用路径的问题。输入数据的处理是正向的,但误差反向传播算法是把每一层节点的梯度向量从输出层节点开始逐层向输入层节点推导,每一层的导数 $\frac { \partial E } { \partial x _ { i } }$ 都可以依靠其上一层的导数 $\frac { \partial E } { \partial x _ { j } }$ 来计算得出,而最后一层(输出层)的导数 $\frac { \partial E } { \partial y }$ 是我们已知的,它的值就是模型预测值与实际值之间的误差。将求导从正向模式转变为反向模式,就相当于改变了水流的流向。

按照这个思路,如图 7-8 所示,对于三层神经元中的某一个隐层神经元 $x _ { j }$ ,如果我们要计算出导数 $\frac { \partial E } { \partial w _ { i j } }$ 的话,应该意识到误差函数 E 会受到神经元 $x _ { j }$ 的输出值的影响,而权值 $w _ { i j }$ 是通过加权和 $S _ { j }$ 来影响 $x _ { j }$ 的输出的,即有以下公式:

$$
\cfrac { \partial E } { \partial w _ { i j } } = \cfrac { \partial E } { \partial x _ { j } } \enspace \cdot \enspace \frac { \partial x _ { j } } { \partial s _ { j } } \enspace \cdot \enspace \frac { \partial s _ { j } } { \partial w _ { i j } } = \cfrac { \partial E } { \partial x _ { j } } \enspace \cdot \enspace \partial ^ { ' } ( s _ { j } ) x _ { i }
$$

在这里,前一层的输出 $x _ { i }$ 是已知的,所以关键就在于 $\cdot \frac { \partial E } { \partial x _ { j } }$ 的计算,而前面提到了 $\frac { \partial E } { \partial x _ { j } }$ 是可以通过它后面的 $\frac { \partial E } { \partial x _ { k } }$ 得到的,如以下公式所示:

第 7 章 深度学习时代

255

PDF 物理页索引 271

文件中的第 272 页 · 印刷页码:256

$$
\frac { \partial E } { \partial x _ { j } } = \sum _ { k } \frac { \partial E } { \partial x _ { k } } \cdot \frac { \partial x _ { k } } { \partial s _ { k } } \cdot \frac { \partial s _ { k } } { \partial x _ { j } } { = } \sum _ { k } \frac { \partial E } { \partial x _ { k } } \cdot \triangledown \partial ^ { ' } ( s _ { k } ) w _ { j k }
$$

至此,网络中任意一个神经元的权值 $w _ { i j }$ 对整个网络输出误差的影响,都可以通过它下一层的输出值 $x _ { j }$ 、下一层的各个权值 $w _ { j k }$ 、下一层的加权和 $S _ { k }$ 这些参数计算求得,而这些参数全部都是上一轮计算过程已经计算出来的结果,可以直接运用,不需要像正向模式求导那样,重复计算每一条路径上的导数乘积之和,这就是误差反向传播算法的改进之处。

误差反向传播算法的提出,成功地解决了多层神经网络训练可行性的问题,不过,这也仅仅是神经网络复兴的第一步,距离全面复兴,走到今天深度学习的时代,还有一段漫长曲折的旅程。

7.5 深度学习

20 世纪 80 年代初,辛顿从爱丁堡大学博士毕业几年后,人工智能就迎来了它的第二次高潮。这一次高潮里,虽然连接主义学派多少获得了一些成果,如在 1982 年,约翰·霍普菲尔德(John Hopfield,1933—)提出了连续和离散的 Hopfield 神经网络模型,并采用全互联型神经网络尝试对非多项式复杂度的旅行商问题进行了求解,这个事件被认为是第二次人工智能热潮中连接主义重启的标志,但对于一直在神经网络领域默默耕耘的辛顿来说,并没有多少好时光来临的感觉。这个时代,符号主义学派才是人工智能舞台上的明星,名噪一时的专家系统、智能推理机等都属于符号主义的胜利。这一次人工智能的高潮只持续了短短几年时间,很快又进入了第二次寒冬,所有与人工智能有关的项目都再次沉寂,在高潮期没有获得多少收益的神经网络,则在寒冬期又受到以支持向量机为代表的其他新兴统计学习等方法的重创。

256

第三部分 第三波高潮

PDF 物理页索引 272

文件中的第 273 页 · 印刷页码:257

由于找不到合适的经费来源,辛顿在瑟赛克斯大学、加利福尼亚大学圣迭戈分校、卡内基梅隆大学、英国伦敦大学等多所大学工作过,最后终于在 2004年从加拿大高等研究院(Canadian Institute For Advanced Research,CIFAR)申请到了每年 50 万美元的经费支持,加拿大高等研究院可能是那时唯一还在支持神经网络研究的机构了,现在看来这是一笔收益惊人的投资。辛顿当时申请了研究课题为“神经计算和适应感知”的项目,虽然与其他知名的人工智能项目所得到的巨额资金相比,每年 50 万美元实在是一笔微薄的经费,但还是让辛顿在加拿大多伦多大学安顿下来,结束了飘摇不定的访问学者生涯。

一直到 2006 年,经过 30 多年的耕耘,辛顿在人工神经网络领域已经算是一位泰斗级的人物了,硕果累累,荣誉等身,且在 1998 年就被选为英国皇家学会院士。但辛顿在学术上的成就,还是抵不过大众脑海里“神经网络没有前途”的偏见,在很长的一段时间里,多伦多大学计算机系私下流行着一句对新生的警告:“不要去辛顿的实验室,那是没有前途的地方。”即便如此,辛顿也依然不为所动,仍坚持自己的神经网络研究方向没有丝毫动摇。据说为了给自己减压打气,他还养成了一种自我激励的特殊方法,每周发泄般大吼一次:“我发现大脑是怎样工作的啦!”这样的习惯,至今还一直保持着。在这 30 多年的时间里,神经网络相关学术论文很难得到发表,但辛顿仍坚持写了 200 多篇不同方法和方向的研究论文,这为后来神经网络的多点突破打下了坚实的基础。

假如只能选一件事情来代表辛顿对人工智能做出的最具价值的贡献的话,笔者的选择不是他发表的 200 多篇论文,不是对神经网络度过生存危机有非常巨大的意义和价值的误差反向传播算法,不是他与大卫·艾克利(DavidAckley,1947—)和特里·赛杰诺斯基(Terry Sejnowski,1947—)共同发明的“受限玻尔兹曼机”(Restricted Boltzmann Machine,RBM)<sup>○一</sup>,或者后来以受限玻尔兹曼机为基础进一步演化出来的深度信念网络,而是他 30 多年坚持不懈,开创了深度学习这门机器学习的分支,成功扭转了全世界对神经网络前景的看法,为后来的研究者打开了通向神经网络和机器学习新世界的大门。

第 7 章 深度学习时代

257

○一 辛顿本人的选择倒是这个,他在接受 deeplearning.ai 的访谈时称受限波尔兹曼机是迄今最令他感到兴奋和有价值的发明。

PDF 物理页索引 273

文件中的第 274 页 · 印刷页码:258

7.5.1 这是什么

“深度学习”一词今日可谓街头巷尾人人皆知,即使互联网的普及使得技术和知识的传播速度极大加快,但网络时代也只有极少数的技术名词能够被如此多人共同谈论和引用。同时,笔者也注意到一个现象,在谈及深度学习的人群里,大多数人都没能确切地理解这个名词所蕴含的真实意义,在相当大一部分人的观念里面,深度学习大概就是简单等价于隐层数量比较多的神经网络。本节我们就从“深度学习是什么”这个话题说起。

关于什么是深度学习这个问题,在网上直接搜索出来的结果对普通人理解这是什么大概是没有多少帮助的,维基百科对“深度学习”的定义阅读起来就令人感觉非常学术化,且抽象拗口,如图 7-9 所示。

既然学术化的语言不好懂,那就不去纠结什么学术了,我们还是从深度学习的创建、发展过程来理解它。

辛顿在获得博士学位后,便一直致力于计算机模拟人类大脑的研究。总体而言,他研究的方向是将神经网络算法的演算过程与人脑思维方式相比拟,希望让那些机器像一个蹒跚学步的孩子一样自我进步,以此模仿大脑的神经网络形式。这种思想其实算不上是创新了,历史上已有多位计算机学家、心理学家和神经科学家尝试过,在本书出现过的主角人物中,从最早的图灵,到后来的皮茨、麦卡洛克,再到现在的辛顿,都有过这样的想法或实践。可随着神经生理学、脑科学和人工智能的发展,辛顿的工作比起前人的还是有

258

第三部分 第三波高潮

PDF 物理页索引 274

文件中的第 275 页 · 印刷页码:259

关键的创新之处的。

不知读者对第 4 章里皮茨和麦卡洛克所做的“蛙眼实验”是否还有印象,在 1958 年,与皮茨和麦卡洛克进行蛙眼实验仅相差不到两年时间,加拿大神经生物学家大卫·休伯尔(David Hubel,1926—2013)和美国神经生物学家托斯坦·威泽尔(Torsten Wiesel,1924—)在约翰·霍普金斯大学的实验室里也进行着一场过程与蛙眼实验几乎一模一样的脑科学实验,只是他们把实验的对象从青蛙换成了小猫。

两个实验的过程虽然有很多相似的地方,但是休伯尔和威泽尔的实验目标与皮茨、麦卡洛克的完全不同:皮茨和麦卡洛克希望通过蛙眼实验证实大脑应当是人体信息处理的唯一器官,思考是集中在大脑中完成的,眼睛不会参与认知;而休伯尔和威泽尔希望证明人脑的认知是分层的。

具体来说,休伯尔和威泽尔的实验是研究瞳孔区域与大脑皮层神经元的对应关系,他们期望能够证明一个猜测:位于后脑皮层的不同视觉神经元与瞳孔所受刺激之间存在某种对应关系。一旦瞳孔受到某种刺激,后脑皮层的某一部分神经元就会活跃。他们在猫的后脑头骨上开了一个 3 毫米的小洞,向洞里插入电极,测量神经元的活跃程度。经历了很多天反复的、枯燥的实验,同时牺牲了很多只可怜的小猫后,他们终于发现了一种被命名为“方向选择性细胞”(Orientation Selective Cell)的神经元细胞。当瞳孔发现了眼前的物体的边缘,而且这个边缘指向某个方向时,这种神经元细胞就会活跃。

这个发现不仅令休伯尔和威泽尔分享了 1981 年的诺贝尔医学奖,还激发了人们对神经系统的进一步思考:信息从“视觉细胞”到“中枢神经”再到“大脑”的流动过程,或许是一个分层迭代、逐级抽象的过程。这里的关键词有两个,即“抽象”和“迭代”,从原始信号输入开始,先做低级的抽象,逐渐向高级抽象迭代。人类自己可以感知的逻辑思维层面,总是使用高度抽象的概念,可是人类的感知器官接触的都是低级的具体事物。通俗一点来说,我们的视网膜感知到的是像素的颜色、亮度等信息,但我们大脑中思考的是具体的物体和对象。假如我看见一位朋友,要判断出他是一名熟悉的人的话,可能的神经活动如图 7-10 所示。

第 7 章 深度学习时代

259

PDF 物理页索引 275

文件中的第 276 页 · 印刷页码:260

分析如下:

● 从原始信号被摄入开始—瞳孔摄入像素。

● 接着做初步处理—大脑皮层某些细胞发现边缘和方向。

● 然后抽象—大脑判定眼前的物体的形状是人形的,有基本的五官特征。

● 最后进一步抽象—大脑进一步判定该物体是人脸,确定具体是哪一位朋友。

20 世纪 50 年代的这个神经生理学的发现,促成了计算机人工智能在半个世纪后(2006 年)的突破性进展。现代科学已经基本确定了人的视觉系统的信息处理的确是分级的,从最低层像素提取边缘特征,到稍高层次的形状或者目标的部分等,再到更高层的整体目标,以及目标的行为和其他特征的联想等。换句话说,高层的特征是低层特征的组合、提炼,从低层到高层的特征表示越来越抽象,且越来越能表现出认知的意图。抽象层面越高,存在的可能猜测就越少,就越利于分类。其实不仅仅是图像的模式识别,人类大部分的认知都很符合这样的规律,譬如语言,单词集合和句子的对应是多对一的,句子和语义的对应又是多对一的,语义和意图的对应还是多对一的,这也是一个层级体系。敏感的读者也许已经猜到人类认知过程与深度学习之间可能存在的共通点了,即“分层迭代、逐级抽象”。

深度学习之前的统计学习方法,包括浅层的神经网络在内,所做的事情都属于从特征到结果的直接映射,都是希望找到这些特征与结果的直接关系。对于现实世界中所有可统计的问题,特征与结果的关系肯定是存在的,但对于其中一部分问题,特征与结果之间是极为间接、隐晦的关系,几乎不可能一下子就从特征判定出结果。

260

第三部分 第三波高潮

○一 图片来源:https://grey.colorado.edu/CompCogNeuro/index.php/CCNBook/Perception。

PDF 物理页索引 276

文件中的第 277 页 · 印刷页码:261

那“深度学习”里的“深度”是不是就表示存在多个层次,从基本的特征逐层抽象出高级的特征呢? 确实可以如此理解,深度学习的本质,就是一种逐层自动进行特征提取的机器学习方法,如图 7-11 所示,这是深度学习下计算机从图片中识别人的典型过程。

深度学习还有另外一个不为人知但其实更贴切的名字,叫作“无监督特征学习”(Unsupervised Feature Learning):“无监督”的意思是不需要人工参与特征的选取过程,这一点才是深度学习的最大特点,至于使用蕴含多少隐层的神经网络,甚至是否通过深度神经网络去实现,都是可以商量的,这些都只是工具和操作过程罢了。

第 7 章 深度学习时代

261

PDF 物理页索引 277

文件中的第 278 页 · 印刷页码:262

7.5.2 从浅层学习到深度学习

1986 年,辛顿发明误差反向传播算法,给使用神经网络来实现的机器学习方法注入了新的希望。但出乎意料的是,这件事并没有促成神经网络就此复兴再度发展。从 20 世纪 90 年代开始,机器学习领域反而掀起了一股研究其他统计学习方法的热潮,此热潮一直持续至今仍未衰退,现在机器学习的教科书中,基于统计学习的模型和算法仍然占很大的篇幅。为何会出现这样的现象呢?

误差反向传播算法虽然在理论层面上解决了如何训练多层神经网络的问题,使多层神经网络能够从大量训练样本中学习到规律,对新样本做出决策,对未知事件做出预测,但这只是做到让人们不再说类似“神经网络是死路一条”的话而已。当时的计算机还不能处理实际应用中庞大的训练样本,缺乏卓有成效的应用案例,很难彻底扭转人们心里认为神经网络没有前途的观念。辛顿在一次采访中发出了这样的感慨:

“追溯到 1986 年,我们首次开发出误差反向传播算法,我们因其能学习到多层的特征而感到兴奋,我们认为已经解决了这个问题。但在解决实际问题中却没有出现大的突破,这非常令人失望,我们完全猜错了需要的计算资源和标记案例数量。”

从 1986 年开始到 2006 年深度学习横空出世,长达 20 年的时间里,人工神经网络的实践应用确实乏善可陈,即使用到神经网络,也大多只是含有一层隐层的三层网络模型而已。人们不愿意用更深的神经网络,深度增加会带来更大的训练难度且需要更大量的训练数据当然是原因之一,但回顾历史,可能更重要的原因是神经网络在这段时间里一直没有找到自己的应用定位,大家并不知道什么时候和为什么要使用神经网络。

神经网络最“神奇”的地方便是只需知道输入和输出便可训练网络参数,不需要弄懂中间有什么理论和规律。使用这种“端到端”(End-to-End)的学习方法,就能得到一个能够预测其他未知数据的“黑箱”。但是这里说的“输入数据”是指那些包含且仅仅包含影响结果所有关键特征的数据,如果遗漏了关键特征,会导致预测结果的误差不能收敛,如果掺入了无用的特征,又很容易引起维度灾难,空耗运算资源。另外,“黑箱”的特点决定了神经网络只能是对真实世界规律的一种拟合模型,目前在理论分析上并没有特别强的解释性。这些天生的特点决定了以前的神经网络要完成建模,首先要做的特征选择、提取都需要依赖人的先验知识去完成。实际情况是确实有一部分应用场景能够通过人工来选择,譬如第 4 章从像素映射到字母的识别的例子,笔者曾用这个例子来说明如何建立像素到字母的特征映射关系,这是可以使用浅层神经网络解决的。但是如果要面对更复杂的实际问题,如 7.5.1 节提到的识别一个人是不是你的某个熟悉的朋友这种人脸识别,就很难再依赖人工来做特征选择了。识别图片中的物体是不是一个人,人物图片需要具备怎样的特征,并不是一件容易说清楚的事情,而这是使用神经网络处理问题的第一步,这一步解决不了的话,后面都是空谈。

262

第三部分 第三波高潮

PDF 物理页索引 278

文件中的第 279 页 · 印刷页码:263

对于那些能够描述清楚特征与结果关系的问题,其他浅层学习模型<sup>○一</sup>也几乎都能够处理,如果仅仅能够处理这类简单的问题,神经网络就完全没有任何优势可言,几乎所有浅层神经网络的应用都能找到更优的代替品。

到 20 世纪 90 年代,各种新的基于统计的机器学习方法开始兴起,许许多多崭新的浅层机器模型相继被提出,例如支持向量机(SVM)、提升算法(Boosting)、最大熵方法(以 Logistic Regression 为代表)等。这些模型的结构基本上都可以看成带有一层隐层节点(如 SVM、Boosting)或者没有隐层节点(如 Logistic Regression)的特定形式的神经网络。由于这些浅层模型无论是在理论分析还是实践应用中都获得了巨大的成功,而神经网络的理论分析难度大,训练方法又需要很多经验和技巧,因此浅层的人工神经网络反而慢慢落后于这些后起之秀,再次沉寂下去,基于统计的机器学习模型逐渐成为机器学习的主流。这种局面一直持续到“深度学习”概念被提出几年后才得以改变,可以说从这时开始,机器学习才正式进入深度学习时代。

第 7 章 深度学习时代

263

○一 一般将“浅层学习”称为“ Shallow Learning”,这是在深度学习“ Deep Learning”被提出之后,才反过来命名的名词。

PDF 物理页索引 279

文件中的第 280 页 · 印刷页码:264

7.5.3 序幕开启

2006 年被认为深度学习时代的元年,深度学习时代序幕的开启是以辛顿在这一年发表的两篇论文为标志的。第一篇论文是辛顿和他的学生拉斯·萨拉克赫迪诺弗(Ruslan Salakhutdinov)在美国著名的《科学》杂志上发表的,名为《通过神经网络进行数据降维处理》(“ Reducing the Dimensionality of Data withNeural Networks”)。这里“数据降维”的方法即用神经网络自动进行特征选择和提取,此文实质性地开创了“深度学习”这个机器学习的新分支,不过“深度学习”这个名词却不是在这篇论文中提出的,早在 20 年前就曾经出现过。然后,辛顿在同一年发表的第二篇论文《一种基于深度信念网络的快速学习算法》(“ A Fast Learning Algorithm for Deep Belief Nets ”)再次对“深度”这个词进行了定义和包装,使“深度学习”变得火爆起来。辛顿这两篇论文共同论证了以下两个主要观点:

1)论证了多隐层的人工神经网络具有优异的、自动化的特征学习能力,与人类手工建立的特征相比,通过网络自主学习得到的特征对数据有更本质的刻画,更有利于可视化或分类。

2)提供了一个具体可操作的训练方案,深度神经网络在训练上的难题,可以通过逐层预训练(Layer-Wise Pretraining)方法来有效克服。

之所以学术界、工业界把论文《通过神经网络进行数据降维处理》定性为深度学习的开山之作,不仅是因为它以多层神经网络为工具载体,引出了深度学习的概念框架,更是因为它清晰地描绘出了深度学习相对于传统浅层学习的两个很有价值且十分具体的优势。

第一个优势是表示能力。此前,包括单层神经网络在内的多种以分类、回归为代表的浅层学习算法,在有限样本和计算单元的情况下,对复杂函数的表示能力仍显不足。这里的表示能力不足是指工程意义上的实践结论。虽然在纯理论上“泛逼近性原理”(Universal Approximation Theorem)<sup>○一</sup>保证了单层神经网络具有在封闭的实数域拟合任意函数的能力,证明了浅度的神经网络在“理论上”可以学习任何函数,不过这个结论是以无穷无尽的神经元为支撑的,在实践中,我们不可能无视神经元数量带来的运算压力。

264

第三部分 第三波高潮

○一 https://en.wikipedia.org/wiki/Universal\_approximation\_theorem。