线性可分模式的分类问题较为简单,两层感知器就可以很好地解决这类问题;非线性不可分模式的分类问题及非线性函数逼近问题,可以用多层感知器解决。多层感知器的特点是输入、输出层之间存在隐层。
B-P网隐节点的激活函数一般都采用的是Sigmoid函数。如果多层感知器用于分类,则输出层节点一般用Sigmoid函数或硬极限函数;如果多层感知器用于函数逼近,则输出层节点应该用线性函数。
B-P神经网络本身就存在的缺陷:会陷入局部极值而并不是全局误差的最小值;对初始权值很敏感,每次用网络计算出来的结果都不相同;收敛速度慢;一般是按经验选定网络层数和隐层节点数,具有不稳定性。
实际应用中是在标准B-P神经网络的基础上改进,最基本的改进方法有调整网络结构、调整或者改进激活函数以及样本的预处理等,但都是优化调整并不改变网络的算法结构,当问题复杂、数据量大时优化程度就不再明显,必须调整算法结构,如附加动量法、自适应学习速率的方法、弹性B-P算法、牛顿法、竞争B-P算法以及模拟退火算法等。
当μ很大的时候,L-M方法接近于梯度法;当μ无限接近于0的时候,L-M算法就相当于Gauss-Newton法。
样点在输入网络学习以前进行归一化处理。归一化在0到1之间是统计的概率分布,归一化在-1到+1之间是统计的坐标分布。其实归一化的原则就是将样本值变换到网络收敛最快的范围。一般用来预测的B-P 网络选择的激活函数是Sigmoid函数,归一化能够防止净输入绝对值过大引起的神经元输出饱和现象,也能最大的保证输出数据中数值小的不被吞食。
一个激活函数为Sigmoid函数,输出节点函数为线性函数的三层网络可以逼近任意有理函数,处理一般函数逼近问题都会选择单隐层的三层学习网络。
一般不通过增加层数而是通过调节隐含层的节点数来控制精度,节点数过多会造成训练时间增长,泛化能力下降,甚至出现过度拟合现象;而节点数过少,训练次数内精度可能达不到要求,网络的鲁棒性不强,并且很容易出现极值。
常用的确定节点的经验公式有:
初始权值以及阈值的确定:权值可以说是路径的实现概率;阈值达到某一个值,神经元才会受刺激,然后影响下一个神经元。在matlab工具箱中的函数,一般默认网络权值和阈值,函数初始值设定的时候通常在[-1 1]之间选取。
学习速率过大,会造成权值调整量偏大,会产生网络震荡,致使网络学习不稳定;过小会造成权值调整量过小,收敛速度会很慢。学习速率的选择一般在0.01-0.1之间。
单隐层
B-P神经网络的常用传递函数包括Sigmoid函数和purelin函数。Sigmoid函数又包含logsig函数和tansig函数。隐含层节点传递函数选择Sigmoid函数,输出层采用tansig或purelin函数,可提高预测精度。
杨芳. GA-LM算法改进BP神经网络模型在延安市城区基准地价更新中的应用研究[D]. 陕西:长安大学,2014.
李蕾. 基于GA-LM-BP神经网络的降雨条件下边坡稳定性预测研究[D]. 湖南:长沙理工大学,2017.