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

3.1 神经网络概述

深度学习是机器学习中一个需要使用深度神经网络的子域,在神经网络被研究了半个多世纪之后,Hinton提出了解决梯度“消失”和“爆炸”的方法(2006年),迎来了新一轮的浪潮。2012年,Hinton课题组使用其构建的卷积神经网络AlexNet参加ImageNet图像识别比赛,并力压SVM方法夺得冠军,使得更多人开始注意到神经网络,同时神经网络的相关研究也得到了充分重视。

3.1.1 神经网络简史

早期神经网络的创造灵感来源于生物神经网络,最早期的神经网络也被称为人工神经网络(Artificial Neural Network,ANN)。最早提出的人工神经网络是20世纪50年代的感知机(Perception),它包含输入层、输出层和一个隐藏层,只能够拟合最简单的一些函数,在单个神经元上能够进行训练,这也是神经网络发展史上公认的第一次浪潮。随着数学的发展和计算能力的提高,在20世纪80年代,误差反向传播(Back Propagation,BP)和多层感知机(Multilayer Perceptron,MLP)被提出。其中,MLP包含多个隐藏层,能够拟合更加复杂的函数,使用反向传播能够训练层数较浅的多层感知机,由此掀起了第二次浪潮。后来人们也开始尝试通过增加网络层数来解决更复杂的问题,并且在初期取得了一定的效果。并不是神经网络层数越深越好,因为随着层数的增加会出现明显的“梯度”消失或“梯度”爆炸的现象。2006年,Hinton使用预训练加微调的方法解决了以上问题,掀起了第三次浪潮,并在2016年出现相关书籍,神经网络逐渐从理论研究走向实际应用,在声音、图像、推荐等领域有了成功的应用并产生了实际的价值。

3.1.2 神经网络基础理论

神经网络是通过数学算法来模拟人的思维,是数据挖掘中机器学习的典型代表。神经网络是人脑的抽象计算模型。

本节介绍学习神经网络所需掌握的基础知识,包括神经元、损失函数、激活函数、正向传播以及反向传播。了解这些知识有助于理解神经网络的工作原理和过程。

1. 神经元

生物神经元即神经元细胞,是神经系统基本的结构和功能单位,分为细胞体和突起两部分。细胞体由细胞核、细胞膜、细胞质组成,具有联络和整合输入信息并传出信息的作用。突起有树突和轴突两种。树突短而分枝多,直接由细胞体扩张突出,形成树枝状,其作用是接受其他神经元轴突传来的冲动并传给细胞体。轴突长而分枝少,为粗细均匀的细长突起,常起于轴丘,其作用是接受外来刺激,再由细胞体传出。轴突除分出侧枝外,其末端形成树枝样的神经末梢。末梢分布于某些组织器官内,形成各种神经末梢装置。感觉神经末梢形成各种感受器;运动神经末梢分布于骨骼肌肉,形成运动终极。

1)生物神经元

生物神经网络中各神经元之间连接的强弱按照外部的激励信号进行适应变化,而每个神经元又随着所接受的多个激励信号的综合结果表现出兴奋和抑制状态。人脑的学习过程就是神经元之间连接强度随外部激励信息进行适应变化的过程,人脑处理信息的结果由各神经元状态的整体效果确定。神经元在结构上由细胞体、树突、轴突和突触4部分组成,如图3.1所示。

图3.1 生物神经元的结构

· 细胞体:细胞体由细胞核、细胞质和细胞膜等组成。

· 树突:树突是精致的管状延伸物,是细胞体向外延伸出的许多较短的分支,围绕细胞体形成灌木丛状,它们的作用是接受来自四面八方传入的神经冲击信息,相当于细胞的“输入端”,信息流从树突出发,经过细胞体,然后由轴突传出。

· 轴突:轴突是由细胞体向外冲出的最长的一条分支,形成一条通路,信号能经过此通路从细胞体长距离地传送到脑神经系统的其他部分,其相当于细胞的“输出端”。

· 突触:突触是神经元之间通过一个神经元的轴突末梢和其他神经元的细胞体或树突进行通信连接,这种连接相当于神经元之间的输入输出的接口。

2)人工神经元

人工神经元是对生物神经元的功能和结构的模拟,是对生物神经的形式化描述,是对生物神经元信息处理过程的抽象。

人工神经元接收一个或多个输入(代表神经树突处的兴奋性突触后电位和抑制性突触后电位),并将它们相加以产生输出(或激活,代表沿其轴突传递的神经元的动作电位)。通常每个输入都单独加权,总和通过称为激活函数或传递函数的非线性函数。传递函数通常具有Sigmoid形状,但它也可能采用其他非线性函数、分段线性函数或阶跃函数的形式。它们也经常单调递增、连续、可微且有界。阈值函数启发了构建逻辑门,称为阈值逻辑,适用于构建类似大脑处理的逻辑电路。

2. 感知机

