美国心理学家麦克洛奇(Mcculloch)和数学家皮兹(Pitts)提出了M-P模型。这种“阈值加权和”的神经元模型称为M-P模型(Mcculloch-Pitts Model),也称为神经网络的一个处理单元(PE,Processing Element),从此开创了神经科学理论的研究时代,此后半个世纪神经网络技术蓬勃发展。在机器学习和认知科学领域,人工神经网络(Artificial Neural Network,ANN),简称神经网络(Neural Network,NN)或类神经网络,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑神经突触)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似,神经网络是分类技术中的重要方法之一。神经网络是一种计算模型,由大量的神经元个体节点和其间相互连接的加权值共同组成,每个节点都代表一种运算,称为激励函数(Activation Function)。每两个相互连接的节点都代表一个通过该连接信号加权值,称之为权重(Weight),神经网络就是通过这种方式来模拟人类的记忆,网络的输出则取决于网络的结构、网络的连接方式、权重和激励函数。而网络本身通常是对自然界或者人类社会某种算法或函数的逼近,也可能是一种逻辑策略的表达[22]。现代神经网络是一种非线性统计性数据建模工具。典型的神经网络具有以下三个部分:
(1)拓扑结构。结构指定了网络中的变量和它们的拓扑关系。例如,神经网络中的变量可以是神经元连接的权重(Weights)和神经元的激励值(Activities of the Neurons)。
①前馈网络。前馈网络也叫前向网络,网络中的神经元分层排列,分别组成输入层、中间层(隐藏层)和输出层。每一层神经元只接受来自前一层神经元的输出,同层神经元之间没有互连,见图5-20所示,如BP网络等。
图5-20 前馈神经网络
②反馈网络。反馈网络是从输出层到输入层中有反馈的神经网络,同层神经元之间没有互连,如Hopfield神经网络等。
③竞争网络。同层神经元之间有横向联系,所以同层神经元之间有相互作用,可以形成竞争。例如自适应谐振理论网络、自组织特征映射网络等。
④全互连网络。任意两个神经元之间都有可能相互连接,这种拓扑结构很少见。因为这种系统太复杂了,是一个极度非线性的动力学系统。
(2)激活函数。以两类数据的分类为例,这些数据真正能线性可分的情况还是比较少的,此时如果数据不是线性可分的我们又该如何分类呢?这个时候我们就无法再简单利用一条直线来对数据进行很好地划分,我们需要加入非线性的因素来对数据进行分类。所以可以判断出激活函数的作用是给神经网络加入一些非线性因素,由于线性模型的表达能力不够,故激活函数的加入可以使得神经网络更好地解决较为复杂的问题。大部分神经网络模型具有一个短时间尺度的动力学规则,来定义神经元如何根据其他神经元的活动改变自己的激活值。一般激活函数依赖于网络中的权重(即该网络的参数)。几种经典的激活函数如下。
①Sigmoid函数。Sigmoid函数定义如下:
Sigmoid函数将实数压缩到0~1区间。大的负数变成0,大的正数变成1。Sigmoid函数由于其强大的解释力,常被用来表示神经元的活跃度程度:从不活跃(0)到假设上最大的(1)。
②tanh函数。tanh和Sigmoid函数是有异曲同工之妙的,不同的是它把实数压缩到-1~1的范围。tanh函数的公式如下所示:
③ReLU函数。ReLU是最近几年非常流行的激活函数。它的定义如下:
(3)学习规则(Learning Rule)。学习是神经网络最重要的特征之一,神经网络通过训练学习,改变其内部表示,使输入、输出变换向好的方向发展,这个过程称之为学习过程。神经网络按照一定的学习规则自动调整神经元之间的连接权重或者拓扑结构,一直到网络实际输出满足期望的要求,或者趋于稳定为止。按照神经网络结构的变化来划分,学习技术可以分为权值修正、拓扑变化、权值与拓扑修正3种,其中权值修正最普遍[23]。学习规则指定了网络中的权重如何随着时间推进而调整,这一般被看作是一种长时间尺度的动力学规则。一般情况下,学习规则依赖于神经元的激励值,它也可能依赖于监督者提供的目标值和当前权重的值。
①Hebb学习规则。Hebb学习规则调整神经元间连接权重的原则是:若第i和第j个神经元同时处于兴奋状态,则它们之间的连接应当加强,即:
这一规则与“条件反射”学说一致,并已得到神经细胞学说的证实。η(0<η<1)表示学习速率的比例常数,又称为学习因子或者学习步长,在其他学习规则中,η均表示同样的含义。
②δ学习规则。δ学习规则调整神经元之间的连接权重的原则是:若某个神经元的输出值与期望值不符,则根据期望值与实际值之间的差值量得出该神经元权重,即:
这是一种梯度下降学习规则。
③Widrow-Hoff学习规则。这是δ学习规则的特例,也称为最小均方误差学习规则,其原则是使神经元实际输出与期望输出之间的均方误差最小,即:
④竞争学习规则。竞争学习规则的原则就是“胜者全赢”,如果在一层神经元中有一个神经元对输入产生的输出值最大,则该神经元即为胜者。然后只对连接到胜者的权重进行调整,使其更接近于对输入样本模式的估值,即:
神经网络通常需要进行训练,训练的过程就是网络进行学习的过程。训练改变了网络节点的连接权重使其具有分类的功能,经过训练的神经网络可以用于进行分类预测。神经网络模型是自适应的,可以根据数据自学习模型的参数。神经网络是一组连接的输入/输出神经元,其中每一个输入的神经元都有一个权重相关联。一个简单的神经网络结构模型(感知机)如图5-20所示。
图5-20 一个简单的神经网络结构模型
在上述模型中,神经元接收到来自n个其他神经元传递过来的输入信号(自变量的观测值),然后通过不断地训练或学习获得传递参数(经常称为权重),神经元的总输入值将与神经元的阈值进行比较,然后通过非线性激活函数f处理以产生神经元的输出。神经元的激活函数f是相同的,唯一不同的就是权重w,那么我们做学习训练的目标就是求解这里的w,通过不断地对各连接权重进行动态调整,最终学习或发现输入和输出之间的一些模式。神经网络有对噪声数据的高承受能力以及对未经训练数据的模式分类能力,算法是并行的,可以使用并行技术加快计算过程。多层感知器神经网络(Multi-Layer Perceptron Neural Network,简称MLPNN)是常见的神经网络模型,属于多层前馈神经网络(模型见脚注[24]),有一个输入层(第一层)、输出层(最后一层)和一或多个隐藏层(中间层),可看成是若干个函数(见图5-20中的输出函数)的相互嵌套。MLPNN使用梯度下降法把输出节点的激活值和实际值之间的残差代入代价函数,通过对代价函数求得偏导更新权重,经过不断地进行下一轮迭代,直到代价函数不再收敛为止,即误差值达到最小化,最后选择它的网络结构和连接权重。在图5-20中,如果输入的神经元有三个节点,即为x1,x2,x3,对应的权重都等于0.3,偏执因子θ=0.4,则上述模型的输出计算公式为:
当x1=x2=1,x3=0时,则y=1,因为0.3x1+0.3x2+0.3x3-0.4=0.2>0;当x1=x3=0,x2=1时,则y=-1,因为0.3x1+0.3x2+0.3x3-0.4=-0.1<0。
由此,我们可以得出感知机模型的输出可以用如下数学公式计算:
其中sign为符号函数,作为输出神经元的激活函数,进而公式(5.54)可以向量化为:
其中,w是权值向量,x是输入向量。
在模型训练阶段,权值参数不断调整直到输出和训练样例的实际输出一致。神经网络算法的主要计算是权值更新,公式为:
其中,w(k)是第k次循环后第i个输入链上的权重。参数λ称为学习率,其中在0~1之间,可用来控制每次循环时的调整量,如果接近于0,那么新权重主要受旧权重的影响;如果接近于1,那么新权重对当前循环中的调整量更加敏感。在某些情况下可使用一个自适应的学习率,学习率在前几次循环时相对较大,之后的循环中逐渐减小。xij是训练样本xi的第j个属性值。
用于分类的常见的神经网络模型主要包括:BP(Back Propagation)神经网络、RBF(Radial Basis Function)网络、Hopfield网络、自组织特征映射神经网络、学习矢量化神经网络等。(www.xing528.com)
2.常见的神经网络算法
常见的神经网络主要包括反向传播网络BP、径向基函数网络RBF、Hopfield网络、自组织特征映射网络等,接下来主要以BP、RBF网络为例进行介绍,其他神经网络可参考脚注文献[25]。
(1)BP网络。前馈网络是一种最基本的神经网络形式,由于没有反馈环节,所以前馈网络必然是稳定的。BP算法是最著名的一种前馈网络学习算法,该算法即解决了多层感知机不能学习的缺陷,又继承了感知机强大的分类能力。BP(Back Propagation)网络是1986年由Rumelhartt和McCelland为首的科学家小组提出的,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用梯度下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型是由一个输入层(Input Layer)、一个输出层(Output Layer)和一个或多个隐层(Hide Layer)构成,它的激活函数采用sigmoid函数,采用BP算法训练的多层前馈神经网络。一个多层前馈神经网络见图5-21所示。
图5-21 多层前馈神经网络
①BP算法原理。BP算法全称叫作误差反向传播(Error Back Propagation,或者也叫作误差逆传播)算法,使用BP算法的前馈神经网络一般被称为BP网络。BP神经网络的学习规则,即权值和阈值的调节规则采用的是误差反向传播算法(BP算法)。其算法基本思想为:在BP前馈网络中,输入信号经输入层输入,通过隐层计算由输出层输出,输出值与标记值比较,若有误差,将误差反向由输出层向输入层传播。在这个过程中,利用梯度下降算法对神经元权值进行调整,网络的权值和阈值通常是沿着网络误差变化的负梯度方向进行调节的,最终使网络误差达到极小值或最小值,即在这一点误差梯度为零。需要强调的是BP网络中的所有权值都是可以自动调整的。
②BP算法的基本过程。BP网络一般用于解决分类、函数拟合和预测等问题。假定有数据集D:
输入神经网络,同样假定就是图5-21这个3层前馈神经网络,我们来列一下图5-21这个网络要通过这些训练集来训练得到多少个参数。
图5-21的神经网络有n个输入神经元(记为x1,x2…,xn)、m个隐藏层神经元(记为h1,h2,…,hm),k个输出神经元(记为y1,y2,…,yk),通过训练,我们要获得下面几种数值:
输入层到隐藏层的权值:n×m个;
隐藏层到输出层的权值:m×k个;
m个隐藏层阈值与k个输出层阈值。
训练完成后,通过测试集样例与训练出的参数,可以直接得到输出值来判断所属分类(分类问题)。
BP算法首先逐一根据样本集中的样本(xi,yi)计算出实际输出oi及其误差Ei=|yi-oi|,然后对各层神经元的权值进行一次调整,重复这个循环,直到所有样本的误差和足够小(),到此,训练过程结束。
BP算法用输出层的误差调整输出层的权矩阵,并用此误差估计输出层直接前导层的误差,再用输出层前导层误差估计更前一层的误差,从而获得所有其他各层的误差估计,并用这些估计实现对权矩阵的修改。这个过程就是将输出端表现出的误差沿着与输入信号相反的方向逐级向输入端传递的过程,这就是误差反向传播算法的由来。
BP算法的基本训练过程如下:
第一步,网络权值初始化:
初始化权值,为避免饱和状态,取一个小的随机数,各个权值尽量不相同,从而保证神经网络可以学习。
第二步,前向传播阶段:
①从样本集合中取一个样本(xi,yi),将xi输入网络;
②计算相应的实际输出oi。
第三步,后向传播阶段-误差传播阶段:
③计算实际输出oi与相应期望输出yi之间的误差Ei;
④按极小化误差的方式调整权值矩阵;
⑤累计整个样本数据集的误差,获得本轮神经网络的误差。
第四步,如果神经网络误差足够小,则停止训练;否则重复步骤第二、三步。
在BP算法中,误差一般采用方程度量:
(2)RBF网络。径向基函数RBF(Radial Basis Function)网络是以函数逼近理论为基础而构造的一类前向网络,这类网络的学习等价于在多维空间中寻找训练数据的最佳拟合平面。径向基函数网络的每个隐层神经元激活函数都构成了拟合平面的一个基函数,网络也由此得名。径向基函数网络是一种局部逼近网络,即对于输入空间的某一个局部区域只存在少数的神经元用于决定网络的输出。而BP网络则是典型的全局逼近网络,即对每一个输入/输出数据对,网络的所有参数均要进行调整。由于二者的构造本质不同,径向基函数网络与BP网络相比规模通常较大,但学习速度较快,并且网络的函数逼近能力、模式识别与分类能力都优于后者。
由模式识别理论可知,在低维空间非线性可分的问题总可映射到一个高维空间,使其在此高维空间中为线性可分。在RBF网络中,输入到隐层的映射为非线性的(隐单元的激活函数是非线性函数),而隐层到输出则是线性的。可把输出单元部分看作一个单层感知器,这样只要合理选择隐单元数(高维空间的维数)及其激活函数,就可以把原来问题映射为一个线性可分问题,从而最后用一个线性单元来解决问题。
最常用的径向基函数形式是高斯函数,它的可调参数有两个:中心位置及方差(函数的宽度参数),用这类函数时整个网络的可调参数(待训练的参数)有三组:各基函数的中心位置、方差和输出单元的权值。
RBF网络具有很好的通用性,已经证明:只要有足够多的隐层神经元,RBF网络能以任意精度近似任何连续函数。更重要的是:RBF网络克服了传统前馈神经网络的很多缺点,其训练速度相当快,并且在训练时不会发生震荡和陷入局部极小。另外,通过引入非线性优化技术可以在一定程度上提高学习精度,但这同时也带来了一些缺陷,如局部极小、训练时间长等。
3.神经网络算法的优缺点
当我们进行分类时,应该使用神经网络还是传统的机器学习算法是一个难以回答的问题,因为它很大程度上取决于你正试图解决的问题。这也是由于“没有免费的午餐”定理,它大致表明没有“完美”的机器学习算法,在任何问题上都能表现出色。对于每一个问题,一个特定的方法是适合的,并取得了良好的效果,而另一种方法失败了。尽管如此,神经网络的主要优势在于其几乎超越其他所有机器学习算法的能力,但是神经网络也有一些缺点。
(1)黑盒子。神经网络可能最为人所知的缺点是它们的“黑盒子”性质,这意味着你不知道神经网络如何以及为什么会产生一定的输出。例如,当你将一张猫的图像放入神经网络,并预测它是一辆汽车时,很难理解是什么导致它产生这个预测。当你具有人类可解释的特征时,理解其错误的原因要容易得多。在比较中,像决策树这样的算法是非常容易理解的。这很重要,因为在某些领域,可解释性非常重要。
这就是为什么很多银行不使用神经网络来预测一个人是否有信誉,因为他们需要向客户解释为什么他们没有获得贷款;否则,这个人可能会觉得受到银行的错误威胁,因为他不明白他为什么没有获得贷款,这可能导致他改换银行。
(2)发展的持续时间。虽然有像Keras这样的库,这使得神经网络的开发变得相当简单,但有时您需要更多的控制算法的细节,例如,当您试图解决机器学习中的一个难题时,且之前从来没有人做过。然后你可能会使用Tensorflow,它为你提供更多的机会,但因为它也更复杂,开发需要更长的时间(取决于你想要构建的网络)。对于公司管理层来说,如果真的值得他们昂贵的工程师花费数周时间来开发一些东西,那么问题就会出现,用更简单的算法可以更快地解决问题。
(3)数据量。与传统的机器学习算法相比,神经网络通常需要更多的数据,至少有数千甚至数百万个标记样本。这不是一个容易解决的问题,如果使用其他算法,许多机器学习问题可以用较少的数据很好地解决。在这种情况下,像朴素贝叶斯这样的简单算法可以很好地处理少数数据。
(4)计算昂贵。通常,神经网络比传统算法在计算上更昂贵。最先进的深度学习算法,实现真正深度神经网络的成功训练,可能需要几周的时间才能从头开始完全训练。大多数传统的机器学习算法花费的时间少于几分钟到几个小时或几天。神经网络所需的计算能力很大程度上取决于数据的大小,但也取决于网络的深度和复杂程度。例如,具有一层和50个神经元的神经网络将比具有1 000棵树的随机森林快得多。相比之下,具有50层的神经网络将比仅有10棵树的随机森林慢得多。
现在你知道神经网络对于某些任务很好,但对其他任务来说并不好。当前,大量的数据、更多的计算能力、更好的算法和智能营销增加了深度学习的受欢迎程度,并使其成为目前最热门的领域之一。最重要的是,神经网络几乎可以击败所有其他机器学习算法以及克服与之相伴随的缺点。最大的缺点是它们的“黑盒子”性质、更长的开发时间(取决于问题)、所需的数据量以及它们大部分计算成本昂贵。
在我看来,深度学习目前有点过度炒作,并且期望超过了现在可以完成的事情。但这并不意味着它没有用处。我认为我们生活在机器学习复兴中,因为它越来越民主化,越来越多的人可以用它来构建有用的产品。机器学习可以解决很多问题,我相信这将在未来几年内发生。其中一个主要问题是只有少数人了解可以用它做些什么,并知道如何建立成功的数据科学团队,为需求方带来真正的价值。一方面,我们拥有博士级工程师,他们是机器学习背后的理论天才,但缺乏对监狱、强制隔离戒毒所方面的理解。另一方面,监狱和强制隔离戒毒所拥有的大量一线警察,他们不知道深度学习可以做些什么。因此,如果能够把高校教师、一线工程师和业务领域专家组成一个数据科学专家团队,实现资源的互补,将对最终问题域的解决是非常有帮助的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。