共计 1952 个字符,预计需要花费 5 分钟才能阅读完成。
背景痛点:深层网络训练的挑战
在深度神经网络中,反向传播算法的权重更新过程面临着两个主要问题:

-
梯度消失 / 爆炸问题 :随着网络层数的增加,梯度在反向传播过程中会指数级地缩小或放大,导致深层权重难以更新或更新幅度过大。
-
计算效率瓶颈 :传统的 SGD(随机梯度下降)方法在参数空间较大时收敛速度慢,且容易陷入局部最优解。
数学原理:权重更新的推导
权重更新的核心是梯度下降算法,其数学表达式为:
$$W_{t+1} = W_t – \eta \cdot \nabla J(W_t)$$
其中,$\eta$ 是学习率,$\nabla J(W_t)$ 是损失函数对权重的梯度。
在反向传播中,梯度通过链式法则逐层传递:
$$\frac{\partial J}{\partial W^{(l)}} = \frac{\partial J}{\partial a^{(L)}} \cdot \prod_{k=l}^{L-1} \frac{\partial a^{(k+1)}}{\partial a^{(k)}} \cdot \frac{\partial a^{(l)}}{\partial W^{(l)}}$$
优化方案:主流优化器对比
1. 动量法(Momentum)
动量法引入了速度变量 $v$ 来累积历史梯度:
$$v_{t+1} = \gamma v_t + \eta \nabla J(W_t)$$
$$W_{t+1} = W_t – v_{t+1}$$
2. RMSprop
RMSprop 通过指数加权移动平均调整学习率:
$$E[g^2]t = \beta E[g^2] + (1-\beta)g_t^2$$
$$W_{t+1} = W_t – \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \cdot g_t$$
3. Adam
Adam 结合了动量法和 RMSprop 的优点:
$$m_t = \beta_1 m_{t-1} + (1-\beta_1)g_t$$
$$v_t = \beta_2 v_{t-1} + (1-\beta_2)g_t^2$$
$$\hat{m}_t = \frac{m_t}{1-\beta_1^t}$$
$$\hat{v}_t = \frac{v_t}{1-\beta_2^t}$$
$$W_{t+1} = W_t – \frac{\eta \hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon}$$
代码实现:PyTorch 实践
import torch
import torch.nn as nn
import torch.optim as optim
# 自定义权重初始化
def init_weights(m):
if isinstance(m, nn.Linear):
nn.init.xavier_normal_(m.weight)
nn.init.zeros_(m.bias)
# 构建简单网络
model = nn.Sequential(nn.Linear(784, 256),
nn.ReLU(),
nn.Linear(256, 10)
)
model.apply(init_weights)
# 定义优化器
optimizer = optim.Adam(model.parameters(), lr=0.001)
# 梯度裁剪
max_grad_norm = 1.0
def train_step(x, y):
optimizer.zero_grad()
output = model(x)
loss = nn.CrossEntropyLoss()(output, y)
loss.backward()
# 梯度裁剪
torch.nn.utils.clip_grad_norm_(model.parameters(), max_grad_norm)
optimizer.step()
return loss.item()
实验验证:MNIST 数据集对比
我们在 MNIST 数据集上对比了 SGD、Momentum、RMSprop 和 Adam 四种优化器的表现:
- SGD:收敛速度最慢,最终准确率约 92%
- Momentum:收敛速度明显提升,最终准确率约 95%
- RMSprop:收敛稳定,最终准确率约 97%
- Adam:收敛最快且稳定,最终准确率约 98%
避坑指南:常见问题与解决方案
- 梯度消失 :使用 ReLU 激活函数、批量归一化或残差连接
- 梯度爆炸 :实施梯度裁剪、使用较小的初始化权重
- 学习率设置不当 :使用学习率预热或自适应学习率优化器
- 批量大小过大 :适当减小批量大小或使用梯度累积
- 权重初始化不当 :使用 Xavier 或 Kaiming 初始化方法
扩展思考:应用于 Transformer 架构
在现代 Transformer 架构中,权重更新优化尤为重要:
- 自注意力机制中的大矩阵乘法需要稳定的梯度流动
- 层归一化应与优化器选择协调考虑
- 学习率调度策略(如 warmup)对训练稳定性至关重要
通过本文介绍的优化策略,读者可以更好地理解和调整 Transformer 模型的训练过程。
