深度学习笔记(八)神经网络反向传播的梯度下降算法

按照吴恩达老师的话讲,反向传播的数学推导过程实际上是他看过的最复杂的数学之一,涉及线性代数 矩阵 导数 链式法则等等,如果你微积分专家,你可以尝试从头进行数学推导,这是机器学习领域最难的推导之一。不管怎样,如果能实现这些方程,相信能让你有足够的直觉来调整神经网络并使其工作。

一、前向传播公式的回顾

Z [ 1 ] = W [ 1 ] X + b [ 1 ] A [ 1 ] = σ ( Z [ 1 ] ) Z [ 2 ] = W [ 2 ] A [ 1 ] + b [ 2 ] A [ 2 ] = σ ( Z [ 2 ] ) Z^{[1]}=W^{[1]}X+b^{[1]}\\A^{[1]}=\sigma(Z^{[1]})\\Z^{[2]}=W^{[2]}A^{[1]}+b^{[2]}\\A^{[2]}=\sigma(Z^{[2]}) Z[1]=W[1]X+b[1]A[1]=σ(Z[1])Z[2]=W[2]A[1]+b[2]A[2]=σ(Z[2])

二、反向传播的梯度下降算法

d z [ 2 ] = A [ 2 ] − y dz^{[2]}=A^{[2]}-y dz[2]=A[2]y

d w [ 2 ] = 1 m d z [ 2 ] A [ 1 ] T dw^{[2]}=\frac{1}{m} dz^{[2]} {A^{[1]}}^T dw[2]=m1dz[2]A[1]T

d b [ 2 ] = 1 m n p . s u m ( d z [ 2 ] , a x i s = 1 , k e e p d i m s = T r u e ) db^{[2]}=\frac{1}{m} np.sum(dz^{[2]}, axis=1, keepdims=True) db[2]=m1np.sum(dz[2],axis=1,keepdims=True)

d z [ 1 ] = w [ 2 ] T d z [ 2 ] ∗ g [ 1 ] ′ ( z [ 1 ] ) dz^{[1]}={w^{[2]}}^Tdz^{[2]}*g^{[1]'}(z^{[1]}) dz[1]=w[2]Tdz[2]g[1](z[1])

d w [ 1 ] = 1 m d z [ 1 ] X T dw^{[1]}=\frac{1}{m} dz^{[1]}X^T dw[1]=m1dz[1]XT

d b [ 1 ] = 1 m n p . s u m ( d z [ 1 ] , a x i s = 1 , k e e p d i m s = T r u e ) db^{[1]}=\frac{1}{m} np.sum(dz^{[1]}, axis=1, keepdims=True) db[1]=m1np.sum(dz[1],axis=1,keepdims=True)

直观理解反向传播

在逻辑回归中,求导的核心是链式法则,很容易得到每一个参数的导数值。
d a = − y a + 1 − y 1 − a da=-\frac{y}{a}+\frac{1-y}{1-a} da=ay+1a1y

d z = a − y dz=a-y dz=ay

d w = x d z dw=xdz dw=xdz

d b = d z db=dz db=dz

在这里插入图片描述
在一个隐藏层的神经网络中,其实是重复了两次逻辑回归,那么应该如何求得梯度?
下图中紫色框为6个核心公式,红色框为 d z [ 1 ] dz^{[1]} dz[1]的维度检查。
在这里插入图片描述
事实上,训练的数据同样是多个样本(将向量以列堆积,在公式中的体现是小写变量名改大写),所以总结一下反向传播的计算公式。
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.zwX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值