版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第六章第六章 BPBP网络网络 罗斯布莱特的感知机学习规则和伯纳德和玛西娅的 LMS 算法是设计用来训练单层的类似感知器的网络的。如前面几章所述,这些单层网络的缺点是只能解线性可分的分类问题。罗斯布莱特和伯纳德均意识到这些限制并且都提出了克服此类问题的方法:多层网络。但他们未将这类算法推广到用来训练功能更强的网络。 保罗在他1974 年博士的论文中第一次描述了训练多层神经网络的一个算法werbo74 ,论文中的算法是在一般网络的情况中描述的,而将神经网络作为一个特例。论文没有在神经网络研究圈子内传播。 直到20 世纪80 年代中期,反向传播算法才重新被发现并广泛地宣扬,这个算法因被包括在并行
2、分布式处理(Parallel Distributed Processing)RuMc86一书中而得到普及,才使之成为迄今为止最著名的多层网络学习算法BP 算法,由此算法训练的神经网络,称之为BP 神经网络。 BP 网络广泛应用于函数逼近、模式识别分类、数据压缩等,80% -90%的人工神经网络模型是采用BP网络或它的变化形式,它也是前馈网络的核心部分,体现了人工神经网络最精彩的部分。 6.1 BP神经元及神经元及BP网络模型网络模型 BP神经元模型如图6.1 所示。 图6.1 BP 神经元的一般模型 BP神经元与其他神经元类似,不同的是BP神经元的传输函数为非线性函数,最常用的函数是 和 函数
3、,其输出为: log6.1sigaWpblogsigtansig BP网络一般为多层神经网络。由BP神经元构成的二层网络如图6.2所示,BP网络的信息从输入层流向输出层,因此是一种多层前馈神经网络。 如果多层BP 网络的输出层采用S 形传输函数(如logsig),其输出值将会限制在较小的范围内(0,l);而来用线性传输函数则可以取任意值。 BP 网络的学习过程分为两个阶段: 第一个阶段是输入已知学习样本,通过设置的网络结构和前一次迭代的权值和阈值,从网络的第一层向后计算各神经元的输出。 第二个阶段是对权值和阈值进行修改,从最后一层向前计算各权值和阈值对总误差的影响(梯度),据此对各权值和阈值进
4、行修改。 以上两个过程反复交替,直到达到收敛为止。由于误差逐层往回传递,以修正层与层间的权值和阈值,所以称该算法为误差反向专播(back propagation)算法,这种误差反传学习算法可以推广到有若干个中间层的多层网络,因此该多层网络常称之为BP 网络。 标准的BP 算法也是一种梯度下降学习算法,其权值的修正是沿着误差性能函数梯度的反方向进行的。针对标准BP 算法存在的一些不足,出现了几种基于标准BP算法的改进算法,如变梯度算法、牛顿算法等。6.3理论与实例理论与实例多层感知机多层感知机 我们在图中重新画出一个三层感知机的图。注意三个感知机网络只是简单地连接一起。第一个网络的输出是第二个网
5、络的输入,第二个网络的输出是第三个网络输入。每一层可以有不同数目的神经元,甚至传输函数也可以不同。在第二章中我们用上标来表示层号。因而,第一层的权值矩阵写作 ,第二层的权值矩阵写作 。1W2W 为了表示多层网络的结构,有时我们使用下面的速记符号,其中在输入的数目后面跟着每一层的神经元数目: 1236.2RSSS 图67 三层网络 现来看这些多层感知器网络的能力,首先看多层网络在模式分类中的使用,然后讨论在函数逼近中的应用。1 . 模式分类 要说明多层感知机用于模式分类的能力,考虑经典的异或(XOR )问题。异或的输入/目标输出对为1122334400,0 ,1 ,0111,1 ,001tttt
6、 pppp 1969 年明斯克曾用此问题来说明单层感知机的局限性,如图68所示 , 因为两个类别不是线性可分的,所以一个单层的感知机不能完成分类任务。 图68 然而一个两层的网络能解决异或问题。事实上,有许多种多层网络可解决此问题。一种办法是在第一层中用两个神经元来产生两个判定边界。第一个边界将 和其他模式分开,第二个边界则将 分开。然后第二层网络用一个 操作将两个边界结合在一起。对第一层的每个神经元,其判定边界如图69所示。4p1pAND 第一层/神经元1 第一层/神经元2 图69异或(XOR )网络的判定边界 结果产生的两层2-2-1网络如图6-10。准个网络整个的判定边界如图611, 阴
7、影区域表示产生网络输出为l 的那些输入。 图610两层异或(XOR )网络 图611 2 函数逼近 直到现在为止,在本书中看到的神经网络的应用多是在模式分类方面。神经网络在本质上也可被看作是函数逼近器。例如,在控制系统中,目标是要找到一个合适的反馈函数。 它能将测量到的输出映射为控制输入。下面的例子将展示多层感知机在实现函数方面的灵活性。 考虑图612中的两层的1 -2 -1网络。 图612 函数逼近网络的例子 此例中,第一层的传输函数是 函数,第二层的是线性函数。换句话说,就是 假定这个网络的权值和偏置值为: 网络在这些参数下的响应如图613,图中网络输出 为输入 的函数, 且 的取值范围为
8、-2,2。121()()6 .1 31ffennnn且()1111,12,11122221,11,210, 10, 10, 10, 1, 1, 0wwbbwwb2applo gs ig m o id图6-13 网络的响应 注意网络的响应包括两步,每一步对第一层中的一个 形神经元的响应。通过调整网络的参数,每一步的曲线形状和位置都可以发生改变 , 如在下面讨论中将会见到的那样。 每步的曲线中心对应网络第一层中的神经元的净输入为0 :log sig 通过调整网络的权值可以调整每一步曲线的陡度。 图6-14说明了参数改变对网络响应的影响。 1111111,1111,110016.1410bnwpbp
9、w 1111222,1212,110016.1510bnwpbpw 图6-13中的曲线是参数未作调整前的网络响应。其他的曲线对应于当一个参数的取值在下面的范围时的网络响应: 图6-14(a)说明第一层(隐层)的网络偏置值如何被用来确定每一步曲线的位置。 图6-14(b)、(c)说明网络权值如何决定每步曲线的坡度。 第二层(输出层)的网络偏置值使整个网络响应曲线上移或下移,如图11-14(d)所示。22121,11,2211, 11, 020, 116.16wwbb 图6-14 参数改变对网络响应的影响 从这个例子中,可以看到多层网络的灵活 性。看起来,只要在隐层中有足够数量的神 经元,我们可以
10、用这样的网络来逼近几乎任何一个函数。 事实上,研究已表明两层网络在其隐层中使用S 形传输函数,在输出层中使用线性传输函数,就几乎可以以任意精度逼近任何感兴趣的函数,只要隐层中有足够的单元可用(见Host89). (试验这个二层网络使用nnd11nf) 我们已经有了对多层感知机网络在模式识别和函数逼近中的能力一些概念,下一步是要设计一个算法来训练这样的网络。反向传播算法反向传播算法 使用第二章中引人的多层网络的缩写符号可以简化对反向传播算法(BP算法)的讨论。图6-15中是使用缩写符号标记的三层神经网络。 图6-15使用缩写符号的三层网络 如前所述,多层网络中某一层的输出成为下一层的输入。描述此
11、操作的等式为: 这里,M是网络的层数。第一层的神经元从外部接收输入: 它是等式(6.17)的起点。最后一层神经元的输出是网络的输出: 1111(),0,1,16.17mmmmmmMafW ab6.180a = p6.19Ma = a1. 性能指数性能指数 多层网络的BP算法是 LMS 算法的推广。两个算法均使用相同的性能指数:均方误差。算法的输入是一个网络正确行为的样本集合: 这里是网络的输入,是对应的目标输出。每输入一个样本,便将网络输出与目标输出相比较。算法将调整网络参数以使均方误差最小化: 6.20QQ1122p ,t, p ,t, p ,t2( )()6.21FEE2xet-a 这里,
12、x是网络权值和偏置值的向量。若网络有多个输出,则上式的一种形式为: 如同LMS算法,我们用 来近似计算均方误差: ( )() ()6.22TTFEE xe et -at -a( )F x ( )( )( )( )( )( ) ( )6.23TTFkkkkkkxtataee 这里,均方误差的期望值被第k次迭代时的均方误差所代替。 近似均方误差的最速下降算法为: 这里 是学习速度。到此为止,整个过程与LMS算法是一样的。.,(1)( )6.24(1)( )6.25mmi ji jmi jmmiimiFwkwkwFbkbkb2. 敏感性的反向传播敏感性的反向传播 现在还需要计算敏感性 ,正是这个过程
13、给出 了反向传播这个词,因为它描述了第m层的敏感性通过第m+1层的敏感性来计算的递推关系。敏感性的递推关系式: 现在我们可以看到反向传播算法得名的原因了。敏感性从最后一层通过网络被反向传播到第一层: 111111()()6.26()()TmmmmmTmmmmmmmTmFFFsnWnFnnnnFnWs1216.27MM ssss3. 小结小结 下面小结BP 算法。第一步是通过网络将输入向前传播: 下一步是通过网络将敏感性反向传播: 1111,0,1,16.28mmmmmMmM0a = pa=fwa +ba=a1126.29,1,2,16.30MMMTmmmmmFntamM ss= FnWs3 最
14、后使用近似的最速下降法更新权值和偏置值: 116.3116.32TmmmmmmmkkkkWWsabbs6.4 例子例子 下面我们选择一个网络并将BP 算法用在其上来解决一个特定问题。首先,采用本章开始时讨论的1-2-1网络。为方便起见,将此网络重画于图616中。 图616 用网络逼近函数的例子 下一步定义网络要解决的问题。假定我们用此网络来逼近函数 训练集可以通过计算函数在几个 值上的函数值来得到。 1sin, 226.334gpppp 在开始BP算法前,需要选择网络权值和偏置值的初始值。通常选择较小的随机值。下一章将讨论为什么要这样做。现在,选择的值 网络对这些初始值的响应如图6-17所示,
15、图中还包括要逼近的正弦函数的曲线。 11220.270.480, 0, 00.09 0.17 , 00.480.410.13WbWb 图6-17 网络对初始值的响应现在可以开始执行算法了。对初始输入,我们选择p=1 : 第一层的输出为0 a =p=1 1010.750.540.270.480.75flog1log0.410.130.5410.321110.3681sigsigee 1aW ab第二层的输出为误差将为 22120.3210.09 -0.170.480.4460.368fpurelin2aWab21 sin1 sin10.4461.26144e=t-apa算法的下一阶段是反向传播敏
16、感性值。在开始反向传播前需要先求传输函数的导数 和 。对第一层: 1fn 2fn 1211111111defdeeeen11nnnnn1-aan对第二层: 下面可以执行反向传播了。起始点在第二层。由式(6.29): 21dfdnnn 222221.2612 1 1.2612.522f2sF nt-an第一层的敏感性由计算第二层的敏感性反向传播得到,由(6.30)式: 1111111221122100.092.5220.17011 0.321 0.32100.092.52201 0.3680.3680.170.21800.2270.049500.2330.4290.0997TaaaasF nws
17、 算法的最后阶段是更新权值。为简单起见,学习速度设为 .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 abbsWWs abbs480.04950.4750.10.130.09970.140 这就完成了BP算法的第一次迭代。下一步可以选择另一个输入 ,执行算法的第二次迭代过程。迭代过程一直进行下去,直到网络响应和目标函数之差达到某一可接受的水平。6.5反向传播应用反向传播应用
18、 本节中将叙述与反向传播法的实际实现相关的一些问题,包括网络结构的选择、网络收敛性和一般化的问题。1.网络结构的选择 如本章前面所述,多层网络可用来逼近几乎任一个函数,只要在隐层中有足够的神经元。然而,通常并不能说,多少层或多少神经元就可以得到足够的性能。本节中我们通过一些例子来考察这个问题。第一个例子:假定要逼近如下的函数: 其中 取值1 , 2 , 4 和8 。随 的增加,函数变得更为复杂,在 的区间内将有更多的正弦波周期。当i增加时,很难用隐层中神经元数目固定的神经网络来逼近 。1sin,226.604igppp22p ii g p 对这个例子,我们使用一个1-3-1 网络,第 一层的传
19、输函数为 “对数 ”形,第二层的传输函数是线性函数。根据前面的函数逼近例子,这种两层网络的响应是三个 “对数 ”形函数之和(或多个对数 形函数之和,只要隐层中有同样多的神经元)。 显然,对这个网络能实现的函数有多么复杂有一个限制。图618是网络经训练来逼近 (对 = 1,2,4,8)后的响应曲线。最终的网络响应用图中画出的曲线来表示。ss s g pi 图618 用1-3-1 网络作函数逼近 可以看到,对 ,这个1-3-1网络达到了它的最大能力。当 时,网络不能生成 精确的逼近曲线。从图618右下方的图中可以看致1-3-1网络试图逼近 时的函数 。网络的响应和 之间的均方误差达到了最小化,但网
20、络响应曲线只能与函数的一小部分相匹配。 g p g p g p8i 4i 4i 下一个例子中将从一个稍有些不同的角度来解决此问题。这次我们选择函数 ,然后使用越来越大的网络直到能精确地逼近函数为止。 采用 61 sin, 226.614g ppp g p g p 我们用两层网络来逼近此函数,第一层的 传输函数是 “对数 ”形函数,第二层的是线性函数( 网络)。如本章前面所述,网络的响应是 形函数的迭加。 111S1S SS 图619为第一层(隐层)的神经元数目增加时的网络响应曲线。除非网络隐层中至少有5个神经元,否则网络不能精确地表 。 g p 图619 增加隐层中的神经元数目的影响 总结起来
21、说, 网络在隐层为 形神经元而在输出层中为线性神经元时,可以产生 形函数相叠加的网络响应曲线。若要逼近有大量拐点的函数,隐层中就要有大量的神经元。 (验证nnd11fa)111S1S SS2收敛性 在前一节给出的一些例子中,尽管BP 算法可以获得使均方误差最小化的网络参数,网络的响应却不能精确地逼近所期望的函数。这是由于网络的能力受隐层中神经元数目的限制。本节将给出一个例子,其中网络能逼近函数,但学习算法不能产生精确逼近解的网络参数。下一章将更详细地讨论这个问题,并解释为什么会这样。现在先来叙述这个问题。 网络要逼近的函数为 1sin, 226.62gppp 我们用一个1-3-1 网络来逼近此
22、函数,其中第一层的传输函数是对数 形函数,第二层的是线性函数。 图620说明学习算法收敛到使均方误差最小的一个解的情况。细线表示中间迭代结果,粗线表示最终解,此时算法收敛。(每条曲线旁边的数字表示迭代的顺序,0表示初始条件,5 表示最终解。这些曲线没有列出对应的迭代次数,数字仅表示一个顺序。)s 图620 收敛到全局最小值 图621说明学习算法收敛到一个解但均方误差并没有被最小化的一种情况。粗线(标记为5)代表最终的迭代中的网络响应。在最终的迭代计算中,均方误差的梯度为0,因而得到一个局部极小值,但正如图620中表示的,存在一个更好的解。图621 中的结果与图 620 中的结果之间的差别仅仅是
23、初始条件。从一个初始条件开始,算法收敛到全局极小值而从另一个初始条件开始,算法收敛到一个局部极小值点。 图621收敛到局部极小值 注意 LMS 算法不会产生这样的结果 。ADALINE 网络中均方误差性能指标是只有一是只有一个极小值点的二次函数个极小值点的二次函数(在大多数条件下)。因而只要学习速率足够小,LMS算法保证收敛到全局极小值。通常,多层网络的均方误差非常多层网络的均方误差非常复杂且有许多局部极小值复杂且有许多局部极小值(在下一章中将看到这一点)。 当BP 算法收敛时,我们并不能确定是否求到了最优解。最好的办法是多试几个不同的初始条件以保证得到最优的解。3推广 在大多数情况下,用有限
24、多个正确网络行为的例子来训练多层网络: 这个训练集常常代表一类大得多的可能的输入输出对。因而网络将它学习到的例子成功地推广到总体这一点是重要的。 例如,假定训练集是通过采样下面的函数得到的: 6.63QQ1221p ,t, p ,t, p ,t1sin6.644gpp 采样点为P =-2 ,-1.6 ,-1.2,。,1.6,2 (总共有11个输入/输出对)。在图622中,可以看到经这些数据训练后的1-2-1网络的响应。细线代表 ,粗线代表网络的响应,符号“+”表示训练集。 图622 用1-2-1 网络逼近函数 g p 可以看到,网络响应曲线可以精确地表示 。若要求网络在 点的响值而 点不包含在
25、训练集中(如 ),网络仍将产生接近于 的输出。网络的推广结果很好。( )g ppp0.2p ( )g p 再看图623,它表示使用同样的数据集训练一个1-9-1网络后得到的网络响应结果。注意在所有训练点上,网络的响应很精确地逼近 。然而,若我们计算不包含在训练集中的点 (如 )对应的网络响应,网络所产生的结果可能与 的结果差得很远。因而这个网络没有被很好地推广。( )g pp0.2p ( )g p 图623 用1-9-l 网络逼近 对此问题,1-9-1 网络又过于灵活了,它总共有28个可调节的参数(18权值和10个偏置值),然而在训练集中只有11个数据点。1-2-1 网络只有7个参数,因而它能
26、实现的函数类型非常受限。 (验证神经网络的推广使用nnd11gn) 一个网络要能被推广,它应当具有比训练集中的数据点少的参数。在神经网络中,正如在所有建模问题中,要用足以表示训练集的最简单的网络。只要有一个更小的网络能工作,就不要使用更大的网络。 若不使用最简单的网络,那么另一种办法是在网络得到恰当调整后停止训练。6.4 BP6.4 BP网络泛化能力的提高网络泛化能力的提高 在神经网络的训练中,可能出现所谓“过适配”问题,对于训练集的样本其误差可以很小,但对于训练集以外的新样本数据其误差会很大。网络记忆了训练过的样本,但缺乏对新样本泛化的能力。图6.24 给出了BP 网络用于正弦函数拟合的结果
27、,网络规模为1个输入节点、12 个隐层神经元、1个输出节点。“* ”表示加噪的正弦训练样本集,实线表示对正弦函数的拟合结果,虚线表示实际的正弦函数曲线。显然,结果很好地完成了对训练样本集数据的拟合,但由于噪声的影响,却没能很好地实现对正弦曲线的拟合,出现了所谓“过适配”的现象。 图6-24 BP 网络用于正弦函数拟合 一种提高网络泛化能力的方法是调整网 络的规模,使之刚好足以“适配”。所设计的网络规模越大,网络的函数映射功能越强,那么只要采用的网络规模足够小,就可以消除“过适配“现象。在MATLAB 命令窗口运行nnd11gn示例,可以看到如何减小网络规模,以避免“过适配“的情况。 遗憾的是,
28、对于一个特定的问题,很难预先 知道究竟其网络规模设计为多大是合适的。 在神经网络工具箱里提出了另外两种提高网络泛化能力的方法,即归一化法和提前终止法。 1归一化法归一化法(1) 修正网络误差性能函数 归一化法的基本思想是修正网络误差性能函数。典型的前向反馈网络误差性能函数为均方误差函数: 2211116.65NNiiiiiFmseetaNN 如果增加一项,该项包含网络权值和阈值的均方值,以该项修正误差性能函数,就可以提高网络的泛化能力,即式中: 为误差性能调整率,而 用式(6.66)修正的误差性能函数,可以使网络获得较小的权值和阈值,从而迫使网络的响应变得平滑,从而减小过适配。msereg =
29、 mse + 1 - )msw6.66(2116.67njjmswxn 归一化均方误差函数msereg 的详解可参见附录。 在MATLAB的各训练函数中,设置误差性能函数net.performFcn=msereg,即可按照归一化法进行训练,其误差性能调整率可以通过net.performParam . ratio进行调整。但其最佳的误差性能调整率是很难确定的,如果其值太大,则可能出现“过适配”,其值太小,网络又不足以“适配,训练样本集的数据,所以有必要找到一种自动设置误差性能调整率的方法。(2) 自动归一化 以自动的方式决定归一化最佳误差性能调整率是我们所期望的,在这方面的研究成果之一是 Dav
30、id MacKay 提出的贝叶斯框架理论。在该框架理论中,假定网络的权值和阈值是按指定的分布随机可变的,归一化参数与这些分布的未知随机变量有关,于是,可用统计的方法估计出这些参数。关于贝叶斯归一化法的详细研究已超出了本书的范围,读者可参阅有关文献。 采用贝叶斯归一化的训练函数trainbr的详解可参见附录。 图6-25给出了用trainbr训练BP网络用于正弦函数拟合的结果,网络规模与图6-24 所示结果用的网络一样,均为1 个输入节点、12 个隐层神经元、1个输出节点。“*”表示加噪的正弦训练样本集,实线表示对正弦函数的拟合结果,虚线表示实际的正弦函数曲线。显然,结果很好的完成了对正弦曲线的
31、拟合,没有出现所谓过适配的现象,说明网络具有较强的泛化能力。即使增大网络的规模,也永远不会出现“过适配”的现象,这就避免了以尝试的方法去决定最佳网络规模的大小。 图6-25 采用自动归一化法 训练多BP网络用于正弦函数拟合 应用trainbr时,很重要的一点是让算法运行到有效的参数收敛为止。当训练过程中出现“Maximum MU reached ” (达到调整系数的最大值)提示时,训练即可停止,这是一种典型的理想状况,它表明算法确实已经收敛。 2 2提前终止法提前终止法 在提前终止算法中,能够利用的数据被分为3个子集.第一个子集是训练样本集,用以计算梯度和修正网络的权值和阂值。 第二个子集是确
32、认样本集,在训练的过程中,监控确认样本集的误差。在训练的最初阶段,确认样本集误差在正常地减小,即为训练样本集的误差;而在网络开始出现“过适配“时,确认样本集的误差在明显地增加,当确认样本集的误差连续增加的次数达到指定的迭代次数时,训练便被终止,此时,网络返回具有最小确认样本集误差的权值和阈值。 第三个子集是测试样本集,但在训练过程中并没用到测试样本集的误差,而是用于各种不同模型的比较;另外,在训练期间画出测试样本集的误差曲线也是有用的,如果测试样本集的误差与确认样本集误差间的误差达到最小值时,所需的迭代次数明显不同,表明数据集的划分可能欠妥。 提前终止法可以用于前述的各种训练函数,仅需要将确认
33、样本集的数据传递给训练函数。下面以正弦函数拟合为例,说明提前终止法的应用方法: (l)首先需要构造确认样本集val 。在进行正弦函数拟合时,训练样本集和确认样本集如下:p = -1:0.05:1 ; %训练样本的输入向量t =sin( 2*pi*p ) + 0.1*randn(size (p) ) ; %训练样本的目标向量val.P =-0.975:0.05:0.975; %写确认样本的输入向量val.T =sin (2*pi*val.P)+ 0.1*randn(size(val.P) ; %确认样本的目标向量 可以看出,训练样本集和确认样本集具有相同的结构,但确认样本集的输入向量与训练样本集
34、的输入向量相比有一个很小的位移;同样,确认样本集的目标向量也加入了随机噪声,使之更接近实际情况。(2)在调用训练函数时需要引用参数val: net,tr=train(net,p,t, val) 提前终止法用于正弦函数拟合的提前终止法用于正弦函数拟合的MATLAB 程序程序;%EerlystoppingTr clear all ; %清除所有内存变量%构造训练样本集和确认样本集p = -1:0.05:1 ; %确认样本的目标向量t0 =sin ( 2*pi*p ); %待拟合的正弦函数t =sin ( 2*pi*p ) + 0.1*randn( size(p) ; %训练样本的目标向量val.P
35、 = -0.975:0.05:0.975 ; %确认样本的输入向量 %(达到这个标准就停止)val.T =sin(2* pi* val.P)+0.1*randn(size(val.P); %确认样本的目标向量(同上)%定义和训练网络net=newff(-1 1,20,1, tansig, purelin,traingdx);net.trainParam.show=25; %每25步显示一次曲线型值点net.trainParam.epochs=300; %总共计算300步net=init(net);net,tr=train(net,p,t, , ,val);%存储训练后的网络save ES ne
36、t;运行结果为TRAINGDX , Epoch 0300,MSE 4.954720, Gradient 11.44741e-006TRAINGDX , Epoch 25300,MSE 0.7645260, Gradient1.277331e-006TRAINGDX , Epoch50300,MSE 0.2771780, Gradient0.4688611e-006TRAINGDX , Epoch 75300,MSE 0.07451480, Gradient0.1180791e-006TRAINGDX , Epoch 100300,MSE 0.02564770, Gradient0.047389
37、61e-006TRAINGDX , Epoch 125300,MSE 0.007332070, Gradient0.1317491e-006TRAINGDX , Epoch 128300,MSE 0.007332070, Gradient0.1317491e-006TRAINGDX , Validation stop.结果表明,训练因确认样本而提前终止。网络仿真及拟合结果的网络仿真及拟合结果的MATLAB 程序程序%EerlystoppingSimclear all ; %清除所有内存变量p = -1:0.05:1 ; %训练样本的输入向量t0 =sin ( 2*pi*p ); %待拟合的正弦
38、函数t =sin( 2*pi*p ) + 0.1*randn( size(p) ; %训练样本的目标向量load ES net;r=sim(net,p);hold onplot(p,t0, :r) %绘制待拟合的正弦函数曲线plot(p,t, *b) %绘制加噪的正弦函数曲线plot(p,r, -k) %绘制网络拟合曲线hold off 运行结果如图图6-26所示。 以上所述的归一化法和提前终止法,有时需要赋以不同的初始条件进行网络训练,因为在某些条件下,上述两种方法都可能失败,尝试采用不同的初始条件,就能够检验网络的“鲁棒性” (robustness) 。 图6-26 采用提前终止法 训练B
39、P网络用于正弦函数拟合 比较上述两种方法,贝叶斯归一化法通常可以获得比提前终止法更好的泛化性能,这是因为贝叶斯归一化法不要求确认样本集与训练样本集分割开来,而是采用所有数据样本集,这一优点在数据样本集较小时尤为突出,但也不是所有的情况都是采用贝叶斯归一化法好,贝叶斯归一化法用于函数逼近的性能好,而提前终止法用于模式识别的性能好;另外,贝叶斯归一化法通常比提前终止法收敛所花费的时间长。6.5 BP6.5 BP网络的局限性网络的局限性 在人工神经网络的应用中,绝大部分的神经网络模型采用了BP网络及其变化形式,但这并不说明BP网络是尽善尽美的,其各种算法依然存在一定的局限性。BP 网络的局限性主要有
40、以下几个方面:(1) 学习率与稳定性的矛盾 梯度算法进行稳定学习要求的学习率较小,所以通常学习过程的收敛速度很慢。附加动量法通常比简单的梯度算法快,因为在保证稳定学习的同时,它可以采用很高的学习率,但对于许多实际应用,仍然太慢。以上两种方法往往只适用于希望增加训练次数的情况。如果有足够的存储空间,则对于中、小规模的神经网络通常可采用LevenbergMarquardt 算法;如果存储空间有问题,则可采用其他多种快速算法,例如对于大规模神经网络采用trainscg 或trainrp 更合适。(2) 学习率的选择缺乏有效的方法 对于非线性网络,选择学习率也是一个比较困难的事情。对于线性网络,我们知
41、道,学习率选择的太大,容易导致学习不稳定;反之学习率选择的太小,则可能导致无法忍受过长的学习时间。不同于线性网络,我们还没有找到一种简单易行的方法,选择学习率的问题。对于快速训练算法,其默认参数值通常留有裕量。(3) 训练过程可能陷于局部最小 从理论上说,多层BP网络可以实现任意可实现的线性和非线性函数的映射,克服了感知器和线性神经网络的局限性。但在实际应用中,BP 网络往往在训练过程中,也可能找不到某个具体问题的解,比如在训练过程中陷人局部最小的情况。当BP 网络在训练过程中陷人误差性能函数的局部最小时,可通过改变其初始值,并经多次训练,以获得全局最小。(4) 没有确定隐层神经元数的有效方法
42、 如何确定多层神经网络隐层的神经元数也是一个很重要的问题,太少的隐层神经元会导致网络“欠适配”,太多的隐层神经元又会导致“过适配”。 6.6 BP 6.6 BP 网络的网络的MATLAB MATLAB 仿真程序设计仿真程序设计6.6.1 BP 6.6.1 BP 网络设计的基本方法网络设计的基本方法 BP 网络的设计主要包括输入层、隐层、输出层及各层之间的传输函数几个方面。1 1网络层数网络层数 大多数通用的神经网络都预先确定了网络的 层数,而BP 网络可以包含不同的隐层。但理论上已经证明,在不限制隐层节点数的情况下,两层(只有一个隐层)的BP 网络可以实现任意非线性映射。在模式样本相对较少的情
43、况下,较少的隐层节点,可以实现模式样本空间的超平面划分,此时,选择两层BP 网络就可以了;当模式样本数很多时,减小网络规模,增加一个隐层是必要的,但BP 网络隐层数一般不超过两层。2输入层的节点数输入层的节点数 输入层起缓冲存储器的作用,它接收外部的输入数据,因此其节点数取决于输入矢量的维数。比如,当把3232 大小的图像的像素作为输入数据时,输入节点数将为1024 个。3输出层的节点数输出层的节点数 输出层的节点数取决于两个方面,输出数据类型和表示该类型所需的数据大小。当BP网络用于模式分类时,以二进制形式来表示不同模式的输出结果,则输出层的节点数可根据待分类模式数来确定。扩若设待分类模式的
44、总数为 ,则有两种方法确定输出层的节点数:m(1) 节点数即为待分类模式总数 ,此时对应第j个待分类模式的输出为 即第 个节点输出为1,其余输出均为0,而以输出全为0表示拒识,即所输入的模式不属于待分类模式中的任何一种模式。(2) 节点数为 个。这种方式的输出是种输出模式的二进制编码。0001000jOj2log mmjm4隐层的节点数隐层的节点数 一个具有无限隐层节点的两层BP 网络可以实现任意从输入到输出的非线性映射。但对于有限个输入模式到输出模式的映射,并不需要无限个隐层节点,这就涉及到如何选择隐层节点数的问题,而这一问题的复杂性,使得至今为止,尚未找到一个很好的解析式,隐层节点数往往根
45、据前人设计所得的经验和自己进行试验来确定。一般认为,隐层节点数与求解问题的要求、输入输出单元数多少都有直接的关系。另外,隐层节点数太多会导致学习时间过长;而隐层节点数节点数太少,容错性差,识别未经学习的样本能力低,所以必须综合多方面的因素进行设计。 对于用于模式识别分类的BP 网络,根据前人经验,可以参照以下公式进行设计: 式中: 为隐层节点数; 为输入节点数; 为输出节点数; 为1-10 之间的常数。6.68ionnna0ninna5. 5. 传输函数传输函数 BP网络中的传输函数通常采用 型函数: 在某些特定情况下,还可能采用纯线性 函数。如果BP 网络的最后一层是 函数,那么整个网络的输
46、出就限制在一个较小的范围内(O-1之间的连续量);如果BP网络的最后一层是 函数,那么整个网络的输出可以取任意值。1 5 .3 11xfxesS ig m o idp u re lin eS ig m o idp u re lin e6 6训练方法及其参数选择训练方法及其参数选择 针对不同的应用,BP 网络提供了多种训练、学习方法,如何选择训练函数和学习函数及其参数可参阅有关书籍。函数详解见附录。6.6.2 BP 6.6.2 BP 网络应用实例网络应用实例 下面以应用实例说明BP神经网络的MATLAB仿真程序设计。1. 1. 用于模式识别与分类的用于模式识别与分类的BP BP 网络网络例例6.
47、16.1以BP 神经网络实现对图6.27所示两类模式的分类。解: (1) 问题分析 据图6.27所示两类模式可看出,分类为简单的非线性分类。有1个输入向量,包含2个输入元素;两类模式, 1个输出元素即可表示;可以以图 6.28 所示两层 BP 网络来实现分类。 (2) 构造训练样本集 图6.27 例6.1 待分类模式 图6.28 两层BP 网络 根据图6.28所示两类模式确定的训练样本集为 其中:因为BP网络的输出为 函数,所以目标向量的取值为0.2 和0.8 ,分别对应两类模式。在程序设计时,通过判决门限0.5 区分两类模式。 1124,0.20.80.80.22110ptlogsig(3)
48、训练函数的选择 因为处理的问题简单,所以采用最速下降BP 算法(traingd 训练函数)训练该网络,以熟悉该算法的应用。(4)程序设计例例6 . 1 6 . 1 创建和训练创建和训练BP BP 的的MATLAB MATLAB 程序程序%Example51Tr clear all ; %定义输入向量和目标向量p=1 2 ;-1 1 ;-2 1 ;-4 0t = 0.2 0.8 0.8 0.2;%创建BP 网络和定义训练函数及参数net=newff(-1 1;-1 1,5 1,logsig, logsig,traingd) ;net.trainParam.goal=0.001 ; %误差达到 0
49、.001时 训练停止net.trainParam.epochs=5000 ; 共训练5000步%训练神经网络 net,tr=train(net,p,t)%输出训练后的权值和阈值 iwl=net.IW1 bl= net.b1 lw2=net.LW2 b2= net.b2%存储训练好的神经网络 save net51 net ; BP网络的初始化函数的默认值为initnw ,该初始化函数的详解见附录。在本例中,将随机初始化权值和阈值,所以每次运行上述程序的结果将不相同。当达不到要求时,可以反复运行以上程序,直到满足要求为止。其中的一种运行结果如下:TRAINGD,Epoch 0/5000,MSE 0
50、.234941/0001, Gradient 0.102167/1e-010TRAINGD,Epoch 25/5000,MSE 0.232277/0001, Gradient 0.102167/1e-010TRAINGD,Epoch 50/5000,MSE 0.229497/0001, Gradient 0.102167/1e-010TRAINGD,Epoch 75/5000,MSE 0.226596/0001, Gradient 0.102167/1e-010TRAINGD,Epoch 4925/5000,MSE 0.00829413/0001, Gradient 0.0171131/1e-
51、010TRAINGD,Epoch 4950/5000,MSE 0.0082213/0001, Gradient 0.0170195/1e-010TRAINGD,Epoch 4975/5000,MSE 0.00814928/0001, Gradient 0.0169266/1e-010TRAINGD,Epoch 50000/5000,MSE 0.00807803/0001, Gradient 0.0169344/1e-010TRAINGD Maximum epoch reached ,performance goal was not met.1w2=-0.4924 5.0347 1.9063 -
52、2.3273 - 0.3726B2=-0.35146.23190.75422.25435.84104.34154.46383.57554.88515.10623.6819iw1 误差性能曲线如图6.29所示,从曲线上可以看出,训练经过了5000 次仍然未达到要求的目标误差0.001 ,说明采用训练函数traingd 进行训练的收敛速度是很慢的。 虽然训练的误差性能未达到要求的目标误差,但这并不妨碍我们以测试样本对网络进行仿真。例例6.1 6.1 网络仿真的网络仿真的MATLABMATLAB程序程序%Example51Simload net51 net;%加载训练后的BP网络p1=1 2;-1
53、1;-2 1;-4 0 %测试输入向量a2=sim(net,p1); %仿真输出结果a2=a20.5 %根据判决门限,输出分类结果运行结果为121 -1 -2 -4 2 1 1 00 1 1 0ap 图6.29 例6.1 的训练性能曲线 结果表明可以完成上述两类模式的分类。 读者可以使用其他训练函数,例如traingdx,可以看出经过很短的时间就可以到达设定的训练精度指标。所以选择合适的训练函数使很重要的。例例6.26.2 设计基于BP 神经网络的印刷体字符0-9 的识别系统。解:解:字符识别,特别是手写体字符识别,在实际生活中具有很重要的意义。这里只说明神经网络的设计,不探讨字符识别的其他更
54、多的内容,假设识别的对象是印刷体数字。经过前期处理,获得1616 的二值图像,如图6.30所示,其二值图像数据作为神经网络的输入。图6.30 数学字符1616 的二值化图像示意图(1)BP神经网络结构分析 按照BP神经网络设计方法选用两层BP网络,其输入节点数为1616=256,隐层传输函数为sigmoid 函数。假设用一个输出节点表示10个数字,则输出层传输函数为pureline,隐层节 , 取为25。256 11 10a a (2)神经网络仿真程序设计构造训练样本集,并构成训练所需的输入矢量和目标矢量。通过画图工具,获得数字0-9 的原始图像,为便于编程,将其存于文件(0-9).bmp 文
55、件中;按照同样的方法,可以改变字体字号,获得数字0-9更多的训练样本,将其存于文件(10-19).bmp,(20-29 ).bmp , 文件中。本例选用了3 种字体、3种字号,共90 个由数字0-9的样本构成的训练样本集。图6.32示出了数字0 的不同训练样本图像。 图6.32 数字O 的不同训练样本图像 从图中可以看出,形成图像的字体、字号不同,在图片中的位置也不相同,所以必须对它进行预处理,使各个图像在成为神经网络输入向量时具有统一的形式。 预处理的基本方法是:截取数字图像像素值为0 (黑)的最大矩形区域(如图6.32中第一个数字0的虚线框),将此区域的图像经过集合变换,使之变成1616
56、的二值图像;然后将该二值图像进行反色处理,以这样得到图像各像素的数值0,1构成神经网络的输入向量。所有训练样本和测试样本图像都必须经过这样的处理。 例5.2 形成输入矢量和目标矢量的MATLAB程序%Example52Ptclear all;正在生成输入向量和目标向量,请稍后for kk=0:89p1=ones(16,16); %初始化16x16的二值图像像素值(全白)m=strcat(int2str(kk), .bmp); % 加载训练后的BP网络x=imread(m, bmp); %读入测试样本图像bw=im2bw(x,0.5); % 将读入的训练样本图像转化为二 值图像i,j=find(
57、bw=0); %寻找二值图像中像素值为0的行号 和列号imin=min(i); %寻找二值图像中像素值为0的最小行号imax=max(i); %寻找二值图像中像素值为0的最大行号jmin=min(j); %寻找二值图像中像素值为0的最小列号jmax=max(j); %寻找二值图像中像素值为0的最大列号bwl=bw(imin:imax,jmin:jmax); %截取图像像素值为 0(黑)的最大矩形区域rate=16/max(size(bwl); %计算转化为16x16的二值图 像的缩放比例bwl=imresize(bwl,rate); %将截取图像转化为16x16的 %二值图像,(由于缩放比例大
58、多数情况下不为16的倍数, %所以可能存在转化误差)i,j=size(bwl); %转化图像的大小i1=round(16-i)/2); %计算转化图像的宽度与16的差距j1=round(16-j)/2); %计算转化图像的高度与16的差距p1(i1+1:i1+i,j1+1:j1+j)=bwl; %将截取图像转化为标准的16x16的二值图像p1=-1.*p1+ones(16,16); %反色处理for m=0:15 p(m*16+1:(m+1)*16,1)=p1(1:16,m+1); %形成测试样本输入向量end %形成神经网络目标向量switch kk case0,10,20,30,40,50
59、,60,70,80,90 % 数字0 t(kk+1)=0; case1,11,21,31,41,51,61,71,81,91 % 数字1 t(kk+1)=1; case2,12,22,32,42,52,62,72,82,92 % 数字2 t(kk+1)=2; case3,13,23,33,43,53,63,73,83,93 % 数字3 t(kk+1)=3; case4,14,24,34,44,54,64,74,84,94 % 数字4 t(kk+1)=4; case5,15,25,35,40,55,65,75,85,95 % 数字5 t(kk+1)=5; case6,16,26,36,46,56
60、,66,76,86,96 % 数字6 t(kk+1)=6; case7,17,27,37,47,57,67,77,87,97 % 数字7 t(kk+1)=7; case8,18,28,38,48,58,68,78,88,98 % 数字8 t(kk+1)=8; case9,19,29,39,49,59,69,79,89,99 % 数字9 t(kk+1)=9;end endsave E52PT p t %存储形成的训练样本集(输入向量和 目标向量输入向量和目标向量生成结束! 构造BP 神经网络,并根据训练样本集形成的输入矢量和目标量,对BP 网络进行训练 例例5.2 创建和训练创建和训练BP网络的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年佛山市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(黄金题型)
- 沈阳市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(巩固)
- 哈密地区农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(满分必刷)
- 阿里地区农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解一套
- 包头市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(a卷)
- 大庆市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(a卷)
- 铜仁地区农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)有完整答案详解
- 2025年广东省江门市辅警考试题《公安基础知识》综合能力试题库附答案
- 城口县农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)(含答案详解)
- 2025年建筑施工特种作业人员考试(建筑架子工附着升降脚手架专业知识)练习题及答案
- 投诉信课件教学课件
- 2025年霸王茶姬文化战略复盘
- 健康管理中心客户档案管理规范
- 营养配餐员基础知识考核试卷及答案
- 格拉斯哥评分课件
- 2025年度山西地质集团有限公司秋季校园招聘302人笔试参考题库附带答案详解
- 工会小组长课件
- 2025年中学校规校纪及教育惩戒实施细则
- 2025至2030中国康养产业市场深度调研及发展前景趋势报告
- CAAC无人机理论考试题库(2025修订版)(含答案)
- 2025 - 2026学年小学数学人教版二年级上册第四单元(厘米和米)测试卷及答案
评论
0/150
提交评论