感知机模型如图3.2所示。感知机将获得的多项输入乘以对应的权重求和得到中间结果 m ,将求和结果 m 和设定的阈值0比较大小,如果最终的结果大于等于该值,则输出1,否则输出0。这一比较过程可以形象地看成生物细胞接收到信号神经元之后,决定是否释放神经电流。

图3.2 感知机模型

感知机模型的数学定义如公式3.1、公式3.2以及公式3.3所示。

中间结果:

感知机的输出结果表示:

代价函数公式:

其中, x i 表示输入项, w i 表示对应的权重, b 为偏移项。令 ,即 θ T w 0 ,..., w n 组成的向量。

如公式3.3所示,预测结果的误差来源有两类:一类是实际类别为0但是预测类别为1,用 M 0 表示这类集合,误差为 ;另一类是实际类别为1但预测类别为0,用 M 1 表示这类输入数据的集合,误差为 。因为感知机的阈值设置为0,且 为小于0的数,为了统一两类误差的符号,所以在其之前增添负号并与一类误差进行求和,得到最终的误差。

为了减少总误差,并求得误差最小时所对应的参数值,采用参数优化方法中的随机梯度下降方法(Stochastic Gradient Descent,SGD)来更新参数的误差的最小值,如公式3.4所示。其中, α 为学习率,需要人为设置。

起初感知机被寄予希望能够解决人工智能的部分难题,但MIT人工智能实验室创始人Marvin Minsky和Seymour Paper在 Perceptrons 中指出感知机不能解决线性不可分问题。

3. 损失函数

在神经网络的设计过程中,使用合适的损失函数(Loss Function)是相当重要的,从其作用的角度出发,代价函数(Cost Function)的定义是用来找到问题最优解的函数。从严格意义上讲,损失函数表示对于单个样本输出值与实际值之间的误差。代价函数表示在整个训练集上所有样本误差的平均,即损失函数的平均。目标函数(Object Function)是最终需要优化的函数,一般等于代价函数加上正则化项。

假设有训练样本 x =( x 1 , x 2 ,…, x n ),标签为 y ,模型为 h ,参数为 θ 。神经网络的预测值为 h ( θ )= θ T x 。这里用 L ( θ )表示损失函数,表示单个样本预测值与真实值之间的误差。每个模型都需要多个样本来进行训练,将所有 L ( θ )取均值得到代价函数 J ( θ ),表示在整个训练集上的平均误差。在不考虑结构化风险的情况下,将 J ( θ )直接当作目标函数,这里的目标函数既是衡量模型效果的函数,也是模型最终需要优化的函数。

在训练过程中,用 J ( θ )来判断是否需要终止训练,则整个训练过程可以表示为 。理想情况下, J ( θ )取最小值0的时候停止训练,此时就会得到最优的参数 θ ,代表模型能够完全拟合,没有任何训练误差。在一般情况下, J ( θ )不能达到理论最小值0。因此,可以在训练过程中加入终止条件,例如迭代次数,或者是 J ( θ )在误差精度内不再下降时终止训练。

如果不考虑结构风险,而是直接把代价函数作为最后的目标函数,往往会出现过拟合的现象,即模型在训练集上表现很好,但是在测试集或其他数据集上性能明显下降。这表示模型除了学习到针对某个问题共同的特征之外,还学习到了该训练集上特有的数据规律,导致模型的泛化能力弱。为了避免模型过拟合现象的发生,需要在经验风险 J ( θ )的基础上融入结构化风险 J ( f )。 J ( f )专门用来衡量模型的复杂度,也叫作正则化项。正则化项的引入是人为地加入先验知识,利用先验知识来防止过拟合。关于正则化,后面第5章有论述。

神经网络中的损失函数非常多,假设用 y 表示真实值, x 表示输入的数据, h 表示模型, L 表示损失函数,常见的损失函数有以下几项。

1)0-1损失函数

如公式3.5所示,预测值和实际值不相等就为1,相等就为0。该损失函数方便统计所有预测中判断错误的个数。需要注意的是,0-1损失函数不是凸函数,也不是光滑的,所以在实际使用中直接进行优化很困难。

2)绝对值损失函数

如公式3.6所示,将真实值与预测值差的绝对值之和作为损失函数,容易理解,也被叫作L1损失函数。需要注意的是,绝对值损失函数不连续,所以在实际使用中可能有多个局部最优点,当数据集进行调整时,此损失函数的解可能会有一个较大的变动。

3)对数损失函数

如公式3.7所示,对数损失函数背后蕴含了极大似然估计的思想,适合表征概率分布特征,适合多分类。

4)平方损失函数

如公式3.8所示,将真实值与预测值的差值进行平方求和来表示损失,解决了绝对值损失函数不是全局可导的问题,也叫作L2损失函数。平方操作会把异常点的影响放大,因此会使解有一个较大的波动,即异常点的影响较大,需要大量的正常数据进行训练来进行矫正,适合用于回归问题。

5)指数损失函数

如公式3.9所示,由于此类损失函数对于错误分类给予了最大的惩罚,因此此类损失函数对异常点非常敏感,适用于分类任务。AdaBoost分类算法中使用的就是指数损失函数。

