您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > BP神经网络的缺点及改进
第二章:前馈网络2.5.5BP算法的问题1.BP算法的问题BP模型具有良好的逼近与学习特性,实现简单,因此得到广泛重视,并迅速走向应用.但BP算法在应用中依然存在不少问题,如:学习参数的选取•初始权值的选取;•学习速率的选取;•期望误差的选取.2.5.5BP算法的问题结构设计•网络的层数;•隐含层的神经元数;数据标准化收敛性问题欠拟合与过拟合问题2.5.5BP算法的问题A.学习参数的选取A1.初始权值的选取BP算法决定了误差函数一般存在(很)多个局部极小点,不同的网络初始权值直接决定了BP算法收敛于哪个局部极小点或是全局极小点。因此网络权值的初始化决定了训练从误差曲面的哪一点开始,很重要。2.5.5BP算法的问题神经元的激活函数多是关于零点对称的函数,为了加快训练速度和防止网络瘫痪,初始权值应选择在使各节点的初始净输入落在函数的零点附近。一般取初始权值在(-1,1)之间或更小范围的随机数.2.5.5BP算法的问题存在平坦区域影响--------误差下降缓慢,影响收敛速度。原因--------误差对权值的梯度变化小--接近于零。由各节点的净输入过大而引起!分析:激活函数为Sigmod函数存在平坦区域的原因分析权值修正量:输出的导数:()()()(()())()(()())(1())()oohhoohoooooooooyieekhokwyiwkdkyokyokdkyokyokyokδδ∂∂∂==−∂∂∂′=−=−−221()()111()(1)(1)()(1())oyiyiyioyiyiooyokfyieeeyokeeyokyok−−−−−==++−′==++=−()oyok()odk()oyok存在平坦区域的原因分析:–第一种可能是充分接近–第二种可能是充分接近0–第三种可能是充分接近1造成平坦区的原因:各节点的净输入过大()oyok对应着误差的某个谷点对应着误差的平坦区1.00.5yi0()oyok2.5.5BP算法的问题A2.学习速率学习速率决定每一次循环训练中所产生的权值变化量.大的学习速率可能导致系统的不稳定;但小的学习速率导致较长的训练时间,可能收敛很慢;一般情况下倾向于选取较小的学习速率以保证系统的稳定性;学习速率的选取范围在0.01~0.8之间.2.5.5BP算法的问题对于较复杂的网络,在误差曲面的不同部位可能需要不同的学习速率.为了减少寻找学习速率的训练次数以及训练时间,比较合适的方法是采用变化的自适应学习速率,使网络的训练在不同的阶段设置不同大小的学习速率.对已知如下二阶偏导122−∂∂=wEoptη则由非线性数值优化牛顿法的思想,有BP算法的学习速率一般应满足:ηηopt2.5.5BP算法的问题A3.期望误差的选取在设计网络的训练过程中,期望误差值也应当通过对比训练后确定一个合适的值,这个所谓的“合适”,是相对于所需要的隐含层的节点数来确定的。一般情况下,作为对比,可以同时对两个不同期望误差值的网络进行训练,最后通过综合因素的考虑来确定采用其中一个网络.2.5.5BP算法的问题B.结构设计BP网络的训练就是通过应用误差反传原理不断调整网络权值使网络模型输出值与已知的训练样本输出值之间的误差平方和达到最小或小于某一阈值。虽然理论上早已经证明:具有1个隐层(采用S转换函数)的BP网络可实现对任意函数的任意逼近。但遗憾的是,迄今为止还没有构造性结论,即在给定有限个(训练)样本的情况下,如何设计一个合理的BP网络模型并通过向所给的有限个样本的学习(训练)来满意地逼近样本所蕴含的规律的问题,目前在很大程度上还需要依靠设计者的经验。因此,通过训练样本的学习(训练)建立合理的BP神经网络模型的过程,在国外被称为“艺术创造的过程”,是一个复杂而又十分烦琐和困难的过程。2.5.5BP算法的问题B1.网络的层数增加层数可以进一步的降低误差,提高精度,但同时也使网络复杂化.另外不能用仅具有非线性激活函数的单层网络来解决问题.因为对于只能用非线性函数解决的问题,单层精度又不够高,也只有增加层才能达到期望的结果.一般认为,增加隐层数可以降低网络误差,提高精度,但也使网络复杂化,从而增加了网络的训练时间和出现“过拟合”的倾向。Hornik等早已证明:若输入层和输出层采用线性转换函数,隐层采用Sigmoid转换函数,则含一个隐层的NN模型能够以任意精度逼近任何有理函数。显然,这是一个存在性结论。在设计BP网络时可参考这一点,应优先考虑3层BP网络(即有1个隐层)。一般地,靠增加隐层节点数来获得较低的误差,其训练效果要比增加隐层数更容易实现。2.5.5BP算法的问题2.5.5BP算法的问题B2.隐含层神经元数网络训练精度的提高,可以通过采用一个隐含层,而增加其神经元数的方法来获得,这在结构实现上,要比增加更多的隐含层要简单的多.为了对隐含层神经元数在网络设计时所起的的作用有一个比较深入的理解,下面先给出一个有代表性的实例,然后从中得出几点结论.例用3层BP网络实现“异或”功能.网络要实现如下的输入/输出功能:[]0110,10101000==TP2.5.5BP算法的问题对于一个二元输入网络来说,神经元数即为分割线数.所以隐含层神经元数应≥2.在此例中,隐含层中神经元数为多少时最佳?我们针对sl=2,3,4,5,6以及为20、25和30时对网络进行设计.选择误差目标为err_goal=0.02,并通过对网络训练时所需的循环次数和训练时间的情况来观察网络求解效果.整个网络的训练结果如表1所示.2.5.5BP算法的问题表1隐含层神经元数时的网络训练结果Sl时间(秒)循环次数25.7111834.409044.398854.458564.6285203.5768254.0672305.11962.5.5BP算法的问题我们评价一个网络设计的好坏,首先是它的精度,再一个就是训练时间.从表1可以看出下面几种情况:神经元数太少,网络不能很好的学习,需要训练的次数也多,训练精度也不高;一般而言,网络隐含层神经元的个数sl越多,功能越大,但当神经元数太多,会产生其它的问题.当sl=3,4,5时,其输出精度都相仿,而sl=3时的训练次数最多.一般的讲,网络sl的选择原则是:在能够解决问题的前提下,再加上一个到两个神经元以加快误差的下降速度即可.在BP网络中,隐层节点数的选择非常重要,它不仅对建立的神经网络模型的性能影响很大,而且是训练时出现“过拟合”的直接原因,但是目前理论上还没有一种科学的和普遍的确定方法。目前多数文献中提出的确定隐层节点数的计算公式都是针对训练样本任意多的情况,而且多数是针对最不利的情况,一般工程实践中很难满足,不宜采用。事实上,各种计算公式得到的隐层节点数有时相差几倍甚至上百倍。为尽可能避免训练时出现“过拟合”现象,保证足够高的网络性能和泛化能力,确定隐层节点数的最基本原则是:在满足精度要求的前提下取尽可能紧凑的结构,即取尽可能少的隐层节点数。研究表明,隐层节点数不仅与输入/输出层的节点数有关,更与需解决的问题的复杂程度和转换函数的类型以及样本数据的特性等因素有关。2.5.5BP算法的问题2.5.5BP算法的问题总之,若隐层节点数太少,网络可能根本不能训练或网络性能很差;若隐层节点数太多,虽然可使网络的系统误差减小,但一方面使网络训练时间延长,另一方面,训练容易陷入局部极小点而得不到最优点,也是训练时出现“过拟合”的内在原因。2.5.5BP算法的问题C.数据标准化问题对样本数据,尤其是函数逼近类问题,存在数据标准化,即数据规范化问题。2.5.5BP算法的问题D.收敛性与局部极小值问题对于多层网络,误差曲面可能存在平坦区域或含有多个不同的局部极小值(多峰函数)。平坦区域在这个区域中,误差的梯度变化很小,误差下降缓慢。BP算法是严格遵循误差梯度下降的原则调整权值的,训练进入平坦区后,尽管d–y仍然很大,权值的调整量仍是很小,尽管计算调整的方向正确,也必需以增加迭代次数为代价,才可能退出平坦区而进入某个谷点。2.5.5BP算法的问题存在多个局部极小点在高维权空间中,误差曲面如同连绵起伏的山脉,存在许多极小点。多数极小点是局部的极小,即使全局极小往往也不是唯一的。标准BP算法的误差空间是N维空间中一个形状极为复杂的曲面,该曲面上的每个点的“高度”对应于一个误差值,每个点的坐标向量对应着N个权值。单权值双权值2.5.5BP算法的问题对于多峰函数,梯度下降可能陷入局部极小值中的任何一个.对于多层网络,BP算法仅能保证收敛到误差E的某个局部极小值,不一定收敛到全局最小误差;尽管缺乏对收敛到全局最小误差的保证,BP算法在实践中仍是非常有效的函数逼近算法.用来缓解局部极小值问题的启发式规则为梯度更新法则加一个冲量,可以带动梯度下降过程,冲过狭窄的局部极小值.2.5.5BP算法的问题使用同样的数据训练多个网络,但用不同的随机权值初始化每个网络.如果不同的训练产生不同的局部极小值,那么对分离的验证集合性能最好的那个网络将被选中,或者保留所有的网络,输出是所有网络输出的平均值.2.5.5BP算法的问题E.欠拟合(Underfitting)与过拟合(Over-fitting)所谓欠拟合问题Underfit欠拟合2.5.5BP算法的问题所谓过拟合问题Overfit过拟合2.5.5BP算法的问题UnderfitOverfit欠拟合得到的拟合曲线对噪声、误差的敏感性小,但对学习样本的拟合误差大。过拟合得到的拟合曲线对噪声、误差的敏感性大,但对学习样本的拟合误差小。在学习训练中,产生过拟合现象比较普遍,也带来较大的危害。2.5.5BP算法的问题下面的多项式函数拟合例子清楚地说明,模型过于复杂、训练过度带来的过拟合现象。被拟合函数与样本数据得到的不同阶的多项式拟合函数22exp(16)yxx=+−2.5.5BP算法的问题得到的不同阶的多项式拟合函数各阶多项式拟合函数的拟合误差的均方差2.5.5BP算法的问题Degree1Degree5Degree10Degree152.5.5BP算法的问题究其原因,产生过拟合是因为:由于对样本数据,可能存在隐单元的表示不唯一,即产生的分类的决策面不唯一.随着学习的进行,BP算法使权值可能收敛过于复杂的决策面,并至极致.权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征.2.5.5BP算法的问题过度拟合解决方法权值衰减它在每次迭代过程中以某个小因子降低每个权值,这等效于修改E的定义,加入一个与网络权值的总量相应的惩罚项,此方法的动机是保持权值较小,从而使学习过程向着复杂决策面的反方向偏。适当的stoppingcriterion2.5.5BP算法的问题修改误差函数.修改误差函数的定义也是防止过拟合的有效办法.顺便指出,过拟合问题在其它NN模型中也依然存在.2.5.6BP算法的改进1.BP算法的改进BP模型虽然具有良好的逼近与学习特性,但也存在如下问题:需要较长的训练时间这主要是由于学习速率太小所造成的.可采用变化的学习速率或自适应的学习速率来加以改进.完全不能训练这主要表现在网络的麻痹上.通常为了避免这种情况的产生,•一是选取较小的初始权值,•二是采用较小的学习速率.2.5.6BP算法的改进局部最小值采用多层网络或较多的神经元,有可能得到更好的结果.针对上述的BP算法的限制与不足,许多研究者对BP算法进行了改进.BP算法改进的主要目标是为了加快训练速度;避免陷入局部极小值;加强鲁棒性,避免过拟合和;改善其它能力.2.5.6BP算法的改进下面只讨论前两种性能的改进方法的有关内容.带动量因子算法;自适应学习速率;高阶收敛方法;与其它方法交互使用;作用函数后缩法;改变性能指标函数;……2.5.6BP算法的改进A.带动量因子算法该方法是在BP算法的基础上在每一个权值的变化
本文标题:BP神经网络的缺点及改进
链接地址:https://www.777doc.com/doc-7098636 .html