BP

反向传播(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)$

计算梯度

计算权重的梯度:

计算偏置的梯度:

使用梯度下降法

使用梯度下降训练参数: