这里记录一下BP神经网络的误差逆向传播算法:
  1.针对特殊的一种**函数:sigmoid(x)=11+ex来推导BP神经网络的权值和阈值更新公式:
  给定训练集:D={(x1,y1),(x2,y2)...,(xm,ym)},xiRd,yiRl,即输入属性序列由d个属性描述,输出l维实值向量。为了方便讨论,图1给出了拥有d个输入神经元,l个输出神经元,q个隐层神经元的多层前馈网络结构,其中输出层为第j个神经元的阈值用θ表示,隐层第h个神经元用φh表示。输入层第i个神经元与隐层第h个神经元之间的连接权为vih,隐层第h个神经元与输出层第j个神经元之间的连接权为ωhj
BP神经网络权值、阈值更新公式推导
           图1 BP神经网络即算法中的符号变量
记隐层第h个神经元接收到的输入为αh=i=1dvihxi,输出层的第j个神经元接收到的输入为:βj=h=1qωhjbh,其中bh为隐层第h个神经元的输出。现在假设隐层和输出层都使用Sigmoid函数:
   对训练例(xk,yk),假定神经网络的输出为:yk^=(y1^,y2^,......yl^),即:
            
                         yk^=(βjθj)                (1)
 则网络在(xk,yk)上的均方误差为:
                          Ek=12j=1l(yjk^yjk)           (2)
 图1中的网络中有(d+l+1)q+l个参数需要确定。BP是一个迭代学习算法,在迭代的每一轮采用广义的感知机学习规则对参数进行更新估计。下面我们以图1中的隐层到输出层的连接权值ωhj为例来进行推导:
 BP算法基于梯度下降(gradient descent)策略,以目标的负梯度方向对参数进行调整,对公式2中的误差Ek,给定学习率η,有:
                          Δwhj=ηEkwhj              (3)
注意到whj先影响到第j个输出神经元的输入值βj,再影响到其输出值yjk^,然后影响到Ek,有:
                           Ekwhj=Ekyjk^yjk^βjβjwhj           (4)
根据βj的定义有:βjwhj=bh,并且Sigmoid函数有一个很好的性质:f(x)=f(x)(1f(x),于是根据公式(1)和(2),有:
               gj=Ekyjk^yjk^βj=(yjk^yjk)f(βjαj)=(yjkyjk^)yjk^(1yjk^)  (5)
将公式(5)带入到公式(4),再带入到公式(3)中,就得到了BP算法中关于whj的更新公式:
                            Δwhj=ηgjbh               (6)
Δθj的更新公式为:
               Δθj=ηEkθj=ηEkyjk^yjk^θj=η(yjkyjk^)yjk^(1yjk^)=ηgj(7)
BP神经网络的输出层到隐层的连接权值Δvih的更新估计式为:
                     Δvih=ηEkvih=ηEkbhbhαhαhvih
                     =ηj=1lEkβjβjbhf(αhγh)xi=ηbh(1bh))j=1lωhjgj
                     =ηehxi
BP神经网络的隐层第h个神经元的阈值γh的更新公式为:
                     Δγh=ηEkγh=ηj=ilEkβiβibhbhγh=ηeh
学习率η(0,1)控制着算法每一轮迭代中的更新步长;

相关文章: