基于误差梯度信息的反向传播算法(BP)的提出,破除了明斯基的魔咒,解决了多层前馈神经网络(MLFNN)的训练问题,为神经网络的繁荣昌盛立下了汗马功劳。但该算法与生俱来就存在诸多缺陷。本文和各位探讨和交流本人利用MATLAB Neural Networks Toolbox进行BPNN应用研究中的一些问题及经验。(您可以传播本文,可以引用本文的观点,但不可以据为己有。欢迎有不同看法和意见,欢迎交流,Email:)
1 BP算法的缺点
1.1 对初始权重非常敏感,极易收敛于局部极小
BP算法本身就是一个优秀的局部搜索算法,加上BPNN对初始网络权重非常敏感,以不同的权重初始化网络,BP算法会收敛于不同的局部极小。这是很多初学者每次训练得到不同结果的根本原因。
1.2 往往停滞于误差梯度曲面的平坦区,收敛缓慢甚至不能收敛
在误差梯度曲面的平坦区,误差梯度信息极小,每次对权重的改变量也极小,使得网络收敛及其缓慢,甚至网络不能收敛。尽管提出了诸如自适应学习速率、添加动量项、共轭梯度以及牛顿、LM等训练方法,使得这个问题有所改善,但都没有根本解决这个问题。
1.3 过拟合/过训练
我经常看到Over Fitting和Over Training,我一开始觉得这两个概念没有什么区别。不过后来我发现还是有区别的。
过拟合主要指训练后的网络对训练样本(Train sample)具有极高的拟合精度,但是对工作样本(Work sample)的预测误差却非常大。过拟合着重于网络的推广能力(Generalization Ability)问题。过训练主要指