第2章 深度神经网络
2.1 引言
从第1章介绍的浅层模型的分析中可以看到,人类在理解数据背后隐藏的规律方面做了很多的努力,最初是面向连续型变量的线性回归模型[1],接着通过在线性回归模型基础上引入sigmoid这一连接函数(link function)而发展起来的面向二分类数据的logistic回归模型[2],在logistic回归模型基础上将sigmoid连接修函数改为softmax函数发展了能处理多分类数据的softmax回归[3],此后又在指数分布族基础[4–6]上发展了能处理更广泛的数据分布的广义线性回归[7]。这些不同的模型从数据的不同分布看待数据内部的结构,广义线性回归模型更是给出了一类指数分布族数据的统一处理框架。
然而,人类发展数据处理工具的历史不总是一帆风顺的。1969年,美国数学家及人工智能先驱Minsky在其著作中证明了感知器本质上是一种线性模型,只能处理线性分类问题,就连最简单的XOR(异或)问题都无法正确分类[8]。这一结果清晰地指出了上述浅层模型框架下的方法在处理线性不可分数据方面的能力局限性:前述浅层模型框架下的方法进行数据分析结果的好坏依赖于所给的数据(特征)的好坏,如果所给的数据(特征)足够清晰(最好线性可分),所得模型对数据的分类预测能力则强,否则,得到的模型对数据的分类预测能力可能就很难令人满意。这迫使人们发展大量的针对某一类问题,比如图像识别问题的“特征工程”方面的研究。20世纪90年代,一种基于核方法的KernelSVM被提出[9],核化的支持向量机SVM通过一种巧妙的方式将原空间线性不可分的问题,通过Kernel映射成高维空间的线性可分问题,成功地解决了非线性分类的问题,且取得了不错的分类效果,在一定程度上解决了线性不可分问题的识别问题。但核方法并没有从理论上回答选择何种核对数据升维后一定线性可分(Vapnik和Shapire等人未表示过数据经过核映射后一定线性可分),更没人能给出适用于所有数据的通用核(universal kernel)。因此,用核方法处理线性不可分数据结果的好坏依赖于这个神奇的核函数的选择。原先的特征工程方面的工作转变为寻找更好的核函数的“核工程”方面的研究。
浅层模型在处理非线性问题方面的局限性最先被突破的工作来自后来成为深度学习先驱的Hinton和Rumelhart等人在1986年的工作[10],他通过在原来两层感知器这一浅层模型基础上,采用sigmoid进行非线性映射,并用反向传播BP算法训练多层感知器(MLP),有效地解决了非线性分类和学习的问题。此后的1989年,Robert Hecht-Nielsen等人证明了MLP具有万能逼近的能力[11–13],即对于任何闭区间内的一个连续函数f(x),都可以用含有一个隐层的BP网络来逼近。该定理的发现揭示了三层BP网络在发掘复杂数据内在规律方面的极大潜力。然而,Hochreiter指出多层BP网络训练过程中存在梯度消失[14],[15]的现象:误差在逐层(或沿时间轴)反向传播过程中,由于使用的sigmoid传递函数所引发的逐层累乘效应,导致误差经过多层(或长时间步)反传后衰减为零。这限制了多层甚至更深层BP网络的有效训练。由于采用sigmoid进行非线性建模的BP网络训练中不可避免地存在梯度消失这一问题,再加上BP网络训练可能会陷入局部极小值的问题,此后20多年神经网络并没有引起更多的重视。
2006年Hinton等提出了用“无监督逐层贪心预训练+有监督训练全局微调”的思想,解决了深层BP网络训练中的梯度消失问题[16],[17]。也正因此项工作,此后BP网络或者神经网络这一术语逐渐被深度网络或深度学习所取代。2012年,Hinton课题组为了证明深度学习的潜力,首次参加ImageNet图像识别比赛,其通过构建的CNNs网络AlexNet[18]一举夺得冠军,且碾压第二名(SVM方法)的分类性能。此后深度学习模型展现了其在数据处理方面强大的能力:Russakovsky等人[19]的ImageNet利用深度技术从100万张图片中识别含有1000个类别的对象,错误率只有3.46%,而人经过24h的训练后完成同样的任务的错误率为5.1%;Alex等人[20]将深度技术应用于时间序列处理,他们的工作将语音识别误差率降低到17.7%,准确性比之前最好的技术有近30%的提升。要知道,在此之前,语音识别领域最好的技术高斯混合模型-隐马尔可夫模型GMM-HMM近10年的努力均没能带来效率的改进;2016年3月举行的围棋人机对弈,深度学习武装下的机器人AlphaGo[21]完胜韩国职业棋手李世石,更是掀起了深度学习研究的热潮。
多层甚至深层模型比浅层模型所具有的优势主要体现在深度模型具有更好的特征表示学习能力,这使深层模型可以不依赖于人类特征工程,而像人一样直接处理文本、图像、音视频信息。换言之,深层模型由于其足够的层次纵深,能够直接从文本、图像、音视频等一手信息里面提取有用的信息(特征),无须依赖任何特征工程。
深度模型比浅层模型具有的另一个优势是深度模型不像浅层模型那样容易受局部极小值影响:LeCun等人的工作表明[22–25],深层网络虽然局部极值非常多,但是通过深度学习的批量梯度下降BSGD优化方法很难陷进去。而且就算陷进去,其局部极小值点与全局极小值点也是非常接近的。但浅层模型则不然,虽然浅层模型具有较少的局部极小值点,但是却很容易陷进去,且这些局部极小值点与全局极小值点相差较大。
更为重要的是深层网络有时对全局最优解并非很感兴趣,因为深层网络的全局最优解往往容易出现过拟合的现象。因此,训练深度模型局部极小值的问题并不是非常要紧的问题。
作为大多数神经网络算法的基础,本章首先介绍BP神经网络基本知识,包括生物神经元基本结构、最初的MP神经元模型、BP神经网络基本结构以及BP算法,并给出一个算例展示BP算法具体细节。然后通过分析多层BP网络训练过程中存在的问题,介绍经典的深度网络的训练算法。深度网络由于其足够的模型容量,容易出现过拟合的情况,尤其是训练数据不足时,本章最后介绍对深度网络进行正则化避免过拟合的三种常用技术。