以上就是计算的全过程了,经过了这个过程,我们确实做到了导数的求解,虽然有些繁琐,但是是不是看上去没那么复杂了?
反向传导的抽象
上面的8个步骤我们呢可以分成2部分:1-4步实际上完成了第2层神经网络的梯度计算,5-8步实际上完成了第1层神经网络的梯度计算。抽象地分析,可以得出:
- Loss对本层非线性部分的梯度
- Loss对本层线性部分的梯度
- Loss对本层线性部分w的梯度
- Loss对本层线性部分b的梯度
如果每一个高层把下面一层的输出梯度计算好传递过去,那么我们就可以把每一层抽象出来,各自完成各自的计算即可,层与层之间的计算可以做到"完全独立",虽然它们是连在一起的。
解决了上面的问题,我们还不能马上写出代码,因为训练过程中真正的代码比上面的内容还要复杂一些。下一回我们来看看全连接层代码该怎么写。