设计BP神经网络方法
使用BP神经网络解决问题时,需要一个训练数据集,此外还需要确定以下参数:
(1)网络层数
BP网络可以包含1到多个隐层,单隐层前馈网络已具有很大的学习。因此对于大部分场合,单个隐层即可满足需求。面对大数据,从增加模型复杂度角度来说,增加隐层数目比增加隐层神经节点数更有效,因为增加隐层数目不仅增加了拥有激活函数的神经元数目,还增加了记过函数嵌套的层数。但随着隐层数目增加,网络收敛难度加大,传统BP算法很难实现。
(2)输入层节点数、输出层节点个数
输入层节点数取决于输入向量的维数、输出层节点数取决于目标结果。实际应用时,首先应将问题提炼出向量模型用于表述输入、输出。
(3)隐含层节点数
隐含层节点数的选择对网络影响很大,数目较多会带来更好的性能,但训练难度也会变大,一般采用经验公式估计节点数,例如:
a.M = 根号下(n+m)+a,n、m分别为输入层、输出层神经元个数,a是0到10之间常数
b.M = log2(n),n为输入层神经元个数
(4)传递函数选择
一般隐含层使用Sigmoid函数,而输出层使用线性函数。如果输出层也采用Sigmoid函数,则输出结果为[0,1]或[-1,1]。
(5)训练函数选择
针对不同类型问题,选择不同训练函数。例如对于包含数百个权值的回归问题,LM收敛速度快,误差小。但LM占用内存大,模式识别问题处理能力弱,RPROP是更好的选择。(MATLAB中所有训练函数在后文列出)
(7)初始权值赋值
参数的初始值对训练过程有着重大的影响。对参数初始化的原则是:参数应该随机初始化在能让sigmoid函数在线性区域激活的值。如