核心思想:链式法则

反向传播(Backpropagation) 的本质是微积分中的链式法则(Chain Rule) 的递归应用。它的目标是:计算损失函数(Loss Function)关于神经网络中每一个参数(权重和偏置)的梯度。这些梯度指明了如何调整参数才能使损失下降。

一个简化的神经网络示例

为了讲解,我们使用一个极其简单的三层网络:

  • 输入层(Input Layer): 一个神经元,输入 ,偏置
  • 隐藏层(Hidden Layer): 一个神经元,权重 ,偏置 ,激活函数为
  • 输出层(Output Layer): 一个神经元,权重 ,激活函数为
  • 真实值(True Value):
  • 损失函数(Loss Function): (例如均方误差)

其前向传播(Forward Pass)过程如下:

  1. (隐藏层的输出)
  2. (网络的预测输出)

我们的目标是计算损失 关于所有四个参数 的梯度: 。

反向传播的四个关键步骤

反向传播从输出层开始,反向计算每一层的梯度。

1. 计算输出层参数的梯度 ()

应用链式法则:

    • 所以:
    • 所以:

定义输出层的误差信号:

梯度可简写为:

2. 将误差反向传播到隐藏层

计算隐藏层参数的梯度 ()。误差需要通过输出层传回隐藏层。

    • 所以:

观察发现,前面部分就是 !
所以上式可改写为:

定义隐藏层的误差信号:

梯度可简写为:

  • (因为 )

3. 总结模式与递归公式

通过计算,可以总结出一个清晰的模式:

  1. 从输出层开始:计算输出层的误差信号 。

  2. 反向传播误差:对于任意层 (非输入层),其误差信号 可以由后一层的误差信号 计算得到:

    • 其中 是连接层 和层 的权重矩阵, 表示逐元素相乘(Hadamard product)。这就是误差的反向传播。
  3. 计算梯度:一旦有了某层的误差信号 ,计算该层参数的梯度就非常简单:

    • (权重梯度)
    • (偏置梯度)
    • 其中 是前一层(第 层)的输出。

4. 更新参数(梯度下降)

在得到所有参数的梯度后,使用梯度下降算法来更新参数:
其中 是学习率(Learning Rate)。

核心概念:为什么叫“反向”传播?

  • 前向传播(Forward Pass):数据从输入层流向输出层,计算预测值和损失。计算并存储所有中间变量(),这些是反向传播计算梯度所必需的。
  • 反向传播(Backward Pass):误差信号 从输出层开始,利用链式法则,逐层反向流动,依次计算出每一层参数的梯度。

总结

反向传播计算梯度的过程可以概括为:

  1. 进行前向传播,计算并保存每一层的线性输出()和激活输出()。
  2. 从输出层开始,计算其误差信号 。
  3. 递归地将误差信号反向传播到前面的每一层,计算每一层的 。
  4. 利用本层的 和前一层保存的激活输出 ,计算本层参数的梯度。
  5. 使用计算出的梯度更新所有参数。

这个过程高效地利用了一次前向传播存储的结果,通过链式法则避免了重复计算,使得训练非常深的神经网络成为可能。它是现代深度学习得以发展的基石算法。

链接