BP神经网络
Written by pritry
1 定义
BP神经网络是一种具有三层或三层以上的神经网络,BP神经网络是误差反向传播神经网络的简称,它由一个输入层,一个或多个隐含层和一个输出层构成,每一层由一定数量的的神经元构成,如下图所示:
当学习模式提供给网络后,神经元激活值从输入层经过隐含层向输出层传播,在输出层各神经元输出对应的值,然后按照减少与希望输出与实际输出的准则,从输出层回到隐含层,再回到输入层修正各个网络系数。由于BP网络有处于中间的隐含层,并有相应的学习规则可循,可以训练这种网络,使其具有对非线性模式的识别能力。常用于信息处理、模式识别、智能控制及系统建模等领域。BP网络主要由输入模式顺传播,输出误差逆传播, 循环记忆训练,学习结果判别四个部分组成。
2输入模式顺向传播
我们设学习模式的输入向量X,其中n为输入层单元个数,同时定义期望的输出向量为Y,其中q为输出层单元个数:
接下来我们需要通过激活函数来计算网络隐含层中各神经元的权值sj,其中Wij表示输入层到隐含层的权值,这里的Wij的大小由输入层的个数与隐含层的个数乘积决定,hj为隐含层中第j个单元的阈值,p为隐含层的单元个数:
激活函数有很多种,像阈值函数,Sigmoid函数,分段线性函数等,这里我们选取t=1的Sigmoid函数,因为它连续可微分,更接近生物神经元的信号形式:
我们将上面的激活值代入S型激活函数中可以得到隐含层第j个单元的输出值bj:
同理我们可以得到输出层第t个单元的激活值ot和输出层第t个单元的实际输出值ct,其中Wij表示隐含层到输出层的权值,这里的Wij的大小由输出层的个数与隐含层的个数乘积决定,gt表示输出层中第j个单元的阈值:
3输出误差逆向调整
在前面我们通过顺向计算得到了网络的实际输出值,当这些实际输出值与希望输出不一样或者误差大于所限定阈值时,需要对网络权值进行不断修正。校准的过程是从后往前,先计算从输出层到隐含层的误差,再计算隐含层到输入层的误差。输出层第t个单元的校准误差为dt:
隐含层第j个单元的的误差为ej:
我们设输出层到隐含层的学习率为m,于是从输出层到隐含层的权值和阈值为:
我们设隐含层到输入层的学习率为n,于是从隐含层到输入层的权值和阈值为:
3扩展实现前景
目前神经网络在系统辨识.模式识别,智能控制等领域有着广泛而吸引人的前景。特别在智能控制中,人们对神经网络的自学习功能尤其感兴趣。我们在实现时对阈值的调整往往取为-1到1之间的随机数,这样一般可以防止函数循环到极值时是局部范围的极值,而不是全局极值。每次调整量的大小与学习率和误差成正比,神经网络的每层的节点数与实际输入的需求相关,同时考虑时间复杂度的因素,以及考虑网络的精度,我们一般优先考虑增加隐含层的神经元的个数。