BP神经网络用MATLAB逼近非线性函数及其泛化能力的分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• 下面是一些对泛化能力的分析:
1. 训练样本集的选取
学习训练的样本对神经网络的泛化能力也有很大的影响。数据样 本到底为多少才合适呢?如果样本集中的样本数量太少,则神经网络 在学习的过程中就丌能很好地掌握和学习蕴涵于样本集中的内在规律 和相互关系,同时在验证样本集中就丌能得到合理的推理结果;若学 习样本数量过大,丌仅影响了网络的学习时间,而且使网络不学习数 据太贴近,导致网络的抽取归纳能力下降。一般情况下,学习样本不 网络拓扑结构之间存在如下的关系
再测试输入几组数据,验证一下
• • • • • • •
u1=-0.48:0.05:0.47 %测试输入集 d1=-1.9*(u1+0.5); d1=exp(d1); d1=d1.*sin(10*u1); %测试数据集 y1=sim(net,u1); %仿真 figure(3); plot(u1,y1,'go',u1,d1,'r*');ylabel('测试数据集d1(*) 网络输出y1(o)','color','r'); xlabel('测试输入集u1','color','r') ;
BP网络逼近非线性函数及其泛 化能力的分析
王江
引言
函数逼近问题是神经网络研究的基本问题 之一.目前,非线性系统的研究已成为国内外科 学研究的热点。复杂非线性系统辨识是非线性 系统研究的前提和基础,其中非线性系统的黑 箱辨识问题尤为引人注目。而具有良好函数逼 近能力的神经网络为非线性系统黑箱辨识提供 了一种十分有效的工具。本文选取比较有代表 性的BP神经网络对非线性函数的逼近问题进行 研究,并通过实际的建模仿真给出了相关的实 验结果。

• • • • • • • • •
0 0.0214 0.1396 0.1443 0.2383 0.2099 0.2870 0.2387 0.2852 0.2467 0.2405 0.2396 0.1656 0.2125 0.0761 0.1505 -0.0123 0.0327 -0.0864 -0.1417
构建函数:

newff (a, b, c, d )
• ()中,为构建需的四个条件: • • • • a. R 2 维矩阵, 由R维输入样本的最大最小值组成; b. 二 、 三层节点个数; c. 各层节点作用函数; d. 训练用函数。
常用训练函数
算法名称 • 1. • 2. 动量BP算法 自适应步长的BP算法 Matlab函数 Traingdm Traingda
得到如下图形,即所给的非线性函 数曲线图:
构造三层BP神经网络
继续在M函数中如下输入: net=newff(minmax(u),[3,1],{'tansig','purelin'},'traingda'); %设计网络结构N1,3,1, y=sim(net,u); %仿真 figure(2); plot(u,d,'bo',u,y,'r*');ylabel('输出样本集d(o) 网络输出 y(*)','color','r'); xlabel('输入样本集u')
• 有人提出一个选取隐层节点的公式,如下:其中I为输入层节点数, L为输出层节点,a为1到20之间的常数。
J a ( I L)
检测本例的泛化能力 err=d1-y1
算法改变为trainlm后的泛化能力
输入样本集增多至40个点后的泛化能力
隐节点数曾至20后的泛化能力

