多个隐藏层深度神经网络的构建

本文介绍了在Coursera吴恩达课程中关于构建多隐藏层深度神经网络的内容。讨论了正向传播和反向传播的公式,强调理解整体框架而非深入公式推导。还提及了参数初始化,特别是权重矩阵W[i]和偏置b[i]的形状,以及如何根据隐藏层节点数确定它们。最后,鼓励读者参照单层隐藏层网络的设计来实现多层网络。

多个隐藏层深度网络的构建

cousera上吴恩达老师的第四周作业做完了。

除了明显为个人手写并用手机拍摄,以下提供的图片都来自吴恩达老师课件的截图

通过前面单个隐藏层的学习后,很容易联想到多个隐藏层的神经网络应当长得如下。(输入不限,中间隐藏层不限,在后面学习中还听说吴恩达老师说到有哪个公司用152层还是150几层的神经网络实现了不错的功能)
在这里插入图片描述

要点
1.很容易想到的是公式的问题,假设我们要推导n[i]n^{[i]}n[i]层的公式,很容易得出如下:

正向传播公式:
Z[i]=W[i]A[i−1]+b[i]Z^{[i]}=W^{[i]}A^{[i-1]}+b^{[i]}Z[i]=W[i]A[i1]+b[i]A[i]=σ(Z[i])A{[i]}=\sigma(Z^{[i]})A[i]=σ(Z[i])

反向传播公式:
dW[l]=∂L∂W[l]=1mdZ[l]A[l−1]T dW^{[l]} = \frac{\partial \mathcal{L} }{\partial W^{[l]}} = \frac{1}{m} dZ^{[l]} A^{[l-1] T} dW[l]=W[l]L=m1dZ[l]A[l1]Tdb[l]=∂L∂b[l]=1m∑i=1mdZ[l](i) db^{[l]} = \frac{\partial \mathcal{L} }{\partial b^{[l]}} = \frac{1}{m} \sum_{i = 1}^{m} dZ^{[l](i)}db[l]=b[l]L=m1i=1mdZ[l](i)dA[l−1]=∂L∂A[l−1]=W[l]TdZ[l] dA^{[l-1]} = \frac{\partial \mathcal{L} }{\partial A^{[l-1]}} = W^{[l] T} dZ^{[l]} dA[l1]=A[l1]L=W[l]TdZ[l]dZ[l]=dA[l]∗g′(Z[l])dZ^{[l]} = dA^{[l]} * g'(Z^{[l]}) dZ[l]=dA[l]g(Z[l])
ps:本人并没有去深究这些公式的推导,个人比较看重整个框架的理解,所以也就没拿大力气去推导。刚开始很苦恼这个求这个dA干什么dA干什么dA干什么,才知道就像原来的dbdbdb要用到dZdZdZ一样,这次是dZdZdZ要用到dAdAdA,而dbdbdb要用到dZdZdZ,所以要求到dAdAdA

2.参数的初始化问题
假设XXX形状为(n,m)(n,m)(n,m),W[1]W^{[1]}W[1]形状为(k,n)(k,n)(k,n),则计算出来的A[1]A^{[1]}A[1]形状将是(k,m)(k,m)(k,m)
再往下A[1]A^{[1]}A[1]形状为(k,m)(k,m)(k,m),W[2]W^{[2]}W[2]形状为(l,k)(l,k)(l,k),则计算出来的A[2]^A{[2]}A[2]形状将是(l,m)(l,m)(l,m)

W[i]W^{[i]}W[i]的形状很容易推出为(n[i],n[i−1])(n^{[i]},n^{[i-1]})(n[i],n[i1]),因此我们只需要初始化每一层的节点数,也就是n[i]n^{[i]}n[i]就能准确推导出W[i]W^{[i]}W[i]的形状了

b[i]b^{[i]}b[i]的形状则只要切合W[i]W^{[i]}W[i]进行设计就行了,可以初始化为(n[i],1)(n^{[i]},1)(n[i],1),然后让python里的广播机制对它进行广播就ok了。

那么上述问题解决后就只需要参考单个隐藏层的神经网络去设计多个隐藏层的深度神经网络了。

如有不当之处请批评指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值