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

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]}b[l]b^{[l]}
  • 正向传播的输入是a[l1]a^{[l-1]},即前一层的输出。
  • 正向传播的输出是a[l]a^{[l]}

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

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

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

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

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

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

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

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

正向传播步骤

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

在这里插入图片描述

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

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

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

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章