一个深度神经网络的权重参数有可能会达到百万级,权重的梯度计算非常耗时,反向传播是一种非常高效的梯度算法。

一个神经网络中的所有权重参数可以表示为:

J(w)是代价函数,权重的梯度可以表示为:

训练时,权重值的调整可以表示为:

反向传播算法充分利用数学中的链式求导法则。

利用链式求导法则,计算代价函数相对于某个权重的偏导数(梯度),可以转化为这个权重之后所有层次的偏导数的表达式。

反向传播由输出端往输入端逐层计算权重的梯度。

设神经网络的代价函数为J(w) w表示所有权重参数,根据链式法则,w5的梯度(偏导数)可以表示为:

类似w5的情况,b2的梯度计算:

往前一层,计算w1的梯度,w1到J(w)有2条路径:

即w1通过2种方式影响J(w),从数学角度来说,就是2个函数关系,所以应用链式法则2:

从后往前,逐层计算权重的梯度,这就是反向传播算法。

对于反向传播算法的理解,可以打个比方,一个公司一年的利润与目标差距比较大,公司开始找原因,看看谁的责任比较大。从管理层开始逐层往下找,确定每个人的责任(梯度)。反向传播算法,就是分黑锅,梯度是对偏差的贡献,就是黑锅。