前向傳播和反向傳播( 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]}}$。