BP神经网络作业
- 格式:doc
- 大小:28.50 KB
- 文档页数:5
人工神经网络
1 概述
人工神经网络是近年来发展起来的模拟人脑生物过程的人工智能技术。
它由大量的、同时也是简单的神经元广泛互连形成复杂的非线性系统,已经在信息处理模式识别、智能控制及系统建模等领域得到越来越广泛的应用。
尤其是基于误差反向传播算法的多层前馈网络,可以以任意精度逼近任意的连续函数,所以广泛应用于非线性建模、函数逼近、模式分类等方面。
虽然BP神经网络是目前应用最广泛、研究较多的一种网络。
但是关于它的开发设计目前为止还没有一套完整的理论。
2 BP神经网络设计步骤
BP神经网络的设计主要包括输入层,输出层,及各层之间的传输函数几个方面。
2.1 网络层数
大多数通用的神经网络都预先预订了网络的层数,而BP网络可以包含不同的隐层。
但理论上已经证明,在不限制隐含节点数的情况下,两层的BO网络可以实现任意非线性映射。
在模式样本相对较少的情况下,较少的隐层节点,可以实现模式样本空间的超平面划分,此时,选择两层BO 网络就可以了;当模式样本数很多时,减小网络规模,增加一个隐层是有必要的,但是BP网络隐含层数一般不超过两
层。
2.2输入层得节点数
输入层起起缓冲储存器的作用,它接受外部的输入数据,因此其节点数取决于输入矢量的维数。
当把大小的图像的像素作为输入数据时,输入节点数将为256个。
一般来说,网络的输入个数应等于应用问题的输入数,MATLAB的BP网络的建立是通过函数newff实现的。
2.3网络数据的预处理
为使网络训练更加有效,对神经网络的输入、输出数据进行一定的预处理可以加快网络的训练速度。
Matlab 提供的预处理方法有归一法、标准化处理和主成分分析。
常采用的是归一法处理,即将输入、输出数据映射到[-1,1]范围训练结束后再反映射到原数据范围。
2.4输出层得节点数
输出层节点数取决于两个方面,输出数据类型和表示该类型所需要的数据大小。
当BP网络用于模式分类时,以二进制形式来表示不同模式输出结果,输出层得节点数可以根据待分类模式数确定。
2.5隐层得节点数
一个具有无限隐层节点的两层BP网络可以实现任意从输入到输出模式的映射。
但对于有限个输入模式到输出模式的映射,并不需要无限个隐层节点,这就涉及到如何选
择隐层节点数的问题,而这一问题的复杂性,使得至今为止,尚未找到一个很好的解析式,隐层节点数于求解问题的要求、输入输出单元数多少都有直接的关系。
另外,隐层节点数太多会导致学习时间过长;而隐层节点数太少,容错行差,识别未经学习的能力样本低,所以必须综合多方面的因素进行设计。
① 根据经验,可以参考以下公式进行设计 n=a n n i ++0或者nl a =
② 改变n ,用同一样本集训练,从中确定网络误差最小时对应的隐层节点数。
2.6 传输函数
BP 网络中传输函数常采用S (sigmoid )型函数 x e x f -+=11
)(
在某些特定情况下,还可能采用纯线性函数。
如果BP 函数最后一层是SIGMOID 函数,那么整个网络的输出就限制在一个较小的范围内(0~1之间的连续量);如果BP 网络最后一层是Pureline 函数,那么整个网路的输入可以取任意值。
2.7 初始权值的设计
网络权值的初始化决定了网络的训练从误差曲面的哪点开始,因此初始化方法对网络的训练时间至关重要。
通常使用以下两种方法:
⑴取足够小的初始权值
⑵使初始值为+1和-1的权值数相等
3Matlab 程序设计
程序见
k=1;
p=[-1:0.05:8];
t=1+sin(k*pi/4*p);
plot(p,t,'-');
title('要逼近的非线性函数');
xlabel(' 时间');
ylabel('非线性函数');
n=3;
net=newff(minmax(p),[n,1],{'tansig','purelin'},'trainlm');
y1=sim(net,p);
figure;
plot(p,t,'-',p,y1,':')
title('未训练网络的输出结果');
xlabel('时间');
ylabel('仿真输出——原函数-');
net.trainParam.epochs=50; net.trainParam.goal=0.01;
net=train(net,p,t);
y2=sim(net,p);
figure;
plot(p,t,'-',p,y1,':',p,y2,'--');
title('未训练网络的输出结果'); xlabel('时间');
ylabel('仿真输出');。