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

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

456 个 PDF 物理页 · 本页显示文件第 291–300 页

PDF 物理页索引 290

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

8 层的 AlexNet 开始,发展到 2015 年,来自微软研究院的 152 层的残差网络(ResNet)以仅 3.57% 的错误率赢得了 ILSVRC 2015 的冠军。“3.57%”这个错误率在三四年之前是谁都不可能想象的。李飞飞教授曾经组织过一批志愿者,直接以人类代替机器来参赛,这批志愿者在这个竞赛里,通过肉眼辨识图像的平均错误率是 5.1%,换言之,从 2015 年起,机器在对图像进行识别和分类这项技能上的成绩事实上已经超越了人类水平。这不仅是一个人工智能在认知领域超越人类的案例,更是深度神经网络的一次巨大成功,而且,它似乎还可以作为一个令人难以抗拒的“越深度越强大”的有力论据。

在 ILSVRC 赛场一战成名,深度学习的热潮自此掀起,一波接一波向前迅猛推进,进入一个又一个领域并连战连捷,势如破竹,终于形成今天锐不可当的深度学习狂潮。

7.5.5 越深度越强大吗

今天我们还处于深度学习浪潮的顶峰,在深度学习不断攻城略地的同时,笔者也在思考几个问题:真的会是“越深度越强大”吗?神经网络会随着隐层数量的增加而继续无往不利吗?在深度不断发展的最后,是能够触碰到我们梦寐以求的机器智能,还是在一定深度之后,必然要与之前的浅层学习方法一样,触碰到天花板乃至拐点,仍然无法接触到智能的身影呢?

第 7 章 深度学习时代

275

○一 纵坐标为错误率,越低结果越优秀。

PDF 物理页索引 291

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

在一年之后的 ILSVRC 2016 中,获得冠军的程序依然比 ILSVRC 2015 的冠军有更深的网络层次,甚至在物体检测这些子项测试中,还夸张地出现了1207 层的深度神经网络。可是笔者也注意到了,Facebook 研究院新推出的“广残差网络”(Wide Residual Network)开始逐渐“返璞归真”,仅凭 16 层的网络深度就成功超越了前一年 152 层的残差网络所取得的成绩<sup>○一</sup>,给 ILSVRC 从2012 年深度神经网络开始参赛以来深度逐年增加的势头画了一个不和谐的向下转折的符号。

2014 年,来自 Facebook 和微软研究院的两位研究员共同发表了一篇论文《深度网络真的需要那么深吗?》(“ Do Deep Nets Really Need to be Deep?”),他们使用模型压缩的方法,用浅层神经网络去模拟一个训练好的深度神经网络,论证了对特定深度的神经网络而言,模拟它们的浅层神经网络能够表现得和它们一样好。尽管在训练数据集上浅层神经网络可能无法直接达到同样优秀的表现,但是在测试集和实际应用中却完全不逊色于深度神经网络。

今天的深度学习的有效性能够被实践应用所验证,我们可以肯定地宣告它确实做对了某些事情,才会出现这个结果。可是,当今深度学习的各种模型、算法、技巧几乎都是靠“试错”来取得的,没有足够完备的理论支持,我们就不会知道它具体做对了哪一件或哪几件事情,才让我们向智能稍微靠近了一步。如果有一天学者从理论上真正掌握了智能的奥秘,反而有可能最后找到的是一个浅层的或者一个深度不太高的网络模型。现在说的深度神经网络越深越好,大概和“头大的人比较聪明”差不多,也许从宏观的角度来看,族群的脑容量确实有可能与智力水平有正相关关系,但并不等同于这就是通向最优的钥匙。《人工智能:一种现代方法》一书的作者彼得·诺维格(Peter Norvig,1956—)曾写道:“当莱特兄弟和其他人不再模仿鸟类飞行,而是开始研究空气动力学的时候,人类对‘人工飞行’的探索才算是取得了成功。”希望我们这一代人能够在可见的未来,看到人类真正探索出智能的奥秘。深度学习在很多问题上确实获得了比浅层学习更好的效果,这一点是大家有目共睹的。不过,能否说深度学习就一定优于浅层学习?“多深”的深度神经网络才是“最优”的?距离这些问题有明确的答案还非常遥远。

276

第三部分 第三波高潮

○一 数据来源:https://arxiv.org/abs/1605.07146。

PDF 物理页索引 292

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

7.5.6 越深度越困难吗

