神经网络在数学建模竞赛中的应用 下载本文

1.5给定输入信号网格输出信号10.50-0.5-1-1.50123456图3-3 使用newlin函数进行逼近效果曲线

误差曲线1

0.80.60.40.20-0.2-0.40123456

图3-4 newlin函数逼近的误差图

下面使用实例演示newlind函数的使用.

(1) 首先,产生输入训练样本和训练目标样本. %matlab程序

time1=0:.01:2; time2=2:.01:4; time3=4:.01:6;

time=[time1 time2 time3];

t=[cos(time1*pi) cos(time2*3*pi) cos(time3*5*pi)]; q=length(t); p=zeros(6,q);

p(1,2:q)=t(1,1:(q-1)); p(2,3:q)=t(1,1:(q-2));

25

p(3,4:q)=t(1,1:(q-3)); p(4,5:q)=t(1,1:(q-4)); p(5,6:q)=t(1,1:(q-5));

p(6,7:q)=t(1,1:(q-6));

(2) 使用newlind函数设计线性层. net=newlind(p,t); a=sim(net,p);

plot(time,t,time,a,'k-o')

legend('给定输入信号','网络输出信号') figure

plot(time,a-t) title('误差曲线')

线性层网络函数逼近效果如图3-5和图3-6所示.

1.5给定输入信号网络输出信号10.50-0.5-1-1.50123456

图3-5 线性层设计函数newlind函数逼近效果

误差曲线0.40.20-0.2-0.4-0.6-0.8-10123456

图3-6 线性层设计函数newlind函数逼近误差图

3.1.3 基于神经网络定积分计算模型

人工神经网络的主要特点是其非线性映射能力,这种能力使得神经网络能够逼近任何给定的连续函数.从应用的角度来看,一个人工神经网络是根据某种“目标”而构造的,

26

这样的目标一般情形下是一个多元或一元函数,称之为“目标函数”,可通过对权值的学习,使得目标函数尽可能逼近于人们理想中目标函数.基于这些思想,提出了一种基于积分定义的神经网络模型.现我们来确定学习训练样本数据,首先对训练样本数据作预处理:假设被积f(x)在区间[a,b]上有n种分法T1,T2,?,Tn,其中划分Tj为:

Xj?{x0j,x1j,?,xmj},j?1,2,?,n

令?X?(?X1,?X2,??Xn),其中:?Xj?(?x1j,?x2j,??xmj),j?1,2,?,n

?xij?xij?x(i?1)j,则学习训练样本数据集为{((?x1j,?x2j,?,?xmj),d)|j?1,2,?,n},其中

d为积分?f(x)dx的准确值.那么,基于积分定义的神经网络求解数值积分模型如图3-7

ab所示.

?x1 ?x2??f(?1f(?2) ?y

?xmf(?m) 图3-7 求解数值积分模型

其中f(?i)为神经网络权值,设神经网络的权值矩阵为:W?[w1,w1,?,wm],其中

wi?f(?i),??[?1,?2,??m]T;激励函数为恒等函数,阀值取0,则该网络输出

y(k)??wi?xi(k)??f(?i)?xi(k)?W'?X(k)

i?1i?1mm定义误差代价函数:

e(k)?d?y(k),k?0,1,?,n?1

其中n为训练样本点数,f(x)为被积函数.

设误差矩阵为E?[e(0),e(1),?,e(n?1)]T,则有性能指标:

1n?1212J(k)??e(k)?E2

2k?02?2为Euclidean范式的平方.根据梯度下降法学习规则,故权值调整公式如下:

2??i??u?J(k)?e(k)?y(k)?f ????e(k)?y(k)?f??i ?ue(k)??xi?f'(?i)

?i(k?1)??i(k)???i(k)

??i(k?1)?ue(k)??xi?f'(?i)

其中u为学习效率,且0?u?1.

基于神经网络的定积分学习算法

神经网络学习的目标就是对权值的学习,参照一般神经网络的学习过程,那么,神经网络求积分的学习步骤如下:

27

step1 获取神经网络训练样本集:{((?x1j,?x2j,?,?xmj),d)|j?1,2,?,n};随机产生网络权值W?[w1,w1,?,wm],wi?f(?i),??[?1,?2,??m]T;给定误差精度?;令J?0.

step2 计算网络输出:y(k)??wi?xi(k)??f(?i)?xi(k)?W'?X(k)

i?1i?1mmstep3 计算误差函数:e(k)?d?y(k)

1n?1212step4 计算性能指标:J(k)??e(k)?E2

2k?021step5 计算学习率:u(k)?m

2??xif'(?i)i?1step6 权值调整:?i(k?1)??i(k?1)?ue(k)??xi?f'(?i)

step7 如果样本集未训练完,返回step2重复上述步骤;否则,判断性能指标是否J???,如果是,令J?0,返回step2重复上述步骤,否则,结束网格训练,输出网格权值:W.

如求解定积分?excos(100x)dx,精确到8位有效数字.

0?MATLAB编程实现: %定积分函数 function y=f(x)

y=exp(x).*cos(100.*x); clc;

format long a=0;

b=pi; %a,b为积分区间

tol=0.00000001; %tol为精确度 J=2*tol;

m=20; %将区间[a,b]分为m+1个不等距的区间

p=6.389; %p为定积分的精确值 n=50; %n为训练样本个数 X=zeros(m+1,n); x=zeros(m,n); c=zeros(m,n); w=zeros(m,n);

X(1,:)=a; X(m+1,:)=b;

for i=1:n

X(2,i)=a+0.1*rand; X(m,i)=b-0.1*rand;

28