① BP神经网络误差如何提高
你好,误差大,第一步需要尝试的是做归一化处理。有线性归一化,有对数函数归一化等等,这个你可以去网上搜索数据归一化方法,有相关的代码,应该。
第二部需要做出的改动是隐层节点数量,如果节点数量太多,那么结果的随机性就会很大,如果太少,那么复杂数据的规律计算不出来。多少层节点最合适,这个目前除了一个一个试没有更好的办法。但是你会发现每一个相同的结构计算出的结果却不尽相同,这个时候就需要考虑后续的问题。
第三步尝试,变换transfer function。麻烦你查查字典,因为我不是用中文学的神经网络。我姑且翻译成传输函数。传输函数在matlab中内建了3中 pureline logsig tansig。分别有不同的应用范围。因为没看到你的数据,我也不清楚具体应该推荐你用哪一种。不过你可以去网上搜索一下三种传输函数的特点。
如果有用请给“采纳”谢谢。
② bp神经网络提高泛化能力有几种方法
常规的几种增强泛化能力的方法,罗列如下:1、较多的输入样本可以提高泛化能力;
但不是太多,过多的样本导致过度拟合,泛化能力不佳;样本包括至少一次的转折点数据。
2、隐含层神经元数量的选择,不影响性能的前提下,尽量选择小一点的神经元数量。隐含层节点太多,造成泛化能力下降,造火箭也只要几十个到几百个神经元,拟合几百几千个数据何必要那么多神经元?
3、误差小,则泛化能力好;误差太小,则会过度拟合,泛化能力反而不佳。
4、学习率的选择,特别是权值学习率,对网络性能有很大影响,太小则收敛速度很慢,且容易陷入局部极小化;太大则,收敛速度快,但易出现摆动,误差难以缩小;一般权值学习率比要求误差稍微稍大一点点;另外可以使用变动的学习率,在误差大的时候增大学习率,等误差小了再减小学习率,这样可以收敛更快,学习效果更好,不易陷入局部极小化。
5、训练时可以采用随时终止法,即是误差达到要求即终止训练,以免过度拟合;可以调整局部权值,使局部未收敛的加快收敛。