虽然“神经网络是否越深度越强大”这个问题的答案还不明确,但是,“神经网络的深度越高,训练难度就越大”这个结论可以暂时认为是正确的。神经网络的结构越复杂,层次越深,涉及的因素就越多,面临的挑战势必更多,这里笔者举一对最为经典的问题—“梯度消失”(Gradient Vanishing)和“梯度爆炸”(Gradient Exploding)来展开说明。

训练神经网络主要依靠迭代算法来优化,譬如第 6 章讲过的梯度下降优化算法,它的基本思路是每次迭代都以梯度向量为指导,按照梯度负反向和梯度的大小调整权值,逐步逼近,最后得到全局最优值,误差反向传播算法属于梯度下降优化算法的一种特定形式。在以上语境里,“梯度消失”问题是指从输出层开始,每经过一个隐层,指导更新权值的梯度向量就变小一些,这样,接近于输出层的权值更新相对正常,但在误差传播的远端,越靠近输入层的梯度越小,网络权值更新就会变得越慢。当隐层深度特别深时,经过若干次传递以后,梯度已变为一个接近于零的小数,导致这些隐层的权值几乎不会再发生改变,一直等于网络初始化时赋予的权值,此时的深层神经网络模型,其实等价于只有后几层在工作、其他层都在“偷懒摸鱼”的浅层神经网络模型。而“梯度爆炸”问题则与此相反,如果每经过一个隐层梯度向量都增大一些的话,在最接近输入层的那些靠前的隐层,每次权值更新都会发生很大的变化,这样带来的结果是轻则使得训练无法稳定收敛,重则导致数据越界溢出。

为何会产生梯度消失和梯度爆炸问题呢?如果读懂了前面误差反向传播算法的推导过程的话,这个问题其实很容易回答,以 E 表示损失函数输出值,x表示隐层的输出值,w 表示权值,s 表示加权和,∂ 表示激活函数,那最后推导出的梯度计算的公式如下:

第 7 章 深度学习时代

277

PDF 物理页索引 293

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

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

为了增加网络深度,并且去掉无关因素的干扰,我们不妨以一个每层只有一个神经元的四层神经网络(图中省略了输入层节点)为例,如图 7-20 所示。

根据误差反向传播算法,每一个隐层的梯度值都依赖于它后面一层的计算结果,如此重复迭代,对于第一个隐层,它的梯度就依赖于其后所有层的计算结果。对于如图 7-20 所示的神经网络,分析误差经过四层传播后的情况,根据前面推导出的公式,输入层导数 $\frac { \partial E } { \partial x _ { 1 } }$ 应是输出层导数 $\cdot \frac { \partial E } { \partial x _ { 4 } }$ 乘以每一层权值和激励函数的导数的乘积,即以下式子所示:

$$
\frac { \partial E } { \partial x _ { 1 } } = \frac { \partial E } { \partial x _ { 4 } } \cdot \triangledown \partial ^ { \prime } ( s _ { 4 } ) w _ { 4 } \cdot \triangledown \partial ^ { \prime } ( s _ { 3 } ) w _ { 3 } \cdot \triangledown \partial ^ { \prime } ( s _ { 2 } ) w _ { 2 } \cdot \triangledown \partial ^ { \prime } ( s _ { 1 } ) w _ { 1 }
$$

由于权值 w 是随机初始化的,梯度消失问题是否会出现关键就在于它与激励函数导数 $\partial ^ { \prime } ( s )$ 的乘积是不是一个持续小于 1 的数。前面提到,为了可以应用链式法则,必须要求激活函数具备可微性,所以辛顿最初采用了与 UnitStep函数良好近似又可微的 Sigmoid 函数作为激励函数,如图 7-21 所示。可能也是这个原因,从 1986 年到 2010 年以前,即从误差反向传播算法提出一直横跨到深度学习时代的初期,大家普遍采用 Sigmoid 函数作为激活函数。

Sigmoid 函数的解析式是 $y = \frac { 1 } { \mathrm { e } ^ { - x } + 1 }$ ,对这个函数求一阶导数后的图像如图 7-22 所示,可见在零值时函数取得最大值 0.25,即 $\partial ^ { \prime } ( x )$ 的最大值为 0.25。

278

第三部分 第三波高潮

PDF 物理页索引 294

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

从函数图像上我们还能看到,只有中间围绕零值的一小撮值才有作为梯度的意义,零值两侧的所有导数值都无限接近于零。我们把这两侧导数接近于零的部分,称为激活函数的饱和范围,一旦 Sigmoid 函数的输入值落在这个饱和范围内,其输入的数值大小对激活函数的输出结果的影响就极小了,换言之,我们可以说在这个范围内的激活函数对输入数据不再敏感。

