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层
- 参数是和。
- 正向传播的输入是,即前一层的输出。
- 正向传播的输出是
所以l层每个节点的2步计算过程如下
我们可以把保存下来,因为它对于正向反向传播的步骤都非常有用。
接着看反向传播,同样在第l层
- 输入是,即后(右边)一层的输出。
- 输出是,和
概念
正向函数
forward function:用作正向传播步骤的函数。
它在第l层的输入是,输出是,参数是和。同时,它还需要保存。
反向函数
backward function:用作反向传播步骤的函数。
它在第l层的输入是激活函数的导数,输出是。这里还会计算出,和。
实现了正向函数和反向函数后,NN的计算过程如下
正向传播步骤
- 把特征放入第一层,计算激活函数,输出,保存
- 计算第二层激活函数,输出,保存
- 后面几层依次类推
- 最后计算出第l层,也就是输出层的预测值
反向传播步骤,包含一系列的反向迭代来计算反向梯度
- 在第l层输入,输出和,
- 依次类推,直至第2层,输入,输出和和
- 对于第1层,没有必要计算。因为这是输入特征x的导数,对于训练监督学习的权重W没有必要
完成上述步骤,即最终完成了一次训练过程,现在我们得到了导数项dW和db,可以进行权重更新(是学习率)
到这里为止,就实现了深度NN的一个梯度下降循环。
补充一点,编程时候注意事项:请把z,W和b的值保存下来,方便正向和反向计算。