1、武汉科技大学1人工神经网络(Artifical Neural Network)张凯 副教授武汉科技大学 计算机学院2第五章第五章 BP神经网络神经网络1.研究背景研究背景2.学习规则学习规则3.感知机结构感知机结构4.感知机学习规则感知机学习规则研究背景研究背景罗斯布莱特的感知机学习规则和伯纳德和玛西娅的 LMS 算法是设计用来训练单层的类似感知器的网络的。如前面几章所述,这些单层网络的缺点是只能解线性可分的分类问题。罗斯布莱特和伯纳德均意识到这些限制并且都提出了克服此类问题的方法:多层网络。但他们未将这类算法推广到用来训练功能更强的网络。研究背景研究背景韦伯斯(Werbos)在他1974年博
2、士的论文中第一次描述了训练多层神经网络的一个算法,论文中的算法是在一般网络的情况中描述的,而将神经网络作为一个特例。论文没有在神经网络研究圈子内传播。研究背景研究背景直到20 世纪80 年代中期,反向传播算法才重新被发现并广泛地宣扬,这个算法因被包括在并行分布式处理(Parallel Distributed Processing)RuMc86一书中而得到普及,才使之成为迄今为止最著名的多层网络学习算法BP 算法,由此算法训练的神经网络,称之为BP 神经网络。研究背景研究背景David Rumelhart J.McClelland 研究背景研究背景BP 网络广泛应用于函数逼近、模式识别/分类、数
3、据压缩等,80%-90%的人工神经网络模型是采用BP网络或它的变化形式,它也是前馈网络的核心部分,体现了人工神经网络最精彩的部分。异或异或问题问题x1x2y000110110110多层网络求解异或问题多层网络求解异或问题 1,01,0 xf xx输出函数:用一个简单的三层感知器就可得到解决多层网络求解异或问题多层网络求解异或问题x1+x2+0.5=0 x1+x2-1.5=00.7*y1-0.4y2-1=0多层网络求解异或问题多层网络求解异或问题BP神经元及神经元及BP网络模型网络模型BP神经元及神经元及BP网络模型网络模型 BP神经元与其他神经元类似,不同的是BP神经元的传输函数为非线性函数,
4、最常用的函数是logsig 和tansig函数,其输出为:BP神经元及神经元及BP网络模型网络模型BP神经元及神经元及BP网络模型网络模型BP网络一般为多层神经网络。由BP神经元构成的二层网络如图所示,BP网络的信息从输入层流向输出层,因此是一种多层前馈神经网络。BP神经元及神经元及BP网络模型网络模型如果多层BP 网络的输出层采用S形传输函数(如logsig),其输出值将会限制在较小的范围内(0,l);用线性传输函数则可以取任意值。BP神经元及神经元及BP网络模型网络模型1111(),0,1,.,1mmmmmafWabmM0ap前一层的输出是后一层的输入 网络的输入 Maa网络的输出 BP神
5、经元及神经元及BP网络模型网络模型BP网络的学习网络的学习 在确定了BP网络的结构后,要通过输入和输出样本集对网络进行训练,亦即对网络的阈值和权值进行学习和修正,以使网络实现给定的输入/输出映射关系。BP网络的学习网络的学习BP 网络的学习过程分为两个阶段:第一个阶段是输入已知学习样本,通过设置的网络结构和前一次迭代的权值和阈值,从网络的第一层向后计算各神经元的输出。第二个阶段是对权值和阈值进行修改,从最后一层向前计算各权值和阈值对总误差的影响(梯度),据此对各权值和阈值进行修改。BP网络的学习网络的学习 以上两个过程反复交替,直到达到收敛为止。由于误差逐层往回传递,以修正层与层间的权值和阈值
6、,所以称该算法为误差反向专播(error back propagation)算法,这种误差反传学习算法可以推广到有若干个中间层的多层网络,因此该多层网络常称之为BP 网络。BP网络的学习网络的学习 标准的BP 算法也是一种梯度下降学习算法,其权值的修正是沿着误差性能函数梯度的反方向进行的。针对标准BP 算法存在的一些不足,出现了几种基于标准BP算法的改进算法,如变梯度算法、牛顿算法等。函数逼近函数逼近 直到现在为止,在本书中看到的神经网络的应用多是在模式分类方面。神经网络在本质上也可被看作是函数逼近器。例如,在控制系统中,目标是要找到一个合适的反馈函数。应用举例应用举例求解函数逼近问题 有21
7、组单输入矢量和相对应的目标矢量,试设计神经网络来实现这对数组的函数关系2022-7-3123函数逼近函数逼近 它能将测量到的输出映射为控制输入。考虑图中的两层的1-2-1网络。函数逼近函数逼近此例中,第一层的传输函数是logsig函数第二层的是线性函数。11()1nfne2()fnn函数逼近函数逼近 注意网络的响应包括两步,每一步对第一层中的一个logsig形神经元的响应。通过调整网络的参数,每一步的曲线形状和位置都可以发生改变,如在下面讨论中将会见到的那样。函数逼近函数逼近目标矢量相对于输入矢量的图形 初始网络的输出曲线 2022-7-3127函数逼近函数逼近2022-7-3128训练100
8、0次 训练2000次函数逼近函数逼近2022-7-3129训练3000次 训练5000次函数逼近函数逼近 从这个例子中,可以看到多层网络的灵活性。看起来,只要在隐层中有足够数量的神经元,我们可以用这样的网络来逼近几乎任何一个函数。事实上,研究已表明两层网络在其隐层中使用S形传输函数,在输出层中使用线性传输函数,就几乎可以以任意精度逼近任何感兴趣的函数,只要隐层中有足够的单元可用(Host89)。函数逼近函数逼近 我们已经有了对多层感知机网络在模式识别和函数逼近中的能力一些概念,下一步是要设计一个算法来训练这样的网络。反向传播算法反向传播算法反向传播算法反向传播算法 如前所述,多层网络中某一层的
9、输出成为下一层的输入。描述此操作的等式为:这里,M是网络的层数。第一层的神经元从外部接收输入:它是等式的起点。最后一层神经元的输出是网络的输出:1111(),0,1,1mmmmmmMafW ab0a=pMa=a多层网络的BP算法是 LMS 算法的推广。两个算法均使用相同的性能指数:均方误差。算法的输入是一个网络正确行为的样本集合:1 ,12 ,2 ,QQptptpt221111()()()QQkkmsee kt ka kQQ这里是网络的输入,是对应的目标输出。每输入一个样本,便将网络输出与目标输出相比较。算法将调整网络参数以使均方误差最小化:性能指数性能指数 近似误差的最速下降法为,这里 是学
10、习速度。22()()()()F xe kt ka k,(1)()mmi ji jmi jFwkwkw(1)()mmiimiFbkbkb性能指数性能指数 这里,x是网络权值和偏置值的向量。若网络有多个输出,则上式的一种形式为:这里,均方误差的期望值被第k次迭代时的均方误差所代替。敏感性的反向传播敏感性的反向传播 现在还需要计算敏感性,正是这个过程给出了反向传播这个词,因为它描述了第m层的敏感性通过第m+1层的敏感性来计算的递推关系。,(1)()mmi ji jmi jFwkwkw误差不是隐层中的权值的显式函数偏导数不易求得22()()()()F xe kt ka k1111(),0,1,.,1m
11、mmmmafWabmM链法则链法则链法则计算隐层偏导数()()()df n wdf ndn wdwdndw设有一个函数 f,它是变量n的显示函数。函数n是w的显示函数。现在球 f 关于第三个变量w的导数。若()()()(2)ndf n wdf ndn wedwdndw(),2nf ne nw链法则链法则,mimmmi jii jnFFwnwmimmmiiinFFbnb11,1mSmmmmii jjijnw ab1,mmijmi jnaw1miminb梯度计算梯度计算,mimmmi jii jnFFwnwmimmmiiinFFbnb11,1mSmmmmii jjijnw ab1,mmijmi j
12、naw1miminbmimiFsn1,mmijmi jFs awmimiFsb梯度计算梯度计算敏感性梯度1,(1)()mmmmi ji jijwkwks a(1)()mmmiiibkbks1w(1)w()s(a)mmmmTkkb(1)b()smmmkk12smmmmimsFnFFnnFn最速下降最速下降1111111211122211211112nnmmmmmmSmmmmmmmSmmmmssSmmmSnnnnnnnnnnnnnnnnnnJacobian矩阵矩阵111,11,11,()()()mSmmmmmi jjijmiii jmmmjjjmmjmmmmi ji jjmjwabanwnnnfn
13、wwfnn11nw()nmmmmmFnJacobian矩阵矩阵11nw()nmmmmmFn12()000()0()00()mmmmmmmmSfnfnFnfnJacobian矩阵矩阵111111n()(w)nnnn()(w)TmmmmmTmmmmmmmTmFFFsFnFns121mmssss反向传播反向传播(敏感性敏感性)现在我们可以看到反向传播算法得名的原因了。敏感性从最后一层通过网络被反向传播到第一层:211()2()mSjjjmiijjmmmiiitaaFstannn 1,()()mmjmmmii jjmmjjfnawfnnn2()()mmmijjjstafn s2(n)(ta)mmmF
14、初始化初始化(最后一层最后一层)第一步,通过网络将输入向前传播1111(w),0,1,.,1mmmmmafabmM0apmaaBP算法总结算法总结下一步,通过网络将敏感性反向传播s2(n)(ta)mmmF 11()(w)mmmmTmsFnsBP算法总结算法总结最后,使用最速下降法更新权值和偏置值1w(1)w()s(a)mmmmTkkb(1)b()smmmkkBP算法总结算法总结BP算法总结算法总结g p 14-psin+=1-2-1Network+-taep例子例子:函数逼近函数逼近 网络网络1-2-1Networkap初始条件初始条件 下一步定义网络要解决的问题。假定我们用此网络来逼近函数
15、训练集可以通过计算函数在几个 p值上的函数值来得到。1sin,224gppp初始条件初始条件 在开始BP算法前,需要选择网络权值和偏置值的初始值。通常选择较小的随机值。下一章将讨论为什么要这样做。现在,选择的值 网络对这些初始值的响应如图所示,图中还包括要逼近的正弦函数的曲线。11220.270.480,0,00.09 0.17,00.480.410.13WbWb初始条件初始条件 现在可以开始执行算法了。对初始输入,我们选择p=1:第一层的输出为0 a=p=1 1010.750.540.270.480.75flog1log0.410.130.5410.321110.3681sigsigee 1
16、aWab前向传播前向传播 第二层的输出为误差将为 22120.3210.09 -0.170.480.4460.368fpurelin2aWab21 sin1 sin10.4461.26144e=t-apa前向传播前向传播 算法的下一阶段是反向传播敏感性值。在开始反向传播前需要先求传输函数的导数 和 。对第一层:1fn 2fn 1211111111defdeeeen11nnnnn1-aan反向传播反向传播 对第二层:下面可以执行反向传播了。起始点在第二层。21dfdnnn 222221.2612 1 1.2612.522f2sF nt-an反向传播反向传播 第一层的敏感性由计算第二层的敏感性反向
17、传播得到:1111111221122100.092.5220.17011 0.321 0.32100.092.52201 0.3680.3680.170.21800.2270.049500.2330.4290.0997Ta aaasF nws反向传播反向传播 算法的最后阶段是更新权值。为简单起见,学习速度设为 。0.1权的修正权的修正 22212221110111100.09 -0.17 0.1 2.522 0.321 0.368 =0.171 -0.0772 100.480.1 2.5220.7320.270.04950.265100.110.410.09970.4200.10TTWWs a
18、bbsWWs abbs480.04950.4750.10.130.09970.140权的修正权的修正 这就完成了BP算法的第一次迭代。下一步可以选择另一个输入,执行算法的第二次迭代过程。迭代过程一直进行下去,直到网络响应和目标函数之差达到某一可接受的水平。权的修正权的修正 接着讨论与反向传播法的实际实现相关的一些问题,包括网络结构的选择、网络收敛性和一般化的问题。1.网络结构的选择 如本章前面所述,多层网络可用来逼近几乎任一个函数,只要在隐层中有足够的神经元。然而,通常并不能说,多少层或多少神经元就可以得到足够的性能。本节中我们通过一些例子来考察这个问题。反向传播应用反向传播应用第一个例子:假
19、定要逼近如下的函数:其中 i 取值1、2、4 和8。随 i 的增加,函数变得更为复杂,在 的区间内将有更多的正弦波周期。当 i 增加时,很难用隐层中神经元数目固定的神经网络来逼近g(p)。1sin,224igppp22p 网络结构的选择网络结构的选择 对这个例子,我们使用一个1-3-1 网络,第一层的传输函数为“logsig”形,第二层的传输函数是线性函数。根据前面的函数逼近例子,这种两层网络的响应是三个“logsig”形函数之和(或多个logsig形函数之和,只要隐层中有同样多的神经元).显然,对这个网络能实现的函数有多么复杂有一个限制。图618是网络经训练来逼近g(p)(对 i=1,2,4
20、,8)后的响应曲线。最终的网络响应用图中画出的曲线来表示。网络结构的选择网络结构的选择 网络结构的选择网络结构的选择 1-3-1 Networki=1i=2i=4i=8由于网络的能力受隐层中神经元数目的限制,尽管BP算法可以获得使均方误差最小化的网络参数,网络的响应却不能精确逼近所期望的函数。i=1i=2i=4i=8网络结构的选择网络结构的选择 可以看到,对 i=4,这个1-3-1网络达到了它的最大能力。当 i4 时,网络不能生成g(p)精确的逼近曲线。从图右下方的图中可以看致1-3-1网络试图逼近i=8时的函数g(p)。网络的响应和g(p)之间的均方误差达到了最小化,但网络响应曲线只能与函数
21、的一小部分相匹配。网络结构的选择网络结构的选择 下一个例子中将从一个稍有些不同的角度来解决此问题。这次我们选择函数g(p),然后使用越来越大的网络直到能精确地逼近函数为止。g(p)采用 61 sin,224g ppp网络结构的选择网络结构的选择 1-5-11-2-11-3-11-4-1网络的能力受隐层中神经元数目的限制。若要逼近有大量拐点的函数,隐层中就要有大量的神经元。通常不知道多少层或多少神经元就能得到足够的性能。BP网络的局限性网络的局限性在人工神经网络的应用中,绝大部分的神经网络模型采用了BP网络及其变化形式,但这并不说明BP网络是尽善尽美的,其各种算法依然存在一定的局限性。BP 网络
22、的局限性主要有以下几个方面:BP网络的局限性网络的局限性(1)学习率与稳定性的矛盾 梯度算法进行稳定学习要求的学习率较小,所以通常学习过程的收敛速度很慢。附加动量法通常比简单的梯度算法快,因为在保证稳定学习的同时,它可以采用很高的学习率,但对于许多实际应用,仍然太慢。以上两种方法往往只适用于希望增加训练次数的情况。如果有足够的存储空间,则对于中、小规模的神经网络通常可采用LevenbergMarquardt 算法;如果存储空间有问题,则可采用其他多种快速算法,例如对于大规模神经网络采用trainscg 或trainrp 更合适。BP网络的局限性网络的局限性(2)学习率的选择缺乏有效的方法 对于
23、非线性网络,选择学习率也是一个比较困难的事情。对于线性网络,我们知道,学习率选择的太大,容易导致学习不稳定;反之学习率选择的太小,则可能导致无法忍受过长的学习时间。不同于线性网络,我们还没有找到一种简单易行的方法,选择学习率的问题。对于快速训练算法,其默认参数值通常留有裕量。BP网络的局限性网络的局限性(3)训练过程可能陷于局部最小 从理论上说,多层BP网络可以实现任意可实现的线性和非线性函数的映射,克服了感知器和线性神经网络的局限性。但在实际应用中,BP 网络往往在训练过程中,也可能找不到某个具体问题的解,比如在训练过程中陷人局部最小的情况。当BP 网络在训练过程中陷人误差性能函数的局部最小时,可通过改变其初始值,并经多次训练,以获得全局最小。BP网络的局限性网络的局限性(4)没有确定隐层神经元数的有效方法 如何确定多层神经网络隐层的神经元数也是一个很重要的问题,太少的隐层神经元会导致网络“欠适配”,太多的隐层神经元又会导致“过适配”。武汉科技大学76