另外,误差反向传播算法在神经网络初始化的时候,其权值 w 通常会小于1,譬如常用均值为 0、标准差为 1 的高斯分布来初始化网络权值。这样便使得 $\mid \partial ^ { \prime } ( x ) w \mid$ 整体将小于 0.25,再结合前面推导的连乘公式,使用链式法则求导,层数越多,势必会使得 $\cdot \frac { \partial E } { \partial x _ { 1 } }$ 的求导结果越小,这就引发了梯度消失问题的出现。类似地,梯度爆炸问题出现的原因就是出现了 $\mid \partial ^ { \prime } ( x ) w \mid > 1$ 的情况。到这里,我们就明白了梯度不稳定问题(梯度消失和梯度爆炸统称为梯度不稳定问题)产生的原因:前面的隐层梯度是后面的各个隐层梯度的连乘积,在神经网络的深度过深时,梯度在反向传播中的连乘效应会导致网络权值更新不稳定。

神经网络深度增加带来的训练上的困难,是深度学习在诞生前几年里难以充分发挥深度优势的主要原因之一。针对梯度不稳定问题,人们想了很多方法来补救。有从神经网络权值初始化着手的,使得 $\mid \partial ^ { \prime } ( x ) w \mid$ 整体尽可能避免梯度逐层减小或者增大,除了前文讲的辛顿的无监督预训练方法外,近几年还出现了一些效果很好的随机初始化方法,如 Xavier 初始化方法、MSRA 初始化方法等。也有从训练过程着手的,如谷歌在 2015 年提出的“批量规范化”(BatchNormalization)操作,这种方法是在训练过程中对隐层的数据进行规范化处理,避免训练过程里各网络层输入落入饱和区间进而导致梯度消失。还有一种易于操作的最简单方法,是直接从激活函数本身着手。既然梯度消失是由 Sigmoid函数的导数最大值仅为 0.25,且不饱和区间非常狭窄所导致的,那么就着手去寻找更好的代替函数。

第 7 章 深度学习时代

279

PDF 物理页索引 295

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

