神经网络结构与逼近能力
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
m
wij jy xi ko v jk ) y j (1 y j ) xi
k 1
(5)
计算V、W,调整各层权值。
v jk (k 1) v jk (k ) v jk wij (k 1) wij (k ) wij
(6)
6) 检验是否对所有样本完成一次轮训。若p<P(样本对),计数器p,q增1,返回步骤2),否则转步骤7) 7)检验网络总误差是否达到精度要求。判断误差是否满足要求,若满足则转步骤8),否则E置0,p置1, 返回步骤2)。 8)训练结束。 基于MATLAB的BP算法步骤 1)初始化。将学习样本归一化处理,组织输入向量P和目标向量T。 2)用newff函数创建一个BP网络。 3)用train()函数进行学习训练。 4)用sim函数检验训练效果。 3.2 RBF算法步骤 1)网络输出计算,基本原理与BP相通。 2)网络学习目的: 设有p组输入、输出样本t、y,p=1,2,…,L定义目标函数(L2范数)为
4
实验wk.baidu.com分析
4.1 BP网络函数逼近】 如下仿真图所示,i为不同值时的BP网络的函数逼近图和误差曲线图。其中,左边(k:)虚线为BP网络训练 之前的输出,(k-)为期望的输出,(k*)为训练后的BP网络输出值。本实验实际的图形应该更多,下面只是列 出了有代表性的一些图隐含层单元数分别是n=3,5,10,15。这里隐含层数为1。训练的次数是1000次。 除了可以用库函数实现的BP网络程序外,还有设计了加入动态项的优化计算方法,见文献。这种算法加 入了动态项,起到平滑梯度方向的剧烈变化,增加算法的稳定性。 不用库函数的BP网络的程序涉及到一些参数的设定,但图像都差不多。
(a1)i=1,n=3
(a2)i=1,n=5
(a3)i=1,n=10
(a4)i=1,n=15
(b1)i=2,n=3
(b2)i=2,n=5
(b3)i=2,n=10
(b4)i=2,n=10
(c1)i=4,n=3
(c2)i=4,n=5
(c3)i=4,n=10
(c4)i=4,n=15
(d1)i=8,n=3
(h3)i=8,n=20,均方误差0.000001 通过上图的对比和跟多的图形对比可以得出如下结论。 1)RBF网络的学习过程收敛速率很快,适合与在线控制辨识等;并且RBF网络的逼近能力很好,由于不 存在函数极小化问题,一定程度上优于BP神经网络。在MATLAB程序上可以得到验证。 2)实验表明,如果隐含层径向基函数神经元数目太少,网络不能具有必要的学习能力和信息处理能力, 从而无法误完成给定的任务(如图h1);反之,如果隐含层径向基函数神经元数目太多,不仅会大大增加网 络结构的复杂性和计算时间,而且会使网络的泛化能力下降,对非训练样本会产生非期望的错误结果。 3)虽然具有唯一最佳逼近的特性和无局部最小的优点,但是隐含层的节点中心比较难求。
2 BP和RBF神经网络算法思想
2.1 BP神经网络 人们常把误差反向传播算法的多层前馈网络直接称为BP网络。BP网络学习训练中采用有导师学习方式, 在调整权值过程中采用梯度下降技术,使网络总误差最小。 其算法思想是:学习训练过程由正向信号传播和反向误差传播构成。正向传播时,输入样本从输入层进 入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出不符,则转入误差的反向传播阶 段。误差反传是将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而 获得各层单元的误差信号,此误差信号作为修正各单元权值的依据。这种信号正向传播与误差反向传播的各 层权值调整过程,周而复始地进行的。一直进行到网络输出的误差减少到可以接受的程度,或进行到预先设 定的学习次数。 2.2 RBF神经网络 径向基(RBF)网络是具有单隐层的三层前馈网络。它包括输入层、隐含层和输出层。其中,输入层直 接由信号源节点构成,其作用是接受输入信号并将其传递到隐含层。从输入层到隐含层权值全部取1。隐含层 是RBF网络中最重要的一层,该层神经元的转换函数采用径向基函数(或核函数)。而径向基函数一般为高 斯函数,它是一种局部分布的、对中心点径向对称衰减的、非负非线性函数,当径向基函数的中心点确定以 后,这种映射关系也就确定了。它的作用是从输入空间到隐层空间之间进行非线性变换,在大多数情况下, 隐层空间有较高的维数,隐含层到输出层的转换函数一般使用线性函数,因此输出层只实现对隐含层节点非 线性基函数输出的线性组合,从而得到最后的结果。由于RBF网络模拟了人脑中局部调整、相互覆盖接受域 的神经网络结构,因此它是一种局部逼近网络,从理论上已经证明它能以任意的精度逼近任一连续函数,具 有唯一最佳逼近特性、且无局部极小问题。
b j [t (k ) yL (k )]w j h j
|| X C j ||2 b3 j
(10)
b j (k ) b j (k 1) b j [b j (k 1) b j (k 2)] (11)
c ji [t (k ) yL (k )]w j h j
注意:具体运行时、有些参数是需要调整的。
%BP算法 %t=1+sin(pi*i*x/4) BP网络是1:3:1的结构 %i=1,2,4,8. clear all; format long x=-2.0:0.05:2.0; t=1.0+sin(pi*x/4); net=newff(minmax(x),[3 1],{'tansig','purelin'},'trainbfg','learngdm','sse'); y=sim(net,x); %结果 hold on; plot(x,y,'k:'); net.trainParam.epochs=1000; net.trainParam.goal=0; net.trainParam.lr=3; net.trainParam.show=100; [net,Tr]=train(net,x,t); x1=-2.0:0.05:2.0; y1=sim(net,x1); %检验训练结果 E=t-y1; MSE=mse(E); plot(x,t,'k-',x1,y1,'k*'); axis([-2,2,-1,3]); xlabel('Input'); ylabel('Output'); figure(2); plot(x,E,'k-'); axis([-2,2,-0.05,0.05]);
5
结论
BP和RBF神经网络具有比较好的逼近能力。但是隐单元个数越少或越多,并不能够说明逼近的精度越好。 至今为止,尚未找到很好的解析式,隐含层节点数往往根据经验或进行试验来确定,这是我们今后努力的方 向。
参考文献(References)
[1] [2] [3] [4] [5] [6] 张国忠. 智能控制系统及应用[M]. 北京: 中国电力出版社, 2007. 徐丽娜. 神经网络控制[M]. 北京: 电子工业出版社, 2009. 张德丰. MATLAB神经网络仿真与应用[M]. 北京: 电子工业出版社, 2009. 徐远方. 基于MATLAB的神经网络的研究[J].技术交流.2006:41-44 苏高利,邓芳萍. 论基于 MATLAB 语言的 BP 神经网络的改进算法[J].科技通报.2003:130-135 王阳萍,朱正平. MATLAB 在RBF径向基神经网络仿真中的应用[J].甘肃科技.2004:54-55.
3 算法描述和实现细节
3.1 BP算法步骤 实际应用中有2种方法可以调整权值和阈值: 单样本训练和成批训练。 对于单样本训练, 每输入一个样本, 都要回传误差,并调整权值和阈值。而成批训练算法,是当所有的样本输入后,计算其总误差。然后进行权 值和阈值的调整。下面是单样本训练算法步骤。 1)初始化。赋随机数给初始权值和阈值,将样本模式计数器p和训练次数计数器q置为1,误差置为0,学 习率设为0-1的小数,网络训练后达到的精度Emin设为一个正的小数。 2)输入训练样本对(X,T)。 3)正向计算各层输出。用当前样本向量数组赋值,用式
yi f (net j )
n
j 1, 2,..., l
(2)
net j wij xi
i 0
j 1, 2,..., l k 1, 2,..., l k 1, 2,..., l
(3)
ok f (netk )
n
netk w jk x j
j 0
计算隐层和输出层的输出。 4)计算各网络输出误差。根据式
J || t p y p ||
p
2
1 (tkp ykp ) 2 (7) 2 p k
(8)
目的是使得
J
式中, y p 是在 t p 输入下网络的输出向量。
根据梯度下降法原理,可以推出输出权值、隐层节点高斯函数的中心及宽度参数的迭代算法: w j ( k ) w j (k 1) [t ( k ) yL ( k )]h j [ w j (k 1) w j (k 2)] (9)
(d2)i=8,n=5
(d3)i=8,n=10
(d4)i=8,n=15 通过上图的对比和跟多的图形对比可以得出如下结论。 1) 隐含层数为1,隐单元个数在一定的范围之内:BP网络具有比较好的逼近能力; 2) 隐含层数为1时,隐单元个数并不是越少越好(如d1),也不是越多越好(如b4),而是在一定的范围 之内,BP网络的误差比较小。误差比较小的范围内同时也可能有误差很大的时候,这可能是在训练的时候,出 现了函数局部极小值,因此而这是BP网络的缺陷之一(如d1,实验BP网络训练多次时,有时的结果很好,但是 不好的概率十分的大)。为更加明显的说明BP网络隐含层数为1时隐单元个数不是越多越好,如下图,i=8,隐 单元个数n=100。
图 2 i=8,隐单元个数n=100。 3) BP网络隐含层的节点过多会虽然有时精度比较好,但是影响计算速率,成本比较大。
4.2 RBP网络函数逼近 如下图,左边的图是RBF网络函数逼近曲线,右边的图是误差曲线。下面的图具体的参数需要调整。 其中,(h)组的3,6,9个节点图都不太好。
(e1)i=1,n=3
x j c ji b2 j
(12)
c ji (k ) c ji (k 1) c ji [c ji (k 1) c ji (k 2)] (13) 式中, 是学习速率; 是动量因子。
3)RBF网络学习算法由两部分组成:无导师学习、有导师学习。第一阶段是无导师学习,是根据所有的 输入样本确定隐含层各节点的高斯核函数的中心向量 C j 和宽度参数 b j 。第二阶段是有导师学习。在确定隐 层的参数后,根据样本,利用最小二乘原则,求出隐层与输出层之间的权值 w 。具体过程见文献。 基于MATLAB的RBF神经网络算法步骤: 1) 初始化,确定RBF网络模型的输入、输出向量。 2) 用newrb函数设计一个满足一定精度要求的RBF网络。 3) 用sim函数进行仿真。
ko (tk ok )ok (1 ok )
m
jy ( ko v jk ) y j (1 y j )
k 1
(4)
计算 和 。 5)计算各层误差信号,调整各层权值。用式
o k
y j
v jk ko y j (tk ok )ok (1 ok ) y j
《神经网络结构与逼近能力》研究报告
刘彪,110101251
南京理工大学自动化学院, 南京 210094 E-mail: liubiao_just@163.com
摘 要: 本文利用BP和RBF神经网络(NN, Neural Networks)的思想,对某 一具体函数设计了BP和RBF网络的MATLAB程序,研究并验证了这两种神 经网络的逼近能力,同时具体的分析了BP和RBF神经网络结构与逼近能力 的关系。 关键词: 神经网络,逼近能力
独立完成
1 作业内容、完成工作、获得的结论
1.1 作业内容 试分析神经网络结构与逼近能力的关系。采用NN逼近如下函数
g ( x ) 1 sin(
i x) 4
(2 x 2) (1)
其中i=1,2,4,8,随i增加,在[-2,2]之内出现更多函数项。选定结构为1-3-1的FNN。隐单元为S-函数,输出 单元为线性函数,试分析隐单元个数与逼近精度的关系。 1.2 完成工作 本文分别设计了BP和RBF神经网络的MATLAB程序,通过得到的结果,验证了BP和RBF网络的逼近能 力,并分析了神经网络结构与逼近能力的关系。 1.3 获得的结论 BP和RBF神经网络具有比较好的逼近能力。 但是隐单元个数越少或越多, 并不能够说明逼近的精度越好。
(e2)i=1,n=5
(e3)i=1,n=10
(e4)i=1,n=15
(f1)i=2,n=3
(f2)i=2,n=5
(f3)i=2,n=10
(f4)i=2,n=15
(g1)i=4,n=3
(g2)i=4,n=5
(g3)i=4,n=10
(g4)i=4,n=15
(h1)i=8,n=3
(h2)i=8,n=15,均方误差0.00001
wij jy xi ko v jk ) y j (1 y j ) xi
k 1
(5)
计算V、W,调整各层权值。
v jk (k 1) v jk (k ) v jk wij (k 1) wij (k ) wij
(6)
6) 检验是否对所有样本完成一次轮训。若p<P(样本对),计数器p,q增1,返回步骤2),否则转步骤7) 7)检验网络总误差是否达到精度要求。判断误差是否满足要求,若满足则转步骤8),否则E置0,p置1, 返回步骤2)。 8)训练结束。 基于MATLAB的BP算法步骤 1)初始化。将学习样本归一化处理,组织输入向量P和目标向量T。 2)用newff函数创建一个BP网络。 3)用train()函数进行学习训练。 4)用sim函数检验训练效果。 3.2 RBF算法步骤 1)网络输出计算,基本原理与BP相通。 2)网络学习目的: 设有p组输入、输出样本t、y,p=1,2,…,L定义目标函数(L2范数)为
4
实验wk.baidu.com分析
4.1 BP网络函数逼近】 如下仿真图所示,i为不同值时的BP网络的函数逼近图和误差曲线图。其中,左边(k:)虚线为BP网络训练 之前的输出,(k-)为期望的输出,(k*)为训练后的BP网络输出值。本实验实际的图形应该更多,下面只是列 出了有代表性的一些图隐含层单元数分别是n=3,5,10,15。这里隐含层数为1。训练的次数是1000次。 除了可以用库函数实现的BP网络程序外,还有设计了加入动态项的优化计算方法,见文献。这种算法加 入了动态项,起到平滑梯度方向的剧烈变化,增加算法的稳定性。 不用库函数的BP网络的程序涉及到一些参数的设定,但图像都差不多。
(a1)i=1,n=3
(a2)i=1,n=5
(a3)i=1,n=10
(a4)i=1,n=15
(b1)i=2,n=3
(b2)i=2,n=5
(b3)i=2,n=10
(b4)i=2,n=10
(c1)i=4,n=3
(c2)i=4,n=5
(c3)i=4,n=10
(c4)i=4,n=15
(d1)i=8,n=3
(h3)i=8,n=20,均方误差0.000001 通过上图的对比和跟多的图形对比可以得出如下结论。 1)RBF网络的学习过程收敛速率很快,适合与在线控制辨识等;并且RBF网络的逼近能力很好,由于不 存在函数极小化问题,一定程度上优于BP神经网络。在MATLAB程序上可以得到验证。 2)实验表明,如果隐含层径向基函数神经元数目太少,网络不能具有必要的学习能力和信息处理能力, 从而无法误完成给定的任务(如图h1);反之,如果隐含层径向基函数神经元数目太多,不仅会大大增加网 络结构的复杂性和计算时间,而且会使网络的泛化能力下降,对非训练样本会产生非期望的错误结果。 3)虽然具有唯一最佳逼近的特性和无局部最小的优点,但是隐含层的节点中心比较难求。
2 BP和RBF神经网络算法思想
2.1 BP神经网络 人们常把误差反向传播算法的多层前馈网络直接称为BP网络。BP网络学习训练中采用有导师学习方式, 在调整权值过程中采用梯度下降技术,使网络总误差最小。 其算法思想是:学习训练过程由正向信号传播和反向误差传播构成。正向传播时,输入样本从输入层进 入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出不符,则转入误差的反向传播阶 段。误差反传是将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而 获得各层单元的误差信号,此误差信号作为修正各单元权值的依据。这种信号正向传播与误差反向传播的各 层权值调整过程,周而复始地进行的。一直进行到网络输出的误差减少到可以接受的程度,或进行到预先设 定的学习次数。 2.2 RBF神经网络 径向基(RBF)网络是具有单隐层的三层前馈网络。它包括输入层、隐含层和输出层。其中,输入层直 接由信号源节点构成,其作用是接受输入信号并将其传递到隐含层。从输入层到隐含层权值全部取1。隐含层 是RBF网络中最重要的一层,该层神经元的转换函数采用径向基函数(或核函数)。而径向基函数一般为高 斯函数,它是一种局部分布的、对中心点径向对称衰减的、非负非线性函数,当径向基函数的中心点确定以 后,这种映射关系也就确定了。它的作用是从输入空间到隐层空间之间进行非线性变换,在大多数情况下, 隐层空间有较高的维数,隐含层到输出层的转换函数一般使用线性函数,因此输出层只实现对隐含层节点非 线性基函数输出的线性组合,从而得到最后的结果。由于RBF网络模拟了人脑中局部调整、相互覆盖接受域 的神经网络结构,因此它是一种局部逼近网络,从理论上已经证明它能以任意的精度逼近任一连续函数,具 有唯一最佳逼近特性、且无局部极小问题。
b j [t (k ) yL (k )]w j h j
|| X C j ||2 b3 j
(10)
b j (k ) b j (k 1) b j [b j (k 1) b j (k 2)] (11)
c ji [t (k ) yL (k )]w j h j
注意:具体运行时、有些参数是需要调整的。
%BP算法 %t=1+sin(pi*i*x/4) BP网络是1:3:1的结构 %i=1,2,4,8. clear all; format long x=-2.0:0.05:2.0; t=1.0+sin(pi*x/4); net=newff(minmax(x),[3 1],{'tansig','purelin'},'trainbfg','learngdm','sse'); y=sim(net,x); %结果 hold on; plot(x,y,'k:'); net.trainParam.epochs=1000; net.trainParam.goal=0; net.trainParam.lr=3; net.trainParam.show=100; [net,Tr]=train(net,x,t); x1=-2.0:0.05:2.0; y1=sim(net,x1); %检验训练结果 E=t-y1; MSE=mse(E); plot(x,t,'k-',x1,y1,'k*'); axis([-2,2,-1,3]); xlabel('Input'); ylabel('Output'); figure(2); plot(x,E,'k-'); axis([-2,2,-0.05,0.05]);
5
结论
BP和RBF神经网络具有比较好的逼近能力。但是隐单元个数越少或越多,并不能够说明逼近的精度越好。 至今为止,尚未找到很好的解析式,隐含层节点数往往根据经验或进行试验来确定,这是我们今后努力的方 向。
参考文献(References)
[1] [2] [3] [4] [5] [6] 张国忠. 智能控制系统及应用[M]. 北京: 中国电力出版社, 2007. 徐丽娜. 神经网络控制[M]. 北京: 电子工业出版社, 2009. 张德丰. MATLAB神经网络仿真与应用[M]. 北京: 电子工业出版社, 2009. 徐远方. 基于MATLAB的神经网络的研究[J].技术交流.2006:41-44 苏高利,邓芳萍. 论基于 MATLAB 语言的 BP 神经网络的改进算法[J].科技通报.2003:130-135 王阳萍,朱正平. MATLAB 在RBF径向基神经网络仿真中的应用[J].甘肃科技.2004:54-55.
3 算法描述和实现细节
3.1 BP算法步骤 实际应用中有2种方法可以调整权值和阈值: 单样本训练和成批训练。 对于单样本训练, 每输入一个样本, 都要回传误差,并调整权值和阈值。而成批训练算法,是当所有的样本输入后,计算其总误差。然后进行权 值和阈值的调整。下面是单样本训练算法步骤。 1)初始化。赋随机数给初始权值和阈值,将样本模式计数器p和训练次数计数器q置为1,误差置为0,学 习率设为0-1的小数,网络训练后达到的精度Emin设为一个正的小数。 2)输入训练样本对(X,T)。 3)正向计算各层输出。用当前样本向量数组赋值,用式
yi f (net j )
n
j 1, 2,..., l
(2)
net j wij xi
i 0
j 1, 2,..., l k 1, 2,..., l k 1, 2,..., l
(3)
ok f (netk )
n
netk w jk x j
j 0
计算隐层和输出层的输出。 4)计算各网络输出误差。根据式
J || t p y p ||
p
2
1 (tkp ykp ) 2 (7) 2 p k
(8)
目的是使得
J
式中, y p 是在 t p 输入下网络的输出向量。
根据梯度下降法原理,可以推出输出权值、隐层节点高斯函数的中心及宽度参数的迭代算法: w j ( k ) w j (k 1) [t ( k ) yL ( k )]h j [ w j (k 1) w j (k 2)] (9)
(d2)i=8,n=5
(d3)i=8,n=10
(d4)i=8,n=15 通过上图的对比和跟多的图形对比可以得出如下结论。 1) 隐含层数为1,隐单元个数在一定的范围之内:BP网络具有比较好的逼近能力; 2) 隐含层数为1时,隐单元个数并不是越少越好(如d1),也不是越多越好(如b4),而是在一定的范围 之内,BP网络的误差比较小。误差比较小的范围内同时也可能有误差很大的时候,这可能是在训练的时候,出 现了函数局部极小值,因此而这是BP网络的缺陷之一(如d1,实验BP网络训练多次时,有时的结果很好,但是 不好的概率十分的大)。为更加明显的说明BP网络隐含层数为1时隐单元个数不是越多越好,如下图,i=8,隐 单元个数n=100。
图 2 i=8,隐单元个数n=100。 3) BP网络隐含层的节点过多会虽然有时精度比较好,但是影响计算速率,成本比较大。
4.2 RBP网络函数逼近 如下图,左边的图是RBF网络函数逼近曲线,右边的图是误差曲线。下面的图具体的参数需要调整。 其中,(h)组的3,6,9个节点图都不太好。
(e1)i=1,n=3
x j c ji b2 j
(12)
c ji (k ) c ji (k 1) c ji [c ji (k 1) c ji (k 2)] (13) 式中, 是学习速率; 是动量因子。
3)RBF网络学习算法由两部分组成:无导师学习、有导师学习。第一阶段是无导师学习,是根据所有的 输入样本确定隐含层各节点的高斯核函数的中心向量 C j 和宽度参数 b j 。第二阶段是有导师学习。在确定隐 层的参数后,根据样本,利用最小二乘原则,求出隐层与输出层之间的权值 w 。具体过程见文献。 基于MATLAB的RBF神经网络算法步骤: 1) 初始化,确定RBF网络模型的输入、输出向量。 2) 用newrb函数设计一个满足一定精度要求的RBF网络。 3) 用sim函数进行仿真。
ko (tk ok )ok (1 ok )
m
jy ( ko v jk ) y j (1 y j )
k 1
(4)
计算 和 。 5)计算各层误差信号,调整各层权值。用式
o k
y j
v jk ko y j (tk ok )ok (1 ok ) y j
《神经网络结构与逼近能力》研究报告
刘彪,110101251
南京理工大学自动化学院, 南京 210094 E-mail: liubiao_just@163.com
摘 要: 本文利用BP和RBF神经网络(NN, Neural Networks)的思想,对某 一具体函数设计了BP和RBF网络的MATLAB程序,研究并验证了这两种神 经网络的逼近能力,同时具体的分析了BP和RBF神经网络结构与逼近能力 的关系。 关键词: 神经网络,逼近能力
独立完成
1 作业内容、完成工作、获得的结论
1.1 作业内容 试分析神经网络结构与逼近能力的关系。采用NN逼近如下函数
g ( x ) 1 sin(
i x) 4
(2 x 2) (1)
其中i=1,2,4,8,随i增加,在[-2,2]之内出现更多函数项。选定结构为1-3-1的FNN。隐单元为S-函数,输出 单元为线性函数,试分析隐单元个数与逼近精度的关系。 1.2 完成工作 本文分别设计了BP和RBF神经网络的MATLAB程序,通过得到的结果,验证了BP和RBF网络的逼近能 力,并分析了神经网络结构与逼近能力的关系。 1.3 获得的结论 BP和RBF神经网络具有比较好的逼近能力。 但是隐单元个数越少或越多, 并不能够说明逼近的精度越好。
(e2)i=1,n=5
(e3)i=1,n=10
(e4)i=1,n=15
(f1)i=2,n=3
(f2)i=2,n=5
(f3)i=2,n=10
(f4)i=2,n=15
(g1)i=4,n=3
(g2)i=4,n=5
(g3)i=4,n=10
(g4)i=4,n=15
(h1)i=8,n=3
(h2)i=8,n=15,均方误差0.00001