《深度学习:卷积神经网络从入门到精通》——1概述
第1章 概述
深度学习是一种实现人工智能的强大技术,已经在图像视频处理、语音处理、自然语言处理等领域获得了大量成功的应用,并对学术界和工业界产生了非常广泛的影响。卷积神经网络是深度学习中最为重要的模型,2012年以来极大地推进了图像分类、识别和理解技术的发展。而且通过与其他技术相结合,卷积神经网络还可用于设计实现游戏智能体Q网络、围棋程序AlphaGo,以及语音识别和机器翻译软件等各种应用系统,所取得的成就已经使人工智能迈进了盛况空前、影响深远的新时代。本章主要介绍深度学习的起源和发展,说明卷积神经网络的形成和演变,分析卷积神经网络的应用和影响,讨论卷积神经网络的缺陷和视图,总结卷积神经网络的平台和工具,并概括本书的内容结构及案例数据。
1.1 深度学习的起源和发展
深度学习的概念起源于人工神经网络,本质上是指一类对具有深层结构的神经网络进行有效训练的方法。神经网络是一种由许多非线性计算单元(或称神经元、节点)组成的分层系统,通常网络的深度就是其中不包括输入层的层数。
最早的神经网络是心理学家McCulloch和数理逻辑学家Pitts在1943年建立的MP模型[1],如图1.1所示。MP模型实际上只是单个神经元的形式化数学描述,具有执行逻辑运算的功能,虽然不能进行学习,但开创了人工神经网络研究的时代。1949年,Hebb首先对生物神经网络提出了有关学习的思想[2]。1958年,Rosenblatt提出了感知器模型及其学习算法[3]。在随后的几十年间,尽管神经网络的研究出现过一段与Minsky对感知器的批评有关的低潮期[4],但仍然在逐步向前推进,并产生了许多神经网络的新模型[5-10]。到20世纪八九十年代,这些新模型终于引发了神经网络的重生,并掀起了对神经网络研究的世界性高潮[11]。其中最受欢迎的模型至少包括:Hopf?ield神经网络[8]、波耳兹曼机[9]和多层感知器[10]。最早的深度学习系统也许就是那些通过数据分组处理方法训练的多层感知器[12]。多层感知器,在隐含层数大于1时常常称为深层感知器,实际上是一种由多层节点有向图构成的前馈神经网络[13],其中每一个非输入节点是具有非线性激活函数的神经元,每一层与其下一层是全连接的。此外,Fukushima提出的神经认知机可能是第一个具有“深度”属性的神经网络[14-16],并且也是第一个集成了“感受野”思想的神经网络[17-18],以便有效地对视觉输入的某些特性起反应。更重要的是,神经认知机促成了卷积神经网络结构的诞生和发展[19]。而卷积神经网络作为一种判别模型,极大地推进了图像分类、识别和理解技术的发展,在大规模评测比赛中成绩卓著[20],盛誉非凡。
图 1.1
在训练神经网络方面,反向传播无疑是最常用、最著名的算法[10, 21]。这是一种有监督学习算法,需要教师指导信号。也就是说,应提供一组训练样本,对给定的输入,指明相应的输出。然而,直到20世纪80年代末期,反向传播似乎还只是对浅层网络有效,尽管原理上也应对深层网络有效。浅层网络主要是指具有1个隐含层的神经网络,如图1.2所示。深层网络则主要是指具有2个及以上隐含层的神经网络,如图1.3所示。在早期的应用中,大多数多层感知器都只用1个或很少的隐含层,增加隐含层几乎没有什么经验上的收益。这似乎可以从神经网络的单隐层感知器逼近定理中找到某种解释[22, 23],该定理指出,只要单隐层感知器包含的隐含神经元足够多,就能够在闭区间上以任意精度逼近任何一个多变量连续函数。直到1991年的时候,关于多层感知器在增加层数时为什么难学习的问题,才开始作为一个深度学习的基本问题,得到了完全的理解。
图1.2 浅层(单隐层)神经网络 图1.3 深层神经网络
1991年,Hochreteir正式指出,典型的深层网络存在梯度消失或爆炸问题,从而明确确立了深度学习的一个里程碑[24]。该问题是说,累积反向传播误差信号在神经网络的层数增加时会出现指数衰减或增长的现象,从而导致数值计算快速收缩或越界。这就是深层网络很难用反向传播算法训练的主要原因。需要指出的是,梯度消失或爆炸问题又称为长时滞后问题,在循环神经网络中也会出现[25]。
为了在一定程度上克服梯度消失或爆炸问题,1990~2000年,Hochreiter的深邃思想推动了若干新方法的探索[26-28]。但除了卷积神经网络以外[29],训练深层网络的问题直到2006年才开始得到严肃认真的对待。一个重要的原因是,1995年之后支持向量机的快速发展减缓了神经网络的有关工作进展[30]。
普遍认为,深度学习正式发端于2006年,以Hinton及其合作者发表的两篇重要论文为标志:一篇发表在《Neural Computation》上,题目为“A fast learning algorithm for deep belief nets”[31];另一篇发表在《Science》上,题目为“Reducing the dimensionality of data with neural networks”[32]。从那以后,大量的深度学习模型开始重新受到广泛关注,或如雨后春笋般迅速发展起来,其中主要包括受限波耳兹曼机(Restricted Boltzman Machine,RBM)[33]、深层自编码器(deep AutoEncoder,deep AE)[32]、深层信念网络(deep belief net)[31]、深层波耳兹曼机(Deep Boltzman Machine,DBM)[34]、和积网络(Sum-Product Network,SPN)[35]、深层堆叠网络(Deep Stacked Network,DSN)[36]、卷积神经网络(Convolutional Neural Network,CNN)[19]、循环神经网络(Recurrent Neural Network,RNN)[25]、长短期记
忆网络(Long Short-Term Memory network,LSTM network)[27]、强化学习网络(Reinforcement Learning Network,RLN)[37]、生成对抗网络(Generative Adversarial Network,GAN)[38]等。通过结合各种有效的训练技巧,比如最大池化(max pooling)[39]、丢失输出(dropout)[40]和丢失连接(dropconnect)[41],这些深度学习模型取得了许多历史性的突破和成就,例如手写数字识别[32]、ImageNet分类[20]和语音识别[42]。而这些历史性的突破和成就,使深度学习很快在学术界掀起了神经网络的一次新浪潮。其中最主要的原因,当然是深度学习在解决大量实际问题时所表现的性能超越了机器学习的其他替代方法,例如支持向量机[30]。
在理论上,一个具有浅层结构或层数不够深的神经网络虽然在节点数足够大时也可能充分逼近地表达任意的多元非线性函数,但这种浅层表达在具体实现时往往由于需要太多的节点而无法实际应用。一般说来,对于给定数目的训练样本,如果缺乏其他先验知识,人们更期望使用少量的计算单元来建立目标函数的“紧表达”,以获得更好的泛化能力[43]。而在网络深度不够时,这种紧表达可能根本无法建立起来,因为理论研究表明,深度为k的网络能够紧表达的函数在用深度为k?-?1的网络来表达时有时需要的计算单元会呈指数增长[44]。这种函数表达的潜在能力说明,深层神经网络(又称深度神经网络)在一定的条件下可能具有非常重要的应用前景。随着深度学习的兴起,这种潜在能力开始逐步显现出来,特别是对卷积神经网络的全面推广应用,使得这种潜在能力几乎得到了淋漓尽致的发挥。
- 点赞
- 收藏
- 关注作者
评论(0)