[机器学习]神经网络反向传播的推导

神经网络反向传播的推导

对于神经网络的训练过程而言,其反向传播算法是训练过程的核心,神经网络根据预测值 y^ y ^ 与实际值 y y 的偏差从后向前来计算损失函数对于各个参数的梯度,从而利用梯度下降的方法来优化训练神经网络的各个参数。

神经网络的计算流程图如下:
这里写图片描述
从该流程图可以看到,如果我们要计算神经网络的参数W[1],b[1],W[2],b[2],首先需要计算 La[2] ∂ L ∂ a [ 2 ] a[2]z[2] ∂ a [ 2 ] ∂ z [ 2 ] ,然后根据链式法则得到 Lz[2]=La[2]a[2]z[2] ∂ L ∂ z [ 2 ] = ∂ L ∂ a [ 2 ] ∂ a [ 2 ] ∂ z [ 2 ]

之后再计算 z[2]W[2] ∂ z [ 2 ] ∂ W [ 2 ] z[2]b[2] ∂ z [ 2 ] ∂ b [ 2 ] ,同样根据链式法则可以得到 LW[2]=Lz[2]z[2]W[2] ∂ L ∂ W [ 2 ] = ∂ L ∂ z [ 2 ] ∂ z [ 2 ] ∂ W [ 2 ] 以及得到 Lb[2]=Lz[2]z[2]b[2] ∂ L ∂ b [ 2 ] = ∂ L ∂ z [ 2 ] ∂ z [ 2 ] ∂ b [ 2 ] 。这样便得到了 dW[2] d W [ 2 ] db[2] d b [ 2 ]

另外对于 dW[1] d W [ 1 ] db[1] d b [ 1 ] 的计算,需要先计算 z[1]W[1] ∂ z [ 1 ] ∂ W [ 1 ] a[1]z[1] ∂ a [ 1 ] ∂ z [ 1 ] z[2]a[1] ∂ z [ 2 ] ∂ a [ 1 ] ,同样根据链式法则可以得到 LW[1]=Lz[2]z[2]a[1]a[1]z[1]z[1]W[1] ∂ L ∂ W [ 1 ] = ∂ L ∂ z [ 2 ] ∂ z [ 2 ] ∂ a [ 1 ] ∂ a [ 1 ] ∂ z [ 1 ] ∂ z [ 1 ] ∂ W [ 1 ] ,以及 Lb[1]=Lz[2]z[2]a[1]a[1]z[1]z[1]b[1] ∂ L ∂ b [ 1 ] = ∂ L ∂ z [ 2 ] ∂ z [ 2 ] ∂ a [ 1 ] ∂ a [ 1 ] ∂ z [ 1 ] ∂ z [ 1 ] ∂ b [ 1 ] 。这样也得到了 dW[1] d W [ 1 ] db[1] d b [ 1 ]

在使用随机梯度下降(SGD)优化算法以及交叉熵(Cross Entropy)损失函数的时候,我们令 a[2]=y^ a [ 2 ] = y ^ ,即损失函数:

L(y^,y)=(ylogy^+(1y)log(1y^)) L ( y ^ , y ) = − ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) )

使用sigmoid激活函数,即

a[1]=σ(z[1])=11+ez[1]a[2]=σ(z[2])=11+ez[2] a [ 1 ] = σ ( z [ 1 ] ) = 1 1 + e − z [ 1 ] a [ 2 ] = σ ( z [ 2 ] ) = 1 1 + e − z [ 2 ]

将该激活函数和损失函数代入上面的计算过程,可以得到:

dz[2]=a[2]ydW[2]=dz[2]a[1]Tdb[2]=dz[2]dz[1]=W[2]Tdz[2]σ(z[1])dW[1]=dz[1]xTdb[1]=dz[1] d z [ 2 ] = a [ 2 ] − y d W [ 2 ] = d z [ 2 ] a [ 1 ] T d b [ 2 ] = d z [ 2 ] d z [ 1 ] = W [ 2 ] T d z [ 2 ] ∗ σ ′ ( z [ 1 ] ) d W [ 1 ] = d z [ 1 ] x T d b [ 1 ] = d z [ 1 ]

在进行随机梯度下降的过程中,随机选取样本中的一个错误分类点,根据该点计算当前的 dW[1],db[1],dW[2],db[2] d W [ 1 ] , d b [ 1 ] , d W [ 2 ] , d b [ 2 ] ,然后利用以下公式来更新 W[1],b[1],W[2],b[2] W [ 1 ] , b [ 1 ] , W [ 2 ] , b [ 2 ]
W[2]:=W[2]αdW[2]b[2]:=b[2]αdb[2]W[1]:=W[1]αdW[1]b[1]:=b[1]αdb[1] W [ 2 ] := W [ 2 ] − α ∗ d W [ 2 ] b [ 2 ] := b [ 2 ] − α ∗ d b [ 2 ] W [ 1 ] := W [ 1 ] − α ∗ d W [ 1 ] b [ 1 ] := b [ 1 ] − α ∗ d b [ 1 ]

直到收敛为止。

对于神经网络的训练,还有批量梯度下降(Batch Gradient Descent)和小批量梯度下降(Mini-Batch Gradient Descent),带动量的随机梯度下降(Momentum),RMSProp,Adam等方法,后面再做详解。

To be continue…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值