资源描述:
《bp神经网络进行多项式函数的逼近吐血推荐1》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、神经网络及应用实验报告院系:电气工程学院班级:adf3班姓名:adsf学号:20sdf实验二、基于BP网络的多层感知器一:实验目的:1.理解多层感知器的工作原理2.通过调节算法参数了解参数的变化对于感知器训练的影响3.了解多层感知器局限性二:实验原理:BP的基木思想:信号的正向传播误差的反向传播-信号的正向传播:输入样本从输入层传入,经各隐层逐层处理后,传向输出层。-误差的反向传播:将输入误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号来作为修正各单元权值
2、的依据。1.基木BP算法的多层感知器模型:输岀口隐层输入层0三层BP网模型输出层=/(netjk=L2...J呵=》>小/r=1.2.....IJ=o隐层兀=/(nety)J=1.2•…冲wnetj=工v.x.j=1.2••…mj=0变换函数/(x)为连续、可导的单极性Sigmoid函数/(.V)=—^―/V)=/Cv)[l-/Cv)]1.BP学习算法的推导:当网络输出与期望输出不等时,存在输出误差E1.1丄、E=-((i-oy=-^(dk-oky--121将上而的课差定义式展开至隐层,有1I,1/疋「
3、亍[心-八叫)「=-EmdkJ=o进一步展开至输入层,有-Jt=l-匕1调整权值的原则是使误差不断地减小,因此应使权值的调整量与误差的梯度下降成正比,即△w诉=~r)j=0.1.2・・・・.〃7:k=0.1.2/△%=-77/=0.1.2••…〃7:=0.1.2/Vne(o,1)表示比例系数,在训练中反应学习速率BP算法属于8学习规则类,这类算法被称为误差的梯度下降(GradientDescent)算法。三:实验内容:Hermit多项式如下式所示:f(x)=l.1(l-x+2x"2)exp(~x"2/2
4、)采用BP算法设计一个单输入单输岀的多层感知器对该函数进行逼近。训练样本按以下方法产生:样本数P二100,其中输入样本xi服从区间[-4,4]内的均匀分布,样本输出为F(xi)+ei,ei为添加的噪声,服从均值为0,标准差为0.1的正态分布。隐层采用Sigmoid激活函数f(x)二l/(l+l/「x),输岀层采用线性激活函数f(X)=Xo注意:输出层采用的线性激活函数,不是Sigmoid激活函数,所以迭代公式需要根据前面的推导过程重新推导。实验步骤:1.用Matlab编程,实现解决该问题的单样本训练BP
5、网络,设置一个停止迭代的误差Emin和最大迭代次数。在调试过程中,通过不断调整隐层节点数,学习率找到收敛速度快且误差小的一组参数。产牛均匀分布在区间[-4,4]的测试样本,输入建立的模型得到输出,与Hermit多项式的期望输出进行比较计算总误差(运行5次,取平均值),并记录下每次迭代结束时的迭代次数。(要求误差计算使用RME,Emin设置为0.1)2.实现解决该问题的批处理训练BP网络,调整参数如上。产生均匀分布在区间H,4]的测试样木,输入建立的模型得到输出,与Hermit多项式的期望输出进行比较计算
6、总误差(运行5次,取平均值),并记录下每次迭代结束时的迭代次数。3.对批处理训练BP算法增加动量项厶W(t)=q8X+aAW(t-l),aG(0,1),调整参数如上,记录结果,并与没有带动量项的批处理训练BP算法的结果相比较。4.对批处理BP算法改变参数:学习率11、迭代次数、隐层节点数,观察算法的收敛发散,以及测试课差的变化(对每个参数取几个不同参数,分别运行5次,结果取平均值)。五:实验程序:(-):单样本训练BP网络function[epoch,s,Wki,Wij,Wb,Ez]=dyb(lr,Em
7、in,q)%初始化;%lr学习效率;Emin为期望误差最小值;q为隐含层节点数;b=l;sum二0;Ez二[];maxcpoch=30000;%maxepoch训练的最大次数;%提供训练集和目标值;x=8.*rand(l,100)-4;y=l.1.*仃-x+2・*x.八2).*exp(-x.八2/2)+0・l*rand(l,100);%初始化Wki,Wij;Wij=rand(l,q);Wki=rand(l,q);Wb=rand(l,q);forepoch=1:max^epochE=0;m=l;oi=0;
8、ok=0;%置隐含层和输出层各神经元输出初值为零;form=l:100%计算隐含层各神经元输出;NETi=x(m)*Wij+b*Wb;fort=l:qoi(t)=l/(1+exp(-NETi(t)));end%计算输出层各神经元输出;NETk二Wki*oi';ok=NETk;%计算误差;E=E+(y(m)-ok厂2;%调整输出层加权系数;dcltak=y(m)-ok;Wki=Wki+lr*deltak*oi;%调整隐含层加权系数;delta