MLP 训练效果取决于超参数配置:学习率、批量大小、优化器、正则化策略缺一不可。
学习率(lr)
学习率决定参数更新步长:
| 学习率范围 | 问题 |
|---|---|
| > 1e-2 | 训练不稳定,损失震荡 |
| < 1e-6 | 收敛极慢,易陷入局部最优 |
推荐范围:
| 任务类型 | 学习率 |
|---|---|
| 小规模数据集(<10w) | 1e-3 ~ 5e-3 |
| 大规模数据集(>10w) | 1e-4 ~ 1e-3 |
| 预训练模型微调 | 1e-5 ~ 5e-5 |
默认从 1e-3 开始,配合学习率调度器:
| |
批量大小(batch_size)
| 批量大小 | 影响 |
|---|---|
| ≤16 | 梯度噪声大,训练不稳定 |
| ≥256 | 收敛慢,需更高学习率 |
推荐:默认 3264,GPU 资源充足时可增至 128256。
优化器
| 优化器 | 适用场景 | 推荐 |
|---|---|---|
| SGD | 简单任务,需手动调参 | ❌ |
| SGD + momentum | 小批量训练 | ✅ |
| Adam | 大多数任务,训练稳定 | ✅✅ |
| AdamW | Transformer 结构,带权重衰减 | ✅✅ |
| RMSprop | RNN 任务 | ❌ |
默认选择 Adam 或 AdamW。
损失函数
| 任务类型 | 推荐损失函数 |
|---|---|
| 二分类 | BCELoss |
| 多分类 | CrossEntropyLoss |
| 回归 | MSELoss |
| 置信度估计 | HuberLoss |
正则化
Dropout
- 默认 0.2~0.5
- 层数少(<3):0.1~0.2
- 层数多:0.3~0.5
权重衰减(L2 正则)
防止权重过大,推荐 1e-5 ~ 1e-4,配合 AdamW 效果更佳。
BatchNorm
防止梯度消失,加速收敛。通常置于 ReLU 之前:
| |
训练周期(epochs)
推荐 50~200 轮,配合 Early Stopping:
| |
训练监控
使用 W&B 记录关键指标:
| |
观察:学习率曲线、Train/Test Loss 对比、Test Accuracy 变化。
参考配置
| |
常见问题排查
| 现象 | 原因 | 解决方案 |
|---|---|---|
| 训练损失不降 | lr 过大/过小 | 调整至 1e-3 ~ 1e-4 |
| 训练降测试升 | 过拟合 | 增加 Dropout,加大 weight_decay |
| 训练慢效果一般 | 模型太小 | 增加隐藏层 |
| 训练快效果差 | 模型太大 | 降低层数 |
| 后期效果变差 | 过训练 | 加入 Early Stopping |
总结
lr=1e-3 ~ 1e-4,稳定训练batch_size=32~128,小数据用小批量AdamW + weight_decay=1e-4,防止过拟合Dropout=0.2~0.5,层数多时增加- BatchNorm 防止梯度消失
- Early Stopping + ReduceLROnPlateau 自动调节
张芷铭的个人博客
Comments