BP神经网络算法实现
一:关于BP网络
BP (Back Propagation)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。
当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。
BP网络主要应用于以下方面:函数逼近、模式识别和分类、数据压缩。BP神经网络有较强的泛化性能,使网络平滑的逼近函数,能合理的响应被训练以外的输入。
同时,BP网络又有自己的限制与不足,主要表现在:需要较长的训练时间、网络训练的结果可能使得权值逼近局部最优、训练数据范围外的数据泛化能力较差。
为了避免训练陷入局部最优解,本程序采用改进的BP网络训练,既加入动量因子,使得网络在最优解附近有一定的震荡,跳出局部最优的范围。
BP网络训练中学习速率与动量因子的选择很重要,在后面的内容中将进行详细的讨论。
二:训练的函数
程序中训练的函数为一个三输入一输出的非线性函数,如下所示:
y?2?x1?sin(x2)?ex3,x?R
??网络结构为:3—5—1 三:程序及相关界面(VB)
1 主界面
1
代码:
Private Sub Command1_Click() form2.Visible = False Form3.Visible = True End Sub
Private Sub Command2_Click() form2.Visible = False Form1.Visible = True End Sub
Private Sub Command3_Click() form2.Visible = False Form4.Visible = True End Sub
Private Sub Command4_Click() form2.Visible = False Form5.Visible = True End Sub
Private Sub Command5_Click() End End Sub
Private Sub Form_Load() Command3.Enabled = False Command4.Enabled = False End Sub
2 查看网络结构
2
代码:
Private Sub Command1_Click() Form3.Visible = False form2.Visible = True End Sub
3 网络训练
代码:
3