6)Hinge损失函数

如公式3.10所示,正确分类损失为0,否则为1- yf ( x )。通常情况下, f ( x )∈[-1,1], y ∈{-1,1}。需要注意的是,该函数在 yf ( x )处不可导,因此直接使用梯度法不合适,使用次梯度下降法作为其优化算法。Hinge损失函数的健壮性高,专注于整体误差,用于SVM。

7)交叉熵损失函数

如公式3.11所示,其中 n 表示样本总数量,交叉熵刻画的是两个概率分布之间的距离,因此适合衡量预测和真实整体概率分布之间的差距,适用于二分类或多分类任务。

4. 激活函数

激活函数(Activation Function)是指将神经元的输入映射到输出时所需要进行的函数变换,具有非线性、可微性和单调性。

在最早的单层神经网络感知机中,输入 x 和输出 m 的关系是线性的,当时还没有激活函数的概念,在最后输出结果之前将 与0做比较,大于0则输出分类为1,小于0则输出分类为0。如图3.3所示,即使前面的层数变成多层,输入用 x 向量表示, x 到中间层第一个神经元的映射权重用 向量表示, ,可以得到 ,依然还是线性的,不能拟合非线性问题。

因此,在神经网络中加入激活函数即可加入非线性的特征,使神经网络能够解决非线性问题。加入了激活函数的神经元。

其中,输出 h 表示激活函数。常见的激活函数有Sigmoid、Tanh、ReLU、Softmax等。

1)Sigmoid

Sigmoid的表达式如下:

可以把输出映射到0~1,当取无穷大时,取值为1;当取无穷小时,取值为0。

2)Tanh

Tanh的表达式如下:

把输出映射到-1到1之间,但在 x 极大或极小时梯度很小,此时使用梯度下降算法训练很慢。

3)ReLU

ReLU的表达式如下:

可知ReLU损失函数本质上是一个取最大值的函数。

4)Softmax

Softmax的表达式如下:

i 代表某一层的第 i 个神经元的输出值, C 为输出节点的个数,通过此函数把输出值变为和为1的概率分布,适合多分类问题。

5. 正向传播

训练神经网络首先进行正向传播,然后通过反向传播算法对权重进行修正。这里以具有两层隐藏层、一层输入层、一层输出层的前馈神经网络为例进行介绍。

图3.3所示为输入层、隐藏层1、隐藏层2、输出层,从左到右依次为1、2、3、4层。输入为二维向量 x =( x 1 , x 2 ) T ,输出为一个实数 y 。设激活函数为 h ,这里假设每个神经元选择相同的激活函数以便推导。用 I l 表示第 l 层的输入、 O l 表示第 l 层的输出,可以得到 I l O l 的关系如公式3.16所示。

图3.3 正向传播神经网络示意图

相邻两层之间的关系如公式3.17所示。

W l 表示权重矩阵。对于第一层,也就是输入层而言, I l = x 。由此推导, O 1 = h ( I 1 ), I 2 = W 2 O 1 , O 2 = h ( I 2 ), I 3 = W 3 O 2 , O 3 = h ( I 3 ), I 4 = W 4 O 3 , O 4 = h ( I 4 ),这里 O 4 就是 y ,总结起来,输出 y 与输入 x 之间的关系如公式3.18所示。

这就是整个正向传播过程。

6. 反向传播

反向传播算法在神经网络发展史上具有重要意义,1974年由哈佛大学的Paul Werbos发明BP算法。我们把由一个输入层、一个输出层和一个或多个隐藏层构成的神经网络称为BP神经网络。对于训练好的网络,我们直接给定一个输入就能获得对应的输出,而BP算法是经典的训练神经网络算法。

训练网络的目的就是通过最小化损失函数来更新权重,BP算法是更新权重的一种方法。对于一个BP神经网络而言,除第一层外,每层都有一个对应的权重 W l ,在训练过程中通过以下方式更新权重:

Loss是定义的损失函数, η 是学习率常数,由我们训练之前设置。 L 代表神经网络的层数, O L 表示最后一层的输出, y 表示实际值,都可以看作向量,当输出神经元只有一个时,变为标量。BP算法的核心在于求出损失函数关于权值矩阵的偏导

由上一节得出的结论:

可将Loss看作以 W l 为变量的一个函数,根据链式法则,可得权重矩阵 W l

ξ l 为第 l 层的误差向量,然后利用链式法则推出相邻两层误差向量之间的关系:

最后一层的误差 ,激活函数 h 和损失函数 f 都已知,即求出最后一层的误差 ζ L ,此时 变为已知。然后更新最后一层权重 ,就可以从最后一层推出 L -1层的误差 ζ L-1 ,进而得出 ,再使用 更新第 L -1的权重,以此类推,就可以更新整个网络的所有参数。 QCssteJYkEvtiWuN+BsdQSFdMspyYfdCR8ayEK76PSwL1S7X0tEtG7/LvMx+iaAX

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