反向传播(BP)算法
参数设定
$w_{jk}^l$表示第$l-1$层的第$k$个神经元连接到$l$层第$j$个神经元的权重
$b_j^l$表示第$l$层的第$j$个神经元的偏置
$z_j^l$表示第$l$层的第$j$个神经元的输入
$a_j^l$表示第$l$层的第$j$个神经元的输出
其中$\sigma$表示激活函数
$\delta_j^l$表示第$l$层第$j$个神经元中产生的错误
定义为$\delta_j^l=\frac{\partial J}{\partial z_j^l}$
其中,有$\delta_j^l=\frac{\partial J}{\partial z_j^l}=\frac{\partial J}{\partial a_j^l}\cdot\frac{\partial a_j^l}{\partial z_j^l}$
用矩阵表示为$\frac{\partial J}{\partial a^L}\odot\frac{\partial a^L}{\partial z^L}=\nabla_aJ\odot\sigma’(z^L)$ ($\odot$表示Hadamard乘积,用于矩阵或向量间点对点乘法运算)
又有
用矩阵表示为$\delta^l = ((w^{l+1})^T\delta^{l+1})\odot\sigma’(z^l)$
计算梯度
计算权重的梯度:
计算偏置的梯度:
使用梯度下降法
使用梯度下降训练参数: