2020-5-13 吴恩达-NN&DL-w4 深层NN(4.5 搭建深层神经网络块)

274 篇文章 24 订阅
233 篇文章 0 订阅

1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai

4.5 搭建深层神经网络块 Building blocks of deep neural networks

我们已经了解了正向反向传播的基础组成部分,它们也是深度NN的重要组成部分,本节将介绍用它们建一个深度NN。
在这里插入图片描述

观察上图,这是一个层数较少的NN。
在第l层

  • 参数是 W [ l ] W^{[l]} W[l] b [ l ] b^{[l]} b[l]
  • 正向传播的输入是 a [ l − 1 ] a^{[l-1]} a[l1],即前一层的输出。
  • 正向传播的输出是 a [ l ] a^{[l]} a[l]

所以l层每个节点的2步计算过程如下

z [ l ] = W [ l ] a [ l − 1 ] + b [ l ] z^{[l]}=W^{[l]}a^{[l-1]}+b^{[l]} z[l]=W[l]a[l1]+b[l]
a [ l ] = g [ l ] ( z [ l ] ) a^{[l]}=g^{[l]}(z^{[l]}) a[l]=g[l](z[l])

我们可以把 z [ l ] z^{[l]} z[l]保存下来,因为它对于正向反向传播的步骤都非常有用。

接着看反向传播,同样在第l层

  • 输入是 d a [ l ] da^{[l]} da[l],即后(右边)一层的输出。
  • 输出是 d a [ l − 1 ] da^{[l-1]} da[l1] d W [ l ] dW^{[l]} dW[l] d b [ l ] db^{[l]} db[l]

概念
正向函数forward function:用作正向传播步骤的函数。
它在第l层的输入是 a [ l − 1 ] a^{[l-1]} a[l1],输出是 a [ l ] a^{[l]} a[l],参数是 W [ l ] W^{[l]} W[l] b [ l ] b^{[l]} b[l]。同时,它还需要保存 z [ l ] z^{[l]} z[l]
在这里插入图片描述

反向函数backward function:用作反向传播步骤的函数。
它在第l层的输入是激活函数的导数 d a [ l ] da^{[l]} da[l],输出是 d a [ l − 1 ] da^{[l-1]} da[l1]。这里还会计算出 d z [ l ] dz^{[l]} dz[l] d W [ l ] dW^{[l]} dW[l] d b [ l ] db^{[l]} db[l]
在这里插入图片描述

实现了正向函数和反向函数后,NN的计算过程如下

正向传播步骤

  • 把特征 a [ 0 ] a^{[0]} a[0]放入第一层,计算激活函数,输出 a [ 1 ] a^{[1]} a[1],保存 z [ 1 ] z^{[1]} z[1]
  • 计算第二层激活函数,输出 a [ 2 ] a^{[2]} a[2],保存 z [ 2 ] z^{[2]} z[2]
  • 后面几层依次类推
  • 最后计算出第l层,也就是输出层的预测值 a [ l ] = y ^ a^{[l]}=\hat y a[l]=y^

在这里插入图片描述

反向传播步骤,包含一系列的反向迭代来计算反向梯度

  • 在第l层输入 d a [ l ] da^{[l]} da[l],输出 d a [ l − 1 ] da^{[l-1]} da[l1] d W [ l ] dW^{[l]} dW[l] d b [ l ] db^{[l]} db[l]
  • 依次类推,直至第2层,输入 d a [ 2 ] da^{[2]} da[2],输出 d a [ 1 ] da^{[1]} da[1] d W [ 2 ] dW^{[2]} dW[2] d b [ 2 ] db^{[2]} db[2]
  • 对于第1层,没有必要计算 d a [ 1 ] da^{[1]} da[1]。因为这是输入特征x的导数,对于训练监督学习的权重W没有必要

完成上述步骤,即最终完成了一次训练过程,现在我们得到了导数项dW和db,可以进行权重更新( α \alpha α是学习率)

W [ l ] = W [ l ] − α d W [ l ] W^{[l]}=W^{[l]}-\alpha dW^{[l]} W[l]=W[l]αdW[l]
b [ l ] = b [ l ] − α d b [ l ] b^{[l]}=b^{[l]}-\alpha db^{[l]} b[l]=b[l]αdb[l]

到这里为止,就实现了深度NN的一个梯度下降循环。

补充一点,编程时候注意事项:请把z,W和b的值保存下来,方便正向和反向计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值