资源描述:
《基于BP算法的函数逼近步骤》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、TAIYUANUNIVERSITYOFSCIENCE&TECHNOLOGY基于BP算法函数逼近步骤姓名:刘浩学号:S201503645班级:研1507基于BP算法函数逼近步骤一、BP神经网络算法:BP(BackPropagation)网络是是一种按误差逆向传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层、隐含层和输出层。输入层各神经元负责接收来自
2、外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐含层或者多隐含层结构;最后一个隐含层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐含层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。二、BP学习算
3、法的计算步骤概述BP算法的基本原理是梯度最速下降法,它的中心思想是调整权值使网络总误差最小。运行BP学习算法时,包含正向和反向传播两个阶段。(1)正向传播输入信息从输入层经隐含层逐层处理,并传向输出层,每层神经元的状态只影响下一层神经元的状态。(2)反向传播将误差信号沿原来的连接通道返回,通过修改各层神经元的权值,使误差信号最小。学习过程是一种误差边向后传播边修正权系数的过程。三、BP算法具体步骤1.前馈计算设隐层的第j个节点的输入和输出分别为:其中为激励函数由于隐层的输出就是输出层的输入,则输出层第个节点的总输入和输出分别为:若网络输出与实际输出存在误差,则将误差信号反向传播
4、,并不断地修正权值,直至误差达到要求为止。2.权值调整设误差函数定义为:为了简便,以下计算都是针对每个节点而言,误差函数记作。1)输出层权值的调整权值修正公式为:定义反传误差信号为式中所以又由此可得输出层的任意神经元权值的修正公式:或2)隐层权值的调整式中由于误差函数与隐层输入不存在直接的函数关系,因此不能直接求得,所以隐层的反传误差信号为由此可得,隐层权值的修正公式为:或四、程序代码w10=[0.10.2;0.30.15;0.20.4];w11=[0.20.1;0.250.2;0.30.35];w20=[0.2;0.25;0.3];w21=[0.15;0.2;0.4];q0=
5、[0.10.20.3];q1=[0.20.150.25];p0=0.2;p1=0.1;xj=[0.5;0.9];k1=5;k2=1200;e0=0;e1=0;e2=0;fors=1:72yp1=cos(2*3.14*k1*s/360);fork=1:k2fori=1:3x=w11(i,1)*xj(1,:)+w11(i,2)*xj(2,:);z=x+q1(:,i);o=[1-exp(-z)]/[1+exp(-z)];m=1/[1+exp(-z)];m1(i,:)=m;o1(i,:)=o;endfori=1:3yb=0;yb=yb+w21(i,:)*o1(i,:);endyi=yb
6、+p1;n=1/[1+exp(-yi)];y=[1-exp(-yi)]/[1+exp(-yi)];e0=e1;e1=e2;e2=[(yp1-y).^2]/2;xj1=e2-e1;xj2=e2-2*e1+e0;xj=[xj1;xj2];d2=n*(1-y)*(yp1-y);bk=d2;fori=1:3u=w21(i,:)*bk;d1=[1-o1(i,:)]*u;d0=m1(i,:)*d1;qw=q1(:,i)-q0(:,i);q2=q1(:,i)+0.8*d0+0.4*qw;q3(:,i)=q2;forj=1:2dw=w11(i,j)-w10(i,j);w12=w11(i,j)+
7、0.8*d0*xj(j,:)+0.6*dw;w13(i,j)=w12;endendw10=w11;w11=w13;q0=q1;q1=q3;fori=1:3h=w21(i,:)-w20(i,:);w22=w21(i,:)+0.4*d2*o1(i,:)+0.75*h;w23(i,:)=w22;endw20=w21;w21=w23;ph=p1-p0;p2=p1+0.9*d2+0.6*ph;p0=p1;p1=p2;ife2<0.0001,break;elsek=k+1;endende(s)=e2;y