一、课题内容及要求1、课题内容:应用BP神经网络逼近非线性函数。2、课题要求:a.非线性函数形式自选,要求必须是多输入非线性函数,可以是单输出也可以是多输出;b.逼近误差0.01;c.学习方法为经典的BP算法或改进形式的BP算法;二、BP网络模型及学习算法1、BP网络模型(1)待逼近非线性函数y=exp(u1+0.11)+(0.99*u2)。(2)BP网络层数:3层输入维数:3维(这里包含阈值,所以是3维)。隐含层节点数:9个输出维数:1维(3)隐含层转移函数:Sigmoid函数输出层转移函数:线性函数(purelin)。输入向量为U=(u1,u2)T,u0=-1是为隐层神经元引入阈值而设置的;隐层输出向量为Y=(y1,y2,…,y8,y9)T,y0=-1是为输出层神经元引入阈值而设置的;输出层输出向量为O=o1;期望输出向量为d=d1。输入层到隐含层之间的权值矩阵用IW表示,IW=(IW1,IW2,…IW8,IW99),其中列向量IWj为隐层第j个神经元对应的权值向量;隐层到输出层之间的权值矩阵用LW表示,LW=(LW1,…LW9)其中列向量LW1为输出层神经元对应的权向量。2、BP学习算法BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成。正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出(教师信号)不符,则转入误差的反向传播阶段。误差反传是将输出误差以某种形式通过隐层向输入层逐层反传,将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。这种信号正向传播与误差反向传播的各层权值调整过程是周而复始的进行的。权值不断调整的过程,也就是网络的学习训练过程。此过程一直进行到网络输出的误差减少到可接受的程度,或进行到预先设定的学习次数为止。3、BP算法的程序实现根据以上BP学习算法的基本思想以及有关公式的推导,得到以下标准BP算法的实现步骤:①初始化:对权值矩阵IW、LW赋随机数,将样本模式计数器p和训练次数计数器count置为1,误差平方之和sse置为0,学习速率alpha设为(0,1]区间内的小数,网络训练后达到的精度errGoal设为一正的小数;②输入训练样本对,计算各层输出:用当前样本Up、dp对向量数组U、d赋值,并计算隐含层和输出层输出向量Y、O中各分量;③计算网络输出误差设共有n对训练样本,网络对于不同的样本具有不同的误差p1p1po-de,将全部样本的输出误差进行平方累加,作为总输出误差平方和21)(21ssenppE;④计算各层误差信号利用公式eodo111和)1(11jjjoyjyy计算隐含层和输出层的误差信号o1、yj,其中j=1,2,…,9;⑤调整各层权值应用公式jkjyalphaw11j1w和iyjijxalphavijv计算LW、IW中各分量,其中i=1,2;⑥检查是否对所有样本完成一次轮训若pn,计数器p和count增1,返回步骤②,否则转至步骤⑦;⑦检查网络总误差是否达到精度要求若sseerrGoal,训练结束,否则sse置0,p置1,返回步骤②。以上标准BP算法流程图如图1所示。图1标准BP算法流程三、实验仿真结果及分析按上述流程进行代码编写,仿真后得到以下结果:①网络初始权值(随机):②训练后得到的网络权值:③训练步长:count=573④训练曲线输出:⑤测试误差曲线:经过大量实验发现,此BP网络的测试误差可以±0.1。四、源程序及程序解释(见附件)