您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > BP神经网络及径向基神经网络对数据信号处理仿真
佛山科学技术学院《神经网络》综合项目报告专业数学与应用数学姓名成绩班级数学与应用数学学号日期2015.6.16一、目的1.设计BP神经网络对数字信号处理机进行仿真;2.设计径向基函数神经网络对数字信号处理机进行仿真;3.比较上述两种神经网络对数字信号处理机的仿真结果,确定这两种方法的优缺点。二、原理与方案1.BP网络是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层、隐层和输出层。2.径向基函数神经网络由三层组成,输入层节点只传递输入信号到隐层,隐层节点由像高斯函数那样的辐射状作用函数构成,而输出层节点通常是简单的线性函数。隐层节点中的作用函数(基函数)对输入信号将在局部产生响应,也就是说,当输入信号靠近基函数的中央范围时,隐层节点将产生较大的输出,由此看出这种网络具有局部逼近能力,所以径向基函数网络也称为局部感知场网络。三、步骤1.BP神经网络对数字信号处理机进行仿真。第一步:在数字信号处理机采样,并在matlab提取相关数据。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中矩阵是按照列顺序存取数据的,%所以可以通过这种方式,把输入输出矩阵整合%为2行200列的矩阵p,p中第一行为输入数据,%第二行为输出数据。p=P(:,1:199);t=P(2,2:200);第二步:BP网络的创建与训练。用函数newff()构造神经网络,选择隐层和输出层神经元函数分别为tansig函数和purelin函数,网络训练方法分别用了梯度下降法traingd。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=50000;net.trainParam.goal=0.00001;net.trainParam.lr=0.01;%net.trainParam.min_grad=1e-50;net=train(net,p,t);t2=sim(net,p);第三步:重复训练,将仿真值和实际输出值进行对比,计算误差,分析模型的稳定性。figure(3)plot(p,t2,':og');holdonplot(p,t,'-*');title('BP网络预测输出','fontsize',12)ylabel('函数输出','fontsize',12)xlabel('样本','fontsize',12)error=t2-t;figure(4)plot(error,'-*')title('BP网络预测误差','fontsize',12)ylabel('误差','fontsize',12)xlabel('样本','fontsize',12)figure(5)plot((t-t2)./t2,'-*');title('神经网络预测误差百分比')errorsum=sum(abs(error))2.径向基函数神经网络对数字信号处理机进行仿真。第一步:在数字信号处理机采样,并在matlab提取相关数据。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中矩阵是按照列顺序存取数据的,%所以可以通过这种方式,把输入输出矩阵整合%为2行200列的矩阵p,p中第一行为输入数据,%第二行为输出数据。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.BP网络仿真结果如下图所示:-2-1.5-1-0.500.511.52-2-1.5-1-0.500.511.52实际输入与实际输出图实际输出样本-2-1.5-1-0.500.511.52-2-1.5-1-0.500.511.52BP网络预测输出函数输出样本020406080100120140160180200-0.1-0.0500.050.10.150.20.25BP网络预测误差误差样本020406080100120140160180200-5-4-3-2-101神经网络预测误差百分比2.径向基函数神经网络仿真结果如下图所示:-2-1.5-1-0.500.511.52-2-1.5-1-0.500.511.52径向基函数网络输出函数输出样本020406080100120140160180200-2-1.5-1-0.500.511.5x10-5径向基函数网络预测误差误差样本五、结果分析1.BP神经网络模型时用的是newff()函数,由于newff()的随意性,所以基本上每一次的训练结果都是不同的。由于学习速率是固定的,因此网络的收敛速度慢,需要较长的训练时间。对于一些复杂问题,BP算法需要的训练时间可能非常长,这主要是由于学习速率太小造成的,可采用变化的学习速率或自适应的学习速率加以改进。网络隐含层的层数和单元数的选择尚无理论上的指导,一般是根据经验或者通过反复实验确定。因此,网络往往存在很大的冗余性,在一定程度上也增加了网络学习的负担。最后,网络的学习和记忆具有不稳定性。也就是说,如果增加了学习样本,训练好的网络就需要从头开始训练,对于以前的权值和阈值是没有记忆的。但是可以将预测、分类或聚类做的比较好的权值保存。BP神经网络模型的泛化能力很弱,而且学习和记忆具有不稳定性,所以在实际的应用中,原始的BP算法很难胜任。2.经过试验,用newrb()函数建立径向基函数网络模型比用newrbe()和newgrnn()函数的仿真效果要好,并且该模型比BP神经网络模型更简单,而且需要设定的参数更少。稳定性也比BP模型好很多。
本文标题:BP神经网络及径向基神经网络对数据信号处理仿真
链接地址:https://www.777doc.com/doc-2900935 .html