基本BP算法的实例----蚊子的分类

基本BP算法的实例----蚊⼦的分类
已知的两类蚊⼦的数据如表1:
表1
规定⽬标为: 当t(1)=0.9 时表⽰属于Apf类,t(2)=0.1表⽰属于Af类。
输⼊数据有15个,即 , p=1,…,15;  j=1, 2; 对应15个输出。
新型玉米膨化机即对应的(X,Y)对为:([1.78,1.14],0.9),([1.96,1.18],0.9)......([2.08,1.56],0.1)由于此时的X有两个属性,故输⼊端为2个,建⽴神经⽹络如下:
设两个权重系数矩阵为:
分析如下:
为第⼀层的输出,同时作为第⼆层的输⼊。
在这⾥,a0(3)可以认为为常数
wentimeimei
具体算法如下:
令p=0
(1)随机给出两个权矩阵的初值;例如⽤MATLAB软件时可以⽤以下语句:
(2) 根据输⼊数据利⽤公式算出⽹络的输出
(6) p=p+1,转(2)
注:仅计算⼀圈(p=1,2,…,15)是不够的,直到当各权重变化很⼩时停⽌,本例中,共计算了147圈,迭代了2205次。
最后结果是:
即⽹络模型的解为:
神经⽹络的应⽤
1.样本数据
1.1 收集和整理分组
采⽤BP神经⽹络⽅法建模的⾸要和前提条件是有⾜够多典型性好和精度⾼的样本。⽽且,为监控训练学习)过程使之不发⽣“过拟合”和评价建⽴的⽹络模型的性能和泛化能⼒,必须将收集到的数据随机分成训练样本、检验样本(10%以上)和测试样本(10%以上)3部分。此外,数据分组时还应尽可能考虑样本模式间的平衡。
1.2 输⼊/输出变量的确定及其数据的预处理
⼀般地,BP⽹络的输⼊变量即为待分析系统的内⽣变量(影响因⼦或⾃变量)数,⼀般根据专业知识确定。若输⼊变量较多,⼀般可通过主成份分析⽅法压减输⼊变量,也可根据剔除某⼀变量引起的系统误差与原系统误差的⽐值的⼤⼩来压减输⼊变量。输出变量即为系统待分析的外⽣变量(系统性能指标或因变量),可以是⼀个,也可以是多个。⼀般将⼀个具有多个输出的⽹络模型转化为多个具有⼀个输出的⽹络模型效果会更好,训练也更⽅便。      由于BP神经⽹络的隐层⼀般采⽤Sigmoid转换函数,为提⾼训练速度和灵敏性以及有效避开Sigmoid函数的饱和区,⼀般要求输⼊数据的值在0~1之间。因此,要对输⼊数据进⾏预处理。⼀般要求对不同变量分别进⾏预处理,也可以对类似性质的变量进⾏统⼀的预处理。如果输出层节点也采⽤Sigmoid转换函数,输出变量也必须作相应的预处理,否则,输出变量也可以不做预处理。
预处理的⽅法有多种多样,各⽂献采⽤的公式也不尽相同。但必须注意的是,预处理的数据训练完成后,⽹络输出的结果要进⾏反变换才能得到实际值。再者,为保证建⽴的模型具有⼀定的外推能⼒,最好使数据预处理后的值在0.2~0.8之间。发布软件
弹力玩具2.神经⽹络拓扑结构的确定
2.1 隐层数
变速箱取力器
⼀般认为,增加隐层数可以降低⽹络误差(也有⽂献认为不⼀定能有效降低),提⾼精度,但也使⽹络复杂化,从⽽增加了⽹络的训练时间和出现“过拟合”的倾向。Hornik等早已证明:若输⼊层和输出层采⽤线性转换函数,隐层采⽤Sigmoid转换函数,则含⼀个隐层的MLP⽹络能够以任意精度逼近任何有理函数。显然,这是⼀个存在性结论。在设计BP⽹络时可参考这⼀点,应优先考虑3层BP⽹络(即有1个隐层)。⼀般地,靠增加隐层节点数来获得较低的误差,其训练效果要⽐增加隐层数更容易实现。对于没有隐层的神经⽹络模型,实际上就是⼀个线性或⾮线性(取决于输出层采⽤线性或⾮线性转换函数型式)回归模型。因此,⼀般认为,应将不含隐层的⽹络模型归⼊回归分析中,技术已很成熟,没有必要在神经⽹络理论中再讨论之。
2.2 隐层节点数
在BP ⽹络中,隐层节点数的选择⾮常重要,它不仅对建⽴的神经⽹络模型的性能影响很⼤,⽽且是训练时出现“过拟合”的直接原因,但是⽬前理论上还没有⼀种科学的和普遍的确定⽅法。
⽬前多数⽂献中提出的确定隐层节点数的计算公式都是针对训练样本任意多的情况,
⽽且多数是针对最不利的情况,⼀般⼯程实践中很难满⾜,不宜采⽤。事实上,各种计算公式得到的隐层节点数有时相差⼏倍甚⾄上百倍。为尽可能避免训练时出现“过拟合”现象,保证⾜够⾼的⽹络性能和泛化能⼒,确定隐层节点数的最基本原则是:在满⾜精度要求的前提下取尽可能紧凑的结构,即
取尽可能少的隐层节点数。研究表明,隐层节点数不仅与输⼊/输出层的节点数有关,更与需解决的问题的复杂程度和转换函数的型式以及样本数据的特性等因素有关。
在确定隐层节点数时必须满⾜下列条件:
(1)隐层节点数必须⼩于N-1(其中N为训练样本数),否则,⽹络模型的系统误差与训练样本的特性⽆关⽽趋于零,即建⽴的⽹络模型没有泛化能⼒,也没有任何实⽤价值。同理可推得:输⼊层的节点数(变量数)必须⼩于N-1。
(2) 训练样本数必须多于⽹络模型的连接权数,⼀般为2~10倍,否则,样本必须分成⼏部分并采⽤“轮流训练”的⽅法才可能得到可靠的神经⽹络模型。
总之,若隐层节点数太少,⽹络可能根本不能训练或⽹络性能很差;若隐层节点数太多,虽然可使⽹络的系统误差减⼩,但⼀⽅⾯使⽹络训练时间延长,另⼀⽅⾯,训练容易陷⼊局部极⼩点⽽得不到最优点,也是训练时出现“过拟合”的内在原因。因此,合理隐层节点数应在综合考虑⽹络结构复杂程度和误差⼤⼩的情况下⽤节点删除法和扩张法确定。
3.神经⽹络的训练
3.1 训练
BP⽹络的训练就是通过应⽤误差反传原理不断调整⽹络权值使⽹络模型输出值与已知的训练样本输出值之间的误差平⽅和达到最⼩或⼩于某⼀期望值。虽然理论上早已经证明:具有1个隐层(采⽤Sigmoid转换函数)的BP⽹络可实现对任意函数的任意逼近。但遗憾的是,迄今为⽌还没有构造性结论,即在给定有限个(训练)样本的情况下,如何设计⼀个合理的BP⽹络模型并通过向所给的有限个样本的学习(训练)来满意地逼近样本所蕴含的规律(函数关系,不仅仅是使训练样本的误差达到很⼩)的问题,⽬前在很⼤程度上还需要依靠经验知识和设计者的经验。因此,通过训练样本的学习(训练)建⽴合理的BP神经⽹络模型的过程,在国外被称为“艺术创造的过程”,是⼀个复杂⽽⼜⼗分烦琐和困难的过程。
由于BP⽹络采⽤误差反传算法,其实质是⼀个⽆约束的⾮线性最优化计算过程,在⽹络结构较⼤时不仅计算时间长,⽽且很容易限⼊局部极⼩点⽽得不到最优结果。⽬前虽已有改进BP 法、遗传算法(GA)和模拟退⽕算法等多种优化⽅法⽤于BP⽹络的训练(这些⽅法从原理上讲可通过调整某些参数求得全局极⼩点),但在应⽤中,这些参数的调整往往因问题不同⽽异,较难求得全局极⼩点。这些⽅法中应⽤最⼴的是增加了冲量(动量)项的改进BP算法。
风速辅助
3.2 学习率和冲量系数
学习率影响系统学习过程的稳定性。⼤的学习率可能使⽹络权值每⼀次的修正量过⼤,甚⾄会导致权
值在修正过程中超出某个误差的极⼩值呈不规则跳跃⽽不收敛;但过⼩的学习率导致学习时间过长,不过能保证收敛于某个极⼩值。所以,⼀般倾向选取较⼩的学习率以保证学习过程的收敛性(稳定性),通常在0.01~0.8之间。
增加冲量项的⽬的是为了避免⽹络训练陷于较浅的局部极⼩点。理论上其值⼤⼩应与权值修正量的⼤⼩有关,但实际应⽤中⼀般取常量。通常在0~1之间,⽽且⼀般⽐学习率要⼤。
4 ⽹络的初始连接权值
BP算法决定了误差函数⼀般存在(很)多个局部极⼩点,不同的⽹络初始权值直接决定了BP算法收敛于哪个局部极⼩点或是全局极⼩点。因此,要求计算程序(建议采⽤标准通⽤软件,如Statsoft公司出品的Statistica Neural Networks软件和Matlab 软件)必须能够⾃由改变⽹络初始连接权值。由于Sigmoid转换函数的特性,⼀般要求初始权值分布在-
0.5~0.5之间⽐较有效。

本文发布于:2024-09-21 21:50:20,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/132671.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:训练   隐层   节点   学习   模型
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议