这里C(w)为最后的代价函数,它权值w的函数。每一层的加权输入为ZJ=W×aj-1
+b。每一层的输出为aj
,aj
=φ(ZJ
),这里φ是激活函数。
反向传播更新的是每一层神经元连接的权重w,即求C(w)对每一层w 的偏导数。反向传播首先求C对W4的偏导数,所以公式为:
同理,由于W3只能通过加权输入Z3在影响结果,所以公式为:
可以看出在更新权值的时候,每向前传播一层,就要乘以激活函数的导数φ’。当选择的激活函数为sigmoid时(导数图像如图所示,该导数的最大值为1/4),乘一个会导致梯度越来越小,这对于深层网络的训练是个很大的问题。而relu函数的导数是1,不会导致梯度变小。