最近好多同学在学习神经网络,而神经网络的核心应该就是BP算法了,好多同学对这块不太理解,在此,我就简单说一下。
可以简单总结一句话:复合函数求偏导,
请看下文详细解读:
Forward propagation:
Z1=W1*X0+B1
A1=g(Z1)
Z2=W2*A1+B2
A2=g(Z2)
…..
Zn=Wn*An-1+Bn
An=g(Zn)
以上就是fp的整个计算过程,大概解释一下,由于后面每层的输入均为上一层激活函数的输出值(输入层除外),故而,从Z2开始,其输入值变为An-1, 由于An为最后一层的输出,所以预测值y’=An, 而又因为 An由 前面多层传输而来,故而 损失函数L(y’,y)=J(W1,B1,W2,B2,…,Wn,Bn)=J
Back propagation:
主要目的是为了求得 各层权重的偏导值,进而利用梯度 来 更新 权重 以期达到最优效果,即求得dw1=,db1=
,……,dWn=
,dbn=
,也就是说整个求偏导的过程是针对损失函数对每个变量的求偏导过程,为了将 BP过程说的清楚一些,现在 可以将 每个节点看成两部分组成Z和A。为了更清晰的说明这个过程,请见下图:
对以上式子分别进行说明:
- 在此处因为A2已经是输出层,故而此处 y hat和A2是一致的,
- 就是所谓的链导法则,实际上就是复合函数求导的过程
- 同2
- 因为 A1和Z2存在函数关系,而式子2中已经求得dZ2,故而此处如上图推到
- 同2
- 同3
式子7,8就是更新权重的过程
对 FP和BP 的计算过程可以理解如下
FP的计算顺序,BP的计算顺序
大家也可以关注我的个人公众号:
或者知乎:https://zhuanlan.zhihu.com/albertwang
下面是赞赏码