从上面几个例子可以看出,影响网络泛化能力的因素有很多,比如样 本集的多少、隐层节点数的多少、BP网络的算法、网络结构的复杂性 甚至是初始权值、学习时间等都对其有丌同程度的影响。由于本例的 局限性和我相关知识上的欠缺,从上丌能明显的看出泛化能力的变化。 可是通过大量阅读文献和资料,知道选取合适的样本集、隐节点数及 网络结构的复杂度对于提高网络的泛化能力有很大的影响。但总体上 说,神经网络的泛化仍然是一个没有解决戒没有完全解决的问题,需 要更深入的研究。
(n m 1) p 1 h m
式中:n为输入变量数目;m为输出变量数目;h为隐含节点数目;p为输 入学习样本数目。
2.隐层节点的选取
在BP网络中,设计神经网络的拓扑结构是非常生重 要的问题,它不仅对建立的神经网络模型的性能影响很 大,而且可以导致“过拟合”现象,网络中隐层结点过 少,则学习过程可能不收敛,但隐层节点过多,则会长 时间不收敛,还会由于过拟合,造成网络的容错性能下 降。为尽能避免训练时出现“过拟合”现象,保证足够 高的网络性能和泛化能力,确定隐层结点数的最基本原 则是:在满足精度要求的前提下取尽可能紧凑的结构, 即取尽可能少的隐层节点。
下面改变隐层节点数比较逼近能力的变化
• 将隐层的节点数改为2,发现经过4700多次训练后,还没 有达到训练要求。
训练结果
将隐层节点改为7之后,发现经过254次训练就 达到了要求精度。可见,层数一样时,隐层节 点数较多时多,逼近能力越强。
训练的过程
节点改为7之后的训练结果
然后改变算法比较逼近能力的变化
参考文献
[1] 徐丽娜. 神经网络控制(第三版).北京:电子工业出版社,2009: 20—25. [2] 谢文兰. 对提高BP网络泛化能力的分析与总结[J].广东科技2011.7.第14期 [3] 黄忠明,吴志红. 几种用于非线性函数逼近的神经网络方法研究 [J].Ordnance Industry Automation. Vol. 28, No. 10Oct. 2009 [4] 魏海坤,徐嗣鑫 神经网络的泛化理论和泛化方法[J]. 自动化学报.第27卷 第6期.2001年11月 [5]MATLAB程序设计教程电子教案(第五章)
clear all; close all; %清除工作空间中的变量
u=-0.4:0.04:0.36 ;%输入样本集 d=-1.9*(u+0.5); d=exp(d); d=d.*sin(10*u) ;%输出样本集:非线性函数d figure(1); plot(u,d,'bo');ylabel('输出样本集d=f(u)','color','r'); xlabel('输入样本集u','color','r')
• 3.
• 4.
自适应步长的动量BP算法
弹性BP算法
Traingdx
Trainrp
题目要求
• (1)采取三层N1, 3,1BP网络,隐层选对称型(正切)S函数, 输出节点为线性。算法取L-MBP算法。
• (2)用MATLAB仿真,检测网络的逼近效果。 • (3)分析网络的泛化能力,比分析各因素对其影响。 • (4)分别改变神经网络的中间节点个数、改变学习算法 进行比较实验,讨论系统的逼近情况。
什么是BP网络
• BP 神经网络是一种多层前馈神经网络,该网络的主
要特点是信号前向传递, 误差反向传播。在前向传 递中,输入信号从输入层经隐含层逐层处理, 直至 输出层。每一层的神经元状态只影响下一层神经 元状态。如果输出层得丌到期望输出, 则转入反向 传播,根据预测误差调整网络权值和阈值,从而使B P神经网络预测输出丌断逼近期望输出。
开始
初始化,对各连接权赋值 输入训练样本集 前向传播:分别计算隐层、输出层 各神经元的输出 计算对样本产生的误差 满足目标误差 要求 Y
结束
N 计算输出层上各神经元的梯度值, 并调整该层上神经元的连接权 反向传播:逐层计算各隐层的神经元梯度值, 并调整各连接权值。
函 数 逼 近 流 程 图
构建三层BP网络
则得到以下所示未经训练的BP网络期 望输出不实际输出曲线比较
接着对函数进行训练
在M文件中输入如下函数:
net.trainParam.goal=0.001;
net=train(net,u,d);
%训练精度设置 为0.001 %网络训练
经过1183次训练达到了要求
经过训练后可以看到网络输出基本不样本输出 一致。这说明经过训练后,BP网络对非线性 函数的逼近效果相当好。
得到如下测试图,依然能够很好地逼近函数。
泛化能力的分析
• 什么是泛化能力:

神经网络的泛化能力(generalization Ability)。是指用较少的样
本就行训练,是网络能对未经训练的输入也能给出合适的输出。泛化 能力是衡量BP神经网络性能优劣的一个重要方面。因此,没有泛化能 力的神经网络无仸何使用价值。如何进一步提高BP网络的泛化能力, 一直是人们关心和研究的热点,同时也是一个难题。由于网络的泛化 能力涉及到训练的算法、输入数据的处理、网络建模等多个方面,情 况复杂,需要更深入的研究。
观测BP网2-3层的权系值
初始值 • w02 = • • 0.0767 • 0.9923 • -0.8436 学习后
• w2 =
• • • • • b2 = • -0.7652 -0.4066 -0.3624
• •
b02 = -0.1517
0.1277
观测BP网1-2层的权系值
初始值
• w01 =
• • • 11.0526 11.0526 -11.0526
学习后
• w1 = • • • 10.9693 11.0820 -11.2811
• b01 =
• b1 = • • • -4.0162 0.Байду номын сангаас622 -3.7325
• • •
-3.9789 0.2211 -4.4211
谢 谢!
输出数据比较
• ans = d
• • • • • • • • • • 0.6258 0.3392 0.0415 -0.2205 -0.4122 -0.5142 -0.5239 -0.4528 -0.3230 -0.1625
y
0.6097 0.3654 0.0459 -0.2407 -0.4198 -0.4992 -0.5080 -0.4550 -0.3332 -0.1553
逼近对象
如下:
f (u ) e
[ 1.9 ( u 0.5 )]
sin( u ) 10
由于作用函数采取S型函数,样本数据和测试数据尽量在[-1,1] 之间取。所以样本数据取: u=-0.4:0.04:0.36 测试数据取: u1=-0.48:0.05:0.47
在MATLAB中建立M文件下输入 如下命令:
• 将训练函数的算法traingda改为traingd。得到如下几个图
训练结果
总结
从三幅图可以看出,将traingda改为traingd 之后,连所要求的精度都不能达到。我由此推出, 训练算法对非线性函数的逼近有一定影响,应当 选择适合的训练算法。 本例是一个比较简单的例子,意在构造三层 BP网络,通过改变其不同的参数值来观测相应的 性能变化。通过本例我们大概了解了隐层节点数 和BP学习算法对网络性能的影响。当然还有很多 不足之处,希望大家多多指正。
相关文档
最新文档