这里记录一下BP神经网络的误差逆向传播算法:
1.针对特殊的一种激活函数:sigmoid(x)=11+e−x s i g m o i d ( x ) = 1 1 + e − x来推导BP神经网络的权值和阈值更新公式:
给定训练集:D={(x1,y1),(x2,y2)...,(xm,ym)},xi∈Rd,yi∈Rl D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) . . . , ( x m , y m ) } , x i ∈ R d , y i ∈ R l,即输入属性序列由d d个属性描述,输出l l维实值向量。为了方便讨论,图1给出了拥有d d个输入神经元,l l个输出神经元,q q个隐层神经元的多层前馈网络结构,其中输出层为第j j个神经元的阈值用θ θ表示,隐层第h h个神经元用φh φ h表示。输入层第i i个神经元与隐层第h h个神经元之间的连接权为vih v i h,隐层第h h个神经元与输出层第j j个神经元之间的连接权为ωhj ω h j。
图1 BP神经网络即算法中的符号变量
记隐层第h h个神经元接收到的输入为αh=∑di=1vihxi α h = ∑ i = 1 d v i h x i,输出层的第j j个神经元接收到的输入为:βj=∑qh=1ωhjbh β j = ∑ h = 1 q ω h j b h,其中bh b h为隐层第h h个神经元的输出。现在假设隐层和输出层都使用Sigmoid函数:
对训练例(xk,yk) ( x k , y k ),假定神经网络的输出为:ykˆ=(y1ˆ,y2ˆ,......ylˆ) y k ^ = ( y 1 ^ , y 2 ^ , . . . . . . y l ^ ),即:
ykˆ=(βj−θj) y k ^ = ( β j − θ j )(1)
则网络在(xk,yk) ( x k , y k )上的均方误差为:
Ek=12∑lj=1(ykjˆ−ykj) E k = 1 2 ∑ j = 1 l ( y j k ^ − y j k )(2)
图1中的网络中有(d+l+1)q+l ( d + l + 1 ) q + l个参数需要确定。BP是一个迭代学习算法,在迭代的每一轮采用广义的感知机学习规则对参数进行更新估计。下面我们以图1中的隐层到输出层的连接权值ωhj ω h j为例来进行推导:
BP算法基于梯度下降(gradient descent)策略,以目标的负梯度方向对参数进行调整,对公式2中的误差Ek E k,给定学习率η η,有:
Δwhj=−η∂Ek∂whj Δ w h j = − η ∂ E k ∂ w h j(3)
注意到whj w h j先影响到第j j个输出神经元的输入值,再影响到其输出值ykjˆ y j k ^,然后影响到Ek E k,有:
∂Ek∂whj=∂Ek∂ykjˆ⋅∂ykjˆ∂βj⋅∂βj∂whj ∂ E k ∂ w h j = ∂ E k ∂ y j k ^ ⋅ ∂ y j k ^ ∂ β j ⋅ ∂ β j ∂ w h j(4)
根据βj β j的定义有:∂βj∂whj=bh ∂ β j ∂ w h j = b h,并且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ˆ) g j = ∂ E k ∂ y j k ^ ⋅ ∂ y j k ^ ∂ β j = − ( y j k ^ − y j k ) f ′ ( β j − α j ) = ( y j k − y j k ^ ) y j k ^ ( 1 − y j k ^ )(5)
将公式(5)带入到公式(4),再带入到公式(3)中,就得到了BP算法中关于whj w h j的更新公式:
Δwhj=ηgjbh Δ w h j = η g j b h(6)
而Δθj Δ θ j的更新公式为:
Δθj=−η∂Ek∂θj=−η∂Ek∂ykjˆ⋅∂ykjˆ∂θj=−η(ykj−ykjˆ)⋅ykjˆ⋅(1−ykjˆ)=−ηgj Δ θ j = − η ∂ E k ∂ θ j = − η ∂ E k ∂ y j k ^ ⋅ ∂ y j k ^ ∂ θ j = − η ( y j k − y j k ^ ) ⋅ y j k ^ ⋅ ( 1 − y j k ^ ) = − η g j(7)
BP神经网络的输出层到隐层的连接权值Δvih Δ v i h的更新估计式为:
Δvih=−η∂Ek∂vih=−η∂Ek∂bh⋅∂bh∂αh⋅∂αh∂vih Δ v i h = − η ∂ E k ∂ v i h = − η ∂ E k ∂ b h ⋅ ∂ b h ∂ α h ⋅ ∂ α h ∂ v i h
=−η∑lj=1∂Ek∂βj⋅∂βj∂bhf′(αh−γh)xi=ηbh(1−bh))∑lj=1ωhjgj = − η ∑ j = 1 l ∂ E k ∂ β j ⋅ ∂ β j ∂ b h f ′ ( α h − γ h ) x i = η b h ( 1 − b h ) ) ∑ j = 1 l ω h j g j
=ηehxi = η e h x i
BP神经网络的隐层第h h个神经元的阈值的更新公式为:
Δγh=−η∂Ek∂γh=−η∑lj=i∂Ek∂βi⋅∂βi∂bh⋅∂bh∂γh=−ηeh Δ γ h = − η ∂ E k ∂ γ h = − η ∑ j = i l ∂ E k ∂ β i ⋅ ∂ β i ∂ b h ⋅ ∂ b h ∂ γ h = − η e h
学习率η∈(0,1) η ∈ ( 0 , 1 )控制着算法每一轮迭代中的更新步长;
BP神经网络权值、阈值更新公式推导
版权声明:本文为pcb931126原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。