第3章:神经网络核心
训练神经网络
1. 训练过程概述
神经网络的训练是一个迭代优化过程,核心步骤包括:
- 前向传播:输入数据通过网络计算预测值
- 损失计算:比较预测值与真实值的差异
- 反向传播:计算梯度并更新权重
- 迭代优化:重复上述过程直到收敛
2. 关键训练组件
2.1 优化器选择
| 优化器 | 特点 | 适用场景 |
|---|---|---|
| SGD | 简单但容易陷入局部最优 | 小规模数据集 |
| Momentum | 加入动量项加速收敛 | 中等规模数据 |
| Adam | 自适应学习率,默认首选 | 大多数深度学习任务 |
2.2 学习率策略
- 固定学习率:简单但需要精细调参
- 学习率衰减:如指数衰减、余弦退火
- 自适应方法:如Cyclical LR
3. 训练监控技术
# 典型训练循环伪代码
for epoch in range(epochs):
model.train()
for batch in train_loader:
optimizer.zero_grad()
outputs = model(batch.inputs)
loss = criterion(outputs, batch.labels)
loss.backward()
optimizer.step()
# 验证阶段
model.eval()
val_loss = evaluate(val_loader)
print(f"Epoch {epoch}: Train Loss={loss:.4f}, Val Loss={val_loss:.4f}")
4. 训练技巧
早停法(Early Stopping):
- 监控验证集性能
- 当连续N个epoch未改进时停止训练
模型检查点:
- 定期保存最佳模型参数
- 实现训练中断恢复
梯度裁剪:
- 防止梯度爆炸
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm)
5. 常见问题诊断
欠拟合:
- 表现:训练/验证误差都高
- 解决方案:增加模型容量、延长训练时间
过拟合:
- 表现:训练误差低但验证误差高
- 解决方案:正则化、数据增强、Dropout
6. 训练可视化
推荐工具:
- TensorBoard
- Weights & Biases
- MLflow
最佳实践建议:初始训练建议使用Adam优化器+学习率3e-4,配合梯度监控和早停机制。记录完整的超参数和训练曲线以便复现和调优。
