手动推导卷积神经网络反向传播:全连接层与输出层详解

5星 · 超过95%的资源 需积分: 0 2 下载量 81 浏览量 更新于2024-08-05 收藏 824KB PDF 举报
在深度学习中,反向传播(Backpropagation,BP)是一种核心的优化算法,用于训练多层神经网络。当我们完成了神经网络的前向传播,即将输入数据通过多层神经元进行计算,得出预测输出后,需要通过反向传播调整网络的参数以最小化预测结果与实际标签之间的误差。本文主要关注的是全连接层反向传播的具体过程。 全连接层的反向传播首先基于一个简单的均方误差损失函数,其表达式为:\( L = \frac{1}{2m} \sum_{i=1}^{m} (y_i - \hat{y}_i)^2 \),其中\( y_i \)是实际标签,\( \hat{y}_i \)是模型预测的输出。在全连接层,神经元的输出通过权重矩阵\( W \)与上一层的输出相乘,再加上偏置项\( b \),形成激活前的输出\( z_l \)。激活函数\( f \)将\( z_l \)映射到激活后的输出\( a_l \)。 权重矩阵\( W \)的维度由当前层和上一层的神经元数量决定,例如,如果上一层输出是\( m \times 1 \)的列向量,当前层输出是\( n \times 1 \),则\( W \)的维度为\( n \times m \)。偏置项\( b \)则是\( n \times 1 \)的向量。 在反向传播过程中,引入了第\( l \)层的delta误差\( \delta_l \),它是误差函数对第\( l \)层激活前输出值的偏导数,表示为\( \delta_l = \frac{\partial C}{\partial z_l} \)。对于输出层,由于没有激活函数,\( \delta_L = \frac{\partial C}{\partial z_L} = (a_L - y) \),其中\( a_L \)是经过激活函数后的输出,\( y \)是实际标签。 对于非输出层,使用链式法则计算delta误差,即\( \delta_l = f'(z_l) \cdot W^T_{l+1} \cdot \delta_{l+1} \),这里\( f' \)是激活函数的导数,\( W^T_{l+1} \)是下一层的权重矩阵的转置。这样,每一层的delta误差都可以通过上一层的delta误差和权重矩阵计算得出,然后可以利用这些delta误差来计算权重矩阵\( W \)和偏置项\( b \)的梯度,如\( \frac{\partial L}{\partial W_l} = \frac{1}{m} a_{l-1}^T \delta_l \)和\( \frac{\partial L}{\partial b_l} = \frac{1}{m} \sum_{i=1}^{m} \delta_l \)。 使用梯度下降算法,网络的参数按照梯度的负方向更新,即\( W_l := W_l - \alpha \frac{\partial L}{\partial W_l} \) 和 \( b_l := b_l - \alpha \frac{\partial L}{\∂ b_l} \),其中\( \alpha \)是学习率,控制着参数更新的步长。 全连接层反向传播的核心是通过计算delta误差来传递误差梯度,并利用梯度下降调整网络参数,以减小预测误差,从而实现网络的训练。这个过程强调了权重矩阵、偏置项、激活函数以及链式法则在计算中的重要作用,特别是在矩阵乘法及其求导的应用中。理解并掌握这些概念对于深入学习和应用深度学习至关重要。