搭建神经网络块( Building blocks of deep neural networks)
在神经网络中正向步骤的结构,我把它成为称为正向函数,类似的在反向步骤中会称为反向函数。
单一模块的正向函数和反向函数可以使用下面的图示表示:
对于第l层的正向输入函数,输入为${a^{[l - 1]}}$,输出为${a^{[l]}}$,为了计算结果,需要使用${W^{[l ]}}$,${b^{[l ]}}$以及输出到缓存的${z^{[l ]}}$。
对于反向函数,输入是$d{a^{[l]}}$,输出是$d{a^{[l - 1]}}$$d{z^{[l]}}$,$d{W^{[l]}}$,$d{b^{[l]}}$。
整个神经网络实现的模块构成可以使用下图表示:
神经网络的训练是从${a^{[0]}}$开始,也就是x,然后经过一系列的正向传播计算得到$\hat y$,在这一系列计算过程中缓存z的值。
反向传播就是反向计算梯度,并且在每层更新w,b:
反向传播计算完成之后,我们就完成了神经网络的一个梯度下降循环。
需要特别注意的是,在正常传播过程中缓存z,将会提高之后反向传播过程中dW、db的计算效率。