声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1648|回复: 6

[综合讨论] [讨论]关于BP网络优缺点的讨论

[复制链接]
发表于 2006-6-25 21:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
<P ><BR><FONT size=2>BP网络虽然是目前研究最成熟、应用最广的一种神经网络模型,但是还不很完美。<BR>主要缺点有:训练过程的不确定上,比如训练时间较长、网络训练出现麻痹现象及容易陷入局部极小值等。<BR><p></p></FONT></P><FONT size=2>优点也有很多:具有较强的容错能力、联想记忆能力及大规模并行处理,较强的映射能力。<BR><BR>如果大伙用过BP网络<BR>就说说自己的感觉吧~~</FONT><BR><BR><BR>
回复
分享到:

使用道具 举报

 楼主| 发表于 2006-6-25 22:08 | 显示全部楼层
<FONT color=#ff0000>转帖:</FONT><BR><BR>1.如何选择训练集和测试集数据?<BR>一般需要将样本分成独立的三部分训练集(train set),验证集(validation set)和测试集(test set)。其中训练集用来估计模型,验证集用来确定网络结构或者控制模型复杂程度的参数,而测试集则检验最终选择最优的模型的性能如何。一个典型的划分是训练集占总样本的50%,而其它各占25%,三部分都是从样本中随机抽取。<BR>样本少的时候,上面的划分就不合适了。常用的是留少部分做测试集。然后对其余N个样本采用K折交叉验证法。就是将样本打乱,然后均匀分成K份,轮流选择其中K-1份训练,剩余的一份做验证,计算预测误差平方和,最后把K次的预测误差平方和再做平均作为选择最优模型结构的依据。特别的K取N,就是留一法(leave one out)。<BR><BR>2.数据归一化问题<BR>数据归一化属于数据的预处理。因为sigmoid函数根据不同的变换,输出在0到1或者-1到1之间,因此如果不做归一,就会出现样本输出超出神经网络输出的范围。选择最大的值max和最小值min,做如下变换<BR>x=(x-min)/(max-min)就是归一化。<BR>需要注意的是max和min不应该直接选择为x中的最大值和最小值。原因是样本只是有限的观测,有可能还有更大或者更小的观测,因此合适的选择应该max选取xmax大一些和min比xmin小一些的。<BR>归一化并不总是合适的预处理,因为它不能使分布不对称的样本变得更对称一些,标准化要好一些。另外,有时候主成分分析也能起到降维的作用。<BR><BR>3.关于目标训练误差的设置以及LM训练算法<BR>关于目标训练的误差值,我觉得不应该人为地设定误差平方和目标,设定太小的目标会出现过度拟合。倒是可以设定本次权值与上次权值的平方和距离除以所有的权值数目,这个指标反映了收敛性。然后多算几次,以避免局部收敛,保留验证集误差平方和最小的权值作为最终的权值。<BR><BR>4.神经元数量的选择问题<BR>神经元数量的选择有很多经验法则,但都没有理论的依据,有时好用有时好用。建议采用开篇介绍的岭回归方法,选择较多的神经元数目。有的朋友可能担心,一般神经元数目都是宁缺勿滥,这样行吗?即使选择了过多的数目,通过选择惩罚系数c,它会使过多的权值收缩到0。问题是如何选择惩罚系数,方法是根据交叉验证法选择在验证集预测误差平方和最小的惩罚系数。<BR><BR>5。用遗传算法优化神经网络<BR>遗传算法是一个通用的优化算法,通常是在面对一个复杂的问题,没有特定的高效的优化算法可用的时候才用它。神经网络本来就慢,再用遗传算法更是慢上加慢。采用岭回归办法,遗传算法根本没有必要。遗传算法并不是化腐朽为神奇的万能灵药。技术的使用效果不取决于技术的高级程度和复杂程度,而取决于各种技术和问题的针对性和紧密性。<BR><BR>6。如何解决泛化问题<BR>因为模型参数是根据训练集估计的,泛化能力是估计模型在训练集以外的样本的预测能力。只要选择足够复杂的结构,神经网络可以任意地降低训练误差,但泛化能力很差。泛化能力的解决关键在于选择合适的模型评价函数,合适的模型评价函数能够反映模型偏差和方差的折衷。常用的R square 拟合优度不是一个好的评价函数,更好的是<BR>AIC=-2log(L(x,β^))+2d<BR>BIC=-2log(L(x,β^))+dlogN <BR>其中log(L(x,β^))是对数似然密度,d是有效参数个数,N为训练样本数<BR>对于神经网络,有效参数个数为<BR>d=sum ai/(ai+c)<BR>其中ai是Hessian矩阵(误差平方和目标函数对参数二次导数)的特征值。<BR>另一个办法就是交叉验证,前文已经讨论,不再重复。交叉验证适用于有效参数难以定义的模型,虽然需要更多的计算量,但比较稳健。 <BR>
发表于 2006-6-26 10:50 | 显示全部楼层
支持一下<BR>bp网络还有个缺点还有,bp网络是静态神经网络,在做动态预测时就显的力不从心了!~
发表于 2006-6-26 19:58 | 显示全部楼层
训练样本有大量时,用trainrp比较好,很快,快的很。
 楼主| 发表于 2006-6-26 23:19 | 显示全部楼层
还有很多算法的<BR>例如附加动量法 自适应速率学习算法  <BR>都可以加快训练速度的
发表于 2006-6-28 09:39 | 显示全部楼层
好好学
发表于 2006-6-28 17:10 | 显示全部楼层
附加动量法 自适应速率学习算法 =》带动量的自适应学习步长法,很慢的!!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-20 04:57 , Processed in 0.061058 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表