您好,欢迎访问三七文档
1一、目的1.设计BP神经网络对数字信号处理机进行模拟;2.设计径向基函数神经网络对数字信号处理机进行模拟;3.比较上述两种神经网络对数字信号处理机的模拟结果,确定这两种方法的优缺点。二、原理与方案(1)BP神经网络1、BP算法(反向传播算法)的学习过程,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。2、BP神经网络得误差函数为:3、BP神经网络的流程图如下:2(2)径向基神经网络1、RBF网络的基本思想是:用RBF作为隐单元的“基”构成隐含层空间,这样就可以将输入矢量直接(即不需要通过权接)映射到隐空间。当RBF的中心点确定以后,这种映射关系也就确定了。而隐含层空间到输出空间的映射是线性的,即网络的输出是隐单元输出的线性加权和。此处的权即为网络可调参数。由此可见,从总体上看,网络由输入到输出的映射是非线性的,而网络输出对可调参数而言却又是线性的。这样网络的权就可由线性方程直接解出,从而大大加快学习速度并避免局部极小问题。2、径向基神经网络函数的一般表达式为:3、径向基神经元模型如下图:三、步骤1.首先利用数字信号处理机随机生成200个输入与200个输出。2.将生成的随机数字导入matlab的数据中,经过一系列的处理后分别作为输入矢量与目标矢量。3.利用BP神经网络对输入的数据进行拟合,函数逼近,观察其误差及模型的稳定性。4.利用径向基神经网络对输入的数据进行拟合,函数逼近,观察其误差及模型的稳定性。5.将上述两种神经网络对数字信号处理机的模拟结果进行比较,看其优缺点。四、数据记录与处理(1)BP神经网络1、先画出输入矢量与目标矢量的图,如下:32、用函数newff()构造神经网络,选择隐层和输出层神经元函数分别为tansig函数和purelin函数,网络训练方法用了梯度下降法。输出结果如下图:45由上图可知拟合出来的模型虽然比较逼近,误差也较小,但并没有达到所期望的误差。3、重复训练,将仿真值和实际输出值进行对比,计算误差,分析模型的稳定性。所得误差图如下图:6由上图可知误差的稳定性不好。(2)径向基神经网络1、径向基函数神经网络的创建,得到拟合的模型结果如下图:78由图可知拟合的效果比BP神经网络拟合的效果要好。2、将仿真值和实际输出值进行对比,计算误差,分析模型的稳定性。输出误差如下图所示:9由图可知,误差较小达到期望。10五、结果分析(完成指定的思考题和作业题)1.由BP神经网络对数据所拟合的结果进行分析可知,基本上每一次的训练结果都是不同的。而且需要较长的训练时间。对于一些复杂问题,BP算法需要的训练时间可能非常长,在一定程度上也增加了网络学习的负担。最后,BP神经网络的学习和记忆具有不稳定性。也就是说,如果增加了学习样本,训练好的网络就需要从头开始训练,对于以前的权值和阈值是没有记忆的。但是可以将预测、分类或聚类做的比较好的权值保存。BP神经网络模型的泛化能力很弱,而且学习和记忆具有不稳定性,所以在实际的应用中,原始的BP算法很难胜任。2.经过试验,用newrb()函数建立径向基函数网络模型比用newrbe()和newgrnn()函数的仿真效果要好,并且该模型比BP神经网络模型更简单,而且需要设定的参数更少。稳定性也比BP模型好很多。六、附录(1)BP神经网络代码rawData=importdata('dsp1.txt');%读取数据,存入矩阵rawDatainputData=rawData(1:20,:);%矩阵rawData前二十行是输入数据,把输入数据存入inputDataoutputData=rawData(21:40,:);%矩阵rawData后二十行是输出数据,把输出数据存入outputDatainputDataTra=inputData';%矩阵转置outputDataTra=outputData';%矩阵转置P=[inputDataTra(1:end);outputDataTra(1:end)];%matlab中矩阵是按照列顺序存取数据的p=P(:,1:199);t=P(2,2:200);figure(1);plot(p,t,'r-');title('实际输入与实际输出图','fontsize',12)ylabel('实际输出','fontsize',12)xlabel('样本','fontsize',12)net=newff(minmax(p),[101],{'tansig''purelin'},'traingd');net.trainParam.epochs=5000;net.trainParam.goal=0.0001;net.trainParam.lr=0.01;%net.trainParam.min_grad=1e-50;net=train(net,p,t);t2=sim(net,p);figure(2)plot(p,t2,':og');holdonplot(p,t,'-*');title('BP网络预测输出','fontsize',12)ylabel('函数输出','fontsize',12)xlabel('样本','fontsize',12)11error=t2-t;figure(3)plot(error,'-*')title('BP网络预测误差','fontsize',12)ylabel('误差','fontsize',12)xlabel('样本','fontsize',12)(2)径向基神经网络代码rawData=importdata('dsp1.txt');%读取数据,存入矩阵rawDatainputData=rawData(1:20,:);%矩阵rawData前二十行是输入数据,把输入数据存入inputDataoutputData=rawData(21:40,:);%矩阵rawData后二十行是输出数据,把输出数据存入outputDatainputDataTra=inputData';%矩阵转置outputDataTra=outputData';%矩阵转置P=[inputDataTra(1:end);outputDataTra(1:end)];%matlab中矩阵是按照列顺序存取数据的p=P(:,1:199);t=P(2,2:200);net=newrb(p,t);Y=sim(net,p);figure(1)plot(p,Y,':og');holdonplot(p,t,'*b');title('径向基函数网络输出','fontsize',12)ylabel('函数输出','fontsize',12)xlabel('样本','fontsize',12)error=Y-t;figure(2)plot(error,'-*')title('径向基函数网络预测误差','fontsize',12)ylabel('误差','fontsize',12)xlabel('样本','fontsize',12)(1)
本文标题:神经网络逼近散点
链接地址:https://www.777doc.com/doc-4224537 .html