Backpropagation 反向传播算法详细推导

BP 神经网络模型

单隐层感知器又称为三层感知器,包括输入层、隐层和输出层.
三层感知器中,设输入向量 X X 、隐层输出向量 Y 和输出层向量 O O 分别为:

X=[x0=1x1xixn],Y=[y0=1y1yjym],O=[o1okol]

输入层到隐层的权值矩阵 V V 、隐层到输出层的权值矩阵 W分别为:

V=[V1V2VjVm]W=[W1W2WkWl] V = [ V 1 V 2 ⋯ V j ⋯ V m ] W = [ W 1 W 2 ⋯ W k ⋯ W l ]

其中列向量 Vj V j 为对应隐层的第 j j 个神经元对应的权向量,列向量 Wk 为对应输出层的第 k k 个神经元对应的权向量,即
Vj=[v0jv1jvijvnj],Wk=[w0kw1kwjkwmk]

则对于输出层有:
ok====f(netk)f(w0k+w1ky1+w2ky2++wjkyj++wmkym)f(j=0mwjkyj)f(WTkY) o k = f ( n e t k ) = f ( − w 0 k + w 1 k y 1 + w 2 k y 2 + ⋯ + w j k y j + ⋯ + w m k y m ) = f ( ∑ j = 0 m w j k y j ) = f ( W k T ⋅ Y )

对于隐层有:
yj====f(netj)f(v0j+v1jx1+v2jx2++vijxj++vnjxn)f(i=0nvijxi)f(VTjX) y j = f ( n e t j ) = f ( − v 0 j + v 1 j x 1 + v 2 j x 2 + ⋯ + v i j x j + ⋯ + v n j x n ) = f ( ∑ i = 0 n v i j x i ) = f ( V j T ⋅ X )

其中转移函数 f(x) f ( x ) 均为单极性 Sigmoid 函数:
f(x)=11+ex f ( x ) = 1 1 + e − x

其导函数为:
f(x)=f(x)[1f(x)] f ′ ( x ) = f ( x ) [ 1 − f ( x ) ]

BP 学习算法

网络误差定义、权值调整思路

输出向量对应期望输出向量 d d 为:

d=[d1d2dkdl]

当网络输出与期望输出不相等时,定义输出误差 E E
E=12k=1l(dkok)2=12k=1l(dkf(netk))2=12k=1l(dkf(j=0mwjkyj))2=12k=1l(dkf(j=0mwjkf(i=0nvijxi)))2

可以看出网络误差是各层权值 wjk w j k vij v i j 的函数,故要使得误差减小,应使权值的变化量与误差的梯度下降成正比:

ΔwjkΔvij==ηEwjkj[0,m],k[1,l]ηEviji[0,n],j[1,m] Δ w j k = − η ∂ E ∂ w j k j ∈ [ 0 , m ] , k ∈ [ 1 , l ] Δ v i j = − η ∂ E ∂ v i j i ∈ [ 0 , n ] , j ∈ [ 1 , m ]

注意两个 j j 范围的区别.

BP 算法推导

Δwjk=ηEwjk=ηEokoknetknetkwjkΔvij=ηEvij=ηEyjyjnetjnetjvij

注意到:
E==12(d1o1)2++12(dkok)2++12(dlol)212(d1f(w01+w11y1++wj1yj++wm1ym))2++12(dkf(w0k+w1ky1++wjkyj++wmkym))2++12(dlf(w0k+w1ky1++wjlyj++wmlym))2 E = 1 2 ( d 1 − o 1 ) 2 + ⋯ + 1 2 ( d k − o k ) 2 + ⋯ + 1 2 ( d l − o l ) 2 = 1 2 ( d 1 − f ( − w 01 + w 11 y 1 + ⋯ + w j 1 y j + ⋯ + w m 1 y m ) ) 2 + ⋯ + 1 2 ( d k − f ( − w 0 k + w 1 k y 1 + ⋯ + w j k y j + ⋯ + w m k y m ) ) 2 + ⋯ + 1 2 ( d l − f ( − w 0 k + w 1 k y 1 + ⋯ + w j l y j + ⋯ + w m l y m ) ) 2

故有:
Eok=(dkok)Eyj==(d1o1)f(net1)wj1(dkok)f(netk)wjk(dlol)f(netl)wjlk=1l(dkok)f(netk)wjk ∂ E ∂ o k = − ( d k − o k ) ∂ E ∂ y j = − ( d 1 − o 1 ) f ′ ( n e t 1 ) w j 1 − ⋯ − ( d k − o k ) f ′ ( n e t k ) w j k − ⋯ − ( d l − o l ) f ′ ( n e t l ) w j l = − ∑ k = 1 l ( d k − o k ) f ′ ( n e t k ) w j k

注意到:
netk=w0k+w1ky1+w2ky2++wjkyj++wmkymnetj=v0j+v1jx1+v2jx2++vijxj++vnjxn n e t k = − w 0 k + w 1 k y 1 + w 2 k y 2 + ⋯ + w j k y j + ⋯ + w m k y m n e t j = − v 0 j + v 1 j x 1 + v 2 j x 2 + ⋯ + v i j x j + ⋯ + v n j x n

故:
netkwjk=yj,netjvij=xj ∂ n e t k ∂ w j k = y j , ∂ n e t j ∂ v i j = x j

所以有:
ΔwjkΔvij========ηEokoknetknetkwjkη(dkok)f(netk)yjη(dkok)ok(1ok)yjηδokyjηEyjyjnetjnetjvijηk=1l[(dkok)f(netk)wjk]f(netj)xiηk=1l(δokwjk)yj(1yj)xiηδyjxi Δ w j k = − η ∂ E ∂ o k ∂ o k ∂ n e t k ∂ n e t k ∂ w j k = η ( d k − o k ) f ′ ( n e t k ) y j = η ( d k − o k ) o k ( 1 − o k ) y j = η δ k o y j Δ v i j = − η ∂ E ∂ y j ∂ y j ∂ n e t j ∂ n e t j ∂ v i j = η ∑ k = 1 l [ ( d k − o k ) f ′ ( n e t k ) w j k ] f ′ ( n e t j ) x i = η ∑ k = 1 l ( δ k o w j k ) y j ( 1 − y j ) x i = η δ j y x i

其中 δok δ k o δyj δ j y 分别定义为输出层和隐层的误差信号.
由此我们将其推广至有 h h 层隐层的网络结构,同时为了方便编程实现,将其向量化,得到如下公式:
δh+1=(do).f(o)δh=(Wh+1[1:]δh+1).f(yh[1:])ΔWh=η(yh1(δh)T)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值