反向传播算法(Back Propagation)的目的是更新神经网络中的权重和阈值,使得网络可以学习到输入与输出之间的复杂映射关系。
反向传播算法的主要步骤如下:
- 前向传播:输入数据从输入层向前传播,在各层被激活并加权,最后得到输出值。
- 计算损失:使用损失函数计算输出值和真实标签之间的差距,得到总体损失。
- 求导:使用链式法则计算损失相对于各层权重的偏导数。
- 权重更新:使用梯度下降法则更新各层权重,使得损失最小化。
- 重复1~4步骤,直到收敛。
举例:
一个简单的神经网络:
输入层 → 权重W1 → 隐藏层 → 权重W2 → 输出层
↑ ↑
| |
真实标签y → 求导 → 权重W1的偏导数 → 权重W2的偏导数
反向传播过程:
- 前向传播:输入→隐藏层→输出,得到预测输出pred
- 计算损失:loss = (pred – 真实标签)2 / 2
- 求导:loss对隐藏层输出的偏导数 * 激活函数对隐藏层输入的偏导数 = 权重W2的偏导数
loss对隐藏层输出的偏导数 * 权重W2的偏导数 * 激活函数对隐藏层输入的偏导数 = 权重W1的偏导数 - 权重更新:W1 -= 学习率 * W1的偏导数
W2 -= 学习率 * W2的偏导数 - 重复1~4步骤,直至收敛
通过反向传播算法不断更新网络权重,网络可以逐渐学习到输入与输出之间的复杂关系,达到拟合训练数据的目的。