前向传播和反向传播( Forward and backward propagation)
前向传播
假设输入${a^{[l - 1]}}$,输出${a^{[l]}}$,缓存${z^{[l]}}$,从实现的角度来说缓存${w^{[l]}}$,${b^{[l]}}$更容易在不同的环节调用函数。
向量化实现过程可以写成:
前向传播需要喂入数据${A^{[0]}}$也就是X来初始化。
对于多层神经网络,在计算从第1层到第L层时,只能使用for循环来实现。
反向传播
输入$d{a^{[l]}}$,输出$d{a^{[l-1]}}$,$d{w^{[l]}}$,$d{b^{[l]}}$。
所以反向传播的步骤可以写成:
前四个式子用于实现反向传播,式子(5)是由式子(4)带入到式子(1)中得到的。
向量化的实现:
举个例子:
上面的神经网络,第一层、第二层都是Relu激活函数,最后输出层是sigmoid函数。
前向传播,输入X,通过三个激活函数最终输出$\hat y$,并从而计算损失函数:$L(\hat y,y)$。
反向传播,依次计算$d{w^{[3]}}$,$d{b^{[3]}}$,$d{w^{[2]}}$,$d{b^{[2]}}$,$d{w^{[1]}}$,$d{b^{[1]}}$,在计算的过程中,缓存会把${z^{\left[ 1 \right]}}{z^{\left[ 2 \right]}}{z^{\left[ 3 \right]}}$传递过来,然后回传$d{a^{[2]}}$,$d{a^{[1]}}$。