文档介绍:计算机实践数学实验报告
(一)
实验名称:神经网络模型
问题描述
利用BP算法及sigmoid函数,研究以下各函数的逼近问题
fx=1x , 1≤x≤100
fx=sinx, 0≤x≤π2
对每一函数要完成如下工作:
获取两组数据,一组作为训练集,一组作为测试集;
利用训练集训练一个单隐层的网络;用测试集检验训练结果,改变隐层单元数,研究它对逼近效果的影响.
2. 给定待拟合的曲线形式为
fx=+(2πx)
在fx上等间隔取11个点的数据,在此数据的输出值上加均值为0,均方差σ=,用多项式拟合此函数,分别取多项式的阶次为1,3和11阶,图示出拟合结果,并讨论多项式阶次对拟合结果的影响.
实验目的
运用神经网络模型的知识解决上述问题;
改变网络构造,研究不同逼近效果.
高次多项式拟合出现的现象.
实验原理与数学模型
问题一利用多层前馈网络求解. 输入层每个数据包含两个元素,分别为自变量和因变量. 输出层包含一个元素目的是将结果进行区分. 判断输入的数据是否满足相应的函数关系. 所以输出层的结果为1,分别表示满足函数关系.
多层前馈网络
单隐层的单元个数对输出结果的逼近有一定的影响. 不一定会出现准确的1,可能接近于1. 改变其个数查看相应的逼近效果.
问题二用不同阶多项式拟合函数,也可以选取多层前馈网络. 单隐层单元数目对应阶数. 输入层包含一个元素即自变量. 输出层包含一个元素即因变量. 选取数据并加入高斯噪声后进行训练,得到不同的网络. 再对数据进行预测,得到多项式拟合结果.
主要内容:
针对fx=1x , 1≤x≤100选取训练集:输入为x|x=1+10k,k=0,1,2,…,9,y=f(x). 输出均为1. 测试集:输入为:x*|x*=5+30k,k=0,1,2,3,y*=f(x*).
将训练级和测试集放在一个图中,它们是同一个函数上的点.
网络结构选定相应的参数,对数据进行训练.
将分别将训练集和测试集代入网络结构,得到输出结果.
单隐层设置不同的单元数进行训练.
针对第二个函数进行类似操作.
针对问题二中的函数fx=+(2πx)选取x|x=,k=0,1,2,…,10为输入值. y=fx,x∈x|x=,k=0,1,2,…,10, 对y加均值为0,均方差σ=.
网络结果中单隐层单元数分别设置2,4,12. 其它参数做相应设定后进行训练.
对x|x=,k=0,1,2,…,10进行预测,做出图像.
实验过程记录
第一题第一个函数的代码如下(第二个函数的类似,不列出):
clear all;
x1=1:10:91;
y1=1./x1;
x11=5:30:95;
y11=1./x11;
p1=[x1;y1];
p11=[x11;y11];
pr=minmax(p1);
goal=ones(1,10);
plot(p1(1,:),p1(2,:),'h',p11(1,:),p11(2,:),'o')
net=newff(pr,[10,1],{'logsig','logsig'});
= 10;
= ;
= 1e-10;
= 50000;
net = ,p1,goal);
x=[p11];
y0=,p1)
y=,x)
第二题的部分代码如下:
clear all;
x=0::1
y0=+*sin(2*pi*x)
noise=normrnd(0,,1,11);
y0=y0+noise;
……
net2=newff(pr,[4,1],{'logsig','logsig'});
= 10;
= ;
= 1e-10;
= 50000;
net2 = 2,x,goal);
y2=2,x)
……
plot(x,y0,'h',x,y1,'o',x,y2,'.',x,y3,'*')
实验结果及实验总结
第一题:
不同单元个数下的预测结果
3个