2010 年,有人发现用 ReLU 函数代替 Sigmoid 函数能显著缓解梯度下降优化过程中遇到的梯度消失问题。ReLU 函数是一个非常简单的分段函数,它的解析式是y $\left\{ \begin{array} { l l } { 0 } & { x < 0 } \\ { x } & { x \geqslant 0 } \end{array} \right.$ ,函数图像如图 7-23 所示。

ReLU 函数虽然看起来非常简单,却是近几年在激活函数这方面取得的最大进步之一。相比 Sigmoid 函数,ReLU 函数具备了诸多优秀的特性,如由于函数简单,不需要进行幂运算,所以计算速度非常快,训练时收敛速度远远快于 Sigmoid 函数,也超过了其他常见的激活函数,如 Tanh 等。在解决梯度消失这个问题时,很明显 ReLU 函数的导数要么是 0 要么是 1,这样至少在正数区间上,就不会因为连乘效应导致梯度逐层减小了。

面对深度神经网络遇到的问题,解决得最彻底的,大概是辛顿给出的“解决方案”了。为什么要加上双引号呢?因为这个方案是推倒重来!辛顿是误差反向传播算法的提出人之一,是神经网络和深度学习的“教父”。然而,现在他又戏剧性地成为误差反向传播算法和经典神经网络结构的强大“反对者”。最近,辛顿居然在他的推特上置顶号召大家应该“摒弃误差反向传播算法,另起炉灶,重新开始”,一时间令业界惊诧,关于这件事情网上曾出现了一些大肆渲染“辛顿叛变”的文章,吸引了不少媒体进行炒作。

280

第三部分 第三波高潮

PDF 物理页索引 296

文件中的第 297 页 · 印刷页码:281

辛顿确实曾经表示误差反向传播算法并不是自然界生物大脑中存在的训练机制,也不相信人类大脑是通过生物方式完成求导,通过梯度来调节神经元权重和激活阈值的。从辛顿的成长经历我们就能看出他对模仿人类大脑的工作原理有多么执着。目前已有许多脑科学的研究证实,大脑皮层中普遍存在一种称为“微皮层柱”(Cortical Minicolumn)的柱状结构,如图 7-24 所示,它像一颗胶囊一般把数百个神经元封装在一起,每个微皮层柱里的神经元都记录、处理相同特征的同一种信号。由此看来,人类大脑并不像经典神经网络一样是由神经元直接连接的简单分层结构,而是具有更高的内部复杂性:先由神经元组成“微皮层柱”,再由“微皮层柱”组成“皮层柱”(Cortical Column),由小到大逐步复杂化。

第 7 章 深度学习时代

281

PDF 物理页索引 297

文件中的第 298 页 · 印刷页码:282

早在 2011 年,辛顿在发表的一篇论文<sup>○一</sup>里就模仿大脑微皮层柱的结构,提出了一种称为“胶囊”(Capsule)的新神经网络结构,并给出了用这种结构做自动编码器和简单图像识别的例子。只是可能辛顿自己也没有预料到,就在第二年(2012 年)深度神经网络会忽然间受到从未有过的关注,尤其是深度卷积网络在图像识别领域忽然爆发,所以这篇关于胶囊结构的论文并没有受到特别大的关注,连辛顿自己也暂时放下了对这个方向的研究,专注在深度卷积网络、循环神经网络这些还是以分层堆叠结构为主的神经网络模型上。

到了 2017 年,辛顿认为传统的神经网络分层结构虽然取得了很大成功,但已经遇到了瓶颈,因此他重新开始关注胶囊结构,希望从中寻找突破,一举解决之前深度学习里遗留的诸多问题。辛顿想要表达的其实是如果胶囊结构确实能够解决这些问题,那么他就有勇气完全抛弃之前的体系结构,完全抛弃之前的训练方法,一切推倒从来,重新开始。辛顿关于胶囊结构的论文《胶囊结构之间的动态路由》(“ Dynamic Routing between Capsules”)已经被“2017 年度神经信息处理系统进展大会”(Neural Information Processing Systems,NIPS2017)所接受,据说其在 MNIST 训练集上非常成功,识别率达到了历史新高,并同时解决了卷积神经网络难以识别重叠图像等问题。到了笔者落笔的2024 年,胶囊结构仍然不是神经网络的主流结构,从对胶囊结构目前只有一些论文摘要信息和辛顿的演讲记录就可以窥见一斑。胶囊结构能否被学术界接受,辛顿能否找到训练胶囊结构的新算法,这些都还存有很大疑问,这也正是科研的艰辛之处。

无论结果如何,辛顿在古稀之年仍然在尝试新的方法,这本身就非常值得敬佩。“先驱”“教父”这些头衔是世人对辛顿在深度学习领域的坚持以及那些开创性工作的认可,如果胶囊结构这项工作成功推翻了之前神经网络的结构和训练方法,那完全是他本人坚持自己的信仰和探索的结果,一个真正的大师并没有被以前的成就所束缚;如果辛顿晚年试图突破深度学习,如同爱因斯坦晚年试图统一电磁力和引力一样,是注定无法成功的,那我相信辛顿也依然愿意坚持下去,毕竟他在神经网络这个领域已经坚守了超过 40 年了。

282

第三部分 第三波高潮

○一 论文地址:http://www.cs.toronto.edu/\~fritz/absps/transauto6.pdf。

PDF 物理页索引 298

文件中的第 299 页 · 印刷页码:283

2024 年 10 月,为表彰辛顿在神经网络和深度学习领域做出的贡献,瑞典皇家科学院决定将 2024 年度的诺贝尔物理学奖授予辛顿。尽管不少科学家认为凭借“利用计算机和人工智能技术帮助各个领域的物理科学取得突破”这样的理由被颁授诺贝尔物理学奖多少显得有些牵强,但学术界几乎无一人对辛顿的学术水平提出过质疑。从此,辛顿成为继“通才”司马贺之后人类历史上第二位同时获得图灵奖和诺贝尔奖的双料得主。

7.6 深度神经网络

自掀起深度学习热潮以来,短短几年时间,大量不同的基于深度神经网络的模型竞相争艳,其中有一些是已有悠久历史的模型,封尘多年终于在这波热潮中迎来大展身手的机会,有一些则是近几年最新的研究成果,新的方法和模型在一些之前未能很好解决的问题上有良好的表现。

2016 年,国外网站 asimovinstitute.org 整理了一份当时 24 种常见的神经网络类型和它们的用途简介<sup>○</sup>,笔者稍加整理,放在本节供读者作为技术词典之用,如表 7-2 所示。后面笔者还会对其中的卷积神经网络和循环神经网络这两种比较具有代表意义的深度神经网络模型进行更详细的介绍。

表 7-2 常见的神经网络类型及其用途简介

一、感知机和前馈神经网络

第 7 章 深度学习时代

283

○一 资料来源:http://www.asimovinstitute.org/neural-network-zoo/。

PDF 物理页索引 299

文件中的第 300 页 · 印刷页码:284

284

第三部分 第三波高潮