logo资料库

BP神经网络实验报告.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
BP 神经网络实验报告 一、实验目的 1、 熟悉 MATLAB 中神经网络工具箱的使用方法; 2、 通过在 MATLAB 下面编程实现 BP 网络逼近标准正弦函数,来加深对 BP 网络的了 解和认识,理解信号的正向传播和误差的反向传递过程。 二、实验原理 由于传统的感知器和线性神经网络有自身无法克服的缺陷,它们都不能解决线性不可分 问题,因此在实际应用过程中受到了限制。而 BP 网络却拥有良好的繁泛化能力、容错能力 以及非线性映射能力。因此成为应用最为广泛的一种神经网络。 BP 算法的基本思想是把学习过程分为两个阶段:第一阶段是信号的正向传播过程;输入 信息通过输入层、隐层逐层处理并计算每个单元的实际输出值;第二阶段是误差的反向传递 过程;若在输入层未能得到期望的输出值,则逐层递归的计算实际输出和期望输出的差值(即 误差),以便根据此差值调节权值。这种过程不断迭代,最后使得信号误差达到允许或规定的 范围之内。 基于 BP 算法的多层前馈型网络模型的拓扑结构如上图所示。 BP 算法的数学描述:三层 BP 前馈网络的数学模型如上图所示。三层前馈网中,输入向
量为: X 1 , xx ( ,..., x i 2 ,..., x n T ) ;隐层输入向量为: Y  ( , yy 1 2 ,..., y j ,... y m T ) ;输出层输出向量 为: , ooO 1 ( ,..., o ,... o l T ) k 2 ;期望输出向量为: d  ( , dd 1 2 ,... d k ,... d l T ) 。输入层到隐层之间的 权值矩阵用 V 表示, V 1 , vv ( ,... v j 2 ,... v m Y ) ,其中列向量 jv 为隐层第 j 个神经元对应的权向量; 隐层到输出层之间的权值矩阵用 W 表示, wwW  ( , 1 ,... w ,... k w l ) 2 ,其中列向量 kw 为输出层第 k 个神经元对应的权向量。 下面分析各层信号之间的数学关系。 对于输出层,有 y j net  j f  ( net  ), j xv ij i j , ,...,2,1 m  ,...,2,1 m j  对于隐层,有 O k  f net k  ( net m  j  0 ), k  ,...,2,1 l k , kyw jk i  ,...,2,1 l 以上两式中,转移函数 f(x)均为单极性 Sigmoid 函数: )( xf  1 xe  1 f(x)具有连续、可导的特点,且有 f )(' x  ( xf 1)[  ( xf )] 以上共同构成了三层前馈网了的数学模型。 当网络输出和期望输出不相等时,存在输出误差 E 如下: E  1 2 ( d  2 o )  1 2 m  j  0 ( d k  o k 2 ) 将以上误差定义式展开至隐层,有 E  l 1  2 1  k [ d k  f ( net 2 )] j  1 2 进一步展开至输入层,有 l  k 1  [ d k  f ( 2 yw jk j )] m  j  0 E  l 1  2 1  k { d k  f [ m  j  0 fw jk ( net 2 )]} j  1 2 l  k 1  { d k  f [ n  i  0 fw jk ( 2 xv ij i ]}) n  i  0 由上式可以看出,网络输入误差是两层权值 W 和 V 的函数,因此调整权值可以改变误 差 E。 显然,调整权值的原则是使误差不断的减小,因此应使权值的调整量与误差的负梯度成
正比,即:  w jk  v ij jk E   w  E   v  , ij  , j  ,...2,1,0 ; km  ,...,2,1 l  i  ,...,2,1,0 ; jn  ,...,2,1 m 式中负号表示梯度下降,常数 )1,0( 表示比例系数,在训练中反映了学习速率。 容易看出,BP 学习算法中,各层权值调整公式形式上都是一样的,均有 3 个因素决定, 即:学习速率、本层误差信号和本层输入信号 X/Y。其中输出层误差信号同网络的期望输出 与实际输出之差有关,直接反映了输出误差,而各隐层的误差信号与前面各层的误差信号都 有关,是从输出层开始逐层反传过来的。 三、程序 clc clear all k=1; n=10; P=[-1:0.05:1]; T=sin(k*pi*P); plot(P,T,'-'); title('要逼近的非线性函数'); xlabel('输入向量'); ylabel('非线性函数目标输出向量'); net=newff(minmax(P),[n,1],{'tansig','purelin'},'trainlm'); y1=sim(net,P); net.trainParam.epochs=50; net.trainParam.goal=0.01; net=train(net,P,T); y2=sim(net,P); figure; plot(P,T,'-',P,y1,'--',P,y2,'*'); title('训练前后的网络仿真结果对比'); xlabel('输入向量'); ylabel('输出向量'); legend('目标函数输出向量','未训练 BP 网络输出','已训练 BP 网络输出'); 仿真结果如下图:
由仿真结果图可以看出,未经训练的 BP 网络输出与目标函数差距很大,逼近效果不理想, 而对 BP 网络训练之后的输出可以较精确的逼近目标函数,并且 BP 网络的训练迭代次数仅约 1.2 次,网络的输出目标误差就达到了精度要求,收敛速度很快。函数逼近效果、网络训练的 收敛速度与原始非线性函数的频率、BP 网络隐含层单元神经元的数目以及 BP 网络训练函数 有关。 四、实验结论 通过编程实现使用 BP 网络对函数进行逼近,对 BP 网络的信号和误差传递的原理以及隐 层、输出层权值调整的规则有了充分的理解和认识。 BP 网络是一个强大的工具,它是应用最为广泛的网络。用于文字识别、模式分类、文字 到声音的转换、图像压缩、决策支持等。 但是,通过实验看出,它还是存在一定的不足。由于本实验中采用的学习率是固定不变 的,从而使得在函数逼近的时候在有些地方出现了偏离,如果能自适应的调整学习率,使网 络在学习初期具有较大的学习率,以快速逼近函数,当已经逼近理想输出时再使用较小的学 习率,来更加精准的去逼近函数,这样会得到更好的逼近效果和更小的错误率。 另外,BP 网络还具有收敛速度慢、容易陷入局部极小值的问题。这些问题通过对标准 BP 算法的改进能得到一定程度的解决。
分享到:
收藏