DNN的BP推导

向前传播:

第一层

z^{(2)} = x \cdot w^{(1)}

a^{(2)} = g(z^{(2)})

第二层

z^{(3)} = a^{(2)} \cdot w^{(2)}

a^{(3)} = g(z^{(3)})

第三层

z^{(4)} = a^{(3)} \cdot w^{(3)}

a^{(4)} = g(z^{(4)})

计算代价:

J = (a^{(4)} - y)^{2}

 

反向传播:

这是一个求偏导数的线路图

\frac{\partial J}{\partial a^{(4)}} =\frac{\partial J}{\partial z^{(4)}}= 2 \cdot (a^{(4)} - y)

\frac{\partial J}{\partial z^{(4)}} = \frac{\partial J}{\partial a^{(4)}} \cdot \frac{\partial a^{(4)}}{\partial z^{(4)}}

\frac{\partial J}{\partial a^{(3)}} = \frac{\partial J}{\partial a^{(4)}} \cdot \frac{\partial a^{(4)}}{\partial z^{(4)}} \cdot \frac{\partial z^{(4)}}{\partial a^{(3)}}       

\frac{\partial J}{\partial z^{(3)}} = \frac{\partial J}{\partial a^{(4)}} \cdot \frac{\partial a^{(4)}}{\partial z^{(4)}} \cdot \frac{\partial z^{(4)}}{\partial a^{(3)}} \cdot \frac{\partial a^{(3)}}{\partial z^{(3)}}

\frac{\partial J}{\partial a^{(2)}} = \frac{\partial J}{\partial a^{(4)}} \cdot \frac{\partial a^{(4)}}{\partial z^{(4)}} \cdot \frac{\partial z^{(4)}}{\partial a^{(3)}} \cdot \frac{\partial a^{(3)}}{\partial z^{(3)}} \cdot \frac{\partial z^{(3)}}{\partial a^{(2)}}     

\frac{\partial J}{\partial z^{(2)}} = \frac{\partial J}{\partial a^{(4)}} \cdot \frac{\partial a^{(4)}}{\partial z^{(4)}} \cdot \frac{\partial z^{(4)}}{\partial a^{(3)}} \cdot \frac{\partial a^{(3)}}{\partial z^{(3)}} \cdot \frac{\partial z^{(3)}}{\partial a^{(2)}} \cdot \frac{\partial a^{(2)}}{\partial z^{(2)}}

 

我们会发现,这都是有规律的: 每一列都是一样的,也就是我们可以通过从结果J反向求偏导数,累积偏导数来反向递推计算每一层的a^{(l)}z^{(l)}

也就是我们可以根据上一项的梯度(grad)来进一步求出下一项的梯度(grad)

既然我们可以求出每一层z^{(l)}的梯度(grad) ,那么,我们自然就可以根据z^{(l)}进一步求出w^{(l-1)}的梯度(grad)

\frac{\partial J}{\partial w^{(3)}} = \frac{\partial J}{\partial z^{(4)}} \cdot \frac{\partial z^{(4)}}{\partial w^{(3)}} = \frac{\partial J}{\partial a^{(4)}} \cdot \frac{\partial a^{(4)}}{\partial z^{(4)}} \cdot \frac{\partial z^{(4)}}{\partial w^{(3)}}

\frac{\partial J}{\partial w^{(2)}} = \frac{\partial J}{\partial z^{(3)}} \cdot \frac{\partial z^{(3)}}{\partial w^{(2)}}= \frac{\partial J}{\partial a^{(4)}} \cdot \frac{\partial a^{(4)}}{\partial z^{(4)}} \cdot \frac{\partial z^{(4)}}{\partial a^{(3)}} \cdot \frac{\partial a^{(3)}}{\partial z^{(3)}} \cdot \frac{\partial z^{(3)}}{\partial w^{(2)}}

\frac{\partial J}{\partial w^{(1)}} = \frac{\partial J}{\partial z^{(2)}} \cdot \frac{\partial z^{(2)}}{\partial w^{(1)}}= \frac{\partial J}{\partial a^{(4)}} \cdot \frac{\partial a^{(4)}}{\partial z^{(4)}} \cdot \frac{\partial z^{(4)}}{\partial a^{(3)}} \cdot \frac{\partial a^{(3)}}{\partial z^{(3)}} \cdot \frac{\partial z^{(3)}}{\partial a^{(2)}} \cdot \frac{\partial a^{(2)}}{\partial z^{(2)}} \cdot \frac{\partial z^{(2)}}{\partial w^{(1)}}

我们有了每一层的 grad(w^{(l)}) ,也就是我们可以更新参数了

总的来看,反向传播就是一条求导链,我们可以用递推来把整一条链子都求出来

然后在这条链子上,我们可以找到任意一个变量的梯度(grad),最后,我们只需要从链子拿到我们需要的grad(w^{(l)})就行了

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值