这里记录一下BP神经网络的误差逆向传播算法:
  1.针对特殊的一种激活函数:sigmoid(x)=11+e−xsigmoid(x)=11+e−x来推导BP神经网络的权值和阈值更新公式:
  给定训练集:D={(x1,y1),(x2,y2)...,(xm,ym)},xi∈Rd,yi∈RlD={(x1,y1),(x2,y2)...,(xm,ym
)},xi∈Rd,yi∈Rl,即输入属性序列由dd个属性描述,输出ll维实值向量。为了方便讨论,图1给出了拥有dd个输入神经元,ll个输出神经元,qq
个隐层神经元的多层前馈网络结构,其中输出层为第jj个神经元的阈值用θθ表示,隐层第hh个神经元用φhφh表示。输入层第ii个神经元与隐层第hh
个神经元之间的连接权为vihvih,隐层第hh个神经元与输出层第jj个神经元之间的连接权为ωhjωhj。

           图1 BP神经网络即算法中的符号变量
记隐层第hh个神经元接收到的输入为αh=∑di=1vihxiαh=∑i=1dvihxi,输出层的第jj个神经元接收到的输入为:βj=∑qh=1ωhjbhβj
=∑h=1qωhjbh,其中bhbh为隐层第hh个神经元的输出。现在假设隐层和输出层都使用Sigmoid函数:
   对训练例(xk,yk)(xk,yk),假定神经网络的输出为:ykˆ=(y1ˆ,y2ˆ,......ylˆ)yk^=(y1^,y2^,......yl^
),即:
            
                         ykˆ=(βj−θj)yk^=(βj−θj)                (1)
 则网络在(xk,yk)(xk,yk)上的均方误差为:
                          Ek=12∑lj=1(ykjˆ−ykj)Ek=12∑j=1l(yjk^−yjk)
           (2)
 图1中的网络中有(d+l+1)q+l(d+l+1)q+l
个参数需要确定。BP是一个迭代学习算法,在迭代的每一轮采用广义的感知机学习规则对参数进行更新估计。下面我们以图1中的隐层到输出层的连接权值ωhjωhj
为例来进行推导:
 BP算法基于梯度下降(gradient descent)策略,以目标的负梯度方向对参数进行调整,对公式2中的误差EkEk,给定学习率ηη,有:
                          Δwhj=−η∂Ek∂whjΔwhj=−η∂Ek∂whj              (3)
注意到whjwhj先影响到第jj个输出神经元的输入值βjβj,再影响到其输出值ykjˆyjk^,然后影响到EkEk,有:
                           ∂Ek∂whj=∂Ek∂ykjˆ⋅∂ykjˆ∂βj⋅∂βj∂whj∂Ek∂whj=∂Ek∂yjk^⋅∂
yjk^∂βj⋅∂βj∂whj           (4)
根据βjβj的定义有:∂βj∂whj=bh∂βj∂whj=bh,并且Sigmoid函数有一个很好的性质:f(x)′=f(x)(1−f(x)f(x)′=f(x
)(1−f(x),于是根据公式(1)和(2),有:
               gj=∂Ek∂ykjˆ⋅∂ykjˆ∂βj=−(ykjˆ−ykj)f′(βj−αj)=(ykj−ykjˆ)ykjˆ(1−ykjˆ
)gj=∂Ek∂yjk^⋅∂yjk^∂βj=−(yjk^−yjk)f′(βj−αj)=(yjk−yjk^)yjk^(1−yjk^)  (5)
将公式(5)带入到公式(4),再带入到公式(3)中,就得到了BP算法中关于whjwhj的更新公式:
                            Δwhj=ηgjbhΔwhj=ηgjbh               (6)
而ΔθjΔθj的更新公式为:
               Δθj=−η∂Ek∂θj=−η∂Ek∂ykjˆ⋅∂ykjˆ∂θj=−η(ykj−ykjˆ)⋅ykjˆ⋅(1−ykjˆ)=−ηg
jΔθj=−η∂Ek∂θj=−η∂Ek∂yjk^⋅∂yjk^∂θj=−η(yjk−yjk^)⋅yjk^⋅(1−yjk^)=−ηgj(7)
BP神经网络的输出层到隐层的连接权值ΔvihΔvih的更新估计式为:
                     Δvih=−η∂Ek∂vih=−η∂Ek∂bh⋅∂bh∂αh⋅∂αh∂vihΔvih=−η∂Ek∂vih=−η∂E
k∂bh⋅∂bh∂αh⋅∂αh∂vih
                     =−η∑lj=1∂Ek∂βj⋅∂βj∂bhf′(αh−γh)xi=ηbh(1−bh))∑lj=1ωhjgj=−η∑
j=1l∂Ek∂βj⋅∂βj∂bhf′(αh−γh)xi=ηbh(1−bh))∑j=1lωhjgj
                     =ηehxi=ηehxi
BP神经网络的隐层第hh个神经元的阈值γhγh的更新公式为:
                     Δγh=−η∂Ek∂γh=−η∑lj=i∂Ek∂βi⋅∂βi∂bh⋅∂bh∂γh=−ηehΔγh=−η∂Ek∂γh
=−η∑j=il∂Ek∂βi⋅∂βi∂bh⋅∂bh∂γh=−ηeh
学习率η∈(0,1)η∈(0,1)控制着算法每一轮迭代中的更新步长;

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信