反向传播算法
00:00
链式法则、计算图、梯度计算与常见优化器。
1. 链式法则
1.1 标量链式法则
若 ,,则:
1.2 向量链式法则
若 ,,则:
2. 计算图
2.1 前向计算图
以 为例:
2.2 反向传播
从输出向输入逐层计算梯度:
2.3 通用反向传播规则
对于任意节点 :
3. 神经网络反向传播
3.1 符号定义
| 符号 | 含义 |
|---|---|
| 第层激活值 | |
| 第层加权输入 | |
| 第层权重 | |
| 第层偏置 | |
| 第层误差项 |
3.2 四个基本方程
BP1:输出层误差
BP2:隐藏层误差
BP3:偏置梯度
BP4:权重梯度
3.3 完整算法
前向传播:
对于 l = 1, 2, ..., L:
z^l = W^l · a^{l-1} + b^l
a^l = σ(z^l)
反向传播:
δ^L = ∇_a L ⊙ σ'(z^L)
对于 l = L-1, L-2, ..., 1:
δ^l = (W^{l+1})^T · δ^{l+1} ⊙ σ'(z^l)
∂L/∂W^l = δ^l · (a^{l-1})^T
∂L/∂b^l = δ^l
参数更新:
W^l ← W^l - η · ∂L/∂W^l
b^l ← b^l - η · ∂L/∂b^l
4. 梯度问题
4.1 梯度消失
当 时,梯度指数衰减。
解决方案:ReLU、残差连接、BatchNorm、合适的初始化
4.2 梯度爆炸
当权重矩阵的谱半径 时,梯度指数增长。
解决方案:梯度裁剪、权重正则化、BatchNorm
4.3 梯度裁剪
按值裁剪:
按范数裁剪:
5. 优化器
5.1 SGD及其变体
SGD:
SGD + Momentum:
Nesterov Momentum:
5.2 自适应学习率
AdaGrad:
RMSProp:
Adam:
5.3 优化器选择
| 优化器 | 适用场景 | 推荐度 |
|---|---|---|
| SGD+Momentum | CV、需要精细调优 | 中 |
| Adam | 通用、NLP、快速原型 | 高 |
| AdamW | Transformer、大模型 | 高 |
| LAMB | 大batch训练 | 中 |