神经网络中的前向传播和反向传播理解

6 篇文章 2 订阅

前向传播

输入a^{\left [ l-1 \right ]},输出a^{[l]},缓存为z^{[l]}

前向传播的过程:

z^{\left [ l \right ]} = W^{\left [ l \right ]}.a^{[l-1]} + b^{[l]}

a^{[l]} = g^{[l]}(z^{[l]})

向量化的过程可以写成:

Z^{[l]} = W^{[l]}.A^{[l-1]} + b^{[l]}

A^{[l]} = g^{[l]}(Z^{[l]})

式中,A^{[0]}就是初始的输入X。如下图的两层神经网络所示,可以很好的理解。

 

反向传播

反向传播主要采用数学上的链式法则,反向传播的公式推导可以总结为4个公式。

输入da^{[l]},输出da^{[l-1]}dw^{[l]}db^{[l]}

\frac{\partial C}{\partial a_{j}^{[l]}} = \frac{\partial C(a_{j}^{[l]}, y_j)}{\partial a_{j}^{[l]}}

\frac{\partial C}{\partial w_{j}^{[l]}} = \frac{\partial C}{\partial a_{j}^{[l]}} \frac{\partial a_{j}^{[l]}}{\partial z_{j}^{[l]}} \frac{\partial z_{j}^{[l]}}{\partial w_{j}^{[l]}}

\frac{\partial C}{\partial b_{j}^{[l]}} = \frac{\partial C}{\partial a_{j}^{[l]}} \frac{\partial a_{j}^{[l]}}{\partial z_{j}^{[l]}} \frac{\partial z_{j}^{[l]}}{\partial b_{j}^{[l]}}

\frac{\partial C}{\partial a_{j}^{[l-1]}} = \frac{\partial C}{\partial a_{j}^{[l]}} \frac{\partial a_{j}^{[l]}}{\partial z_{j}^{[l]}} \frac{\partial z_{j}^{[l]}}{\partial a_{j}^{[l-1]}}

形式转换一下,和上面的式子是等价的,步骤如下:

dz^{[l]} = da^{[l]} * g^{[l]}'(z^{[l]})

dw^{[l]} = dz^{[l]} \cdot a^{[l-1]}

db^{[l]} = dz^{[l]}

da^{[l-1]} = w^{[l]T} \cdot dz^{[l]}

dz^{[l]} = w^{[l+1]T} * dz^{[l+1]}\cdot g^{[l]}'(z^{[l]}) 

第5个公式由4式代入1式得到。前4个式子就可以实现反向传播。

写成向量化的形式为:

dZ^{[l]} = dA^{[l]} * g^{[l]}'(Z^{[l]})

dW^{[l]} = \frac{1}{m} dZ^{[l]} \cdot A^{[l-1]T}

db^{[l]} = \frac{1}{m} np.sum(dz^{[l]}, axis = 1, keepdims = True)

dA^{[l-1]} = W^{[l]T} \cdot dZ^{[l]}

 


参考:[1] 吴恩达深度学习课程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liguiyuan112

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值