人工神经网络 backpropagation algorithm

ann人工神经网络bp算法python实现

1、单个神经元

1.1、单个神经元的表示方法:

这里写图片描述

这代表一行数据的处理,即 x1,x2,x3 x 1 , x 2 , x 3 属于一个样本的三个维度,输出为这个样本的激活函数的值。

hW,b(x)=f(z)=f(WTx)=f(3i=1Wixi+b) h W , b ( x ) = f ( z ) = f ( W T x ) = f ( ∑ i = 1 3 W i x i + b )

1.2、激励函数几种不同形式:

  • sigmoid函数
    f(z)=11+exp(z) f ( z ) = 1 1 + exp ⁡ ( − z )

    • sigmoid函数的导数:
      f(z)=f(z)(1f(z)) f ′ ( z ) = f ( z ) ( 1 − f ( z ) )
  • tanh函数
    f(z)=tanh(z)=ezezez+ez f ( z ) = tanh ⁡ ( z ) = e z − e − z e z + e − z

    • tanh函数的导数:
      f(z)=1(f(z))2 f ′ ( z ) = 1 − ( f ( z ) ) 2
  • rectified linear activation function

    f(z)=max(0,x) f ( z ) = max ( 0 , x )

    • 导数为:

    f(z)={01z<=0z>0 f ′ ( z ) = { 0 z <= 0 1 z > 0

    以下是这几种损失函数的函数图。

    这里写图片描述

2、神经网络模型

这里写图片打发描述

nl n l 表示这个神经网络的层数,这个神经网络共有3层,及 nl=3 n l = 3
Ll L l 是输入层, Lnl L n l 是输出层,中间为隐含层。

上图中神经网络的参数为:

(W,b)=(W(1),b(1),W(2),b(2)) ( W , b ) = ( W ( 1 ) , b ( 1 ) , W ( 2 ) , b ( 2 ) )

W(l)ij W i j ( l ) 表示 l l 层到l+1层的权值矩阵或向量, i i 代表l+1层, j j 代表l层的索引。
W(1)R3×3 W ( 1 ) ∈ ℜ 3 × 3
 W(2)R1×3   W ( 2 ) ∈ ℜ 1 × 3
a(l)i a i ( l ) 表示第 i i 的激活函数的结果 l
对于输入层即 l=1 l = 1 a(1)i=xi a i ( 1 ) = x i ii i 表 示 一 个 样 本 的 第 i 列

递推公式为:

al+1i=f(zl+1i)=f(Wlix+bl) a i l + 1 = f ( z i l + 1 ) = f ( W i ⋅ l x + b l )

从输入层到输出层的计算详细过程如下:
a21a22a23hW,b(x)=a31====f(W111x1+W112x2+W113x3+b11)f(W121x1+W122x2+W123x3+b12)f(W131x1+W132x2+W133x3+b13)f(W211x1+W212x2+W213x3+b21)(1)(2)(3)(4) (1) a 1 2 = f ( W 11 1 x 1 + W 12 1 x 2 + W 13 1 x 3 + b 1 1 ) (2) a 2 2 = f ( W 21 1 x 1 + W 22 1 x 2 + W 23 1 x 3 + b 2 1 ) (3) a 3 2 = f ( W 31 1 x 1 + W 32 1 x 2 + W 33 1 x 3 + b 3 1 ) (4) h W , b ( x ) = a 1 3 = f ( W 11 2 x 1 + W 12 2 x 2 + W 13 2 x 3 + b 1 2 )

输出层为多层时,神经网络的示意图如下:

这里写图片描述


3、backpropagation algorithm

每个样本对应的损失为:

J(W,b;x,y)=12hW,b(x)y2.(5) (5) J ( W , b ; x , y ) = 1 2 ‖ h W , b ( x ) − y ‖ 2 .

整体的损失函数加上对权重系数的正则化
J(W,b)==[1mi=1mJ(W,b,xi,yi)]+λ2l=1nl1i=1slj=1sl+1(W(l)ji)2[1mi=1m(12hW,b(x)y2)]+λ2l=1nl1i=1slj=1sl+1(W(l)ji)2(6)(7) (6) J ( W , b ) = [ 1 m ∑ i = 1 m J ( W , b , x i , y i ) ] + λ 2 ∑ l = 1 n l − 1 ∑ i = 1 s l ∑ j = 1 s l + 1 ( W j i ( l ) ) 2 (7) = [ 1 m ∑ i = 1 m ( 1 2 ‖ h W , b ( x ) − y ‖ 2 ) ] + λ 2 ∑ l = 1 n l − 1 ∑ i = 1 s l ∑ j = 1 s l + 1 ( W j i ( l ) ) 2

反向传播的算法过程

1、正向传播,计算每层的激励函数值

al+1i=f(zl+1i)=f(Wlix+bl) a i l + 1 = f ( z i l + 1 ) = f ( W i ⋅ l x + b l )

2、利用y值和激励函数值计算输出层的’error term’
δ(nl)i=z(nl)i12yhW,b(x)2=(yia(nl)i)f(z(nl)i)(8) (8) δ i ( n l ) = ∂ ∂ z i ( n l ) 1 2 ‖ y − h W , b ( x ) ‖ 2 = − ( y i − a i ( n l ) ) ⋅ f ′ ( z i ( n l ) )

3、利用初值W,计算隐含层的‘error term’
δ(l)i=(j=1sl+1W(l)jiδ(l+1)j)f(z(l)i) δ i ( l ) = ( ∑ j = 1 s l + 1 W j i ( l ) δ j ( l + 1 ) ) f ′ ( z i ( l ) )

4、计算每个样本的偏导。
W(l)J(W,b;x,y)b(l)J(W,b;x,y)=δ(l+1)(a(l))T,=δ(l+1).(9)(10) (9) ∇ W ( l ) J ( W , b ; x , y ) = δ ( l + 1 ) ( a ( l ) ) T , (10) ∇ b ( l ) J ( W , b ; x , y ) = δ ( l + 1 ) .

5、计算整体的偏导
W(l)ijJ(W,b)b(l)iJ(W,b)=1mi=1mW(l)ijJ(W,b;x(i),y(i))+λW(l)ij=1mi=1mb(l)iJ(W,b;x(i),y(i))(11)(12) (11) ∂ ∂ W i j ( l ) J ( W , b ) = [ 1 m ∑ i = 1 m ∂ ∂ W i j ( l ) J ( W , b ; x ( i ) , y ( i ) ) ] + λ W i j ( l ) (12) ∂ ∂ b i ( l ) J ( W , b ) = 1 m ∑ i = 1 m ∂ ∂ b i ( l ) J ( W , b ; x ( i ) , y ( i ) )

6、梯度下降更新 W,b W , b
W(l)ijb(l)i=W(l)ijαW(l)ijJ(W,b)=b(l)iαb(l)iJ(W,b)(13)(14) (13) W i j ( l ) = W i j ( l ) − α ∂ ∂ W i j ( l ) J ( W , b ) (14) b i ( l ) = b i ( l ) − α ∂ ∂ b i ( l ) J ( W , b )

梯度下降更新 W,b W , b

W(l)ijJ(W,b)b(l)iJ(W,b)=1mi=1mW(l)ijJ(W,b;x(i),y(i))+λW(l)ij=1mi=1mb(l)iJ(W,b;x(i),y(i))(15)(16) (15) ∂ ∂ W i j ( l ) J ( W , b ) = [ 1 m ∑ i = 1 m ∂ ∂ W i j ( l ) J ( W , b ; x ( i ) , y ( i ) ) ] + λ W i j ( l ) (16) ∂ ∂ b i ( l ) J ( W , b ) = 1 m ∑ i = 1 m ∂ ∂ b i ( l ) J ( W , b ; x ( i ) , y ( i ) )

J(W,b;x,y)Wlji===J(W,b;x,y)z(l+1)jz(l+1)jWljiJ(W,b;x,y)z(l+1)jni=1W(l)jiali+bliWljiJ(W,b;x,y)z(l+1)jali(17)(18)(19) (17) ∂ J ( W , b ; x , y ) ∂ W j i l = ∂ J ( W , b ; x , y ) ∂ z j ( l + 1 ) ⋅ ∂ z j ( l + 1 ) ∂ W j i l (18) = ∂ J ( W , b ; x , y ) ∂ z j ( l + 1 ) ⋅ ∂ ∑ i = 1 n W j i ( l ) a i l + b i l ∂ W j i l (19) = ∂ J ( W , b ; x , y ) ∂ z j ( l + 1 ) ⋅ a i l

δ(nl)j=====J(W,b;x,y)z(nl)j12||yhW,b||2z(nl)j12||ya(nl)j||2z(nl)j(ya(nl)j)a(nl)jz(nl)j(ya(nl)j)f(znli)(20)(21)(22)(23)(24) (20) δ j ( n l ) = ∂ J ( W , b ; x , y ) ∂ z j ( n l ) (21) = ∂ 1 2 | | y − h W , b | | 2 ∂ z j ( n l ) (22) = ∂ 1 2 | | y − a j ( n l ) | | 2 ∂ z j ( n l ) (23) = − ( y − a j ( n l ) ) ∂ a j ( n l ) ∂ z j ( n l ) (24) = − ( y − a j ( n l ) ) f ′ ( z i n l )

J(W,b;x,y)Wlji==(ya(nl)j)f(znli)aliδ(nl)jali(25)(26) (25) ∂ J ( W , b ; x , y ) ∂ W j i l = − ( y − a j ( n l ) ) f ′ ( z i n l ) ⋅ a i l (26) = δ j ( n l ) ⋅ a i l

对于隐含层,其误差项通过其后面一层传播而来,对于第L层,相当于L+1 层有 sl+1 s l + 1 项 误 差 求 和 而 来
δli======J(W,b;x,y)zlij=1Sl+1J(W,b;x,y)zl+1jzl+1jzljj=1Sl+1J(W,b;x,y)zl+1j(ni=1Wljiali+bli)zljj=1Sl+1J(W,b;x,y)zl+1j(ni=1Wljif(zli)+bli)zljj=1Sl+1J(W,b;x,y)zl+1jWljif(zli)j=1Sl+1δ(l+1)jWljif(zli)(27)(28)(29)(30)(31)(32) (27) δ i l = ∂ J ( W , b ; x , y ) ∂ z i l (28) = ∑ j = 1 S l + 1 ∂ J ( W , b ; x , y ) ∂ z j l + 1 ∂ z j l + 1 ∂ z j l (29) = ∑ j = 1 S l + 1 ∂ J ( W , b ; x , y ) ∂ z j l + 1 ∂ ( ∑ i = 1 n W j i l a i l + b i l ) ∂ z j l (30) = ∑ j = 1 S l + 1 ∂ J ( W , b ; x , y ) ∂ z j l + 1 ∂ ( ∑ i = 1 n W j i l f ( z i l ) + b i l ) ∂ z j l (31) = ∑ j = 1 S l + 1 ∂ J ( W , b ; x , y ) ∂ z j l + 1 W j i l f ′ ( z i l ) (32) = ∑ j = 1 S l + 1 δ j ( l + 1 ) W j i l f ′ ( z i l )


4、softmax函数及其求导

输出层激励函数为softmax:

aLj=ezLjkezLk a j L = e z j L ∑ k e z k L

交叉熵代价函数为:
C=kyk log ak C = − ∑ k y k   l o g   a k

Wb 关 于 W 和 b 的 偏 导 为 :
Cwjk=aL1k(aLjyj) ∂ C ∂ w j k = a k L − 1 ( a j L − y j )

Cbj=aLjyj ∂ C ∂ b j = a j L − y j

  • 公式推导过程
    softmax函数公式:
    aLj=ezLjkezLk a j L = e z j L ∑ k e z k L

    其中
    if jajzj=====izi(ezjkezk)(ezj)kezkezj ezj(kezk)2ezjkezkezjkezkezjkezkaj(1aj)(33)(34)(35)(36)(37) (33) i f   j = i (34) ∂ a j ∂ z j = ∂ ∂ z i ( e z j ∑ k e z k ) (35) = ( e z j ) ′ ∑ k e z k − e z j   e z j ( ∑ k e z k ) 2 (36) = e z j ∑ k e z k − e z j ∑ k e z k ⋅ e z j ∑ k e z k (37) = a j ( 1 − a j )

    if jajzji====zi(ezjkezk)0kezkezj ezi(kezk)2ezjkezkezikezkajai(38)(39)(40)(41)(42) (38) i f   j ≠ i (39) ∂ a j ∂ z j = ∂ ∂ z i ( e z j ∑ k e z k ) (40) = 0 ∑ k e z k − e z j   e z i ( ∑ k e z k ) 2 (41) = − e z j ∑ k e z k ⋅ e z i ∑ k e z k (42) = − a j a i

    交叉熵代价函数为:
    C=kyk log ak C = − ∑ k y k   l o g   a k

    Cbj=======CzjzjbjCzj(wjkak+bj)bjzj(kyk log ak)kyk1akakzjyj1ajaj(1aj)kjyk1ak(ajak)yj+ajkykajyj(43)(44)(45)(46)(47)(48)(49) (43) ∂ C ∂ b j = ∂ C ∂ z j ⋅ ∂ z j ∂ b j (44) = ∂ C ∂ z j ⋅ ∂ ( w j k a k + b j ) ∂ b j (45) = ∂ ∂ z j ( − ∑ k y k   l o g   a k ) (46) = − ∑ k y k 1 a k ⋅ ∂ a k ∂ z j (47) = − y j 1 a j a j ( 1 − a j ) − ∑ k ≠ j y k 1 a k ( − a j a k ) (48) = − y j + a j ∑ k y k (49) = a j − y j

    Cwjk=aL1k(aLjyj) ∂ C ∂ w j k = a k L − 1 ( a j L − y j )

参考文献
http://ufldl.stanford.edu/tutorial/supervised/MultiLayerNeuralNetworks/

http://blog.csdn.net/xuanyuansen/article/details/41214115

http://blog.csdn.net/u014313009/article/details/51045303

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值